Releases: MmgTools/ParMmg
v1.5.0
Important notes
ParMmg is a research software. We don't provide support or user help on this project and lot of features are still experimental and needs to be robustify.
The main objective of this software is to go beyond the memory limit of serial mesh adaptation by exploiting the memory of several nodes. Time scalability it is not our primary goal and the software has not been profiled for the current release.
- Users have now to build the software in CMake
Release
mode to avoid slowness and issues due to the new developper checks. TheDebug
mode is to be used only for developpers - In case of errors, the ParMmg library may call
MPI_Abort
and kill all the process
What's Changed In a Nutshell
- Add parallel hdf5 I/Os
- Add level-set discretization mode with multi-material capability from centralized and distributed inputs. For distributed inputs, the level-set snapping (avoiding bad quality elements) is not yet implemented
- Add strong and numerous checks on private Mmg data consistency in CMake
Debug
mode to improve software robustness and make debugging easier - Add call to
MPI_Abort()
in some parts of the code where we lack time to implement a clean error handling - Modification of the compilation proccess and way to link with Mmg
What's Changed In Detail
- Feature/parallel hdf5 io by @gabriel-suau in #40
- Change Fortran interface for real variable inputs. by @iwheel in #43
- CMake: fix missing SOVERSION by @prj- in #44
- Fix some memory leaks by @prj- in #46
- qualhisto: jumps depend on uninitialised values by @prj- in #47
- parmesh_SetMemGloMax: missing MPI_Comm_free by @prj- in #48
- Documentation. by @lcirrottola in #49
- Feature/clean valgrind leaks by @Algiane in #50
- Changes to Fortran interface by @iwheel in #53
- Feature/tet from tria api by @Algiane in #55
- Fix a conditional jump by @prj- in #54
- Feature/update mmg by @Algiane in #56
- Feature/find mmg private headers by @Algiane in #80
- Proper include for libmmgtypes.h by @prj- in #83
- Feature/GitHub actions by @Algiane in #84
- Feature/compilation simplification by @Algiane in #69
- Add the ls option as argument + test by @laetitia-m in #85
- Fix the input of MMG3D_loadVtuMesh() in PMMG_loadVtuMesh_centralized() by @laetitia-m in #86
- Feature/ls skeleton centralized by @laetitia-m in #87
- Feature/input field distributed by @laetitia-m in #88
- If ls_val is not given in argument, need to go through mmg option parser by @laetitia-m in #89
- Reading of distributed input LS files by @laetitia-m in #90
- Feature/parallel hdf5 io by @lcirrottola in #45
- Feature/new hdf5 tree by @Algiane in #91
- Feature/fix citest multidom distrib by @laetitia-m in #92
- Fix memory errors due to the call of functions on null pointers (mems… by @Algiane in #93
- Fix some bugs in *.pvtu output by @laetitia-m in #94
- First try to fix actions by @laetitia-m in #96
- Creation of distributed LS skeleton by @laetitia-m in #95
- Refactoring of the PMMG_update_singul function to remove duplications… by @Algiane in #98
- Remove useless code from updateTag function by @Algiane in #100
- Feature/fix invalid pointer in mmg by @Algiane in #101
- Feature/fix edge length by @Algiane in #102
- Update point tag with MG_REF if the edge in xtetra is MG_REF + ci tests associated by @laetitia-m in #103
- Copy mesh information of local parameters or LS reference (multimat) by @laetitia-m in #104
- Modify type of rtorecv and rtosend variables by @laetitia-m in #105
- Level-set discretization function
PMMG_ls-cuttet
. Note that multi-material is not supported yet by this function. by @laetitia-m in #106 - Add -f option in the help of ParMmg by @laetitia-m in #107
- Abort if
nosplit
option used in multimat mode by @laetitia-m in #108 - Feature/code coverage by @Algiane in #109
- Dedicated job for coverage submission. by @Algiane in #111
- Modified rule for assigning parallel edge owners by @coprigent in #116
- Diagnose gatherv overflow by @mpotse in #113
- Fix gatherv overflow when the combined packed mesh size exceeds 2^31. by @Algiane in #117
- Fix setting of maximal authorized memory by @Algiane in #119
- Update gfortran version after modification of Macos-12 runner. by @Algiane in #121
- Feature/fix duplication removal by @Algiane in #122
- API_DISTRIB_FACES prioritized over API_DISTRIB_NODES by @coprigent in #112
- Fix problems with extra triangles in input mesh by @coprigent in #110
- Remove dead code by @Algiane in #127
- Fix the way internal and external communicators communicate in
PMMG_cuttet_ls
by @laetitia-m in #126 - (1) Change tag type (int -> uint) and (2) creation of the overlap by @laetitia-m in #123
- Snap val for level-set discretization
PMMG_snpval_ls
by @laetitia-m in #124 - Edge tag consistency by @Algiane in #129
- Error handling in analysis and level-set discretization by @Algiane in #132
- Add multimat mode to ls split by @Algiane in #131
- Disable value snapping (implementation in progress) by @Algiane in #133
- Feature/ls partitioning by @Algiane in #134
- Robustification isotropic mesh adaptation + // ls discretization by @Algiane in #135
New Contributors
- @gabriel-suau made their first contribution in #40
- @iwheel made their first contribution in #43
- @Algiane made their first contribution in #50
- @laetitia-m made their first contribution in #85
- @coprigent made their first contribution in #116
- @mpotse made their first contribution in #113
Full Changelog: v1.4.0...v1.5.0
v1.4.0 (Parallel surface adaptation)
This release introduces parallel surface analysis and adaptation.
- Surface adaptation will be activated by default. In order to switch it off, the parameter
-nosurf
(orPMMG_IPARAM_nosurf
in the API) needs to be set. - The Hausdorff parameter
-hausd
(orPMMG_DPARAM_hausd
in the API) needs to be always set to a meaningful value (even for flat surfaces) in order to get correct metrics on surfaces. - User-provided normal vectors on boundary points are currently not supported.
- Open boundaries are currently not supported with distributed input.
Parallel surface adaptation
This release introduces parallel surface analysis and adaptation.
- Surface adaptation will be activated by default. In order to switch it off, the parameter
-nosurf
(orPMMG_IPARAM_nosurf
in the API) needs to be set. - The Hausdorff parameter
-hausd
(orPMMG_DPARAM_hausd
in the API) needs to be always set to a meaningful value (even for flat surfaces) in order to get correct metrics on surfaces. - User-provided normal vectors on boundary points are currently not supported.
- Open boundaries are currently not supported with distributed input.
v1.3.0
This release introduces:
- improved scalability on more the 100 processes;
- a fix for an erroneous count of memory usage;
- the interpolation on the adapted mesh of user-defined solution fields (on mesh vertices);
- the possibility to speed-up interpolation through the configuration variable USE_POINTMAP;
- the ripristination of output mesh load balancing;
- additional API functions to ease the reconstruction of parallel communicators in node-based solvers.
v1.2.0
This release adds:
- Mesh repartitioning through parallel interface displacement.
- Support for Scotch renumeration.
The current version of ParMmg allows mesh adaptation inside the volume of 3D volume meshes (surface remeshing, isovalue discretization and lagrangian movement are not yet available). You can use it from:
- centralized I/O using the command line;
- centralized or distributed I/O using the API and the library version.