Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du fichier MeshUtils.h

Fonctions utilitaires sur le maillage. Plus de détails...

#include "arcane/utils/FunctorUtils.h"
#include "arcane/utils/MemoryUtils.h"
#include "arcane/Item.h"
+ Graphe des dépendances par inclusion de MeshUtils.h:
+ Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

Aller au code source de ce fichier.

Espaces de nommage

namespace  Arcane
 -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
 

Fonctions

void Arcane::MeshUtils::writeMeshItemInfo (ISubDomain *, Cell cell, bool depend_info=true)
 
void Arcane::MeshUtils::writeMeshItemInfo (ISubDomain *, Node node, bool depend_info=true)
 
void Arcane::MeshUtils::writeMeshItemInfo (ISubDomain *, Edge edge, bool depend_info=true)
 
void Arcane::MeshUtils::writeMeshItemInfo (ISubDomain *, Face face, bool depend_info=true)
 
bool Arcane::MeshUtils::reorderNodesOfFace (Int64ConstArrayView before_ids, Int64ArrayView after_ids)
 Réordonne les noeuds d'une face.
 
bool Arcane::MeshUtils::reorderNodesOfFace2 (Int64ConstArrayView nodes_unique_id, IntegerArrayView new_index)
 Réordonne les noeuds d'une face.
 
Face Arcane::MeshUtils::getFaceFromNodesLocal (Node node, Int32ConstArrayView face_nodes_local_id)
 Recherche une entité face à partir des numéros locaux de ces noeuds.
 
Face Arcane::MeshUtils::getFaceFromNodesUnique (Node node, Int64ConstArrayView face_nodes_unique_id)
 Recherche une entité face à partir des numéros uniques de ces noeuds.
 
Int64 Arcane::MeshUtils::generateHashUniqueId (SmallSpan< const Int64 > nodes_unique_id)
 Génère un identifiant unique à partir d'une liste d'identifiants de noeuds.
 
void Arcane::MeshUtils::removeItemAndKeepOrder (Int32ArrayView items, Int32 local_id)
 Supprime une entité en conservant l'ordre.
 
void Arcane::MeshUtils::checkMeshProperties (IMesh *mesh, bool is_sorted, bool has_no_hole, bool check_faces)
 Vérifie que le maillage possède certaines propriétés.
 
void Arcane::MeshUtils::writeMeshInfosSorted (IMesh *mesh, const String &file_name)
 Ecrit sur le fichier file_name les infos du maillage mesh.
 
void Arcane::MeshUtils::writeMeshInfos (IMesh *mesh, const String &file_name)
 
void Arcane::MeshUtils::writeMeshConnectivity (IMesh *mesh, const String &file_name)
 Ecrit sur le fichier file_name la connectivité du maillage mesh.
 
void Arcane::MeshUtils::checkMeshConnectivity (IMesh *mesh, const XmlNode &root_node, bool check_sub_domain)
 
void Arcane::MeshUtils::checkMeshConnectivity (IMesh *mesh, const String &file_name, bool check_sub_domain)
 
void Arcane::MeshUtils::printItems (std::ostream &ostr, const String &name, ItemGroup item_group)
 Ecrit dans le flux ostr la description des items du groupe item_group.
 
Int64 Arcane::MeshUtils::printMeshGroupsMemoryUsage (IMesh *mesh, Int32 print_level)
 Affiche l'utilisation mémoire des groupes du maillage.
 
void Arcane::MeshUtils::shrinkMeshGroups (IMesh *mesh)
 Limite au plus juste l'usage mémoire des groupes.
 
void Arcane::MeshUtils::dumpSynchronizerTopologyJSON (IVariableSynchronizer *var_syncer, const String &filename)
 Ecrit dans un fichier les informations sur la topologie d'une synchronisation.
 
void Arcane::MeshUtils::computeConnectivityPatternOccurence (IMesh *mesh)
 Calcul et affiche les patterns communs dans les connectivités.
 
void Arcane::MeshUtils::markMeshConnectivitiesAsMostlyReadOnly (IMesh *mesh, RunQueue *q=nullptr, bool do_prefetch=false)
 Indique que les connectivités du maillages ne seront pas régulièrement modifiées.
 
impl::ItemBase Arcane::MeshUtils::findOneItem (IItemFamily *family, Int64 unique_id)
 
impl::ItemBase Arcane::MeshUtils::findOneItem (IItemFamily *family, ItemUniqueId unique_id)
 
void Arcane::MeshUtils::visitGroups (IItemFamily *family, IFunctorWithArgumentT< ItemGroup & > *functor)
 Visite l'ensemble des groupes de family avec le functor functor.
 
void Arcane::MeshUtils::visitGroups (IMesh *mesh, IFunctorWithArgumentT< ItemGroup & > *functor)
 Visite l'ensemble des groupes de mesh avec le functor functor.
 
template<typename LambdaType >
void Arcane::MeshUtils::visitGroups (IItemFamily *family, const LambdaType &f)
 Visite l'ensemble des groupes de family avec la lambda f.
 
template<typename LambdaType >
void Arcane::MeshUtils::visitGroups (IMesh *mesh, const LambdaType &f)
 Visite l'ensemble des groupes de mesh avec la lambda f.
 
Int64 Arcane::MeshUtils::impl::computeCapacity (Int64 size)
 
template<typename DataType >
bool Arcane::MeshUtils::checkResizeArray (Array< DataType > &array, Int64 new_size, bool force_resize)
 Redimensionne un tableau qui est indexé par des 'ItemLocalId'.
 
ItemUniqueId Arcane::MeshUtils::getMaxItemUniqueIdCollective (IMesh *mesh)
 Retourne le maximum des uniqueId() des entités standards du maillage.
 
void Arcane::MeshUtils::checkUniqueIdsHashCollective (IItemFamily *family, IHashAlgorithm *hash_algo, const String &expected_hash, bool print_hash_value, bool include_ghost)
 Vérifie le hash des uniqueId() des entités d'une famille.
 
void Arcane::MeshUtils::fillUniqueIds (ItemVectorView items, Array< Int64 > &uids)
 Rempli uids avec les uniqueId() des entités de view.
 
Ref< IIndexedIncrementalItemConnectivityArcane::MeshUtils::computeNodeNodeViaEdgeConnectivity (IMesh *mesh, const String &connectivity_name)
 Créé ou recréé une connectivité noeuds-noeuds via les arêtes.
 

Description détaillée

Fonctions utilitaires sur le maillage.

Définition dans le fichier MeshUtils.h.

Documentation des fonctions

◆ checkMeshConnectivity() [1/2]

void Arcane::MeshUtils::checkMeshConnectivity ( IMesh mesh,
const String file_name,
bool  check_sub_domain 
)

Définition à la ligne 1136 du fichier MeshUtils.cc.

◆ checkMeshConnectivity() [2/2]

void Arcane::MeshUtils::checkMeshConnectivity ( IMesh mesh,
const XmlNode root_node,
bool  check_sub_domain 
)

Définition à la ligne 1127 du fichier MeshUtils.cc.

◆ checkMeshProperties()

void Arcane::MeshUtils::checkMeshProperties ( IMesh mesh,
bool  is_sorted,
bool  has_no_hole,
bool  check_faces 
)

Vérifie que le maillage possède certaines propriétés.

Si is_sorted, vérifie que les entités de maillage sont triées par ordre croissant de leur uniqueId(). Si has_no_hole est vrai, vérifie que si le maillage possède n entité d'un type, leur numéro local varie bien de 0 à n-1. Si check_faces est vrai, on vérifie pour les faces. Cette option n'est utilisable que pour les maillages ancienne génération (MeshV1) et sera supprimée dès que cette option ne sera plus utilisée.

Définition à la ligne 1351 du fichier MeshUtils.cc.

Références ARCANE_FATAL, ENUMERATE_ITEM, Arccore::ITraceMng::error(), Arcane::IK_Face, Arcane::IK_Particle, Arcane::Item::localId(), Arcane::IMeshBase::traceMng(), et Arcane::Item::uniqueId().

◆ checkResizeArray()

template<typename DataType >
bool Arcane::MeshUtils::checkResizeArray ( Array< DataType > &  array,
Int64  new_size,
bool  force_resize 
)
inline

Redimensionne un tableau qui est indexé par des 'ItemLocalId'.

Le tableau array est redimensionné uniquement si new_size est supérieure à la taille actuelle du tableau ou si force_resize est vrai.

Si le tableau est redimensionné, on réserve une capacité supplémentaire pour éviter de réallouer à chaque fois.

Cette fonction est appelée en général pour les tableaux indexés par un ItemLocalId et donc cette fonction peut être appelée à chaque fois qu'on ajoute une entité au maillage.

Valeurs retournées
truesi un redimensionnement a eu lieu
falsesinon

Définition à la ligne 376 du fichier MeshUtils.h.

Références Arcane::MeshUtils::checkResizeArray().

Référencé par Arcane::MeshUtils::checkResizeArray().

◆ checkUniqueIdsHashCollective()

void Arcane::MeshUtils::checkUniqueIdsHashCollective ( IItemFamily family,
IHashAlgorithm hash_algo,
const String expected_hash,
bool  print_hash_value,
bool  include_ghost 
)

Vérifie le hash des uniqueId() des entités d'une famille.

Calcule via l'algo hash_algo un hash des uniqueId() des entités d'une famille. Pour ce calcul, le rang 0 récupère l'ensemble des uniqueId() des entités propres de chaque sous-domaine, les trie et calcul le hash sur le tableau trié.

Comme la majorité du travail est effectuée par le rang 0, cette méthode n'est pas très extensible et ne doit donc être utilisée qu'à des fins de test.

expected_hash est la valeur attendue du hash sous forme de caractères hexadécimaux (obtenu via Convert::toHexaString()). Si expected_hash est non nul, compare le résultat avec cette valeur et si elle est différente, lance une exception FatalErrorException.

Cette opération est collective.

Définition à la ligne 1884 du fichier MeshUtils.cc.

Références Arcane::IParallelMng::allGatherVariable(), Arcane::IItemFamily::allItems(), ARCANE_CHECK_POINTER, ARCANE_FATAL, Arccore::String::empty(), ENUMERATE_, Arcane::IItemFamily::fullName(), Arccore::TraceAccessor::info(), Arcane::IItemFamily::name(), Arcane::IItemFamily::parallelMng(), Arcane::Convert::toHexaString(), et Arcane::IItemFamily::traceMng().

◆ computeCapacity()

Int64 Arcane::MeshUtils::impl::computeCapacity ( Int64  size)
inline

Définition à la ligne 351 du fichier MeshUtils.h.

◆ computeConnectivityPatternOccurence()

void Arcane::MeshUtils::computeConnectivityPatternOccurence ( IMesh mesh)

Calcul et affiche les patterns communs dans les connectivités.

\interne

Définition à la ligne 1784 du fichier MeshUtils.cc.

Références Arcane::IMeshBase::allCells(), Arcane::IMeshBase::allFaces(), Arcane::IMeshBase::allNodes(), et ARCANE_CHECK_POINTER.

◆ computeNodeNodeViaEdgeConnectivity()

Ref< IIndexedIncrementalItemConnectivity > Arcane::MeshUtils::computeNodeNodeViaEdgeConnectivity ( IMesh mesh,
const String connectivity_name 
)

Créé ou recréé une connectivité noeuds-noeuds via les arêtes.

La connectivité aura pour nom connectivity_name.

Définition à la ligne 38 du fichier MeshUtils2.cc.

Références Arcane::ItemTypeInfo::LocalEdge::beginNode(), Arcane::Node::cells(), Arcane::ItemTypeInfo::LocalEdge::endNode(), ENUMERATE_, Arcane::IMesh::indexedConnectivityMng(), Arcane::Item::localId(), et Arcane::IMeshBase::nodeFamily().

◆ dumpSynchronizerTopologyJSON()

void Arcane::MeshUtils::dumpSynchronizerTopologyJSON ( IVariableSynchronizer var_syncer,
const String filename 
)

Ecrit dans un fichier les informations sur la topologie d'une synchronisation.

Ecrit dans le fichier filename les informations sur la topologie de var_syncer. Cette méthode est collective. Seul le rang 0 écrit l'information de la topologie.

Définition à la ligne 1678 du fichier MeshUtils.cc.

Références Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arcane::IParallelMng::gather(), Arcane::IParallelMng::gatherVariable(), Arccore::TraceAccessor::info(), Arccore::String::localstr(), et Arcane::IParallelMng::traceMng().

◆ fillUniqueIds()

void Arcane::MeshUtils::fillUniqueIds ( ItemVectorView  items,
Array< Int64 > &  uids 
)

Rempli uids avec les uniqueId() des entités de view.

Définition à la ligne 1919 du fichier MeshUtils.cc.

Références ENUMERATE_ITEM, et Arcane::ItemVectorView::size().

◆ findOneItem() [1/2]

impl::ItemBase Arcane::MeshUtils::findOneItem ( IItemFamily family,
Int64  unique_id 
)

Définition à la ligne 1828 du fichier MeshUtils.cc.

◆ findOneItem() [2/2]

impl::ItemBase Arcane::MeshUtils::findOneItem ( IItemFamily family,
ItemUniqueId  unique_id 
)

Définition à la ligne 1840 du fichier MeshUtils.cc.

◆ generateHashUniqueId()

Int64 Arcane::MeshUtils::generateHashUniqueId ( SmallSpan< const Int64 >  nodes_unique_id)

Génère un identifiant unique à partir d'une liste d'identifiants de noeuds.

Définition à la ligne 1931 du fichier MeshUtils.cc.

◆ getFaceFromNodesLocal()

Face Arcane::MeshUtils::getFaceFromNodesLocal ( Node  node,
Int32ConstArrayView  face_nodes_local_id 
)

Recherche une entité face à partir des numéros locaux de ces noeuds.

Recherche la face donnée par la liste ordonnée des numéros locaux de ces noeuds face_nodes_local_id. node doit être le premier noeud de la face. Les noeuds de la face doivent être correctement orientés, comme après un appel à reorderNodesOfFace().

Renvoie
la face correspondante ou 0 si la face n'est pas trouvé.

Définition à la ligne 1558 du fichier MeshUtils.cc.

Références Arcane::Node::face(), Arcane::Item::localId(), Arcane::Node::nbFace(), Arcane::ItemWithNodes::nbNode(), et Arcane::ItemWithNodes::node().

◆ getFaceFromNodesUnique()

Face Arcane::MeshUtils::getFaceFromNodesUnique ( Node  node,
Int64ConstArrayView  face_nodes_unique_id 
)

Recherche une entité face à partir des numéros uniques de ces noeuds.

Recherche la face donnée par la liste ordonnée des numéros unique de ces noeuds face_nodes_unique_id. node doit être le premier noeud de la face. Les noeuds de la face doivent être correctement orientés, comme après un appel à reorderNodesOfFace().

Renvoie
la face correspondante ou 0 si la face n'est pas trouvé.

Définition à la ligne 1582 du fichier MeshUtils.cc.

Références Arcane::Node::face(), Arcane::Node::nbFace(), Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::node(), et Arcane::Item::uniqueId().

◆ getMaxItemUniqueIdCollective()

ItemUniqueId Arcane::MeshUtils::getMaxItemUniqueIdCollective ( IMesh mesh)

Retourne le maximum des uniqueId() des entités standards du maillage.

Les entités standards sont les noeuds, mailles, faces et arêtes. L'opération est collective sur mesh->parallelMng().

Définition à la ligne 1869 du fichier MeshUtils.cc.

Références Arcane::IMeshBase::allCells(), Arcane::IMeshBase::allEdges(), Arcane::IMeshBase::allFaces(), Arcane::IMeshBase::allNodes(), et Arcane::IMesh::parallelMng().

◆ markMeshConnectivitiesAsMostlyReadOnly()

void Arcane::MeshUtils::markMeshConnectivitiesAsMostlyReadOnly ( IMesh mesh,
RunQueue q = nullptr,
bool  do_prefetch = false 
)

Indique que les connectivités du maillages ne seront pas régulièrement modifiées.

Cette fonction permet d'indiquer que les connectivitées associées aux entités du maillage (Node, Edge, Face et Cell) sont la plupart du temps en lecture. A noter que cela ne concerne pas les particules.

En cas d'utilisation sur accélérateur, cela permet de dupliquer les informations entre l'accélérateur et l'hôte pour éviter des aller-retour multiples si les connectivités sont utilisées sur les deux à la fois.

Si q est non nul et que do_prefetch vaut true, alors VariableUtils::prefetchVariableAsync() est appelé pour chaque variable gérant la connectivité.

Définition à la ligne 1802 du fichier MeshUtils.cc.

Références Arcane::IVariable::hasTag(), Arcane::IVariable::meshHandle(), Arcane::IVariable::setAllocationInfo(), et Arcane::IMesh::variableMng().

◆ printItems()

void Arcane::MeshUtils::printItems ( std::ostream &  ostr,
const String name,
ItemGroup  item_group 
)

Ecrit dans le flux ostr la description des items du groupe item_group.

Pour l'affichage, un nom name est associé.

Définition à la ligne 1394 du fichier MeshUtils.cc.

Références ENUMERATE_ITEM.

◆ printMeshGroupsMemoryUsage()

Int64 Arcane::MeshUtils::printMeshGroupsMemoryUsage ( IMesh mesh,
Int32  print_level 
)

Affiche l'utilisation mémoire des groupes du maillage.

Si print_level vaut 0, affiche uniquement l'usage mémoire total. So print_level vaut 1 ou plus, affiche l'usage pour chaque groupe.

En retour, indique la mémoire consommée en octets.

Définition à la ligne 1649 du fichier MeshUtils.cc.

Références Arccore::TraceAccessor::info(), et Arcane::IMeshBase::traceMng().

◆ removeItemAndKeepOrder()

void Arcane::MeshUtils::removeItemAndKeepOrder ( Int32ArrayView  items,
Int32  local_id 
)

Supprime une entité en conservant l'ordre.

Supprime l'entité de numéro local local_id de la liste items. Les entités situées après l'entité supprimée sont décalées pour remplir le trou. Si aucune valeur de items ne vaut local_id, une exception est levée.

Définition à la ligne 1606 du fichier MeshUtils.cc.

Références ARCANE_FATAL, et Arccore::ArrayView< T >::size().

◆ reorderNodesOfFace()

bool Arcane::MeshUtils::reorderNodesOfFace ( Int64ConstArrayView  before_ids,
Int64ArrayView  after_ids 
)

Réordonne les noeuds d'une face.

Cette méthode réordonne la liste des noeuds d'une face pour que les propritétés suivantes soient respectées:

  • le premier noeud de la face est celui dont le numéro global est le plus petit.
  • le deuxième noeud de la face est celui dont le numéro global est le deuxième plus petit.

Cela permet:

  • d'orienter les faces de manière identiques en parallèle.
  • d'accélerer les recherches sur les recherches entre faces.

before_ids et to doivent avoir le même nombre d'éléments

Paramètres
before_idsnuméros globaux des noeuds de la face avant renumérotation.
after_idsen sortie, numéros globaux des noeuds de la face après renumérotation
Valeurs retournées
truesi la face change d'orientation lors de la renumérotation
falsesinon.

Définition à la ligne 1406 du fichier MeshUtils.cc.

◆ reorderNodesOfFace2()

bool Arcane::MeshUtils::reorderNodesOfFace2 ( Int64ConstArrayView  nodes_unique_id,
IntegerArrayView  new_index 
)

Réordonne les noeuds d'une face.

Cette méthode réordonne la liste des noeuds d'une face pour que les propriétés suivantes soient respectées:

  • le premier noeud de la face est celui dont le numéro global est le plus petit.
  • le deuxième noeud de la face est celui dont le numéro global est le deuxième plus petit.

Cela permet:

  • d'orienter les faces de manière identiques en parallèle.
  • d'accélerer les recherches sur les recherches entre faces.

nodes_unique_id et new_index doivent avoir le même nombre d'éléments

Paramètres
nodes_unique_idnuméros uniques des noeuds de la face.
new_indexen sortie, position des numéros des noeuds après réorientation.

Par exemple, si une face possède les 4 noeuds de numéros uniques 7 3 2 5, la réorientation donnera le quadruplet (2 3 7 5), soit le tableau d'index suivant (2,1,0,3).

Valeurs retournées
truesi la face change d'orientation lors de la renumérotation
falsesinon.

Définition à la ligne 1482 du fichier MeshUtils.cc.

Références Arccore::ConstArrayView< T >::size().

◆ shrinkMeshGroups()

void Arcane::MeshUtils::shrinkMeshGroups ( IMesh mesh)

Limite au plus juste l'usage mémoire des groupes.

Définition à la ligne 1637 du fichier MeshUtils.cc.

◆ visitGroups() [1/4]

template<typename LambdaType >
void Arcane::MeshUtils::visitGroups ( IItemFamily family,
const LambdaType f 
)
inline

Visite l'ensemble des groupes de family avec la lambda f.

Cette fonction permet d'appliquer un visiteur pour l'ensemble des groupes de la famille family.

Par exemple:

IMesh* mesh = ...;
auto xx = [](const ItemGroup& x) { std::cout << "name=" << x.name(); };
MeshUtils::visitGroups(mesh,xx);

Définition à la ligne 316 du fichier MeshUtils.h.

Références Arcane::MeshUtils::visitGroups().

◆ visitGroups() [2/4]

void Arcane::MeshUtils::visitGroups ( IItemFamily family,
IFunctorWithArgumentT< ItemGroup & > *  functor 
)

Visite l'ensemble des groupes de family avec le functor functor.

Définition à la ligne 31 du fichier MeshVisitor.cc.

Références Arcane::IItemFamily::groups().

Référencé par Arcane::MeshUtils::visitGroups(), et Arcane::MeshUtils::visitGroups().

◆ visitGroups() [3/4]

template<typename LambdaType >
void Arcane::MeshUtils::visitGroups ( IMesh mesh,
const LambdaType f 
)
inline

Visite l'ensemble des groupes de mesh avec la lambda f.

Cette fonction permet d'appliquer un visiteur pour l'ensemble des groupes de l'ensemble des familles du maillage mesh

Elle s'utilise comme suit:

IMesh* mesh = ...;
auto xx = [](const ItemGroup& x) { std::cout << "name=" << x.name(); };
MeshVisitor::visitGroups(mesh,xx);

Définition à la ligne 341 du fichier MeshUtils.h.

Références Arcane::MeshUtils::visitGroups().

◆ visitGroups() [4/4]

void Arcane::MeshUtils::visitGroups ( IMesh mesh,
IFunctorWithArgumentT< ItemGroup & > *  functor 
)

Visite l'ensemble des groupes de mesh avec le functor functor.

Définition à la ligne 43 du fichier MeshVisitor.cc.

Références Arcane::IItemFamily::groups().

◆ writeMeshConnectivity()

void Arcane::MeshUtils::writeMeshConnectivity ( IMesh mesh,
const String file_name 
)

◆ writeMeshInfos()

void Arcane::MeshUtils::writeMeshInfos ( IMesh mesh,
const String file_name 
)

Définition à la ligne 691 du fichier MeshUtils.cc.

◆ writeMeshInfosSorted()

◆ writeMeshItemInfo() [1/4]

void Arcane::MeshUtils::writeMeshItemInfo ( ISubDomain sd,
Cell  cell,
bool  depend_info = true 
)

Définition à la ligne 156 du fichier MeshUtils.cc.

◆ writeMeshItemInfo() [2/4]

void Arcane::MeshUtils::writeMeshItemInfo ( ISubDomain sd,
Edge  edge,
bool  depend_info = true 
)

Définition à la ligne 272 du fichier MeshUtils.cc.

◆ writeMeshItemInfo() [3/4]

void Arcane::MeshUtils::writeMeshItemInfo ( ISubDomain sd,
Face  face,
bool  depend_info = true 
)

Définition à la ligne 326 du fichier MeshUtils.cc.

◆ writeMeshItemInfo() [4/4]

void Arcane::MeshUtils::writeMeshItemInfo ( ISubDomain sd,
Node  node,
bool  depend_info = true 
)

Définition à la ligne 218 du fichier MeshUtils.cc.