Skip to content

Improved species solver robustness for coarse grids#2733

Open
EvertBunschoten wants to merge 2 commits intodevelopfrom
feature_flame_lengthscale
Open

Improved species solver robustness for coarse grids#2733
EvertBunschoten wants to merge 2 commits intodevelopfrom
feature_flame_lengthscale

Conversation

@EvertBunschoten
Copy link
Member

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.

grid

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.

iter30

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.
iter40

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 --all to 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.

Copy link
Member

@pcarruscag pcarruscag left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm but then you are not solving the same equations anymore.
If the issue is "propagation speed" it sounds like something should be done about the CFL.

@EvertBunschoten
Copy link
Member Author

Hmmm but then you are not solving the same equations anymore. If the issue is "propagation speed" it sounds like something should be done about the CFL.

It is not about accurately modeling the propagation of the flame, it is just to allow the flame to propagate through the coarse regions of the domain without the solver diverging. For cells larger than the flame length scale, we can't accurately resolve the propagation of the flame front anyway because the diffusive time scales and reaction source time scales differ at those length scales.

@pcarruscag
Copy link
Member

So is it possible to adjust the diffusion coefficients in those regions?
Numerical diffusion as a way of dealing with instabilities is a more established practice than disabling source terms.

@bigfooted
Copy link
Contributor

I agree with Pedro, it is great that it doesn't blow up, but the solution is not physical anymore. You can look into 'thickened flame' models. In these models, the propagation speed is physically correct, but the flame is artificially thickened by increasing the diffusion coefficient.

@bigfooted
Copy link
Contributor

It's mentioned in Poinsot & Veynante btw.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants