Arcane  v3.16.8.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IPrimaryMesh.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IPrimaryMesh.h (C) 2000-2025 */
9/* */
10/* Interface de la géométrie d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IPRIMARYMESH_H
13#define ARCANE_CORE_IPRIMARYMESH_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
20#include "arcane/core/IMesh.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class IParallelMng;
33class XmlNode;
34class IMeshUtilities;
35class IMeshModifier;
36class Properties;
37
38/*---------------------------------------------------------------------------*/
39/*---------------------------------------------------------------------------*/
40//INFO: La doc complete est dans Mesh.dox
42: public IMesh
43{
44 public:
45
46 virtual ~IPrimaryMesh() {} //<! Libère les ressources
47
48 public:
49
50 //! Coordonnées des noeuds
52
53 /*!
54 * \brief Positionne la dimension du maillage (1D, 2D ou 3D).
55 *
56 * La dimension correspond à la dimension des éléments mailles (Cell).
57 * Si des mailles de plusieurs dimensions sont présentes, il faut indiquer
58 * la dimension la plus importante.
59 *
60 * La dimension doit être positionnée avant d'allouer des mailles si on
61 * utilise allocateCells(), et ne doit plus être modifiée ensuite.
62 */
63 virtual void setDimension(Integer dim) =0;
64
65 /*! \brief Recharge le maillage à partir des variables protégées
66 */
67 virtual void reloadMesh() =0;
68
69 //NOTE: Documentation complète de cette méthode dans Mesh.dox
70 //!Allocation d'un maillage.
71 virtual void allocateCells(Integer nb_cell,Int64ConstArrayView cells_infos,bool one_alloc=true) =0;
72
73 /*!
74 * \brief Indique une fin d'allocation de mailles.
75 *
76 * Tant que cette méthode n'a pas été appelée, il n'est pas valide d'utiliser cette
77 * instance, sauf pour allouer le maillage (allocateCells()).
78 *
79 * Cette méthode est collective.
80 */
81 virtual void endAllocate() =0;
82
83 /*!
84 * \brief Désalloue le maillage.
85 *
86 * Cela supprime toutes les entités et tous les groupes d'entités.
87 * Le maillage devra ensuite être alloué à nouveau via l'appel à allocateCells().
88 * Cet appel supprime aussi la dimension du maillage qui devra
89 * être repositionné par setDimension(). Il est donc possible de changer la
90 * dimension du maillage par la suite.
91 *
92 * Cette méthode est collective.
93 *
94 * \warning Cette méthode est expérimentale et de nombreux effets de bords sont
95 * possibles. Notamment, l'implémentation actuelle ne supporte pas la désallocation
96 * lorsqu'il y a des variables partielles sur le maillage.
97 */
98 virtual void deallocate() =0;
99
100 /*!
101 * \brief Allocateur initial spécifique.
102 *
103 * Si nul, il faut utiliser allocateCells().
104 */
105 virtual IMeshInitialAllocator* initialAllocator() { return nullptr; }
106
107 public:
108
109 /*!
110 * \brief Variable contenant l'identifiant du sous-domaine propriétaire.
111 *
112 Retourne la variable contenant l'identifiant du sous-domaine propriétaire
113 des entités du genre \a kind.
114
115 \warning Cette variable est utilisée pour la fabrication des messages
116 de synchronisation entre sous-domaines et ne doit pas
117 être modifiée.
118 */
120
121 //! Change les sous-domaines propriétaires des entités
122 virtual void exchangeItems() =0;
123
124 public:
125
126 /*!
127 * \internal
128 * \brief Positionne les propriétaires des entités à partir du propriétaire des mailles.
129 *
130 * Positionne les propriétaires des entités autres que les mailles (Node,Edge et Face)
131 * en se basant sur le propriétaire aux mailles. Cette opération n'a d'intéret
132 * qu'en parallèle et ne doit être appelée que lors de l'initialisation après
133 * la méthode endAllocate().
134 *
135 * Cette opération est collective.
136 */
137 virtual void setOwnersFromCells() =0;
138
139 /*!
140 * \internal
141 * \brief Positionne les informations de partitionnement.
142 */
143 virtual void setMeshPartInfo(const MeshPartInfo& mpi) =0;
144};
145
146/*---------------------------------------------------------------------------*/
147/*---------------------------------------------------------------------------*/
148
149} // End namespace Arcane
150
151/*---------------------------------------------------------------------------*/
152/*---------------------------------------------------------------------------*/
153
154#endif
Déclarations des types généraux de Arcane.
Déclarations de types sur les entités.
Interface d'allocation des entités du maillage.
Interface de modification du maillage.
Interface d'une classe proposant des fonctions utilitaires sur maillage.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'un échangeur de particules.
virtual VariableNodeReal3 & nodesCoordinates()=0
Coordonnées des noeuds.
virtual IMeshInitialAllocator * initialAllocator()
Allocateur initial spécifique.
virtual void exchangeItems()=0
Change les sous-domaines propriétaires des entités.
virtual void endAllocate()=0
Indique une fin d'allocation de mailles.
virtual void allocateCells(Integer nb_cell, Int64ConstArrayView cells_infos, bool one_alloc=true)=0
Allocation d'un maillage.
virtual void reloadMesh()=0
Recharge le maillage à partir des variables protégées.
virtual void setDimension(Integer dim)=0
Positionne la dimension du maillage (1D, 2D ou 3D).
virtual void deallocate()=0
Désalloue le maillage.
virtual VariableItemInt32 & itemsNewOwner(eItemKind kind)=0
Variable contenant l'identifiant du sous-domaine propriétaire.
Informations un maillage partitionné.
Liste de propriétés.
Definition Properties.h:64
Noeud d'un arbre DOM.
Definition XmlNode.h:51
MeshVariableScalarRefT< Node, Real3 > VariableNodeReal3
Grandeur au noeud de type coordonnées.
ItemVariableScalarRefT< Int32 > VariableItemInt32
Grandeur de type entier 32 bits.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:567
eItemKind
Genre d'entité de maillage.