Improved combustion solver robustness for coarse grids by EvertBunschoten · Pull Request #2733 · su2code/SU2
Simulations of flames in large domains is difficult because volumetric source terms blow up in large cells, causing the species solver to diverge. I implemented a damping term which scales the species source terms in cells with a length scale above a user-defined threshold. This allows for the flame to propagate through regions of the domain with large cells (such as in the far-field) without diverging, while the source terms in refined regions remain unaffected.
To illustrate how this feature improves robustness, I ran a 2D simulation of a circular flame propagating from a refined region in the middle domain towards the edges where the mesh is significantly more coarse.
The image below shows the temperature field after 30 iterations as computed with the previous implementation (left), and the new implementation with a flame length scale specified as 1e-4 m (right). The solution is unaffected while the flame is within the refined region of the mesh.
However, the instance the flame reaches the coarser cells, the solver quickly diverges without damping. With the damping active, the flame propagates through the entire domain without an issue.

PR Checklist
Put an X by all that apply. You can fill this out after submitting the PR. If you have any questions, don't hesitate to ask! We want to help. These are a guide for you to know what the reviewers will be looking for in your contribution.
- I am submitting my contribution to the develop branch.
- My contribution generates no new compiler warnings (try with --warnlevel=3 when using meson).
- My contribution is commented and consistent with SU2 style (https://su2code.github.io/docs_v7/Style-Guide/).
- I used the pre-commit hook to prevent dirty commits and used
pre-commit run --allto format old commits. - I have added a test case that demonstrates my contribution, if necessary.
- I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp), if necessary.

