Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::IMeshUtilitiesabstract

Interface d'une classe proposant des fonctions utilitaires sur maillage. Plus de détails...

#include <arcane/core/IMeshUtilities.h>

+ Graphe de collaboration de Arcane::IMeshUtilities:

Fonctions membres publiques

virtual ~IMeshUtilities ()
 Libère les ressources.
 
virtual void localIdsFromConnectivity (eItemKind item_kind, IntegerConstArrayView items_nb_node, Int64ConstArrayView items_connectivity, Int32ArrayView local_ids, bool allow_null=false)=0
 Recherche les identifiants locaux des entités à partir de leur connectivité.
 
virtual Real3 computeNormal (const FaceGroup &face_group, const VariableNodeReal3 &nodes_coord)=0
 Calcule la normale d'un groupe de face.
 
virtual Real3 computeDirection (const NodeGroup &node_group, const VariableNodeReal3 &nodes_coord, Real3 *n1, Real3 *n2)=0
 Calcule le vecteur directeur d'une ligne.
 
virtual void computeAdjency (ItemPairGroup adjency_array, eItemKind link_kind, Integer nb_layer)=0
 Calcul des adjacences, rangées dans adjency_array.
 
virtual void changeOwnersFromCells ()=0
 Positionne les nouveaux propriétaires des noeuds, arêtes et faces à partir des mailles.
 
virtual bool writeToFile (const String &file_name, const String &service_name)=0
 Ecrit le maillage dans un fichier.
 
virtual void partitionAndExchangeMeshWithReplication (IMeshPartitionerBase *partitioner, bool initial_partition)=0
 Repartitionne et échange le maillage en gérant la réplication.
 
virtual void mergeNodes (Int32ConstArrayView nodes_local_id, Int32ConstArrayView nodes_to_merge_local_id)=0
 Fusionne des noeuds.
 

Description détaillée

Interface d'une classe proposant des fonctions utilitaires sur maillage.

Définition à la ligne 34 du fichier IMeshUtilities.h.

Documentation des constructeurs et destructeur

◆ ~IMeshUtilities()

virtual Arcane::IMeshUtilities::~IMeshUtilities ( )
inlinevirtual

Libère les ressources.

Définition à la ligne 38 du fichier IMeshUtilities.h.

Documentation des fonctions membres

◆ changeOwnersFromCells()

virtual void Arcane::IMeshUtilities::changeOwnersFromCells ( )
pure virtual

Positionne les nouveaux propriétaires des noeuds, arêtes et faces à partir des mailles.

En considérant que les nouveaux propriétaires des mailles sont connus (et synchronisés), détermine les nouveaux propriétaires des autres entités et les synchronise.

◆ computeDirection()

virtual Real3 Arcane::IMeshUtilities::computeDirection ( const NodeGroup node_group,
const VariableNodeReal3 nodes_coord,
Real3 n1,
Real3 n2 
)
pure virtual

Calcule le vecteur directeur d'une ligne.

Cette méthode calcule le vecteur directeur d'un groupe de noeuds en considérant qu'il forme une ligne. Pour le calcul, l'algorithme essaie de déterminer les noeuds aux extrémités de cette ligne, et calcule un vecteur à partir de ces noeuds. Le sens du vecteur est indéfini.

Si le groupe ne forme pas une ligne, le résultat est indéfini.

Cette méthode est collective. L'algorithme utilisé garantit les mêmes résultats en séquentiel et en parallèle.

Si n1 et n2 ne sont pas nuls, ils contiendront en sortie les coordonnées extrèmes à partir desquelles la direction est calculée.

La variable nodes_coord est utilisée comme coordonnées pour les noeuds. En général, il s'agit de IMesh::nodesCoordinates().

◆ computeNormal()

virtual Real3 Arcane::IMeshUtilities::computeNormal ( const FaceGroup face_group,
const VariableNodeReal3 nodes_coord 
)
pure virtual

Calcule la normale d'un groupe de face.

Cette méthode calcule la normale à un groupe de face en considérant que cette surface est un plan. Pour le calcul, l'algorithme essaie de déterminer les noeuds aux extrémités de cette surface, et calcule une normale à partir de ces noeuds. L'orientation de la normale (rentrante ou sortante) est indéfinie.

Si la surface n'est pas plane, le résultat est indéfini.

L'algorithme actuel ne fonctionne pas toujours sur une surface composée uniquement de triangles.

Cette méthode est collective. L'algorithme utilisé garantit les mêmes résultats en séquentiel et en parallèle.

La variable nodes_coord est utilisée comme coordonnées pour les noeuds. En général, il s'agit de IMesh::nodesCoordinates().

◆ localIdsFromConnectivity()

virtual void Arcane::IMeshUtilities::localIdsFromConnectivity ( eItemKind  item_kind,
IntegerConstArrayView  items_nb_node,
Int64ConstArrayView  items_connectivity,
Int32ArrayView  local_ids,
bool  allow_null = false 
)
pure virtual

Recherche les identifiants locaux des entités à partir de leur connectivité.

Prend en entrée une liste d'entités décrite par les identifiants uniques (Item::uniqueId()) de leurs noeuds et recherche les identifiants locaux (Item::localId()) de ces entités.

Paramètres
item_kindGenre de l'entité (IK_Cell ou IK_Face)
items_nb_nodetableau du nombre de noeuds de l'entité
items_connectivitytableau contenant les indices uniques des noeuds des entités.
local_idsen retour, contient les identificants locaux des entités. Le nombre d'éléments de local_ids doit être égal à celui de items_nb_node.

Le tableau items_connectivity contient les identifiants des noeuds des entités, rangés consécutivement. Par exemple, si items_nb_node[0]==3 et items_node[1]==4, alors items_connectivity[0..2] contiendra les noeuds de l'entité 0, et items_connectivity[3..6] ceux de l'entité 1.

Si allow_null est faux, une erreur fatale est générée si une entité n'est pas trouvée, sinon NULL_ITEM_LOCAL_ID est retourné pour l'entité correspondante

◆ mergeNodes()

virtual void Arcane::IMeshUtilities::mergeNodes ( Int32ConstArrayView  nodes_local_id,
Int32ConstArrayView  nodes_to_merge_local_id 
)
pure virtual

Fusionne des noeuds.

Fusionne deux à deux les noeuds de nodes_to_merge_local_id avec ceux de nodes_local_id. Chaque noeud nodes_to_merge_local_id[i] est fusionné avec nodes_local_id[i].

Les noeuds nodes_to_merge_local_id sont détruits après fusion. Les entités reposant entièrement sur ces noeuds fusionnés sont aussi détruites.

Il est interdit de fusionner deux noeuds d'une même maille ou d'une même face (après fusion, une face ou une maille ne peut pas avoir deux fois le même noeud).

◆ partitionAndExchangeMeshWithReplication()

virtual void Arcane::IMeshUtilities::partitionAndExchangeMeshWithReplication ( IMeshPartitionerBase partitioner,
bool  initial_partition 
)
pure virtual

Repartitionne et échange le maillage en gérant la réplication.

Cette méthode effectue un repartitionnement du maillage via l'appel à IMeshPartitioner::partitionMesh(bool) et procède à l'échange des entités via IPrimaryMesh::exchangeItems().

Elle mais gère aussi la réplication en s'assurant que tous les réplica ont le même maillage. Le principe est le suivant:

  • seul le réplica maître effectue le repartitionnement en appelant IMeshPartitioner::partitionMesh() avec partitioner comme partitionneur
  • les valeurs des IItemFamily::itemsNewOwner() sont ensuite synchronisées avec les autres réplicas.
  • les échanges d'entités sont effectués via IPrimaryMesh::exchangeItems().

Cette méthode est collective sur l'ensemble des réplicas.

Précondition
Tous les réplicas doivent avoir le même maillage, c'est à dire que toutes les familles d'entités doivent être identiques à l'exception des familles de particules qui ne sont pas concernées.
Le maillage doit être une instance de IPrimaryMesh.
Postcondition
Tous les réplicas ont le même maillage à l'exception des familles de particules.
Paramètres
partitionerInstance du partitionneur à utiliser
initial_partitionIndique s'il s'agit du partitionnement initial.

◆ writeToFile()

virtual bool Arcane::IMeshUtilities::writeToFile ( const String file_name,
const String service_name 
)
pure virtual

Ecrit le maillage dans un fichier.

Ecrit le maillage dans le fichier file_name en utilisant le service implémentant l'interface 'IMeshWriter' et de nom service_name.

Valeurs retournées
truesi le service spécifié n'est pas disponible.
falsesi tout est ok.

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