Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::MshParallelMeshReader

Lecteur de fichiers de maillage au format msh. Plus de détails...

+ Graphe d'héritage de Arcane::MshParallelMeshReader:
+ Graphe de collaboration de Arcane::MshParallelMeshReader:

Classes

class  MeshInfo
 Informations sur le maillage créé Plus de détails...
 
struct  MeshPhysicalName
 Infos sur un nom physique. Plus de détails...
 
struct  MeshPhysicalNameList
 Infos du bloc '$PhysicalNames'. Plus de détails...
 
struct  MeshV4ElementsBlock
 Infos d'un bloc pour $Elements pour la version 4. Plus de détails...
 
struct  MeshV4EntitiesNodes
 Infos pour les entités 0D. Plus de détails...
 
struct  MeshV4EntitiesWithNodes
 Infos pour les entités 1D, 2D et 3D. Plus de détails...
 
class  PeriodicInfo
 Informations sur la périodicité Plus de détails...
 
class  PeriodicOneInfo
 

Types publics

using eReturnType = typename IMeshReader::eReturnType
 

Fonctions membres publiques

 MshParallelMeshReader (ITraceMng *tm)
 
eReturnType readMeshFromMshFile (IMesh *mesh, const String &file_name) override
 Lit le maillage contenu dans le fichier filename et le construit dans mesh.
 
- Fonctions membres publiques hérités de Arccore::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Construit un accesseur via le gestionnaire de trace m.
 
 TraceAccessor (const TraceAccessor &rhs)
 Constructeur par recopie.
 
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
 
virtual ~TraceAccessor ()
 Libère les ressources.
 
ITraceMngtraceMng () const
 Gestionnaire de trace.
 
TraceMessage info () const
 Flot pour un message d'information.
 
TraceMessage pinfo () const
 Flot pour un message d'information en parallèle.
 
TraceMessage info (char category) const
 Flot pour un message d'information d'une catégorie donnée.
 
TraceMessage pinfo (char category) const
 Flot pour un message d'information parallèle d'une catégorie donnée.
 
TraceMessage info (bool v) const
 Flot pour un message d'information.
 
TraceMessage warning () const
 Flot pour un message d'avertissement.
 
TraceMessage pwarning () const
 
TraceMessage error () const
 Flot pour un message d'erreur.
 
TraceMessage perror () const
 
TraceMessage log () const
 Flot pour un message de log.
 
TraceMessage plog () const
 Flot pour un message de log.
 
TraceMessage logdate () const
 Flot pour un message de log précédé de la date.
 
TraceMessage fatal () const
 Flot pour un message d'erreur fatale.
 
TraceMessage pfatal () const
 Flot pour un message d'erreur fatale en parallèle.
 
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flot pour un message de debug.
 
Trace::eDebugLevel configDbgLevel () const
 Niveau debug du fichier de configuration.
 
TraceMessage info (Int32 verbose_level) const
 Flot pour un message d'information d'un niveau donné
 
TraceMessage linfo () const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
TraceMessage linfo (Int32 relative_level) const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
void fatalMessage (const StandaloneTraceMessage &o) const
 

Fonctions membres privées

void _readNodesFromFile ()
 Lecture des noeuds du maillage.
 
void _readNodesOneEntity (Int32 entity_index)
 
Integer _readElementsFromFile ()
 Lecture des éléments (mailles,faces,...)
 
void _readMeshFromFile ()
 
void _setNodesCoordinates ()
 Positionne les coordonnées des noeuds.
 
void _allocateCells ()
 
void _allocateGroups ()
 
void _addFaceGroup (MeshV4ElementsBlock &block, const String &group_name)
 Ajoute des faces au groupe group_name.
 
void _addFaceGroupOnePart (ConstArrayView< Int64 > connectivities, Int32 item_nb_node, const String &group_name, Int32 block_index)
 
void _addCellOrNodeGroup (MeshV4ElementsBlock &block, const String &group_name, IItemFamily *family)
 Ajoute des faces au groupe group_name.
 
void _addCellOrNodeGroupOnePart (ConstArrayView< Int64 > uids, const String &group_name, Int32 block_index, IItemFamily *family)
 
Int32 _switchMshType (Int64, Int32 &) const
 
void _readPhysicalNames ()
 
void _readEntities ()
 Lecture des entités.
 
void _readPeriodic ()
 Lecture des informations périodiques.
 
void _readOneEntity (Int32 entity_dim)
 
bool _getIsEndOfFileAndBroadcast ()
 Retourne true si on est à la fin du fichier.
 
String _getNextLineAndBroadcast ()
 Lis la valeur de la prochaine ligne et la broadcast aux autres rangs.
 
Int32 _getIntegerAndBroadcast ()
 
Int64 _getInt64AndBroadcast ()
 
void _getInt64ArrayAndBroadcast (ArrayView< Int64 > values)
 
void _getInt32ArrayAndBroadcast (ArrayView< Int32 > values)
 
void _getDoubleArrayAndBroadcast (ArrayView< double > values)
 
void _readOneElementBlock (MeshV4ElementsBlock &block)
 Lit un bloc d'entité de type 'Element'.
 
void _computeNodesPartition ()
 
void _computeOwnCells (MeshV4ElementsBlock &block)
 
Real3 _getReal3 ()
 
Int32 _getInt32 ()
 
Int64 _getInt64 ()
 
void _goToNextLine ()
 
void _readAndCheck (const String &expected_value)
 Tente de lire la valeur value.
 

Attributs privés

IMeshm_mesh = nullptr
 
IParallelMngm_parallel_mng = nullptr
 
Int32 m_master_io_rank = A_NULL_RANK
 
bool m_is_parallel = false
 
Ref< IosFilem_ios_file
 
MeshInfo m_mesh_info
 
Int32 m_nb_part = 4
 Nombre de partitions pour la lecture des noeuds et blocs.
 
UniqueArray< Int32 > m_parts_rank
 Liste des rangs qui participent à la conservation des données.
 
bool m_is_binary = false
 Vrai si le format est binaire.
 

Membres hérités additionnels

- Fonctions membres protégées hérités de Arccore::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 

Description détaillée

Lecteur de fichiers de maillage au format msh.

Le format msh est celui utilisé par la bibliothèque gmsh.

Le lecteur supporte les versions 2.0 et 4.1 de ce format.

Seules une partie des fonctionnalités du format sont supportées:

  • seuls les éléments d'ordre 1 sont supportés.
  • les coordonnées paramétriques ne sont pas supportées
  • seules les sections $Nodes et $Entities sont lues

Définition à la ligne 75 du fichier MshParallelMeshReader.cc.

Documentation des définitions de type membres

◆ eReturnType

using Arcane::MshParallelMeshReader::eReturnType = typename IMeshReader::eReturnType

Définition à la ligne 81 du fichier MshParallelMeshReader.cc.

Documentation des constructeurs et destructeur

◆ MshParallelMeshReader()

Arcane::MshParallelMeshReader::MshParallelMeshReader ( ITraceMng tm)
inlineexplicit

Définition à la ligne 232 du fichier MshParallelMeshReader.cc.

Documentation des fonctions membres

◆ _addCellOrNodeGroup()

void Arcane::MshParallelMeshReader::_addCellOrNodeGroup ( MeshV4ElementsBlock block,
const String group_name,
IItemFamily family 
)
private

Ajoute des faces au groupe group_name.

Définition à la ligne 1378 du fichier MshParallelMeshReader.cc.

Références Arcane::MshParallelMeshReader::MeshV4ElementsBlock::index, et m_parts_rank.

◆ _addCellOrNodeGroupOnePart()

void Arcane::MshParallelMeshReader::_addCellOrNodeGroupOnePart ( ConstArrayView< Int64 >  uids,
const String group_name,
Int32  block_index,
IItemFamily family 
)
private

Définition à la ligne 1393 du fichier MshParallelMeshReader.cc.

◆ _addFaceGroup()

void Arcane::MshParallelMeshReader::_addFaceGroup ( MeshV4ElementsBlock block,
const String group_name 
)
private

◆ _addFaceGroupOnePart()

void Arcane::MshParallelMeshReader::_addFaceGroupOnePart ( ConstArrayView< Int64 >  connectivities,
Int32  item_nb_node,
const String group_name,
Int32  block_index 
)
private

Définition à la ligne 1299 du fichier MshParallelMeshReader.cc.

◆ _allocateCells()

void Arcane::MshParallelMeshReader::_allocateCells ( )
private

Définition à la ligne 1172 du fichier MshParallelMeshReader.cc.

◆ _allocateGroups()

void Arcane::MshParallelMeshReader::_allocateGroups ( )
private

Définition à la ligne 1218 du fichier MshParallelMeshReader.cc.

◆ _computeNodesPartition()

◆ _computeOwnCells()

void Arcane::MshParallelMeshReader::_computeOwnCells ( MeshV4ElementsBlock block)
private

Définition à la ligne 1067 du fichier MshParallelMeshReader.cc.

◆ _getDoubleArrayAndBroadcast()

void Arcane::MshParallelMeshReader::_getDoubleArrayAndBroadcast ( ArrayView< double values)
private

Définition à la ligne 434 du fichier MshParallelMeshReader.cc.

◆ _getInt32()

Int32 Arcane::MshParallelMeshReader::_getInt32 ( )
private

Définition à la ligne 475 du fichier MshParallelMeshReader.cc.

◆ _getInt32ArrayAndBroadcast()

void Arcane::MshParallelMeshReader::_getInt32ArrayAndBroadcast ( ArrayView< Int32 >  values)
private

Définition à la ligne 414 du fichier MshParallelMeshReader.cc.

◆ _getInt64()

Int64 Arcane::MshParallelMeshReader::_getInt64 ( )
private

Définition à la ligne 491 du fichier MshParallelMeshReader.cc.

◆ _getInt64AndBroadcast()

Int64 Arcane::MshParallelMeshReader::_getInt64AndBroadcast ( )
private

Définition à la ligne 378 du fichier MshParallelMeshReader.cc.

◆ _getInt64ArrayAndBroadcast()

void Arcane::MshParallelMeshReader::_getInt64ArrayAndBroadcast ( ArrayView< Int64 >  values)
private

Définition à la ligne 394 du fichier MshParallelMeshReader.cc.

◆ _getIntegerAndBroadcast()

Int32 Arcane::MshParallelMeshReader::_getIntegerAndBroadcast ( )
private

Définition à la ligne 362 du fichier MshParallelMeshReader.cc.

◆ _getIsEndOfFileAndBroadcast()

bool Arcane::MshParallelMeshReader::_getIsEndOfFileAndBroadcast ( )
private

Retourne true si on est à la fin du fichier.

Définition à la ligne 340 du fichier MshParallelMeshReader.cc.

Références Arccore::TraceAccessor::info().

◆ _getNextLineAndBroadcast()

String Arcane::MshParallelMeshReader::_getNextLineAndBroadcast ( )
private

Lis la valeur de la prochaine ligne et la broadcast aux autres rangs.

Définition à la ligne 318 du fichier MshParallelMeshReader.cc.

Références Arccore::TraceAccessor::info().

Référencé par _readAndCheck(), _readPeriodic(), et readMeshFromMshFile().

◆ _getReal3()

Real3 Arcane::MshParallelMeshReader::_getReal3 ( )
private

Définition à la ligne 454 du fichier MshParallelMeshReader.cc.

◆ _goToNextLine()

void Arcane::MshParallelMeshReader::_goToNextLine ( )
private

Définition à la ligne 507 du fichier MshParallelMeshReader.cc.

◆ _readAndCheck()

void Arcane::MshParallelMeshReader::_readAndCheck ( const String expected_value)
private

Tente de lire la valeur value.

Définition à la ligne 1667 du fichier MshParallelMeshReader.cc.

Références _getNextLineAndBroadcast(), ARCANE_FATAL, Arccore::TraceAccessor::info(), m_is_binary, et Arcane::CheckedConvert::toInt32().

Référencé par _readEntities().

◆ _readElementsFromFile()

Integer Arcane::MshParallelMeshReader::_readElementsFromFile ( )
private

Lecture des éléments (mailles,faces,...)

Voici la description du format:

* $Elements
*   numEntityBlocks(size_t) numElements(size_t)
*     minElementTag(size_t) maxElementTag(size_t)
*   entityDim(int) entityTag(int) elementType(int; see below)
*     numElementsInBlock(size_t)
*     elementTag(size_t) nodeTag(size_t) ...
*     ...
*   ...
* $EndElements
* 

Dans la version 4, les éléments sont rangés par genre (eItemKind). Chaque bloc d'entité peut-être de dimension différente Il n'y a pas de dimension associé au maillage. On considère donc que la dimension du maillage est la dimension la plus élevée des blocs qu'on lit. Cela signifie aussi qu'on est obligé de lire tous les blocs avant de pouvoir connaitre la dimension du maillage.

En parallèle, chaque bloc est distribué sur les rangs de m_parts_rank.

Renvoie
la dimension du maillage.

Définition à la ligne 922 du fichier MshParallelMeshReader.cc.

Références _readOneElementBlock(), ARCANE_FATAL, ARCANE_THROW, Arccore::TraceAccessor::info(), m_is_binary, et Arcane::math::max().

◆ _readEntities()

void Arcane::MshParallelMeshReader::_readEntities ( )
private

Lecture des entités.

Le format est:

*    $Entities
*      numPoints(size_t) numCurves(size_t)
*        numSurfaces(size_t) numVolumes(size_t)
*      pointTag(int) X(double) Y(double) Z(double)
*        numPhysicalTags(size_t) physicalTag(int) ...
*      ...
*      curveTag(int) minX(double) minY(double) minZ(double)
*        maxX(double) maxY(double) maxZ(double)
*        numPhysicalTags(size_t) physicalTag(int) ...
*        numBoundingPoints(size_t) pointTag(int) ...
*      ...
*      surfaceTag(int) minX(double) minY(double) minZ(double)
*        maxX(double) maxY(double) maxZ(double)
*        numPhysicalTags(size_t) physicalTag(int) ...
*        numBoundingCurves(size_t) curveTag(int) ...
*      ...
*      volumeTag(int) minX(double) minY(double) minZ(double)
*        maxX(double) maxY(double) maxZ(double)
*        numPhysicalTags(size_t) physicalTag(int) ...
*        numBoundngSurfaces(size_t) surfaceTag(int) ...
*      ...
*    $EndEntities
* 

Définition à la ligne 1494 du fichier MshParallelMeshReader.cc.

Références _readAndCheck(), ARCANE_FATAL, Arccore::TraceAccessor::info(), et m_is_binary.

◆ _readMeshFromFile()

void Arcane::MshParallelMeshReader::_readMeshFromFile ( )
private

Définition à la ligne 1701 du fichier MshParallelMeshReader.cc.

◆ _readNodesFromFile()

void Arcane::MshParallelMeshReader::_readNodesFromFile ( )
private

Lecture des noeuds du maillage.

Lit les uniqueId() des noeuds et les coordonnées associées.

Le format est le suivant:

numEntityBlocks(size_t) numNodes(size_t)
minNodeTag(size_t) maxNodeTag(size_t)
entityDim(int) entityTag(int) parametric(int; 0 or 1)
nodeTag(size_t)
...
x(double) y(double) z(double)
< u(double; if parametric and entityDim >= 1) >
< v(double; if parametric and entityDim >= 2) >
< w(double; if parametric and entityDim == 3) >
...
...
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149

Définition à la ligne 667 du fichier MshParallelMeshReader.cc.

Références _computeNodesPartition(), ARCANE_THROW, Arcane::IParallelMng::commSize(), Arccore::TraceAccessor::info(), m_is_binary, et m_nb_part.

◆ _readNodesOneEntity()

void Arcane::MshParallelMeshReader::_readNodesOneEntity ( Int32  entity_index)
private

Définition à la ligne 704 du fichier MshParallelMeshReader.cc.

◆ _readOneElementBlock()

◆ _readOneEntity()

void Arcane::MshParallelMeshReader::_readOneEntity ( Int32  entity_dim)
private

Définition à la ligne 1547 du fichier MshParallelMeshReader.cc.

◆ _readPeriodic()

void Arcane::MshParallelMeshReader::_readPeriodic ( )
private

Lecture des informations périodiques.

Le format est:

*   $Periodic
*     numPeriodicLinks(size_t)
*     entityDim(int) entityTag(int) entityTagMaster(int)
*     numAffine(size_t) value(double) ...
*     numCorrespondingNodes(size_t)
*       nodeTag(size_t) nodeTagMaster(size_t)
*       ...
*     ...
*   $EndPeriodic
* 

Définition à la ligne 1622 du fichier MshParallelMeshReader.cc.

Références _getNextLineAndBroadcast(), ARCANE_FATAL, Arccore::TraceAccessor::info(), et Arcane::CheckedConvert::toInt32().

◆ _readPhysicalNames()

void Arcane::MshParallelMeshReader::_readPhysicalNames ( )
private

Définition à la ligne 1430 du fichier MshParallelMeshReader.cc.

◆ _setNodesCoordinates()

void Arcane::MshParallelMeshReader::_setNodesCoordinates ( )
private

Positionne les coordonnées des noeuds.

La liste est répartie sur les processeurs des rangs de m_parts_rank. On boucle sur les rangs de cette liste et chaque rang envoie aux autres la liste des coordonnées des noeuds qu'il contient. Chaque rang regarde si des noeuds de cette liste lui appartiennent et si c'est le cas positionnent les coordonnées.

Note
Cet algorithme envoie par morceau tous les noeuds et n'est donc pas vraiement parallèle sur le temps d'exécution. On pourrait améliorer cela si on connaissait l'intervalle des uniqueId() de chaque partie et ainsi demander directement au rang concerné les coordonnées qu'on souhaite.

Définition à la ligne 1138 du fichier MshParallelMeshReader.cc.

Références m_parts_rank, Arcane::IMeshBase::nodeFamily(), Arcane::MshParallelMeshReader::MeshInfo::nodes_coordinates, Arcane::MshParallelMeshReader::MeshInfo::nodes_unique_id, et Arcane::IMesh::nodesCoordinates().

◆ _switchMshType()

Int32 Arcane::MshParallelMeshReader::_switchMshType ( Int64  mshElemType,
Int32 &  nNodes 
) const
private

Définition à la ligne 517 du fichier MshParallelMeshReader.cc.

◆ readMeshFromMshFile()

Documentation des données membres

◆ m_ios_file

Ref<IosFile> Arcane::MshParallelMeshReader::m_ios_file
private

Définition à la ligne 244 du fichier MshParallelMeshReader.cc.

◆ m_is_binary

bool Arcane::MshParallelMeshReader::m_is_binary = false
private

Vrai si le format est binaire.

Définition à la ligne 251 du fichier MshParallelMeshReader.cc.

Référencé par _readAndCheck(), _readElementsFromFile(), _readEntities(), _readNodesFromFile(), et _readOneElementBlock().

◆ m_is_parallel

bool Arcane::MshParallelMeshReader::m_is_parallel = false
private

Définition à la ligne 243 du fichier MshParallelMeshReader.cc.

◆ m_master_io_rank

Int32 Arcane::MshParallelMeshReader::m_master_io_rank = A_NULL_RANK
private

Définition à la ligne 242 du fichier MshParallelMeshReader.cc.

◆ m_mesh

IMesh* Arcane::MshParallelMeshReader::m_mesh = nullptr
private

Définition à la ligne 240 du fichier MshParallelMeshReader.cc.

◆ m_mesh_info

MeshInfo Arcane::MshParallelMeshReader::m_mesh_info
private

Définition à la ligne 245 du fichier MshParallelMeshReader.cc.

◆ m_nb_part

Int32 Arcane::MshParallelMeshReader::m_nb_part = 4
private

Nombre de partitions pour la lecture des noeuds et blocs.

Définition à la ligne 247 du fichier MshParallelMeshReader.cc.

Référencé par _computeNodesPartition(), _readNodesFromFile(), _readOneElementBlock(), et readMeshFromMshFile().

◆ m_parallel_mng

IParallelMng* Arcane::MshParallelMeshReader::m_parallel_mng = nullptr
private

Définition à la ligne 241 du fichier MshParallelMeshReader.cc.

◆ m_parts_rank

UniqueArray<Int32> Arcane::MshParallelMeshReader::m_parts_rank
private

Liste des rangs qui participent à la conservation des données.

Définition à la ligne 249 du fichier MshParallelMeshReader.cc.

Référencé par _addCellOrNodeGroup(), _addFaceGroup(), _computeNodesPartition(), _readOneElementBlock(), _setNodesCoordinates(), et readMeshFromMshFile().


La documentation de cette classe a été générée à partir du fichier suivant :