diff --git a/_config.yml b/_config.yml index 0f60842f..e63bd734 100644 --- a/_config.yml +++ b/_config.yml @@ -86,6 +86,15 @@ defaults: seo: type: "WebPage" +- scope: + path: _gsoc + type: gsoc + values: + layout: gsoc + sectionid: gsoc + seo: + type: "WebPage" + collections: docs: permalink: /:collection/:path/ @@ -102,6 +111,9 @@ collections: su2gui: permalink: /:collection/:path/ output: true + gsoc: + permalink: /:collection/:path/ + output: true posts: permalink: /blog/:year/:month/:day/:title/ output: true diff --git a/_data/gsoc.yml b/_data/gsoc.yml new file mode 100644 index 00000000..fad92a45 --- /dev/null +++ b/_data/gsoc.yml @@ -0,0 +1,11 @@ +- title: GSOC + gsoc: + - Introduction + +- title: Participation + gsoc: + - Participation + +- title: Assignments + gsoc: + - Assignments diff --git a/_data/tutorials.yml b/_data/tutorials.yml index 069c9300..873857e1 100644 --- a/_data/tutorials.yml +++ b/_data/tutorials.yml @@ -19,6 +19,7 @@ - NICFD_nozzle - NICFD_nozzle_datadriven - Aachen_Turbine + - Actuator_Disk - title: Incompressible Flow tutorials: diff --git a/_gsoc/Assignments.md b/_gsoc/Assignments.md new file mode 100644 index 00000000..a1a3ce60 --- /dev/null +++ b/_gsoc/Assignments.md @@ -0,0 +1,41 @@ +--- +title: Student Assignments +permalink: /gsoc/Assignments/ +--- + +**Welcome to SU2 - GSOC!** +What is Google Summer of Code? + +[Google Summer of Code](https://summerofcode.withgoogle.com/) + + +## SU2 introduction assignments + +To help newcomers start with SU2 and to help GSOC mentors with evaluating the level of students who would like to participate in Google Summer of Code, we have prepared a couple of introduction assignments. These assignments have to be made in the order they are given. These assignments give us an indication of your familiarity with SU2 and the SU2 code. These assignments, together with your active participation in the SU2 community, will be taken into account when deciding on GSOC projects. + +## Assignment 1: Compile SU2 + +- Clone SU2 from github [SU2](https://github.com/su2code/SU2) on your system and compile it [compile instructions](https://su2code.github.io/docs_v7/Build-SU2-Linux-MacOS/) with different options, and run some tutorials [Tutorials](https://su2code.github.io/tutorials/home/). Get a proper understanding of the input and output of SU2. +- Deliverable: None + +## Assignment 2: Set up a test case from scratch + +- Generate a 2D mesh for an axisymmetric, steady-state, turbulent jet case (for instance with [gmsh](https://gmsh.info/)), setup the configuration file, run the simulation, and extract results. +- Deliverable: Testcase and small report (markdown) describing motivation for set-up, configuration options, convergence history, comparison with experimental values. +Reference paper that could be used for comparison [report](https://www.researchgate.net/publication/254224677_Investigation_of_the_Mixing_Process_in_an_Axisymmetric_Turbulent_Jet_Using_PIV_and_LIF) + +## Assignment 3: Python wrapper test case + +- Set up a problem in the python wrapper (compile with python support) and run a test case. +Testcase for the python wrapper: [flatplate](https://github.com/su2code/SU2/blob/master/TestCases/py_wrapper/flatPlate_unsteady_CHT/launch_unsteady_CHT_FlatPlate.py) +- Deliverable: Testcase and small report describing the test case and showing the results. + +## Assignment 4: Modification of the python wrapper setup + +- Enable a spatially varying wall temperature for a steady-state compressible turbulent flat plate testcase. +- Deliverable: Testcase and small report describing the results. + +## Assignment 5: Addition of new volume output: + +- Add the local speed of sound as computed by SU2 in the volume output (paraview files) and the screen output. Run the turbulent test case from point 2 with this new volume and screen output enabled. +- Deliverable: explain implementation, show the history output of the new screen output and show some image with the volume output. diff --git a/_gsoc/Introduction.md b/_gsoc/Introduction.md new file mode 100644 index 00000000..f402af6d --- /dev/null +++ b/_gsoc/Introduction.md @@ -0,0 +1,62 @@ +--- +title: Ideas List for SU2 Google Summer of Code +permalink: /gsoc/Introduction/ +--- + +**Welcome to SU2 - GSOC!** + +This is the updated ideas list for GSOC 2026. If you are interested in participating in [Google Summer of Code](https://summerofcode.withgoogle.com/about) with the SU2 team, then please read the page on [participation](https://su2code.github.io/gsoc/Participation/). The projects listed below have been tuned to fit within the google summer of code program and they have mentors assigned to them. We can also accept personal ideas beyond the ones presented below but you need to convince one of the mentors to support you. We also need you to be proficient in SU2 and have some kind of technical background beyond general computer science (studying physics, mechanical engineering, aerospace engineering,...). + +## Project BP: Adding pressure-based solver +Project Description (max. 5 Sentences) +The pressure-based solver has been requested for a long time. This solver is an important addition to the CFD solvers, especially for low Mach and incompressible flows. People have worked on it (detailed documentation available), and there is a branch that contains a working version, but this was never finalized and added to the main SU2 branch. Hence, the project's objective is to evaluate the current status of attempts, and propose a strategy for getting the pressure-based solver in the latest version of SU2. +Expected Outcome (deliverables): Finalize pressure-based solver, validate with test cases, tutorial and merge the PR. +- Skills Required: C++, experience with CFD and numerical methods +- Possible Mentors: Nitish Anand and Edwin van der Weide +- Expected Project Size: 175 hrs/medium +- Difficulty rating: **medium-hard** (needs experience with Computational Fluid Dynamics) + +## Project GPU: Continuation of GPU acceleration in SU2 +Project Description (max. 5 Sentences) +The SU2 code relies heavily on sparse linear algebra. In this area, there is significant speed-up potential with the adoption of GPU-based processing, as was demonstrated in the GSOC 24 project that applied CUDA to sparse matrix-vector multiplications in SU2. The objective of this project is to move more linear algebra operations to GPU in order to avoid host-device communication bottlenecks within the sparse linear system solver. +Expected Outcome (deliverables): Make SU2’s sparse linear solver GPU-native, i.e. minimal host-device communication after the initial setup of the system. +- Skills Required C++ +- Possible Mentors Pedro Gomes (lead), Ole Burghardt +- Expected Project Size (90 hrs/ small , 175 hrs/medium, 350 hrs/large): 175 hrs (medium) +- Difficulty rating: **medium** + +## Project AMR: Quick Adaptive Mesh refinement for 2D testcases +Project Description (max. 5 Sentences) +Many users have asked for adaptive mesh refinement capabilities. Several research groups are working on this. The aim of this project is to introduce a quick and easy adaptive mesh refinement that simply reads an existing results file and adaptively refines the meshes based on the value of a field. +Expected Outcome (deliverables): SU2_AMR, an added executable that simply splits 2D quad and triangle cells +- Skills Required: C++ +- Possible Mentors: Nijso Beishuizen (lead) +- Expected Project Size (90 hrs/ small , 175 hrs/medium, 350 hrs/large): 175 hrs (medium) +- Difficulty rating: **medium** + +## Project CMPLX: Performance Optimization of Complex Arithmetic in SU2 +Project Description (max. 5 Sentences) +Complex arithmetic operations currently cause significant performance degradation in SU2 when features requiring complex numbers are enabled. This limitation affects the efficiency of certain solver capabilities and restricts their practical application in industrial-scale problems. Preliminary observations suggest that complex arithmetic is a primary bottleneck, but systematic profiling is needed to confirm and quantify these losses. The project's objective is to profile the solver to identify performance hotspots, validate that complex arithmetic is the root cause, and develop a custom complex arithmetic library optimised for SU2's specific use cases. This work will enable more efficient execution of complex-number-dependent features without compromising computational performance. +Expected Outcome (deliverables): Performance profiling report, custom complex arithmetic library (if validated as necessary), benchmark comparisons demonstrating speedup, integration into SU2 codebase, and documentation with usage guidelines. +- Skills Required: C++ +- Possible Mentors: Joshua A. Kelly (lead), Harsh Mishra +- Expected Project Size (90 hrs/ small , 175 hrs/medium, 350 hrs/large): 175 hrs (medium) +- Difficulty rating: **medium** + +## Project PIML: Towards physics-informed machine learning with SU2 +Project Description (max. 5 Sentences) +SU2 uses algorithmic differentiation (AD) for the adjoint solver and has the ability to use multi-layer perceptrons in data-driven equation of state models through the [MLPCpp](https://github.com/EvertBunschoten/MLPCpp.git) submodule. The aim of this project is to combine these two functionalities to enable physics-informed machine learning (PIML) in SU2 by updating the weights and biases of multi-layer perceptrons using AD for sensitivity calculation. PIML would enable data-driven turbulence modeling, solving partial differential equations without a mesh, and open the door to many other interesting research opportunities. +Expected Outcome (deliverables): Demonstration of training a MLP for a reference data set within SU2 and comparison, MLP training library including at least one commonly used training algorithm (e.g. Adam), and documentation explaining usage. +- Skills Required: C++, experience with machine learning +- Possible Mentors: Evert Bunschoten (lead) +- Expected Project Size (90 hrs/ small , 175 hrs/medium, 350 hrs/large): 175 hrs (medium) +- Difficulty rating: **medium-hard** + +## Project FWH: Generalizing FWH-Based Aeroacoustic Noise Prediction +This project aims to generalize a Python tool that implements Farassat’s 1A formulation of the Ffowcs Williams-Hawkings (FWH) equation for far-field noise prediction. While originally developed for tandem cylinder test cases and recently extended to airfoils, the current implementation is limited by case-specific logic. The primary objective is to refactor the codebase into a robust, geometry-agnostic framework capable of handling diverse and complex flow configurations. Test cases should be included in the regression tests. +Expected Outcome (deliverables): A stand-alone Python code. +- Skills Required: Python +- Possible Mentors: Huseyin Ozdemir, (lead) Nijso Beishuizen +- Expected Project Size (90 hrs/ small, 175 hrs/medium, 350 hrs/large): 175 hrs (medium) +- Difficulty rating: **medium** +- diff --git a/_gsoc/Participation.md b/_gsoc/Participation.md new file mode 100644 index 00000000..3e851834 --- /dev/null +++ b/_gsoc/Participation.md @@ -0,0 +1,39 @@ +--- +title: Student Participation +permalink: /gsoc/Participation/ +--- + +**Welcome to SU2 - GSOC!** + +## What is Google Summer of Code? + +[Google Summer of Code](https://summerofcode.withgoogle.com/) + +Google Summer of Code is a program sponsored by Google to let students interested in Open Source work on cool and challenging open source projects. The basic idea is that you will work together with a mentor on a project. We have selected a couple of main topics for you but it is up to you to write a more complete project proposal. If you have ideas of your own, that is fine too but you will need to find a mentor to supervise such a project. + +If you would like to apply, please make sure that you have subscribed to [CFD-online](https://www.cfd-online.com/Forums/su2/) and github, and additionally join the developers team on slack (see our main website [su2code](https://su2code.github.io/). In that way you can stay informed about SU2, and our GSOC involvement. + +If you are interested in applying for GSOC with an SU2 project, please do the following: +1. send an application email to gsoc@su2foundation.org with some personal details, education background and motivation. +2. become a member of our slack channel and subscribe to the **general** and **gsoc** subchannel of SU2. Please introduce yourself :-) + +## To Apply: +To be considered as a GSOC student for an SU2 project, it is not sufficient to simply write a proposal and send it to the google website. We will not accept students who never contacted us or did not finish the assignments. We encourage students to participate in code development by fixing bugs or working on features. The minimum requirements to get accepted by the SU2 team for a GSOC project are: + +- Create a brief resume with your contact details, your education and code experience. If we cannot contact you, *we will not contact you*. +- Briefly write about your experience and interests in Computational Fluid Dynamics and SU2, and the specific project you would like to work on (if you know this already) +- Briefly write about your current work schedule: are you studying/working, how will you manage the time, etc.. +- Send it to gsoc@su2foundation.org +- Make the assignments on the assignment page and send us your github page with your results. +- work on fixing things in SU2 + +Then in the last stage: + +- **Together with a mentor** you will create a project proposal and a planning with a timeline containing a breakdown of the project in parts with periodic deliverables/milestones. + +## Evaluation +Note that applying does not mean acceptance into the program. We will carefully consider your application to see if you are capable of the job, taking into account your experience and availability. We heavily weigh your participation and visibility in the introduction phase. +Please note that experience with SU2 is required. A merged Pull Request on github is highly recommended experience. A pull request for a tutorial or validation testcase is also acceptable and will count as experience. + +## Use of AI +We allow usage of AI tools to *assist* you with your work. However, we do not allow the use of AI in vibe-coding where you let AI generate code that you do not understand. We also do not allow AI for automatic discussions with mentors or other users. AI is your assistant, not your replacement. If you do everything with AI, we might as well do it ourselves without you. diff --git a/_includes/gsoc_nav.html b/_includes/gsoc_nav.html new file mode 100644 index 00000000..4065d44b --- /dev/null +++ b/_includes/gsoc_nav.html @@ -0,0 +1,22 @@ +
+{% for section in site.data.gsoc %} +
+ +
+
    + {% for item in section.gsoc %} + {% assign item_url = item | prepend:"/gsoc/" | append:"/" %} + {% assign p = site.gsoc | where:"url", item_url | first %} + {{ p.title }} + {% endfor %} +
+
+
+{% endfor %} +
diff --git a/_includes/gsoc_section_nav.html b/_includes/gsoc_section_nav.html new file mode 100644 index 00000000..f5feadf8 --- /dev/null +++ b/_includes/gsoc_section_nav.html @@ -0,0 +1,52 @@ +{% comment %} +Map grabs the doc sections, giving us an array of arrays. Join, flattens all +the items to a comma delimited string. Split turns it into an array again. +{% endcomment %} +{% assign gsoc = site.data.gsoc | map: 'gsoc' | join: ',' | split: ',' %} + +{% comment %} +Because this is built for every page, lets find where we are in the ordered +document list by comparing url strings. Then if there's something previous or +next, lets build a link to it. +{% endcomment %} + +{% for document in gsoc %} + {% assign document_url = document | prepend:"/gsoc/" | append:"/" %} + {% if document_url == page.url %} +