Ported Missing Riemann Solvers. Ported RK5 and Euler. SSPRK33, SSPRK43 and Limiter cherrypick from Zalbanob-Refactor#74
Ported Missing Riemann Solvers. Ported RK5 and Euler. SSPRK33, SSPRK43 and Limiter cherrypick from Zalbanob-Refactor#74Rodrigoansf wants to merge 18 commits into
Conversation
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
amrueda
left a comment
There was a problem hiding this comment.
Thanks, @Rodrigoansf! Good catch!
Can you please add/activate a test for RoePikeRiemannSolver and u_dissRiemannSolver?
Co-authored-by: Andrés Rueda-Ramírez <am.rueda@upm.es>
There was a problem hiding this comment.
Pull request overview
This PR expands the Navier–Stokes regression suite (notably cylinder cases) to cover additional Riemann solvers and updates expected monitor values accordingly, while also extending/porting explicit time integrators (RK5 + Explicit Euler) toward GPU/OpenACC execution paths. It also wires the new/updated tests into the repo’s configure script and CI workflows.
Changes:
- Add new cylinder test cases/configs for additional Riemann solvers (Roe-Pike/Pirozzoli, viscous NS, u-diss, Rusanov) and update expected regression values.
- Update Navier–Stokes Riemann-solver selection/description and adjust several solvers’ internal flux handling.
- Update explicit time integrators (RK3/RK5/Euler) with OpenACC-oriented loop structures and refresh CI/configure coverage for the new tests.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Solver/test/NavierStokes/CylinderViscousStandard/SETUP/ProblemFile.f90 | Adds a new cylinder regression problem file (viscous-NS solver) with expected monitor values. |
| Solver/test/NavierStokes/CylinderViscousStandard/CylinderViscousStandard.control | Adds control file selecting the viscous NS Riemann solver and defining monitors. |
| Solver/test/NavierStokes/CylinderUdissStandard/SETUP/ProblemFile.f90 | Adds a new cylinder regression problem file (u-diss solver) with expected monitor values. |
| Solver/test/NavierStokes/CylinderUdissStandard/CylinderUdissStandard.control | Adds control file selecting the u-diss Riemann solver and defining monitors. |
| Solver/test/NavierStokes/CylinderRusanovStandard/SETUP/ProblemFile.f90 | Updates regression metadata and expected values for the Rusanov-based cylinder run. |
| Solver/test/NavierStokes/CylinderRusanovStandard/CylinderRusanovStandard.control | Switches the cylinder case to use the Rusanov Riemann solver. |
| Solver/test/NavierStokes/CylinderRoePikePirozzoli/SETUP/ProblemFile.f90 | Updates regression metadata and expected values for the Roe-Pike/Pirozzoli cylinder run. |
| Solver/test/NavierStokes/CylinderRoePikePirozzoli/CylinderRoePikePirozzoli.control | Sets solver/averaging to Roe-Pike + Pirozzoli for this regression. |
| Solver/src/libs/timeintegrator/ExplicitMethods.f90 | Refactors RK3/RK5 and Explicit Euler stepping logic, adding OpenACC loop structures. |
| Solver/src/libs/physics/navierstokes/RiemannSolvers_NS.f90 | Adds/handles viscous-NS solver in selector/describe; refactors several solvers’ flux-rotation handling; removes CentralRiemannSolver_acc. |
| Solver/configure | Updates configured test-case list to include the new/renamed cylinder tests. |
| README.md | Removes a performance note about specific Riemann solvers. |
| .github/workflows/CI_serial_GPU.yml | Updates and extends GPU serial CI to run the new/renamed cylinder regressions. |
| .github/workflows/CI_parallel_NS.yml | Updates and extends MPI CPU CI to run the new/renamed cylinder regressions. |
| .github/workflows/CI_parallel_GPU.yml | Updates and extends MPI GPU CI to run the new/renamed cylinder regressions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| #if (defined(CAHNHILLIARD)) && (!defined(FLOW)) | ||
| mesh % elements(id) % storage % G_CH = a(k)*mesh % elements(id) % storage % G_CH + mesh % elements(id) % storage % cDot | ||
| mesh % elements(id) % storage % c = mesh % elements(id) % storage % c + c(k)*deltaT* mesh % elements(id) % storage % G_CH | ||
| mesh % elements(id) % storage % G_CH = a(stage)*mesh % elements(id) % storage % G_CH + mesh % elements(id) % storage % cDot | ||
| mesh % elements(id) % storage % c = mesh % elements(id) % storage % c + c(stage)*deltaT* mesh % elements(id) % storage % G_CH | ||
| #endif |
| #if (defined(CAHNHILLIARD)) && (!defined(FLOW)) | ||
| mesh % elements(id) % storage % c = mesh % elements(id) % storage % c + deltaT * mesh % elements(id) % storage % cDot | ||
| #endif |
| ! Called at the the end of the main driver after | ||
| ! everything else is done. |
| ! Called at the the end of the main driver after | ||
| ! everything else is done. |
|
@copilot resolve the merge conflicts in this pull request |
No description provided.