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