Skip to content

comangin/dmplexingmsh

Repository files navigation

DMPLEXINGMSH

Ce dépôt est basé sur la version 4.13.0 de GMSH soit le commit d368e2eb sur la branche master.

Le fichier src/geo/GModelIO_DMPLEX.cpp s'inspire du fichier $PETSC_DIR/plex/plexgmsh.c (commit d0d20fba75ac7041749e4e3bf8ad433758d0c455 (main))

Description

PETSc est une bibliothèque C/Fortran pour les calculs scientifiques intensifs, offrant des solveurs linéaires et non linéaires efficaces, la prise en charge de la parallélisation, l’intégration avec les langages de haut niveau, et une gestion automatique de la mémoire. Le stockage d’un maillage sous la forme d’un DMPLEX au format HDF5 suscite actuellement un intérêt particulier concernant la bibliothèque PETSc. Cet intérêt réside dans la possibilité de lire en parallèle un fichier unique avec un nombre variable et non restreint de processus avant l’exécution d’un code de simulation.

Un DMPLEX est un objet de la bibliothèque PETCSc permettant la représention de la géométrie et de la topologie des grilles non structurées. Depuis PETSc 3.19, un format HDF5 parallèle qui prend en charge le chargement parallèle des maillages et des champs est disponible pour la représentation en DMPLEX (à condition de spécifier l'option -dm_plex_view_hdf5_storage_version 3.0.0). Cependant, GMSH ne génère pas ce format de maillage, nécessitant ainsi une étape de conversion et de redistribution. Cette étape n’étant pas souhaitable, ce format a été implémenté en s’inspirant des fonctions de conversion de la bibliothèque PETSc. Cela permettra de produire un format de maillage en sortie de GMSH qui sera partionné mais non distribué et lisible en parallèle par la bibliothèque PETSc.

Prérequis

  • Les fichiers objets $PETSC_DIR/arch-linux-c-debug/obj/src/dm/interface/dm.o et $PETSC_DIR/arch-linux-c-debug/obj/src/dm/interface/dmi.o sont nécessaires pour activer l'option DMPLEX proposée. La bibliothèque PETSc doit donc être construite par vos soins en spécifiant notamment l'utilisation de MPI (--with-mpi-dir=...), de HDF5 (--with-hdf5-dir=...), de Metis (--with-metis-dir=...) et de ParMETIS (--with-parmetis-dir=...).
  • Si vous souhaitez utiliser le partitionnement ParMETIS de la bibliothèque PETSc, il est conseillé de construire GMSH avec la bibliothèque Metis utilisée pour construire PETSc pour éviter tout conflit. De même pour les bibliothèques MPI et HDF5 (utilisé aussi pour les formats MED et CGNS).

Installation

Créer un répertoire :

mkdir build

Définir les variables d'environnement :

export PETSC_DIR=... (ex: export PETSC_DIR=$HOME/petsc/)
export PETSC_ARCH=... (ex: export PETSC_ARCH=arch-linux-c-debug/)

Exécutez cmake depuis le répertoire de construction, en pointant vers le répertoire source, puis exécutez "make" :

cd build
cmake .. -DENABLE_PETSC=ON -DENABLE_DMPLEX=ON -DENABLE_MPI=ON -DENABLE_SYSTEM_CONTRIB=ON -DMETIS_INC=$HOME/metis/inlcude -DMETIS_LIB=$HOME/metis/lib/libmetis.so
make

Usage

Un cas test de génération de maillage est disponible et se lance de la manière suivante :

./build/gmsh -3 -format dmplex OneSphere.geo -dm_plex_view_hdf5_storage_version 3.0.0 

Des options sont disponibles pour la création du Dmplex :

-dm_plex_gmsh_interpolate : Create faces and edges in the mesh
-dm_plex_gmsh_hybrid : Force triangular prisms to use tensor order
-dm_plex_gmsh_periodic : Read gmsh periodic section
-dm_plex_gmsh_highorder : Generate high-order coordinates
-dm_plex_gmsh_project : Project high-order coordinates to a different space
-dm_plex_gmsh_use_regions : Generate labels with region names
-dm_plex_gmsh_use_generic : Generate generic labels, i.e. Cell Sets, Face Sets, etc
-dm_plex_gmsh_mark_vertices : Add vertices to generated labels
-dm_plex_gmsh_multiple_tags : Allow multiple tags for default labels
-dm_plex_gmsh_spacedim : Embedding space dimension
-dm_localize_height : Localize edges and faces in addition to cells

Par exemple :

./build/gmsh -3 -format dmplex OneSphere.geo -dm_plex_view_hdf5_storage_version 3.0.0  

Afin de partitionner le maillage et l'écrire en parallèle :

mpirun -n 4 ./build/gmsh -3 -format dmplex OneSphere.geo -dm_plex_view_hdf5_storage_version 3.0.0 -redistributed_dm_distribute -redistributed_dm_view -petscpartitioner_type parmetis

Seuls le partitionnement et l'écriture s'effectuent en parallèle.

License

Ce dépôt contient des fichiers sources qui sont la propriété de GMSH et des développements qui sont la propriété de PETSc.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages