Arcane  v3.14.10.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...
 

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 _readNodesFromFileAscii ()
 Lecture des noeuds du maillage.
 
void _readNodesOneEntity (Int32 entity_index)
 
Integer _readElementsFromFileAscii ()
 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 _readOneEntity (Int32 entity_dim)
 
String _getNextLineAndBroadcast ()
 Lis la valeur de la prochaine ligne et la broadcast aux autres rangs.
 
Int32 _getIntegerAndBroadcast ()
 
void _getInt64ArrayAndBroadcast (ArrayView< Int64 > values)
 
void _readOneElementBlock (MeshV4ElementsBlock &block)
 Lit un bloc d'entité de type 'Element'.
 
void _computeNodesPartition ()
 
void _computeOwnCells (MeshV4ElementsBlock &block)
 
Real3 _getReal3 ()
 
void _goToNextLine ()
 

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.
 

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 211 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 1175 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 1190 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 1096 du fichier MshParallelMeshReader.cc.

◆ _allocateCells()

void Arcane::MshParallelMeshReader::_allocateCells ( )
private

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

◆ _allocateGroups()

void Arcane::MshParallelMeshReader::_allocateGroups ( )
private

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

◆ _computeNodesPartition()

◆ _computeOwnCells()

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

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

◆ _getInt64ArrayAndBroadcast()

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

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

◆ _getIntegerAndBroadcast()

Int32 Arcane::MshParallelMeshReader::_getIntegerAndBroadcast ( )
private

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

◆ _getNextLineAndBroadcast()

String Arcane::MshParallelMeshReader::_getNextLineAndBroadcast ( )
private

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

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

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

Référencé par _readEntities(), et readMeshFromMshFile().

◆ _getReal3()

Real3 Arcane::MshParallelMeshReader::_getReal3 ( )
private

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

◆ _goToNextLine()

void Arcane::MshParallelMeshReader::_goToNextLine ( )
private

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

◆ _readElementsFromFileAscii()

Integer Arcane::MshParallelMeshReader::_readElementsFromFileAscii ( )
private

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

Voici la description du format:

numEntityBlocks(size_t) numElements(size_t)
minElementTag(size_t) maxElementTag(size_t)
elementTag(size_t) nodeTag(size_t) ...
...
...
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120

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 724 du fichier MshParallelMeshReader.cc.

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

◆ _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 1291 du fichier MshParallelMeshReader.cc.

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

◆ _readMeshFromFile()

void Arcane::MshParallelMeshReader::_readMeshFromFile ( )
private

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

◆ _readNodesFromFileAscii()

void Arcane::MshParallelMeshReader::_readNodesFromFileAscii ( )
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) >
...
...

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

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

◆ _readNodesOneEntity()

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

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

◆ _readOneElementBlock()

◆ _readOneEntity()

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

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

◆ _readPhysicalNames()

void Arcane::MshParallelMeshReader::_readPhysicalNames ( )
private

Définition à la ligne 1227 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 935 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 359 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 223 du fichier MshParallelMeshReader.cc.

◆ m_is_parallel

bool Arcane::MshParallelMeshReader::m_is_parallel = false
private

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

◆ m_master_io_rank

Int32 Arcane::MshParallelMeshReader::m_master_io_rank = A_NULL_RANK
private

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

◆ m_mesh

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

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

◆ m_mesh_info

MeshInfo Arcane::MshParallelMeshReader::m_mesh_info
private

Définition à la ligne 224 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 226 du fichier MshParallelMeshReader.cc.

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

◆ m_parallel_mng

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

Définition à la ligne 220 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 228 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 :