-
Notifications
You must be signed in to change notification settings - Fork 917
[WIP] Implementing variable density for unsteady incompressible flow #2641
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
base: develop
Are you sure you want to change the base?
Conversation
|
@Cristopher-Morales can you review this pr please? |
Removed commented-out code for setting density at local point.
Updated the comment for density retrieval to reflect changes for transient density handling.
Removed unnecessary blank lines in CIncEulerVariable.hpp
Removed unnecessary blank lines in CVariable.hpp
Removed unnecessary blank lines to improve code readability.
Hi @pcarruscag ! Yes, I can help reviewing this PR. Please let me know if you need something else from my side |
Removed commented-out code and updated density calculation.
|
@Cristopher-Morales I guess the changes to the preconditioner can be removed from this PR since we now have your implementation |
Removed unnecessary blank lines in SetPrimVar function.
Removed unnecessary blank lines in CVariable.cpp.
Removed debug print statement from SetPrimVar function.
|
|
||
| inline void Set_Density_time_n(unsigned long iPoint, su2double val) { | ||
| Density_time_n[iPoint] = val; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Documentation must be added, similar to the function above SetDensity, Same for the two functions below Set_Density_unsteady and GetDensity_time_n
Co-authored-by: Cristopher Morales <[email protected]>
Co-authored-by: Cristopher Morales <[email protected]>
Co-authored-by: Cristopher Morales <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Cristopher Morales <[email protected]>
| SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) | ||
|
|
||
| SU2_OMP_FOR_STAT(omp_chunk_size) | ||
| //for (auto i_point = 0u; i_point < nPointDomain; i_point++) { |
Check notice
Code scanning / CodeQL
Commented-out code Note
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 3 days ago
To fix this, remove the commented‑out for statement entirely. This eliminates dead commented‑out code while preserving the current behavior, which uses nPoint as the loop bound.
Concretely, in SU2_CFD/src/solvers/CSpeciesFlameletSolver.cpp, locate the SU2_OMP_FOR_STAT(omp_chunk_size) macro in CSpeciesFlameletSolver::Preprocessing and delete the line containing //for (auto i_point = 0u; i_point < nPointDomain; i_point++) {. No new methods, imports, or definitions are needed, and no other lines need to change.
-
Copy modified line R95
| @@ -88,11 +88,11 @@ | ||
| SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) | ||
|
|
||
| SU2_OMP_FOR_STAT(omp_chunk_size) | ||
| //for (auto i_point = 0u; i_point < nPointDomain; i_point++) { | ||
| for (auto i_point = 0u; i_point < nPoint; i_point++) { | ||
| CFluidModel* fluid_model_local = solver_container[FLOW_SOL]->GetFluidModel(); | ||
| su2double* scalars = nodes->GetSolution(i_point); | ||
| for (auto iVar = 0u; iVar < nVar; iVar++) scalars_vector[iVar] = scalars[iVar]; | ||
| for (auto iVar = 0u; iVar < nVar; iVar++) scalars_vector[iVar] = scalars[iVar]; | ||
|
|
||
| /*--- Compute total source terms from the production and consumption. ---*/ | ||
| unsigned long misses = SetScalarSources(config, fluid_model_local, i_point, scalars_vector); |
|
|
||
| /*! \brief Minimum required volume fields for restart file. */ | ||
| const std::vector<string> restartVolumeFields = {"COORDINATES", "SOLUTION", "SENSITIVITY", "GRID_VELOCITY"}; | ||
| const std::vector<string> restartVolumeFields = {"COORDINATES", "SOLUTION", "SENSITIVITY", "GRID_VELOCITY", "DENSITY_TIME_N", "DENSITY_TIME_N1"}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
add density only with unsteady
| Density_time_n = nodes->GetDensity_time_n(iPoint); | ||
| V2U(Density_time_n, V_time_n, U_time_n); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
alignment
| V2U(Density_time_nM1, V_time_nM1, U_time_nM1); | ||
| V2U(Density_time_n, V_time_n, U_time_n); | ||
| V2U(Density, V_time_nP1, U_time_nP1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
alignment
Proposed Changes
Implements variable density treatment for unsteady incompressible flow simulations. Currently, SU2 uses constant density in transient simulations, which is inaccurate for combustion cases where density varies significantly due to heat release and species composition changes. This contribution enables proper density updates during time-stepping for flamelet-based combustion modeling. For now, only 1st order time marching is implemented
Related Work
Related to incompressible flow solver and flamelet combustion modeling. No specific issue linked yet.
PR Checklist
pre-commit run --allto format old commits.