Arcane  v3.14.10.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-2023 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-2023 */
9/* */
10/* Interface de la géométrie d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IPRIMARYMESH_H
13#define ARCANE_IPRIMARYMESH_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18#include "arcane/ItemTypes.h"
19#include "arcane/VariableTypedef.h"
20#include "arcane/IMesh.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class IParallelMng;
32class IParticleExchanger;
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
Interface d'allocation des entités du maillage.
virtual VariableNodeReal3 & nodesCoordinates()=0
Coordonnées des noeuds.
virtual void allocateCells(Integer nb_cell, Int64ConstArrayView cells_infos, bool one_alloc=true)=0
Allocation d'un maillage.
virtual void exchangeItems()=0
Change les sous-domaines propriétaires des entités.
virtual IMeshInitialAllocator * initialAllocator()
Allocateur initial spécifique.
virtual void endAllocate()=0
Indique une fin d'allocation de mailles.
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.
Variable scalaire sur un type d'entité du maillage.
Informations un maillage partitionné.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.