Arcane  v3.15.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CellFamily.cc
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/* CellFamily.cc (C) 2000-2025 */
9/* */
10/* Famille de mailles. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/mesh/CellFamily.h"
15
16#include "arcane/utils/FatalErrorException.h"
17
18#include "arcane/core/IMesh.h"
19#include "arcane/core/ISubDomain.h"
20#include "arcane/core/ItemInternalEnumerator.h"
21#include "arcane/core/Connectivity.h"
22
23#include "arcane/mesh/NodeFamily.h"
24#include "arcane/mesh/EdgeFamily.h"
25#include "arcane/mesh/FaceFamily.h"
26#include "arcane/mesh/CellMerger.h"
27#include "arcane/mesh/IncrementalItemConnectivity.h"
28#include "arcane/mesh/CompactIncrementalItemConnectivity.h"
29#include "arcane/mesh/ItemConnectivitySelector.h"
30#include "arcane/mesh/AbstractItemFamilyTopologyModifier.h"
31#include "arcane/mesh/NewWithLegacyConnectivity.h"
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36namespace Arcane::mesh
37{
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
44{
45 public:
47 : AbstractItemFamilyTopologyModifier(f), m_true_family(f){}
48 public:
49 void replaceNode(ItemLocalId item_lid,Integer index,ItemLocalId new_lid) override
50 {
51 m_true_family->replaceNode(item_lid,index,new_lid);
52 }
53 void replaceEdge(ItemLocalId item_lid,Integer index,ItemLocalId new_lid) override
54 {
55 m_true_family->replaceEdge(item_lid,index,new_lid);
56 }
57 void replaceFace(ItemLocalId item_lid,Integer index,ItemLocalId new_lid) override
58 {
59 m_true_family->replaceFace(item_lid,index,new_lid);
60 }
62 {
63 m_true_family->replaceHParent(item_lid,index,new_lid);
64 }
66 {
67 m_true_family->replaceHChild(item_lid,index,new_lid);
68 }
69 private:
70 CellFamily* m_true_family;
71};
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
76CellFamily::
77CellFamily(IMesh* mesh,const String& name)
78: ItemFamily(mesh,IK_Cell,name)
79, m_node_prealloc(0)
80, m_edge_prealloc(0)
81, m_face_prealloc(0)
82, m_mesh_connectivity(0)
83, m_node_family(nullptr)
84, m_edge_family(nullptr)
85, m_face_family(nullptr)
86, m_node_connectivity(nullptr)
87, m_edge_connectivity(nullptr)
88, m_face_connectivity(nullptr)
89, m_hparent_connectivity(nullptr)
90{
91 _setTopologyModifier(new TopologyModifier(this));
92}
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97CellFamily::
98~CellFamily()
99{
100}
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
105void CellFamily::
106build()
107{
108 ItemFamily::build();
109
110 m_node_family = ARCANE_CHECK_POINTER(dynamic_cast<NodeFamily*>(m_mesh->nodeFamily()));
111 m_edge_family = ARCANE_CHECK_POINTER(dynamic_cast<EdgeFamily*>(m_mesh->edgeFamily()));
112 m_face_family = ARCANE_CHECK_POINTER(dynamic_cast<FaceFamily*>(m_mesh->faceFamily()));
113
114 IItemFamilyNetwork* network = m_mesh->itemFamilyNetwork();
115 if (m_mesh->useMeshItemFamilyDependencies()) { // temporary to fill legacy, even with family dependencies
116 auto* nc = network->getConnectivity(this,m_node_family,connectivityName(this,m_node_family));
117 using NodeNetwork = NewWithLegacyConnectivityType<CellFamily,NodeFamily>::type;
118 m_node_connectivity = ARCANE_CHECK_POINTER(dynamic_cast<NodeNetwork*>(nc));
119 using EdgeNetwork = NewWithLegacyConnectivityType<CellFamily,EdgeFamily>::type;
120 auto* ec = network->getConnectivity(this,m_edge_family,connectivityName(this,m_edge_family));
121 m_edge_connectivity = ARCANE_CHECK_POINTER(dynamic_cast<EdgeNetwork*>(ec));
122 using FaceNetwork = NewWithLegacyConnectivityType<CellFamily,FaceFamily>::type;
123 auto* fc = network->getConnectivity(this,m_face_family,connectivityName(this,m_face_family));
124 m_face_connectivity = ARCANE_CHECK_POINTER(dynamic_cast<FaceNetwork*>(fc));
125 }
126 else{
127 m_node_connectivity = new NodeConnectivity(this,m_node_family,"CellNode");
128 m_edge_connectivity = new EdgeConnectivity(this,m_edge_family,"CellEdge");
129 m_face_connectivity = new FaceConnectivity(this,m_face_family,"CellFace");
130 }
131 m_hparent_connectivity = new HParentConnectivity(this,this,"HParentCell");
132 m_hchild_connectivity = new HChildConnectivity(this,this,"HChildCell");
133
134 _addConnectivitySelector(m_node_connectivity);
135 _addConnectivitySelector(m_edge_connectivity);
136 _addConnectivitySelector(m_face_connectivity);
137 _addConnectivitySelector(m_hparent_connectivity);
138 _addConnectivitySelector(m_hchild_connectivity);
139
140 _buildConnectivitySelectors();
141}
142
143/*---------------------------------------------------------------------------*/
144/*---------------------------------------------------------------------------*/
145
146inline void CellFamily::
147_createOne(ItemInternal* item,Int64 uid,ItemTypeInfo* type)
148{
149 ItemLocalId item_lid(item);
150 m_item_internal_list->cells = _itemsInternal();
151 _allocateInfos(item,uid,type);
152 auto nc = m_node_connectivity->trueCustomConnectivity();
153 nc->addConnectedItems(item_lid,type->nbLocalNode());
154 if (m_edge_prealloc!=0){
155 auto ec = m_edge_connectivity->trueCustomConnectivity();
156 ec->addConnectedItems(item_lid,type->nbLocalEdge());
157 }
158 auto fc = m_face_connectivity->trueCustomConnectivity();
159 fc->addConnectedItems(item_lid,type->nbLocalFace());
160}
161
162/*---------------------------------------------------------------------------*/
163/*---------------------------------------------------------------------------*/
164
165inline void CellFamily::
166_createOne(ItemInternal* item,Int64 uid,ItemTypeId type_id)
167{
168 _createOne(item,uid,_itemTypeMng()->typeFromId(type_id));
169}
170
171/*---------------------------------------------------------------------------*/
172/*---------------------------------------------------------------------------*/
173
176{
177 ++mesh_info.nbCell();
178 return allocOne(uid,type_id);
179}
180
181/*---------------------------------------------------------------------------*/
182/*---------------------------------------------------------------------------*/
183
184Item CellFamily::
185findOrAllocOne(Int64 uid,ItemTypeId type_id,MeshInfos& mesh_info, bool& is_alloc)
186{
187 auto cell = findOrAllocOne(uid,type_id,is_alloc);
188 if (is_alloc)
189 ++mesh_info.nbCell();
190 return cell;
191}
192
193/*---------------------------------------------------------------------------*/
194/*---------------------------------------------------------------------------*/
195
197allocOne(Int64 uid,ItemTypeId type_id)
198{
199 ItemInternal* item = _allocOne(uid);
200 _createOne(item,uid,type_id);
201 return item;
202}
203
204/*---------------------------------------------------------------------------*/
205/*---------------------------------------------------------------------------*/
206
207Cell CellFamily::
208findOrAllocOne(Int64 uid,ItemTypeId type_id,bool& is_alloc)
209{
210 return findOrAllocOne(uid,_itemTypeMng()->typeFromId(type_id),is_alloc);
211}
212
213/*---------------------------------------------------------------------------*/
214/*---------------------------------------------------------------------------*/
215
216ItemInternal* CellFamily::
217allocOne(Int64 uid,ItemTypeInfo* type)
218{
219 ItemInternal* item = _allocOne(uid);
220 _createOne(item,uid,type);
221 return item;
222}
223
224/*---------------------------------------------------------------------------*/
225/*---------------------------------------------------------------------------*/
226
227ItemInternal* CellFamily::
228findOrAllocOne(Int64 uid,ItemTypeInfo* type,bool& is_alloc)
229{
230 // ARCANE_ASSERT((type->typeId() != IT_Line2),("Bad new 1D cell uid=%ld", uid)); // Assertion OK, but expensive ?
231 ItemInternal* item = _findOrAllocOne(uid,is_alloc);
232 if (is_alloc)
233 _createOne(item,uid,type);
234 return item;
235}
236
237/*---------------------------------------------------------------------------*/
238/*---------------------------------------------------------------------------*/
239
240void CellFamily::
241preAllocate(Integer nb_item)
242{
243 this->_preAllocate(nb_item,true);
244}
245
246/*---------------------------------------------------------------------------*/
247/*---------------------------------------------------------------------------*/
248
251{
252 debug() << "Creating the list of ghosts cells";
254}
255
256/*---------------------------------------------------------------------------*/
257/*---------------------------------------------------------------------------*/
258
261{
263
264 // Il faut d'abord supprimer les faces, les arêtes puis ensuite les noeuds
265 // voir les remarques sur _removeOne dans les familles.
266 // NOTE GG: ce n'est normalement plus obligatoire de le faire dans un ordre
267 // fixe car ces méthodes ne suppriment pas les entités. La destruction
268 // est faire lors de l'appel à removeNotConnectedSubItems().
269 for( Face face : cell.faces() )
270 m_face_family->removeCellFromFace(face,cell_lid);
271 for( Edge edge : cell.edges() )
272 m_edge_family->removeCellFromEdge(edge,cell_lid);
273 for( Node node : cell.nodes() )
274 m_node_family->removeCellFromNode(node,cell_lid);
275}
276
277/*---------------------------------------------------------------------------*/
278/*---------------------------------------------------------------------------*/
279
282{
283#ifdef ARCANE_CHECK
284 _checkValidItem(icell);
285 if (icell.itemBase().isSuppressed())
286 ARCANE_FATAL("Cell '{0}' is already removed",icell.uniqueId());
287#endif
288 // TODO: supprimer les faces et arêtes connectées.
292 if (icell.level() >0){
293 _removeParentCellToCell(icell);
294 Cell parent_cell= icell.hParent();
295 _removeChildCellToCell(parent_cell,icell);
296 }
297 _removeOne(icell);
298}
299
300/*---------------------------------------------------------------------------*/
301/*---------------------------------------------------------------------------*/
302
310
311/*---------------------------------------------------------------------------*/
312/*---------------------------------------------------------------------------*/
313
316{
317#ifdef ARCANE_CHECK
318 _checkValidItem(icell);
319 if (icell.itemBase().isSuppressed())
320 ARCANE_FATAL("Cell '{0}' is already removed",icell.uniqueId());
321#endif /* ARCANE_CHECK */
322
325 if (icell.level() >0){
326 _removeParentCellToCell(icell);
327 Cell parent_cell= icell.hParent();
328 _removeChildCellToCell(parent_cell,icell);
329 }
330 _detachOne(icell);
331}
332
333/*---------------------------------------------------------------------------*/
334/*---------------------------------------------------------------------------*/
335
338{
339 // Implemented in ItemFamily. Even if only cells are detached, the implementation
340 // is not CellFamily specific, thx to ItemFamilyNetwork
341 _detachCells2(cells_local_id);
342}
343
344/*---------------------------------------------------------------------------*/
345/*---------------------------------------------------------------------------*/
352{
353 // L'ordre (faces, puis arêtes puis noeuds) est important.
354 // Ne pas changer.
355
356 // Supprime les faces de la maille qui ne sont plus connectées
357 for( Face face : cell.faces() )
358 m_face_family->removeFaceIfNotConnected(face);
359
360 // Supprime les arêtes de la maille qui ne sont plus connectées
361 for( Edge edge : cell.edges() )
362 m_edge_family->removeEdgeIfNotConnected(edge);
363
364 // on supprime les noeuds de la maille qui ne sont plus connectés
365 for( Node node : cell.nodes() )
366 m_node_family->removeNodeIfNotConnected(node);
367}
368
369/*---------------------------------------------------------------------------*/
370/*---------------------------------------------------------------------------*/
371
374{
376
377 // on supprime la maille
378 _removeDetachedOne(cell);
379}
380
381/*---------------------------------------------------------------------------*/
382/*---------------------------------------------------------------------------*/
383
386{
387 ARCANE_UNUSED(keep_ghost);
388 for( Integer i=0, is=local_ids.size(); i<is; ++i ){
389 removeCell(m_item_internal_list->cells[local_ids[i]]);
390 }
391}
392
393/*---------------------------------------------------------------------------*/
394/*---------------------------------------------------------------------------*/
400replaceNode(ItemLocalId cell,Integer index,ItemLocalId node)
401{
402 m_node_connectivity->replaceItem(cell,index,node);
403}
404
405/*---------------------------------------------------------------------------*/
406/*---------------------------------------------------------------------------*/
412replaceEdge(ItemLocalId cell,Integer index,ItemLocalId edge)
413{
414 m_edge_connectivity->replaceItem(cell,index,edge);
415}
416
417/*---------------------------------------------------------------------------*/
418/*---------------------------------------------------------------------------*/
424replaceFace(ItemLocalId cell,Integer index,ItemLocalId face)
425{
426 m_face_connectivity->replaceItem(cell,index,face);
427}
428
429/*---------------------------------------------------------------------------*/
430/*---------------------------------------------------------------------------*/
431
432void CellFamily::
433replaceHChild(ItemLocalId cell,Integer index,ItemLocalId child_cell)
434{
435 m_hchild_connectivity->replaceItem(cell,index,child_cell);
436}
437
438/*---------------------------------------------------------------------------*/
439/*---------------------------------------------------------------------------*/
440
441void CellFamily::
442replaceHParent(ItemLocalId cell,Integer index,ItemLocalId parent_cell)
443{
444 m_hparent_connectivity->replaceItem(cell,index,parent_cell);
445}
446
447/*---------------------------------------------------------------------------*/
448/*---------------------------------------------------------------------------*/
449
451setConnectivity(const Integer c)
452{
453 m_mesh_connectivity = c;
454 m_node_prealloc = Connectivity::getPrealloc(m_mesh_connectivity,IK_Cell,IK_Node);
455 m_node_connectivity->setPreAllocatedSize(m_node_prealloc);
456 // Les arêtes n'existent que en dimension 3.
457 if (mesh()->dimension()==3){
458 Integer edge_prealloc = Connectivity::getPrealloc(m_mesh_connectivity,IK_Cell,IK_Edge);
459 m_edge_connectivity->setPreAllocatedSize(edge_prealloc);
460 if (Connectivity::hasConnectivity(m_mesh_connectivity,Connectivity::CT_HasEdge))
461 m_edge_prealloc = edge_prealloc;
462 }
463 m_face_prealloc = Connectivity::getPrealloc(m_mesh_connectivity,IK_Cell,IK_Face);
464 m_face_connectivity->setPreAllocatedSize(m_face_prealloc);
465 debug() << "Family " << name() << " prealloc "
466 << m_node_prealloc << " by node, "
467 << m_edge_prealloc << " by edge, "
468 << m_face_prealloc << " by face.";
469}
471/*---------------------------------------------------------------------------*/
472/*---------------------------------------------------------------------------*/
473
476{
477 m_hparent_connectivity->addConnectedItem(ItemLocalId(cell),ItemLocalId(parent_cell));
478}
479
480/*---------------------------------------------------------------------------*/
481/*---------------------------------------------------------------------------*/
482
483void CellFamily::
484_addChildCellToCell2(Cell iparent_cell,Cell child_cell)
485{
486 m_hchild_connectivity->addConnectedItem(ItemLocalId(iparent_cell),ItemLocalId(child_cell));
487}
488
489/*---------------------------------------------------------------------------*/
490/*---------------------------------------------------------------------------*/
491
492void CellFamily::
493_addChildCellToCell(Cell iparent_cell,Integer position,Cell child_cell)
494{
496 // NOTE GG: L'ancienne méthode ci-dessous en commentaire ne semble
497 // fonctionner que si \a position correspond parent_cell->nbHChildren().
498 // Et dans ce cas il n'est pas nécessaire de faire 2 appels.
499 // m_hchild_connectivity->addConnectedItem(parent_cell,ItemLocalId(NULL_ITEM_LOCAL_ID));
500 Int32 nb_connected = m_hchild_connectivity->trueCustomConnectivity()->nbConnectedItem(parent_cell);
501 for( Int32 i=nb_connected; i<(position+1); ++i )
502 m_hchild_connectivity->addConnectedItem(parent_cell,ItemLocalId(NULL_ITEM_LOCAL_ID));
503 auto x = _topologyModifier();
504 x->replaceHChild(ItemLocalId(iparent_cell),position,child_cell);
505 parent_cell.mutableItemBase().addFlags(ItemFlags::II_Inactive);
506}
507
508/*---------------------------------------------------------------------------*/
509/*---------------------------------------------------------------------------*/
510
511void CellFamily::
512_addChildrenCellsToCell(Cell parent_cell,Int32ConstArrayView children_cells_lid)
513{
514 Integer nb_children = children_cells_lid.size();
515 auto c = m_hchild_connectivity->trueCustomConnectivity();
516 if (c){
517 ItemLocalId item_lid(parent_cell);
518 c->addConnectedItems(item_lid,nb_children);
519 }
520 _updateSharedInfo();
521
522 auto x = _topologyModifier();
523 for( Integer i=0; i<nb_children; ++i )
524 x->replaceHChild(ItemLocalId(parent_cell),i,ItemLocalId(children_cells_lid[i]));
525
526 parent_cell.mutableItemBase().addFlags(ItemFlags::II_Inactive);
527}
528
529/*---------------------------------------------------------------------------*/
530/*---------------------------------------------------------------------------*/
531
532void CellFamily::
533_removeParentCellToCell(Cell cell)
534{
535 m_hparent_connectivity->removeConnectedItems(ItemLocalId(cell));
536}
537
538/*---------------------------------------------------------------------------*/
539/*---------------------------------------------------------------------------*/
540
541void CellFamily::
542_removeChildCellToCell(Cell parent_cell,Cell cell)
543{
544 m_hchild_connectivity->removeConnectedItem(ItemLocalId(parent_cell),ItemLocalId(cell));
545 parent_cell.mutableItemBase().removeFlags(ItemFlags::II_Inactive);
546}
547
548/*---------------------------------------------------------------------------*/
549/*---------------------------------------------------------------------------*/
550
551void CellFamily::
552_removeChildrenCellsToCell(Cell parent_cell)
553{
554 m_hchild_connectivity->removeConnectedItems(ItemLocalId(parent_cell));
555 parent_cell.mutableItemBase().removeFlags(ItemFlags::II_Inactive);
556}
557
558/*---------------------------------------------------------------------------*/
559/*---------------------------------------------------------------------------*/
560
561}
562
563/*---------------------------------------------------------------------------*/
564/*---------------------------------------------------------------------------*/
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classe pour convertir un CellLocalId vers une maille.
Maille d'un maillage.
Definition Item.h:1191
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Definition Item.h:1272
EdgeConnectedListViewType edges() const
Liste des arêtes de la maille.
Definition Item.h:1290
Arête d'une maille.
Definition Item.h:809
Face d'une maille.
Definition Item.h:944
virtual IItemFamily * nodeFamily()=0
Retourne la famille des noeuds.
virtual IItemFamily * edgeFamily()=0
Retourne la famille des arêtes.
virtual IItemFamily * faceFamily()=0
Retourne la famille des faces.
virtual bool useMeshItemFamilyDependencies() const =0
check if the network itemFamily dependencies is activated
virtual IItemFamilyNetwork * itemFamilyNetwork()=0
Interface du réseau de familles (familles connectées)
@ II_Inactive
L'entité est inactive //COARSEN_INACTIVE,.
Definition ItemFlags.h:66
Structure interne d'une entité de maillage.
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Type d'une entité (Item).
Definition ItemTypeId.h:32
NodeConnectedListViewType nodes() const
Liste des noeuds de l'entité
Definition Item.h:782
Classe de base d'un élément de maillage.
Definition Item.h:83
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:219
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Noeud d'un maillage.
Definition Item.h:573
Modification de la topologie des entités d'une famille.
void replaceFace(ItemLocalId item_lid, Integer index, ItemLocalId new_lid) override
Remplace une face d'une entité.
Definition CellFamily.cc:57
void replaceNode(ItemLocalId item_lid, Integer index, ItemLocalId new_lid) override
Remplace un noeud d'une entité.
Definition CellFamily.cc:49
void replaceHParent(ItemLocalId item_lid, Integer index, ItemLocalId new_lid) override
Remplace une entité parente d'une entité.
Definition CellFamily.cc:61
void replaceEdge(ItemLocalId item_lid, Integer index, ItemLocalId new_lid) override
Remplace une arête d'une entité.
Definition CellFamily.cc:53
void replaceHChild(ItemLocalId item_lid, Integer index, ItemLocalId new_lid) override
Remplace une entité enfant d'une entité.
Definition CellFamily.cc:65
Famille de mailles.
Definition CellFamily.h:46
void _removeSubItems(Cell cell)
Item allocOne(Int64 uid, ItemTypeId type_id, MeshInfos &mesh_info) override
Alloue un élément dans la famille et met à jour le mesh_info correspondant.
void detachCells2(Int32ConstArrayView cell_local_ids)
virtual void internalRemoveItems(Int32ConstArrayView local_ids, bool keep_ghost=false) override
void replaceNode(ItemLocalId cell, Integer index, ItemLocalId node)
Remplace le noeud d'index index de la maille cell avec celui de localId() node.
void removeCell(Cell cell)
void removeCells(ConstArrayView< Int32 > cells_local_id)
Supprime les mailles dont les numéros locaux sont cells_local_id.
void removeDetachedCell(Cell cell)
virtual void computeSynchronizeInfos() override
Construit les structures nécessaires à la synchronisation.
void _removeNotConnectedSubItems(Cell cell)
Supprime les sous-entités de la maille qui ne sont connectées à aucune maille.
void _addParentCellToCell(Cell cell, Cell parent_cell)
AMR.
void replaceFace(ItemLocalId cell, Integer index, ItemLocalId face)
Remplace la face d'index index de la maille cell avec celle de localId() face.
void detachCell(Cell cell)
void replaceEdge(ItemLocalId cell, Integer index, ItemLocalId edge)
Remplace l'arête d'index index de la maille cell avec celle de localId() edge.
void setConnectivity(const Integer c)
Définit la connectivité active pour le maillage associé
void removeCellFromEdge(Edge edge, ItemLocalId cell_to_remove_lid)
Supprime une maille d'une arête.
void removeEdgeIfNotConnected(Edge edge)
Supprime l'arête si elle n'est plus connectée.
void removeCellFromFace(Face face, ItemLocalId cell_to_remove_lid)
Supprime une maille de la face.
void removeFaceIfNotConnected(Face face)
Supprime la face si elle n'est plus connectée.
Famille d'entités.
Definition ItemFamily.h:76
IMesh * mesh() const override
Maillage associé
IItemFamilyTopologyModifier * _topologyModifier() override
Interface du modificateur de topologie.
Definition ItemFamily.h:388
void computeSynchronizeInfos() override
Construit les structures nécessaires à la synchronisation.
String name() const override
Nom de la famille.
Definition ItemFamily.h:130
Classe factorisant des informations sur le maillage.
Definition MeshInfos.h:36
void removeNodeIfNotConnected(Node node)
Supprime le noeud siln'est plus connecté
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium) const
Flot pour un message de debug.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:572
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Face
Entité de maillage de genre face.
@ IK_Edge
Entité de maillage de genre arête.