Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::IPrimaryMeshabstract
+ Graphe d'héritage de Arcane::IPrimaryMesh:
+ Graphe de collaboration de Arcane::IPrimaryMesh:

Fonctions membres publiques

virtual VariableNodeReal3nodesCoordinates ()=0
 Coordonnées des noeuds.
 
virtual void setDimension (Integer dim)=0
 Positionne la dimension du maillage (1D, 2D ou 3D).
 
virtual void reloadMesh ()=0
 Recharge le maillage à partir des variables protégées.
 
virtual void allocateCells (Integer nb_cell, Int64ConstArrayView cells_infos, bool one_alloc=true)=0
 Allocation d'un maillage.
 
virtual void endAllocate ()=0
 Indique une fin d'allocation de mailles.
 
virtual void deallocate ()=0
 Désalloue le maillage.
 
virtual IMeshInitialAllocatorinitialAllocator ()
 Allocateur initial spécifique.
 
virtual VariableItemInt32itemsNewOwner (eItemKind kind)=0
 Variable contenant l'identifiant du sous-domaine propriétaire.
 
virtual void exchangeItems ()=0
 Change les sous-domaines propriétaires des entités.
 
virtual void setOwnersFromCells ()=0
 
virtual void setMeshPartInfo (const MeshPartInfo &mpi)=0
 
- Fonctions membres publiques hérités de Arcane::IMesh
virtual void build ()=0
 
virtual String factoryName () const =0
 Nom de la fabrique utilisée pour créer le maillage.
 
virtual ItemInternalList itemsInternal (eItemKind)=0
 Tableau interne des éléments du maillage de type type.
 
virtual SharedVariableNodeReal3 sharedNodesCoordinates ()=0
 Coordonnées des noeuds.
 
virtual void checkValidMesh ()=0
 Vérification de la validité des structues internes de maillage (interne)
 
virtual void checkValidMeshFull ()=0
 Vérification de la validité du maillage.
 
virtual void synchronizeGroupsAndVariables ()=0
 Synchronise tous les groupes et les variables du maillage.
 
virtual bool isAllocated ()=0
 Vrai si le maillage est allouée.
 
virtual Int64 timestamp ()=0
 Compteur indiquant le temps de dernière modification du maillage.
 
 ARCANE_DEPRECATED_LONG_TERM ("Y2020: Do not use this method. Try to get 'ISubDomain' from another way") virtual ISubDomain *subDomain()=0
 Sous-domaine associé
 
virtual IParallelMngparallelMng ()=0
 Gestionnaire de parallèlisme.
 
virtual VariableScalarInteger connectivity ()=0
 Descripteur de connectivité
 
virtual CellGroup allActiveCells ()=0
 
virtual CellGroup ownActiveCells ()=0
 Groupe de toutes les mailles actives et propres au domaine.
 
virtual CellGroup allLevelCells (const Integer &level)=0
 Groupe de toutes les mailles de niveau level.
 
virtual CellGroup ownLevelCells (const Integer &level)=0
 Groupe de toutes les mailles propres de niveau level.
 
virtual FaceGroup allActiveFaces ()=0
 Groupe de toutes les faces actives.
 
virtual FaceGroup ownActiveFaces ()=0
 Groupe de toutes les faces actives propres au domaine.
 
virtual FaceGroup innerActiveFaces ()=0
 Groupe de toutes les faces actives.
 
virtual FaceGroup outerActiveFaces ()=0
 Groupe de toutes les faces actives sur la frontière.
 
virtual ItemGroupCollection groups ()=0
 Liste des groupes.
 
virtual ItemGroup findGroup (const String &name)=0
 Retourne le groupe de nom name ou le groupe nul s'il n'y en a pas.
 
virtual void destroyGroups ()=0
 Détruit tous les groupes de toutes les familles.
 
virtual MeshItemInternalList * meshItemInternalList ()=0
 
virtual void updateGhostLayers (bool remove_old_ghost)=0
 
virtual ARCANE_DEPRECATED_240 void serializeCells (ISerializer *buffer, Int32ConstArrayView cells_local_id)=0
 
virtual void prepareForDump ()=0
 Prépare l'instance en vue d'une protection.
 
virtual void initializeVariables (const XmlNode &init_node)=0
 Initialize les variables avec les valeurs du fichier de configuration (interne)
 
virtual void setCheckLevel (Integer level)=0
 Positionne le niveau de vérification du maillage.
 
virtual Integer checkLevel () const =0
 Niveau actuel de vérification.
 
virtual bool isDynamic () const =0
 Indique si le maillage est dynamique (peut évoluer)
 
virtual bool isAmrActivated () const =0
 
virtual void computeTiedInterfaces (const XmlNode &mesh_node)=0
 Détermine les interfaces de semi-conformités.
 
virtual bool hasTiedInterface ()=0
 Vrai s'il existe des interfaces semi-conformes dans le maillage.
 
virtual TiedInterfaceCollection tiedInterfaces ()=0
 Liste des interfaces semi-conformes.
 
virtual IMeshPartitionConstraintMngpartitionConstraintMng ()=0
 Gestionnaire des contraintes de partitionnement associées à ce maillage.
 
virtual IMeshUtilitiesutilities ()=0
 Interface des fonctions utilitaires associée.
 
virtual Propertiesproperties ()=0
 Propriétés associées à ce maillage.
 
virtual IMeshModifiermodifier ()=0
 Interface de modification associée.
 
virtual void defineParentForBuild (IMesh *mesh, ItemGroup group)=0
 Définit les maillage et groupe parents.
 
virtual IMeshparentMesh () const =0
 Accès au maillage parent.
 
virtual ItemGroup parentGroup () const =0
 Groupe parent.
 
virtual void addChildMesh (IMesh *sub_mesh)=0
 Ajoute un sous-maillage au maillage parent.
 
virtual MeshCollection childMeshes () const =0
 Liste des sous-maillages du maillage courant.
 
virtual bool isPrimaryMesh () const =0
 Indique si l'instance est un maillage primaire.
 
virtual IPrimaryMeshtoPrimaryMesh ()=0
 Retourne l'instance sous la forme d'un IPrimaryMesh.
 
virtual IUserDataListuserDataList ()=0
 Gestionnnaire de données utilisateurs associé
 
virtual const IUserDataListuserDataList () const =0
 Gestionnnaire de données utilisateurs associé
 
virtual IGhostLayerMngghostLayerMng () const =0
 Gestionnare de couche fantômes associé
 
virtual IMeshUniqueIdMngmeshUniqueIdMng () const =0
 Gestionnare de la numérotation des identifiants uniques.
 
virtual IMeshCheckerchecker () const =0
 Interface du vérificateur.
 
virtual const MeshPartInfomeshPartInfo () const =0
 Informations sur les parties du maillage.
 
virtual bool useMeshItemFamilyDependencies () const =0
 check if the network itemFamily dependencies is activated
 
virtual IItemFamilyNetworkitemFamilyNetwork ()=0
 Interface du réseau de familles (familles connectées)
 
virtual IIndexedIncrementalItemConnectivityMngindexedConnectivityMng ()=0
 Interface du gestionnaire des connectivités incrémentales indexées.
 
virtual const MeshKind meshKind () const =0
 Caractéristiques du maillage.
 
virtual EventObservable< const MeshEventArgs & > & eventObservable (eMeshEventType type)=0
 Observable pour un évènement.
 
virtual IMeshCompactMng_compactMng ()=0
 
virtual InternalConnectivityPolicy _connectivityPolicy () const =0
 
virtual IMeshMngmeshMng () const =0
 Gestionnaire de maillage associé
 
virtual IVariableMngvariableMng () const =0
 Gestionnaire de variable associé
 
virtual ItemTypeMngitemTypeMng () const =0
 Gestionnaire de types d'entités associé
 
virtual void computeSynchronizeInfos ()=0
 Recalcule les informations de synchronisation.
 
virtual IMeshInternal * _internalApi ()=0
 API interne à Arcane.
 
- Fonctions membres publiques hérités de Arcane::IMeshBase
virtual MeshHandle handle () const =0
 Handle sur ce maillage.
 
virtual String name () const =0
 Nom du maillage.
 
virtual Integer nbNode ()=0
 Nombre de noeuds du maillage.
 
virtual Integer nbEdge ()=0
 Nombre d'arêtes du maillage.
 
virtual Integer nbFace ()=0
 Nombre de faces du maillage.
 
virtual Integer nbCell ()=0
 Nombre de mailles du maillage.
 
virtual Integer nbItem (eItemKind ik)=0
 Nombre d'éléments du genre ik.
 
virtual ITraceMngtraceMng ()=0
 Gestionnaire de message associé
 
virtual Integer dimension ()=0
 Dimension du maillage (1D, 2D ou 3D).
 
virtual NodeGroup allNodes ()=0
 Groupe de tous les noeuds.
 
virtual EdgeGroup allEdges ()=0
 Groupe de toutes les arêtes.
 
virtual FaceGroup allFaces ()=0
 Groupe de toutes les faces.
 
virtual CellGroup allCells ()=0
 Groupe de toutes les mailles.
 
virtual NodeGroup ownNodes ()=0
 Groupe de tous les noeuds propres au domaine.
 
virtual EdgeGroup ownEdges ()=0
 Groupe de toutes les arêtes propres au domaine.
 
virtual FaceGroup ownFaces ()=0
 Groupe de toutes les faces propres au domaine.
 
virtual CellGroup ownCells ()=0
 Groupe de toutes les mailles propres au domaine.
 
virtual FaceGroup outerFaces ()=0
 Groupe de toutes les faces sur la frontière.
 
virtual IItemFamilycreateItemFamily (eItemKind ik, const String &name)=0
 Créé une famille de particule de nom name.
 
virtual IItemFamilyfindItemFamily (eItemKind ik, const String &name, bool create_if_needed=false, bool register_modifier_if_created=false)=0
 Retourne la famille de nom name.
 
virtual IItemFamilyfindItemFamily (const String &name, bool throw_exception=false)=0
 Retourne la famille de nom name.
 
virtual IItemFamilyModifierfindItemFamilyModifier (eItemKind ik, const String &name)=0
 Retourne l'interface IItemFamilyModifier pour famille de nom name et de type ik.
 
virtual IItemFamilyitemFamily (eItemKind ik)=0
 Retourne la famille d'entité de type ik.
 
virtual IItemFamilynodeFamily ()=0
 Retourne la famille des noeuds.
 
virtual IItemFamilyedgeFamily ()=0
 Retourne la famille des arêtes.
 
virtual IItemFamilyfaceFamily ()=0
 Retourne la famille des faces.
 
virtual IItemFamilycellFamily ()=0
 Retourne la famille des mailles.
 
virtual IItemFamilyCollection itemFamilies ()=0
 

Description détaillée

Interface d'un maillage primaire.

Les instances de maillage primaire sont créées soit lors de la lecture du jeu de données, soit par programmation, par appel à l'une des méthodes IMainFactory::createMesh(). Actuellement, il n'est pas possible de supprimer un maillage primaire

Par exemple, pour créer un maillage 2D vide, de nom "Mesh2":

// sd est le sous-domaine courant.
ISubDomain* sd = ...;
IPrimaryMesh* new_mesh = mf->createMesh(sd,pm,"Mesh2");
new_mesh->setDimension(2);
new_mesh->allocateCells(0,Int64ConstArrayView(),false);
new_mesh->endAllocate();
virtual IMainFactory * mainFactory() const =0
Manufacture principale.
virtual IPrimaryMesh * createMesh(ISubDomain *sub_domain, const String &name)=0
Créé ou récupère un maillage.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual void allocateCells(Integer nb_cell, Int64ConstArrayView cells_infos, bool one_alloc=true)=0
Allocation d'un maillage.
virtual void endAllocate()=0
Indique une fin d'allocation de mailles.
virtual void setDimension(Integer dim)=0
Positionne la dimension du maillage (1D, 2D ou 3D).
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
virtual IApplication * application()=0
Application.
virtual IParallelMng * parallelMng()=0
Retourne le gestionnaire de parallélisme.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:638

Le maillage créé existe sur l'ensemble des rangs du IParallelMng passé en argument. Pour créér un maillage sur un seul processeur, on peut utiliser IParallelMng::sequentialParallelMng().

Il est aussi possible de lire directement un maillage à partir d'un fichier en utilisant une implémentation de IMeshReader. Par exemple, pour lire un fichier au format Vtk historique:

// sd est le sous-domaine courant.
ISubDomain* sd = ...;
IPrimaryMesh* new_mesh = mf->createMesh(sd,pm,"Mesh2");
IMeshReader* reader = ServiceBuilder<IMeshReader>::createInstance(sd,"VtkLegacyMeshReader");
reader->readMeshFromFile(new_mesh,XmlNode(),"sod.vtk","/tmp",false);
delete reader;
Interface du service gérant la lecture d'un maillage.
Definition IMeshReader.h:37
virtual eReturnType readMeshFromFile(IPrimaryMesh *mesh, const XmlNode &mesh_element, const String &file_name, const String &dir_name, bool use_internal_partition)=0
Lit un maillage à partir d'un fichier.
InterfaceType * createInstance(const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
Noeud d'un arbre DOM.
Definition XmlNode.h:51

Il est possible par la suite de modifier le maillage via l'interface IMeshModifier récupérable par modifier(). Une fois les modifications effectuées, il faut impérativement appeler la méthode endUpdate().

Un maillage possède certaines propriétés, accessibles par properties(). Les propriétés suivantes sont valides:

  • "sort", booléen, vrai par défaut. Cette propriété indique que les entités doivent être triées après modification du maillage pour qu'elles soient rangées par numéro unique croissant. Cela n'est utile que pour permettre de garantir que les opérations se font toujours dans le même ordre en parallèle quel que soit le nombre de sous-domaines et que le maillage évolue.
  • "compact", booléen, vrai par défaut. Cette propriété indique que les entités doivent être compactées après modification du maillage. Cela signifie qu'il n'y a pas de trou dans la numérotation et que les indices locaux localId() des entités seront numérotés de 0 au nombre d'entités de ce type. Le compactage est une opération coûteuse car elle nécessite de remettre à jour toutes les variables pour supprimer les trous dans la numérotation.
  • "dump", booléen, vrai par défaut. Cette propriété indique que le maillage doit être sauvegardé lors d'une protection.
  • "edges", booléen, faux par défaut. Cette propriété indique qu'il faut créer les arêtes dans un maillage 3D. NOTE: cette propriété n'est pas implémentée actuellement.
  • "sort-subitemitem-group", booléen, faux par défaut. Cette propriété indique s'il faut trier les groupes (créés dynamiquement) contenant les entités connectées à une liste d'entités (par exemple allCells().nodes()). Le tri ne s'applique que pour les prochains recalculs et donc si on veut que tous les groupes de ce genre soient créés il faut positionner cette propriété lors de la création du maillage.

Définition à la ligne 41 du fichier IPrimaryMesh.h.

Documentation des constructeurs et destructeur

◆ ~IPrimaryMesh()

virtual Arcane::IPrimaryMesh::~IPrimaryMesh ( )
inlinevirtual

Définition à la ligne 46 du fichier IPrimaryMesh.h.

Documentation des fonctions membres

◆ allocateCells()

void Arcane::IPrimaryMesh::allocateCells ( Integer  nb_cell,
Int64ConstArrayView  cells_infos,
bool  one_alloc = true 
)
pure virtual

Allocation d'un maillage.

Création d'un maillage quelconque.

Cette méthode est la plus générique des méthodes de création d'un maillage. Elle est utilisé lorsqu'on connait uniquement les mailles et la liste de leurs noeuds à partir de leur numéro global unique.

Cette opération alloue les structures pour le maillage contenant un nombre de mailles égal à nb_cell, les mailles étant décrites par le tableau cells_infos.

Comme les numéros des noeuds sont les numéros uniques, leur valeur peut être quelconque: il n'est pas nécessaire de commencer à zéro, ni que les numéros soient consécutifs. L'implémentation se charge de déterminer le nombre de noeuds du maillage.

Par exemple, si on a deux mailles, la première de type IT_Hexaedron8, portant le numéro unique 23 et la deuxième de type IT_Tetraedron4 portant le numéro unique 45, le tableau cells_infos contiendra 16 éléments, répartis comme suit:

cells_infos[0] = IT_Hexaedron8
cells_infos[1] = 23
cells_infos[2...9] = Les 8 noeuds de la maille
cells_infos[10] = IT_Tetraedron4
cells_infos[11] = 45
cells_infos[12...15] = Les 4 noeuds de la maille

Si nb_cell vaut zéro et que cells_infos n'est pas vide, le nombre de mailles est déterminée dynamiquement. Le tableau cells_infos est parcouru jusqu'à ce qu'on arrive à la fin du tableau ou qu'on rencontre une maille de type IT_NullType.

Si one_alloc est vrai, l'opération endAllocate() est appelée pour indiquer qu'il n'y aura pas d'autres mailles ajoutées. Il est possible d'allouer le maillage en plusieurs étapes en mettant one_alloc à faux et d'appeler à la fin endAllocate().

Avertissement
Lors de l'appel à cette fonction, le maillage actuel et tous les groupes sont détruits. Cette méthode ne doit être utilisée que pour créer le maillage initiale. Si on souhaite ajouter ou supprimer des mailles, il faut utiliser les méthodes IMeshModifier::addCells() ou IMeshModifier::removeCells().

◆ deallocate()

virtual void Arcane::IPrimaryMesh::deallocate ( )
pure virtual

Désalloue le maillage.

Cela supprime toutes les entités et tous les groupes d'entités. Le maillage devra ensuite être alloué à nouveau via l'appel à allocateCells(). Cet appel supprime aussi la dimension du maillage qui devra être repositionné par setDimension(). Il est donc possible de changer la dimension du maillage par la suite.

Cette méthode est collective.

Avertissement
Cette méthode est expérimentale et de nombreux effets de bords sont possibles. Notamment, l'implémentation actuelle ne supporte pas la désallocation lorsqu'il y a des variables partielles sur le maillage.

◆ endAllocate()

virtual void Arcane::IPrimaryMesh::endAllocate ( )
pure virtual

Indique une fin d'allocation de mailles.

Tant que cette méthode n'a pas été appelée, il n'est pas valide d'utiliser cette instance, sauf pour allouer le maillage (allocateCells()).

Cette méthode est collective.

◆ exchangeItems()

void Arcane::IPrimaryMesh::exchangeItems ( )
pure virtual

Change les sous-domaines propriétaires des entités.

Cette méthode est appelé lorsqu'on souhaite effectuer un équilibrage de charge et redistribuer le maillage entre processeurs. La méthode suppose que les variables IItemsFamily::itemsOwner() de chaque genre d'entité du maillage (noeud, arête, face et maille) contienne le numéro du nouveau sous-domaine propriétaire de chaque entité. Ces variables doivent être synchronisées.

L'instance se charge ensuite de donner aux autres processeurs les mailles qui lui vont lui appartenir et de recevoir des autres ses nouvelles mailles, puis de faire de même pour les noeuds, arêtes, faces et particules. Les valeurs des variables et des groupes d'entités sont sont aussi échangés.

Après appel à cette méthode, il faut éventuellement appeler les points d'entrées de changement de maillage (ITimeLoopMng::execMeshChangedEntryPoints).

Pour appeler cette méthode, il faut que isDynamic() soit vrai.

L'appel à cette méthode provoque un appel implicite à endUpdate().

◆ initialAllocator()

virtual IMeshInitialAllocator * Arcane::IPrimaryMesh::initialAllocator ( )
inlinevirtual

Allocateur initial spécifique.

Si nul, il faut utiliser allocateCells().

Définition à la ligne 105 du fichier IPrimaryMesh.h.

Référencé par Arcane::CartesianMeshAllocateBuildInfo::allocateMesh(), et Arcane::UnstructuredMeshAllocateBuildInfo::allocateMesh().

◆ itemsNewOwner()

virtual VariableItemInt32 & Arcane::IPrimaryMesh::itemsNewOwner ( eItemKind  kind)
pure virtual

Variable contenant l'identifiant du sous-domaine propriétaire.

Retourne la variable contenant l'identifiant du sous-domaine propriétaire des entités du genre kind.

Avertissement
Cette variable est utilisée pour la fabrication des messages de synchronisation entre sous-domaines et ne doit pas être modifiée.

◆ nodesCoordinates()

virtual VariableNodeReal3 & Arcane::IPrimaryMesh::nodesCoordinates ( )
pure virtual

Coordonnées des noeuds.

Implémente Arcane::IMesh.

Référencé par Arcane::Hdf5VariableInfoBase::writeGroup().

◆ setDimension()

virtual void Arcane::IPrimaryMesh::setDimension ( Integer  dim)
pure virtual

Positionne la dimension du maillage (1D, 2D ou 3D).

La dimension correspond à la dimension des éléments mailles (Cell). Si des mailles de plusieurs dimensions sont présentes, il faut indiquer la dimension la plus importante.

La dimension doit être positionnée avant d'allouer des mailles si on utilise allocateCells(), et ne doit plus être modifiée ensuite.


La documentation de cette classe a été générée à partir des fichiers suivants :