Skip to content

Merge develop into main#59

Draft
amrueda wants to merge 71 commits into
mainfrom
develop
Draft

Merge develop into main#59
amrueda wants to merge 71 commits into
mainfrom
develop

Conversation

@amrueda

@amrueda amrueda commented May 12, 2026

Copy link
Copy Markdown
Member

I open this PR (as a draft) to keep track of the changes in develop.

Pol Solé Miró and others added 30 commits November 21, 2025 06:36
Updated the CI_parallel_NS.yml workflow to run the Navier-Stokes Channel test with 64 MPI processes instead of 8, likely to improve test coverage or performance.
The Channel test step in the CI workflow is now divided into separate serial and parallel executions, improving clarity and coverage of both execution modes.
Introduced two new CI steps to run the Channel Navier-Stokes test in parallel using 8 and 64 MPI processes. This enhances test coverage for parallel execution scenarios.
Aligns the GPU WallFunctionConnectivity implementation with the CPU version, fixing bugs and improving robustness in MPI parallel executions. Adds and updates serial and parallel channel tests, corrects channel forcing, and improves CI workflows and validation.
…ion-in-multiphase-solver2

Fixed velocity computation. Updated test values.
@loganoz loganoz requested a review from Copilot May 22, 2026 08:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR syncs develop into main, introducing support for reusing previously-generated MPI mesh partitioning files and expanding CI/test coverage for additional Navier–Stokes cases.

Changes:

  • Add a new control keyword to read mesh partitioning from disk and corresponding infrastructure to write/read partitioning metadata.
  • Update wall-function connectivity and several MPI/OpenACC paths to improve parallel behavior.
  • Expand documentation and CI to cover new/updated test cases (UniformFlow read-partitions, multiple cylinder cases, Channel64).

Reviewed changes

Copilot reviewed 45 out of 46 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
doc/pages/user_manual/running-a-simulation.md Documents the new “read partitioning from files” control keyword.
doc/UserManual.tex Adds the new keyword to the LaTeX manual and fixes a few formatting/color/math details.
Solver/test/NavierStokes/UniformFlow/UniformFlow_HDF5_read_partitions.control New test control file exercising partitioning read-from-disk behavior.
Solver/test/NavierStokes/CylinderStandardCentral/SETUP/ProblemFile.f90 Adds a new cylinder test harness with assertions.
Solver/test/NavierStokes/CylinderStandardCentral/CylinderStandardCentral.control Control file for the cylinder “Standard Central” case.
Solver/test/NavierStokes/CylinderPirozzoliRoe/SETUP/ProblemFile.f90 Adds a new cylinder test harness with assertions.
Solver/test/NavierStokes/CylinderPirozzoliRoe/CylinderPirozzoliRoe.control Control file for the cylinder “Pirozzoli Roe” case.
Solver/test/NavierStokes/CylinderMorinishiLowDissipationRoe/SETUP/ProblemFile.f90 Adds a new cylinder test harness with assertions.
Solver/test/NavierStokes/CylinderMorinishiLowDissipationRoe/CylinderMorinishiLowDissipationRoe.control Control file for the cylinder “Morinishi low-dissipation Roe” case.
Solver/test/NavierStokes/CylinderKennedyGruberLaxFriedrichs/SETUP/ProblemFile.f90 Adds a new cylinder test harness with assertions.
Solver/test/NavierStokes/CylinderKennedyGruberLaxFriedrichs/CylinderKennedyGruberLaxFriedrichs.control Control file for the cylinder “Kennedy–Gruber LF” case.
Solver/test/NavierStokes/CylinderEntropyConservingCentral/SETUP/ProblemFile.f90 Adds a new cylinder test harness with assertions.
Solver/test/NavierStokes/CylinderEntropyConservingCentral/CylinderEntropyConservingCentral.control Control file for the cylinder “Entropy conserving Central” case.
Solver/test/NavierStokes/CylinderDucrosMatrixDissipation/SETUP/ProblemFile.f90 Adds a new cylinder test harness with assertions.
Solver/test/NavierStokes/CylinderDucrosMatrixDissipation/CylinderDucrosMatrixDissipation.control Control file for the cylinder “Ducros + Matrix dissipation” case.
Solver/test/NavierStokes/Channel64/SETUP/ProblemFile.f90 Adds/adjusts channel test setup code.
Solver/test/NavierStokes/Channel64/Channel.control Adds a 64-rank channel control file.
Solver/test/NavierStokes/Channel/SETUP/ProblemFile.f90 Removes OscarChannel and updates channel logic to reflect new forcing approach.
Solver/test/Multiphase/RisingBubbleVreman/SETUP/ProblemFile.f90 Updates golden values in multiphase test assertions.
Solver/test/Components/outdated/Gradients/make.deps Updates outdated dependency list for MeshPartitioning.
Solver/src/libs/sources/ChannelForcing.f90 Refactors channel forcing; adds global rho extrema handling and MPI reductions.
Solver/src/libs/physics/multiphase/VariableConversion_MU.f90 Adjusts velocity gradient conversion formula for multiphase.
Solver/src/libs/physics/common/bcs/WallFunctionConnectivity.f90 Reworks wall-function neighbor connectivity to use face storage and adds ghost-handling warning.
Solver/src/libs/physics/common/bcs/InflowBC.f90 Fixes preprocessor branch to describe multiphase inflow correctly.
Solver/src/libs/mpiutils/partitioned_mesh.f90 Adds flag for “read partitioning from file” and changes MPI_Partitioning visibility.
Solver/src/libs/mpiutils/MPI_Face.f90 Uses MPI_DOUBLE_PRECISION for Q send/recv.
Solver/src/libs/mesh/MeshPartitioning.f90 Writes partitioning metadata files and adds parallel read routine.
Solver/src/libs/mesh/Makefile Reorders mesh library objects to satisfy build dependencies.
Solver/src/libs/mesh/IBMClass.f90 Adds OpenACC host updates before MPI usage in IBM band-point computation.
Solver/src/libs/mesh/HexMesh.f90 Adds read-from-file partition info in diagnostics and extends host updates for Cahn–Hilliard fields.
Solver/src/libs/mesh/HexElementClass.f90 Fixes OpenACC private variables list to include inv_jac.
Solver/src/libs/mesh/FaceClass.f90 Adjusts OpenACC loop structure when projecting flux to element storage.
Solver/src/libs/foundation/Setup.f90 Adds a main keyword constant for reading partitioning from files.
Solver/src/libs/discretization/EllipticBR1.f90 Avoids integer arithmetic in penalty scaling under MULTIPHASE.
Solver/src/libs/discretization/DGSEMClass.f90 Adds control flow to read partitioning from files instead of partitioning on root.
Solver/src/addons/mergeStatistics/StatsAveragingModule.f90 Fixes stats variable count when gradients are present.
Solver/src/NavierStokesSolverRANS/main.f90 Ensures read partitioning from files has a default value.
Solver/src/NavierStokesSolver/main.f90 Ensures read partitioning from files has a default value.
Solver/src/MultiphaseSolver/main.f90 Ensures read partitioning from files has a default value.
Solver/src/MultiphaseSolver/SpatialDiscretization.f90 Reorders MPI face updates and refactors MPI-face flux paths for multiphase/OpenACC.
Solver/configure Registers new test cases (cylinders + Channel64).
README.md Adds an acknowledgments section.
.github/workflows/CI_parallel_NS.yml Adds CI steps for read-partition test and additional Navier–Stokes and channel test cases.
Comments suppressed due to low confidence (1)

doc/pages/user_manual/running-a-simulation.md:1

  • Missing space in the parenthetical: 'NUMRANKSis' should be 'NUMRANKS is'.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -7,7 +7,7 @@ module MeshPartitioning
use FileReadingUtilities , only: RemovePath, getFileName

Comment on lines +442 to +444
! Create partitioning folder if not present
write(path,'(A,I0,A)') "./MESH/partitioning_", no_of_domains, "_ranks/"
call system("mkdir -p " // trim(path))
real(kind=RP) :: fluxL(1:NCONS,0:f % Nf(1),0:f % Nf(2))
real(kind=RP) :: fluxR(1:NCONS,0:f % Nf(1),0:f % Nf(2))
real(kind=RP) :: flux(1:NCONS,0:f % Nf(1),0:f % Nf(2),2)
integer :: i, j, eq
Comment on lines +1204 to +1208
do k = 1, NGRAD
UxL(k) = f % storage(1) %U_x(k,i,j) * scaleMu(k)
UyL(k) = f % storage(1) %U_y(k,i,j) * scaleMu(k)
UzL(k) = f % storage(1) %U_z(k,i,j) * scaleMu(k)
end do
Comment on lines +206 to +212
#ifdef _HAS_MPI_
if (MPI_Process % doMPIAction) then
call mpi_allreduce(ghostCountLocal, ghostCountGlobal, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, ierr)
else
ghostCountGlobal = ghostCountLocal
end if
#else
type(PartitionedMesh_t), allocatable, public :: mpi_allPartitions(:)

integer, protected, public :: MPI_Partitioning
integer, public :: MPI_Partitioning
Comment on lines +1148 to +1151
run: |
source /opt/intel/oneapi/setvars.sh || true
mpiexec --oversubscribe -n 64 ./horses3d.ns Channel.control
if: '!cancelled()'
Comment thread README.md
@horses-framework horses-framework deleted a comment from codecov Bot Jun 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants