Skip to content

Conversation

@CatarinaGarbacz
Copy link
Contributor

Proposed Changes

Adding the new solver NEMO to the develop branch. The NEMO solver concerns the simulation of hypersonic flows, accounting for thermal nonequilibrium and finite-rate chemistry, following Park's 2Temperature model. The system of equations to solve is the conservation of each chemical species mass, momentum, total energy and vibrational energy. Both inviscid and viscous simulations are available, respectively, solver NEMO_EULER and NEMO_NAVIER_STOKES.

Most of the changes consisted in the addition of new files (listed below), and all the necessary changes in the high-level classes (drivers, integration, config).

new files concerning this solver:
output/CNEMOCompOutput.cpp
variables/CNEMOEulerVariable.cpp
variables/CNEMONSVariable.cpp
solvers/CNEMOEulerSolver.cpp
solvers/CNEMONSSolver.cpp
numerics/NEMO/convection/lax.cpp
numerics/NEMO/convection/roe.cpp
numerics/NEMO/convection/ausm.cpp
numerics/NEMO/convection/ausmplusup2.cpp
numerics/NEMO/convection/ausmpwplus.cpp
numerics/NEMO/convection/msw.cpp
numerics/NEMO/NEMO_diffusion.cpp
numerics/NEMO/NEMO_sources.cpp

Future/ongoing work is looking into making use of the CFluidModel class , introducing a new child class CNEMOGas to handle all mixture/thermodynamics/transport/chemistry related computations - follwing the generic SU2 structure.

Related Work

Resolve any issues (bug fix or feature request), note any related PRs, or mention interactions with the work of others, if any.

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 the '-Wall -Wextra -Wno-unused-parameter -Wno-empty-body' compiler flags).
  • My contribution is commented and consistent with SU2 style.
  • I have added a test case that demonstrates my contribution, if necessary.
  • [not yet] I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp) , if necessary.

@pr-triage pr-triage bot added the PR: draft label Jun 2, 2020
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.

Glad to see this feature making it into develop 👍 and looking forward to see some cool results in the conference.
Some comments below, more will come later, I like pretty much everything except the (maybe unnecessary) duplication.

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.

A few more comments, there are definitely a lot of interesting things going on in those new numerics classes, which I will not pretend I understand xD so... good chance some of my comments don't make sense. But this duplication of CEulerSolver methods needs to be avoided.

@WallyMaier
Copy link
Contributor

@CatarinaGarbacz thanks for bringing this up with develop. @pcarruscag thanks for helping the less skilled programmers (i.e. me) walking through these comments!

@CatarinaGarbacz
Copy link
Contributor Author

@pcarruscag the new and old comments have been addressed. Also the many warnings the code was generating.

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.

Awesome, thank you for the changes @CatarinaGarbacz, LGTM but let's try to get at least another set of eyes over the code.

@CatarinaGarbacz CatarinaGarbacz changed the title feature_NEMO NEMO solver - simulation of chemically-reactive and nonequilibrium flows Jul 30, 2020
Comment on lines 2069 to 2072
if ((Boundary == HEAT_FLUX) || (Boundary == ISOTHERMAL) || (Boundary == CHT_WALL_INTERFACE)) {
/*--- Forces initialization at each Marker ---*/
if ((Boundary == HEAT_FLUX) ||
(Boundary == ISOTHERMAL) ||
(Boundary == CHT_WALL_INTERFACE) ||
(Boundary == SMOLUCHOWSKI_MAXWELL)) { /*--- Forces initialization at each Marker ---*/
Copy link
Member

Choose a reason for hiding this comment

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

@fmpmorgado please don't do this, modify "CConfig::GetViscous_Wall()" to include the new marker and use it instead.
This repetition of enums throughout the code is a major source of bugs and it is impossible to maintain, see #770.

Copy link
Contributor

Choose a reason for hiding this comment

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

Thank you for the comment. I believe it is working now

Copy link
Member

Choose a reason for hiding this comment

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

The compilation problem is solved but you will still need to add SMOLUCHOWSKI_MAXWELL to that function.

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.

LGTM, merging after tests pass

@CatarinaGarbacz CatarinaGarbacz merged commit 870119a into develop Sep 4, 2020
@CatarinaGarbacz CatarinaGarbacz deleted the feature_NEMO branch September 4, 2020 10:56
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.

7 participants