Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP]: Flamelet progress variable (FPV) model #1223

Closed
wants to merge 128 commits into from

Conversation

danielmayer
Copy link
Contributor

@danielmayer danielmayer commented Mar 6, 2021

Proposed Changes

This PR implements a combustion model for laminar premixed flames in low Mach number flows. The implementation is based on a flamelet progress variable approach - i.e., the combustion chemistry is parameterized with scalar quantities for which scalar transport equations are solved. The scalars are then used to look up scalar source terms, transport -, and thermodynamic quantities from a lookup table. The lookup table is compiled from one-dimensional flame simulations using more expensive chemistry models - typically finite rate mechanisms.

In this implementation we introduce 2 additional transported scalars: the progress variable c and the total enthalpy h. All fluid properties like density, viscosity, temperature, diffusivity, reaction source terms, etc. are obtained from a lookup table that is made by the user with external 1D detailed chemistry codes like Cantera. Since temperature is now a dependent variable, we do not need to solve the regular temperature equation. However, We keep the SU2 temperature field and simply write our lookup temperature T(c,h) into this field.

As a 'limiting case', a nonreacting passive scalar transport equation has also been implemented. All fluid properties for this passive scalar are constant, but this passive scalar can be easily extended to model nonreacting mixing flows of two fluids with different properties. This model has also been verified to work together with turbulence, although no turbulence chemistry interaction has been implemented for this WIP.

Related Work

This PR implements a generic scalar transport framework which can be aligned with other physics models that make use of transported scalars, e.g. turbulence models. It furthermore implements a generic lookup table framework that can be used as a basis for lookup table based physics models, such as real gas models.

PR Checklist

  • I am submitting my contribution to the develop branch.
  • My contribution generates no new compiler warnings (try with the '-Wall -Wextra -Wno-unused-parameter -Wno-empty-body' compiler flags, or simply --warnlevel=2 when using meson).
  • My contribution is commented and consistent with SU2 style.
  • 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.

Notes

As indicated, this is work in progress. The code compiles and runs with a test case but is far from being clean. Side effects in non-flamelet simulations might occur.

Daniel Mayer and others added 30 commits November 15, 2020 21:49
@su2code su2code deleted a comment from lgtm-com bot Oct 8, 2021
@su2code su2code deleted a comment from lgtm-com bot Oct 19, 2021
@su2code su2code deleted a comment from lgtm-com bot Oct 19, 2021
@su2code su2code deleted a comment from lgtm-com bot Oct 19, 2021
@su2code su2code deleted a comment from lgtm-com bot Oct 19, 2021
@su2code su2code deleted a comment from lgtm-com bot Oct 19, 2021
@TobiKattmann
Copy link
Contributor

@danielmayer the X-code project was updated in #1405 so I just took the whole file from there in case that is not updated automatically in X-code

@TobiKattmann
Copy link
Contributor

@bigfooted thanks for adding a reg test 👍 I guess you forgot to push the .cfg here to the code and the mesh (+table?) to the Testcases repo :) You would do me a great favor by adding every residual, linear solver output and all relevant Objective Functions which are special this combustion simulation, to the screen output and therefore to the reg test to make any changes more obvious

@su2code su2code deleted a comment from lgtm-com bot Oct 26, 2021
@su2code su2code deleted a comment from lgtm-com bot Oct 26, 2021
…d density in axisymmetry for passive scalar approach
@@ -104,7 +104,7 @@ class CSourcePieceWise_transportedScalar_general final : public CNumerics {
if (flame)
Residual[iVar] += yinv*Volume*(Diffusion_Coeff_i[iVar]+Mass_Diffusivity_Tur)*ScalarVar_Grad_i[iVar][1];
else
Residual[iVar] += yinv*Volume*Density_i*(Diffusion_Coeff_i[iVar]+Mass_Diffusivity_Tur)*ScalarVar_Grad_i[iVar][1];
Residual[iVar] += yinv*Volume*(Density_i*Diffusion_Coeff_i[iVar]+Mass_Diffusivity_Tur)*ScalarVar_Grad_i[iVar][1];
Copy link
Contributor

Choose a reason for hiding this comment

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

👍 in case there is an axisymmetric flamelet case (as preliminary as it might get), it would be a great addition to the regression tests ;)

Copy link
Contributor

Choose a reason for hiding this comment

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

yeah, we can make the current planar case I'm working on axisymmetric as well. We have detailed chemistry data of this case as well, so I need to rerun this too to get from verification to validation

@su2code su2code deleted a comment from lgtm-com bot Nov 1, 2021
@stale
Copy link

stale bot commented Mar 2, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is still a relevant issue please comment on it to restart the discussion. Thank you for your contributions.

@stale stale bot added the stale label Mar 2, 2022
@bigfooted
Copy link
Contributor

let's keep this PR for now, while we are creating a new PR, chopping this one up into smaller chunks.

@stale stale bot removed the stale label Mar 6, 2022
@bigfooted bigfooted mentioned this pull request May 16, 2022
4 tasks
@stale
Copy link

stale bot commented Jun 12, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is still a relevant issue please comment on it to restart the discussion. Thank you for your contributions.

@stale stale bot added the stale label Jun 12, 2022
@stale stale bot closed this Jul 10, 2022
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.

5 participants