13#ifndef ARCANE_POLYHEDRALMESH_H
14#define ARCANE_POLYHEDRALMESH_H
18#include "arcane/core/MeshHandle.h"
19#include "arcane/core/ItemGroup.h"
20#include "arcane/core/MeshItemInternalList.h"
21#include "arcane/core/ISubDomain.h"
22#include "arcane/core/Properties.h"
25#include "arcane/mesh/EmptyMesh.h"
26#include "arcane/mesh/MeshEventsImpl.h"
28#include "arcane/core/ItemAllocationInfo.h"
30#include "arcane/utils/Collection.h"
31#include "arcane/utils/String.h"
32#include "arcane/utils/List.h"
33#include "arcane/core/IMeshInitialAllocator.h"
34#include "arcane/core/IParallelMng.h"
35#include "arcane/core/MeshKind.h"
39#ifdef ARCANE_HAS_POLYHEDRAL_MESH_TOOLS
43#include "arcane/core/IVariableMng.h"
44#include "DynamicMeshChecker.h"
61class PolyhedralMeshImpl;
62class PolyhedralFamily;
78 inline static const String m_mesh_handle_name =
"polyhedral_mesh_handle";
80 std::unique_ptr<Properties> m_properties;
81 std::unique_ptr<PolyhedralMeshImpl> m_mesh;
84 bool m_is_allocated =
false;
101 static String handleName() {
return m_mesh_handle_name; }
103 void read(
String const& filename);
111 return m_mesh_events.eventObservable(type);
114#ifdef ARCANE_HAS_POLYHEDRAL_MESH_TOOLS
129 class PolyhedralMeshModifier;
130 class NoCompactionMeshCompacter;
131 class NoCompactionMeshCompactMng;
135 std::vector<std::unique_ptr<PolyhedralFamily>> m_arcane_families;
136 std::array<std::unique_ptr<PolyhedralFamily>, NB_ITEM_KIND> m_empty_arcane_families;
137 std::array<PolyhedralFamily*, NB_ITEM_KIND> m_default_arcane_families;
138 std::vector<std::unique_ptr<VariableItemReal3>> m_arcane_item_coords;
139 std::unique_ptr<VariableNodeReal3> m_arcane_node_coords =
nullptr;
141 InitialAllocator m_initial_allocator;
142 IVariableMng* m_variable_mng =
nullptr;
143 DynamicMeshChecker m_mesh_checker;
144 List<IItemFamily*> m_item_family_collection;
145 std::unique_ptr<InternalApi> m_internal_api;
146 std::unique_ptr<IMeshCompactMng> m_compact_mng;
149 IMeshInitialAllocator*
initialAllocator()
override {
return &m_initial_allocator; }
154 MeshHandle
handle()
const override;
158 void build()
override {}
160 String
name()
const override;
196 ISubDomain*
subDomain()
override {
return m_subdomain; }
197 MeshItemInternalList* meshItemInternalList()
override {
return &m_mesh_item_internal_list; }
199 Properties*
properties()
override {
return m_properties.
get(); }
201 const MeshPartInfo&
meshPartInfo()
const override {
return m_mesh_part_info; };
212 bool isAllocated()
override {
return m_is_allocated; }
214 bool isAmrActivated()
const override {
return false; }
222 IMesh*
parentMesh()
const override {
return nullptr; }
224 PolyhedralFamily* arcaneDefaultFamily(
eItemKind ik);
234 IGhostLayerMng*
ghostLayerMng()
const override {
return nullptr; }
240 m_mesh_checker.checkValidMesh();
243 IVariableMng*
variableMng()
const override {
return m_variable_mng; }
254 IMeshModifier*
modifier()
override {
return nullptr;}
271 PolyhedralFamily* _createItemFamily(
eItemKind ik,
const String&
name);
272 PolyhedralFamily* _itemFamily(
eItemKind ik);
273 PolyhedralFamily* _findItemFamily(
eItemKind ik,
const String&
name,
bool create_if_needed =
false);
279 [[noreturn]]
void _errorEmptyMesh()
const;
281 void _createUnitMesh();
282 void _updateMeshInternalList(
eItemKind kind);
Fichier de configuration d'Arcane.
Déclarations des types généraux de Arcane.
Interface d'allocation des entités du maillage.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Allocateur pour les maillages polyédriques.
virtual IMeshInitialAllocator * initialAllocator()
Allocateur initial spécifique.
Interface du gestionnaire d'un sous-domaine.
virtual IParallelMng * parallelMng()=0
Retourne le gestionnaire de parallélisme.
Gestionnaire des types d'entités de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Paramètres nécessaires à la construction d'un maillage.
Tableaux d'indirection sur les entités d'un maillage.
Caractéristiques d'un maillage.
Informations un maillage partitionné.
bool get(const String &name, bool &value) const
Valeur de la propriété de nom name.
CellGroup ownLevelCells(const Integer &) override
Groupe de toutes les mailles propres de niveau level.
void destroyGroups() override
Détruit tous les groupes de toutes les familles.
Integer nbNode() override
Nombre de noeuds du maillage.
ITraceMng * traceMng() override
Gestionnaire de message associé
FaceGroup ownFaces() override
Groupe de toutes les faces propres au domaine.
IItemFamily * createItemFamily(eItemKind, const String &) override
Créé une famille de particule de nom name.
IItemFamily * itemFamily(eItemKind) override
Retourne la famille d'entité de type ik.
IItemFamily * faceFamily() override
Retourne la famille des faces.
ItemTypeMng * itemTypeMng() const override
Gestionnaire de types d'entités associé
VariableNodeReal3 & nodesCoordinates() override
Coordonnées des noeuds.
FaceGroup outerFaces() override
Groupe de toutes les faces sur la frontière.
Integer dimension() override
Dimension du maillage (1D, 2D ou 3D).
IGhostLayerMng * ghostLayerMng() const override
Gestionnare de couche fantômes associé
IMeshModifier * modifier() override
Interface de modification associée.
IMeshCompactMng * _compactMng() override
Integer nbCell() override
Nombre de mailles du maillage.
IParallelMng * parallelMng() override
Gestionnaire de parallèlisme.
IItemFamily * edgeFamily() override
Retourne la famille des arêtes.
InternalConnectivityPolicy _connectivityPolicy() const override
Politique d'utilisation des connectivitées.
ISubDomain * subDomain() override
Sous-domaine associé
FaceGroup allActiveFaces() override
Groupe de toutes les faces actives.
void checkValidMesh() override
Vérification de la validité des structues internes de maillage (interne)
ItemGroupCollection groups() override
Liste des groupes.
CellGroup allActiveCells() override
Properties * properties() override
Propriétés associées à ce maillage.
Integer nbEdge() override
Nombre d'arêtes du maillage.
FaceGroup innerActiveFaces() override
Groupe de toutes les faces actives.
IItemFamily * cellFamily() override
Retourne la famille des mailles.
CellGroup ownActiveCells() override
Groupe de toutes les mailles actives et propres au domaine.
FaceGroup allFaces() override
Groupe de toutes les faces.
const MeshPartInfo & meshPartInfo() const override
Informations sur les parties du maillage.
IVariableMng * variableMng() const override
Gestionnaire de variable associé
MeshHandle handle() const override
Handle sur ce maillage.
ItemGroup findGroup(const String &) override
Retourne le groupe de nom name ou le groupe nul s'il n'y en a pas.
IItemFamily * nodeFamily() override
Retourne la famille des noeuds.
Integer nbFace() override
Nombre de faces du maillage.
EdgeGroup allEdges() override
Groupe de toutes les arêtes.
IItemFamily * findItemFamily(eItemKind, const String &, bool, bool) override
Retourne la famille de nom name.
CellGroup ownCells() override
Groupe de toutes les mailles propres au domaine.
CellGroup allLevelCells(const Integer &) override
Groupe de toutes les mailles de niveau level.
NodeGroup ownNodes() override
Groupe de tous les noeuds propres au domaine.
IMeshInternal * _internalApi() override
API interne à Arcane.
NodeGroup allNodes() override
Groupe de tous les noeuds.
FaceGroup ownActiveFaces() override
Groupe de toutes les faces actives propres au domaine.
String name() const override
Nom du maillage.
bool isAllocated() override
Vrai si le maillage est allouée.
FaceGroup outerActiveFaces() override
Groupe de toutes les faces actives sur la frontière.
IMesh * parentMesh() const override
Accès au maillage parent.
CellGroup allCells() override
Groupe de toutes les mailles.
String factoryName() const override
Nom de la fabrique utilisée pour créer le maillage.
EdgeGroup ownEdges() override
Groupe de toutes les arêtes propres au domaine.
Integer nbItem(eItemKind) override
Nombre d'éléments du genre ik.
Implémentation des évènements sur le maillage.
EventObservable< const MeshEventArgs & > & eventObservable(eMeshEventType type) override
Observable pour un évènement.
const MeshKind meshKind() const override
Caractéristiques du maillage.
Chaîne de caractères unicode.
ItemGroupT< Cell > CellGroup
Groupe de mailles.
ItemGroupT< Face > FaceGroup
Groupe de faces.
ItemGroupT< Edge > EdgeGroup
Groupe d'arêtes.
ItemGroupT< Node > NodeGroup
Groupe de noeuds.
MeshVariableScalarRefT< Node, Real3 > VariableNodeReal3
Grandeur au noeud de type coordonnées.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< ItemGroup > ItemGroupCollection
Collection de groupes d'éléments du maillage.
List< ItemGroup > ItemGroupList
Tableau de groupes d'éléments du maillage.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Collection< IItemFamily * > IItemFamilyCollection
Collection de familles d'entités.
eMeshEventType
Evènements générés par IMesh.
eItemKind
Genre d'entité de maillage.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
InternalConnectivityPolicy
Politique d'utilisation des connectivités.
@ NewOnly
Alloue uniquement les nouvelles connectivités.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Int32 Integer
Type représentant un entier.