12#ifndef ARCANE_MESH_DYNAMICMESHINCREMENTALBUILDER_H
13#define ARCANE_MESH_DYNAMICMESHINCREMENTALBUILDER_H
17#include "arcane/utils/HashTableMap.h"
18#include "arcane/utils/TraceAccessor.h"
20#include "arcane/core/IItemFamilyNetwork.h"
22#include "arcane/core/ItemInternal.h"
24#include "arcane/mesh/DynamicMeshKindInfos.h"
25#include "arcane/mesh/ItemData.h"
26#include "arcane/mesh/FullItemInfo.h"
70 bool allow_build_face =
true);
73 bool allow_build_face =
true);
76 bool allow_build_face =
true);
108 bool allow_build_face);
110 void addGhostLayers(
bool is_allocate);
114 void removeGhostCells();
115 void removeNeedRemoveMarkedCells();
133 void printStats(
Int32 level = TraceMessage::DEFAULT_LEVEL);
139 bool isVerbose()
const {
return m_verbose; }
150 NodeInFacePtr(
const Int64& node_uid) : m_ptr(std::make_shared<NodeInFace>(node_uid)){}
151 bool operator< (
const NodeInFacePtr& a)
const {
return (*m_ptr) < (*a.m_ptr);}
152 NodeInFace* operator->() {
return m_ptr.operator->();}
153 const NodeInFace* operator->()
const {
return m_ptr.operator->();}
154 bool operator==(
const NodeInFacePtr& a)
const {
return (*m_ptr) == (*a.m_ptr);}
155 std::shared_ptr<NodeInFace> m_ptr;
163 typedef std::list<NodeInFacePtr> NodeInFaceSet;
165 NodeInFace(
const Int64& node_uid)
167 , m_face_uid(NULL_ITEM_ID){}
170 friend bool operator<(
const NodeInFace& a,
const NodeInFace & nif)
172 return a.m_uid < nif.m_uid;
174 friend bool operator==(
const NodeInFace& a,
const NodeInFace& b)
176 return a.m_uid == b.m_uid;
179 Int64 faceUid()
const {
return m_face_uid;}
180 void setFaceUid(
Int64 face_uid) {m_face_uid = face_uid;}
182 const NodeInFaceSet& nextNodeSet()
const {
return m_next_node_set;}
183 NodeInFaceSet& nextNodeSet() {
return m_next_node_set;}
187 std::cout <<
"Node " << m_uid <<
" has set " << & m_next_node_set <<
" containing nodes : " << std:: endl;
188 for (
auto node : m_next_node_set)
198 NodeInFaceSet m_next_node_set;
201 typedef NodeInFace::NodeInFaceSet NodeInFaceSet;
220 void _fillCellNewInfoNew(
Integer nb_cell,
Int64ConstArrayView cells_infos,
Int64Array& cell_infos2,
const std::map<Int64,Int64SharedArray>& cell_to_face_connectivity_info,
const std::map<std::pair<Int64,Int64>,
Int64>& edge_uid_map);
230 void _fillNodeRelationInfo(
ItemData& source_item_relation_data,
const ItemData& target_item_dependencies_data,
Int64ConstArrayView nodes_info,
bool is_source_item_relation_data_emtpy);
231 void _fillEdgeRelationInfo(
ItemData& source_item_relation_data,
const ItemData& target_item_dependencies_data,
Int64ConstArrayView edges_info,
bool is_source_item_relation_data_emtpy);
232 void _fillFaceRelationInfo(
ItemData& source_item_relation_data,
const ItemData& target_item_dependencies_data,
Int64ConstArrayView faces_info,
bool is_source_item_relation_data_emtpy);
233 void _fillItemRelationInfo(
ItemData& source_item_relation_data,
const ItemData& target_item_dependencies_data,
Int64ConstArrayView source_item_types,
bool is_source_item_relation_data_emtpy);
234 void _initEmptyRelationInfo(
Int64Array& source_relation_info, std::map<Int64, Int64SharedArray>& source_to_target_uids,
Int64ConstArrayView source_item_uids_and_types,
237 void _appendInitializedRelationInfo(
Int64Array& source_relation_info, std::map<Int64, Int64SharedArray>& source_to_target_uids,
Int64ConstArrayView source_item_uids_and_types,
246 void _addItemsOrRelations(
ItemDataList& info_list, IItemFamilyNetwork::eSchedulingOrder family_graph_traversal_order);
Déclarations des types généraux de Arcane.
Tableau d'items de types quelconques.
Interface d'une famille d'entités.
Structure interne d'une entité de maillage.
Gestionnaire des types d'entités de maillage.
Vue sur un vecteur d'entités.
Implémentation d'un tampon pour la sérialisation.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
void addNodes2(Int64ConstArrayView nodes_uid, Integer sub_domain_id, Int32ArrayView nodes)
Ajoute des noeuds au maillage actuel. Utilise l'ajout d'item générique basé sur dépendances entre fam...
void computeFacesUniqueIds()
Calcul les numéros uniques de chaque face.
bool m_verbose
Vrai si affiche messages.
void setConnectivity(Integer c)
Définit la connectivité active pour le maillage associé
void addParentCells(const ItemVectorView &items)
Ajout au maillage courant d'item venant d'un maillage parent.
void addCells(Integer nb_cell, Int64ConstArrayView cell_infos, Integer sub_domain_id, Int32ArrayView cells, bool allow_build_face=true)
Ajoute des mailles au maillage actuel.
void addParentItems(const ItemVectorView &items, const eItemKind submesh_kind)
Ajout au maillage courant d'item venant d'un maillage parent.
OneMeshItemAdder * m_one_mesh_item_adder
Outils de construction du maillage.
Int64 m_face_uid_pool
Numéro du uniqueId() utilisé pour générer les faces.
void resetAfterDeallocate()
Remise à zéro des structures pour pouvoir faire à nouveau une allocation.
void addGhostChildFromParent(Array< Int64 > &ghost_cell_to_refine)
AMR.
void addEdges2(Integer nb_edge, Int64ConstArrayView edge_infos, Integer sub_domain_id, Int32ArrayView edges)
Ajoute des arêtes au maillage actuel. Utilise l'ajout d'item générique basé sur dépendances entre fam...
Int64 m_edge_uid_pool
Numéro du uniqueId() utilisé pour générer les edges.
void addItems(ItemDataList &item_info_list)
Ajout générique d'items d'un ensemble de famille pour lesquelles on fournit un ItemData.
void addNodes(Int64ConstArrayView nodes_uid, Integer sub_domain_id, Int32ArrayView nodes)
Ajoute des noeuds au maillage actuel.
void addFaces(Integer nb_face, Int64ConstArrayView face_infos, Integer sub_domain_id, Int32ArrayView faces)
Ajoute des faces au maillage actuel.
void addEdges(Integer nb_edge, Int64ConstArrayView edge_infos, Integer sub_domain_id, Int32ArrayView edges)
Ajoute des arêtes au maillage actuel.
GhostLayerBuilder * m_ghost_layer_builder
Outil pour construire les éléments fantômes.
void addHChildrenCells(Cell hParent_cell, Integer nb_cell, Int64ConstArrayView cells_infos, Int32 sub_domain_id, Int32ArrayView cells, bool allow_build_face)
Ajoute des mailles au maillage actuel.
bool m_has_edge
Info sur la présence d'arête (accèlere l'accès à la connectivité générale)
void addFamilyItems(ItemData &item_info)
Ajout générique d'items d'une famille, décrite par son ItemInfo.
DynamicMeshIncrementalBuilder(DynamicMesh *mesh)
Construit une instance pour le maillage mesh.
void removeNeedRemoveMarkedItems()
Supprime les items fantômes.
void addCells3(Integer nb_cell, Int64ConstArrayView cell_infos, Integer sub_domain_id, Int32ArrayView cells, bool allow_build_face=true)
Ajoute des mailles au maillage actuel. Utilise l'ajout d'item générique basé sur dépendances entre fa...
void addFaces2(Integer nb_face, Int64ConstArrayView face_infos, Integer sub_domain_id, Int32ArrayView faces)
Ajoute des faces au maillage actuel. Utilise l'ajout d'item générique basé sur dépendances entre fami...
Integer m_connectivity
Info de connectivité du maillage courant.
DynamicMesh * m_mesh
Maillage associé
Implémentation d'un maillage.
Construction des couches fantômes.
Construction des couches fantômes.
Construction des couches fantômes.
Tableau associatif de ItemInternal.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Array< Int64 > Int64Array
Tableau dynamique à une dimension d'entiers 64 bits.
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
eItemKind
Genre d'entité de maillage.
std::int32_t Int32
Type entier signé sur 32 bits.