-
-
Notifications
You must be signed in to change notification settings - Fork 19
Documentation
To build ParMmg, see the project Readme.
Each up-to-date ParMmg release is compatible with the corresponding last Mmg release.
Also, we are doing our best efforts to keep the develop
branch of ParMmg compatible with the current Mmg develop
branch. Compatibility is handled automatically when Mmg is downloaded by ParMmg, but should be checked when using a manually installed version.
When using feature
branches, it is possible that compatibility is provided only with certain Mmg commits containing specific developments. The Mmg commit used by ParMmg can be checked for each branch in the in CMakelist.txt (for example, for develop https://github.com/MmgTools/ParMmg/blob/c1d36678e32fb66ea6abb3ee62031193dcefb3a9/CMakeLists.txt#L256).
VTK I/Os are available within ParMmg if VTK is installed with MPI capacities (.p<vtu>
output file format, vtkMPIController.h
header file is needed). These capacities are not enabled for most of the VTK distributions available through packages (apt
, homebrew
...), so it is needed to build VTK from sources.
For VTK-9.2.5, it is needed to enable the VTK_GROUP_ENABLE_MPI
and VTK_USE_MPI
CMake's flags at configuration step:
cmake -DVTK_GROUP_ENABLE_MPI=YES -DVTK_USE_MPI=ON
For now, ParMmg allows to perform parallel mesh adaptation inside the volume mesh (no surface modifications) starting from a centralized mesh.
To see the available parameters of ParMmg, use the parmmg_O3 -h
command.
To print the default parameters, type parmmg_O3 -val
.
Users can tune verbosity levels between -1 (totally mute library) and 5 (high verbosity level) using the -v [n]
argument (n being the wanted level of verbosity).
Users can tune the amount of memory used by each process (in MB) using the -m [n]
argument. By default, 50% of the available memory is used.
For now, as ParMmg is very slow (optimization is in progress), the default number of iterations is set to 3. User can tune this number using the -niter [n]
argument.
ParMmg may remesh sequentially multiple meshes per processor. The size of the mesh (thus, the number of meshes per proc) can be tune using the -mesh-size [n]
option.
After remeshing, the mesh is repartitioned in parallel by moving the old parallel node interfaces. The distance traveled on mesh edges can be tuned using the -nlayers [n]
option.
If the new groups become too big after interface displacement, Metis can be called to split them. The -groups-ratio [val]
option sets the allowed ratio between the current and desired group size.
The other available options are related to the mesh adaptation and inspired from the Mmg option. Documentation is available here(be careful, only a part of the Mmg option is usable).
- surface modifications;
- distributed input mesh;
- solution interpolation;
- ParMetis group redistribution;
- metis int64 compilation;
- contiguous metis partitions;
- Scotch renumbering;
Beside, ParMmg is still very slow. Profiling and improvement will begin and is the priority of the next months.
- Profiling and performance improvement [very high proprity];
- API for distributed input in library mode [very high priority];
- Contiguous partitions [very high priority];
- Map of processors interaction to enhance the loadbalancing [medium priority];
- Scotch renumbering [medium priority];
- Parallel output/input for the application [very slow priority];
The list give the order of priority of the postponed developments (first listed, first developped):
- Solution interpolation;
- Surface modifications;
- Level-set discretization;