Skip to content

Documentation

Algiane Froehly edited this page Jan 31, 2023 · 15 revisions

Build ParMmg

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).

Enable VTK I/O

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

Available options

For now, ParMmg allows to perform parallel mesh adaptation inside the volume mesh (no surface modifications) starting from a centralized mesh.

Get help

To see the available parameters of ParMmg, use the parmmg_O3 -h command.

See the default parameters values

To print the default parameters, type parmmg_O3 -val.

Verbosity level

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).

Memory

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.

Number of iterations of mesh adaptation

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.

Number of elements per mesh [advanced use]

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.

Number of layers for interface displacement during mesh repartitioning [advanced use]

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.

Allowed imbalance between current and desired group size [advanced use]

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.

Others

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).

Non available options

  • 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.

Work in progress

  • 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];

Postponed

The list give the order of priority of the postponed developments (first listed, first developped):

  • Solution interpolation;
  • Surface modifications;
  • Level-set discretization;