Arcane  v3.16.0.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
Item.h
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/* Item.h (C) 2000-2025 */
9/* */
10/* Informations sur les éléments du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEM_H
13#define ARCANE_CORE_ITEM_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/core/ItemInternal.h"
19#include "arcane/core/ItemLocalId.h"
20
21#include <atomic>
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32// Macro pour vérifier en mode Check que les conversions entre les
33// les genres d'entités sont correctes.
34#ifdef ARCANE_CHECK
35#define ARCANE_CHECK_KIND(type) _checkKind(type())
36#else
37#define ARCANE_CHECK_KIND(type)
38#endif
39
40#ifdef ARCANE_CHECK
41#define ARCANE_WANT_ITEM_STAT
42#endif
43
44#ifdef ARCANE_WANT_ITEM_STAT
45#define ARCANE_ITEM_ADD_STAT(var) ++var
46#else
47#define ARCANE_ITEM_ADD_STAT(var)
48#endif
49
50/*---------------------------------------------------------------------------*/
51/*---------------------------------------------------------------------------*/
82class ARCANE_CORE_EXPORT Item
83{
84 // Pour accéder aux constructeurs privés
85 friend class ItemEnumeratorBaseT<Item>;
87 friend class ItemVector;
88 friend class ItemVectorView;
89 friend class ItemVectorViewConstIterator;
90 friend class ItemConnectedListViewConstIterator;
91 friend class SimdItem;
92 friend class SimdItemEnumeratorBase;
93 friend class ItemInfoListView;
94 friend class ItemLocalIdToItemConverter;
95 template<typename ItemType> friend class ItemLocalIdToItemConverterT;
96 friend class ItemPairEnumerator;
97 template<int Extent> friend class ItemConnectedListView;
98 template<typename ItemType> friend class ItemEnumeratorBaseT;
99
100 // Pour accéder à _internal()
101 friend class ItemCompatibility;
102
103 public:
104
105 typedef ItemInternal* ItemInternalPtr;
106
109
110 using ItemBase = impl::ItemBase;
111
112 public:
113
117 */
118 class Index
119 {
120 // TODO Rendre obsolète lorsqu'on aura supprimer
121 // les classes dérivées qui sont obsolètes.
122 // On ne peut pas le faire avant car cela génère trop
123 // d'avertissements de compilation.
124 public:
125 Index() : m_local_id(NULL_ITEM_LOCAL_ID){}
126 explicit Index(Int32 id) : m_local_id(id){}
127 Index(Item item) : m_local_id(item.localId()){}
128 operator ItemLocalId() const { return ItemLocalId{m_local_id}; }
129 public:
130 Int32 localId() const { return m_local_id; }
131 private:
132 Int32 m_local_id;
133 };
134
135 public:
136
144 enum
145 {
146 Unknown ARCANE_DEPRECATED_REASON("Use 'IT_NullType' instead") = IT_NullType,
147 Vertex ARCANE_DEPRECATED_REASON("Use 'IT_Vertex' instead") = IT_Vertex,
148 Bar2 ARCANE_DEPRECATED_REASON("Use 'IT_Line2' instead") = IT_Line2,
149 Tri3 ARCANE_DEPRECATED_REASON("Use 'IT_Triangle3' instead") = IT_Triangle3,
150 Quad4 ARCANE_DEPRECATED_REASON("Use 'IT_Quad4' instead") = IT_Quad4,
151 Pentagon5 ARCANE_DEPRECATED_REASON("Use 'IT_Pentagon5' instead") = IT_Pentagon5,
152 Hexagon6 ARCANE_DEPRECATED_REASON("Use 'IT_Hexagon6' instead") = IT_Hexagon6,
153 Tetra ARCANE_DEPRECATED_REASON("Use 'IT_Tetraedron4' instead") = IT_Tetraedron4,
154 Pyramid ARCANE_DEPRECATED_REASON("Use 'IT_Pyramid5' instead") = IT_Pyramid5,
155 Penta ARCANE_DEPRECATED_REASON("Use 'IT_Pentaedron6' instead") = IT_Pentaedron6,
156 Hexa ARCANE_DEPRECATED_REASON("Use 'IT_Hexaedron8' instead") = IT_Hexaedron8,
157 Wedge7 ARCANE_DEPRECATED_REASON("Use 'IT_Heptaedron10' instead") = IT_Heptaedron10,
158 Wedge8 ARCANE_DEPRECATED_REASON("Use 'IT_Octaedron12' instead") = IT_Octaedron12
159 // Réduit au minimum pour compatibilité.
160 };
161
163 static const Int32 NULL_ELEMENT = NULL_ITEM_ID;
164
166 ARCCORE_DEPRECATED_2021("Use ItemTypeMng::typeName() instead")
167 static String typeName(Int32 type);
168
169 protected:
170
172 constexpr ARCCORE_HOST_DEVICE Item(Int32 local_id,ItemSharedInfo* shared_info)
173 : m_shared_info(shared_info), m_local_id(local_id) {}
174
175 public:
176
177 //! Création d'une entité de maillage nulle
178 Item() = default;
181 //ARCANE_DEPRECATED_REASON("Remove this overload")
182 Item(ItemInternal* ainternal)
183 {
184 ARCANE_CHECK_PTR(ainternal);
185 m_shared_info = ainternal->m_shared_info;
186 m_local_id = ainternal->m_local_id;
187 ARCANE_ITEM_ADD_STAT(m_nb_created_from_internal);
188 }
189
190 // NOTE: Pour le constructeur suivant; il est indispensable d'utiliser
191 // const& pour éviter une ambiguité avec le constructeur par recopie
193 constexpr ARCCORE_HOST_DEVICE Item(const ItemBase& abase)
195 , m_local_id(abase.m_local_id)
196 {
197 }
198
200 Item(const ItemInternalPtr* internals,Int32 local_id)
201 : Item(local_id,internals[local_id]->m_shared_info)
202 {
203 ARCANE_ITEM_ADD_STAT(m_nb_created_from_internalptr);
204 }
205
208 {
209 _set(ainternal);
210 return (*this);
211 }
212
213 public:
214
216 constexpr bool null() const { return m_local_id==NULL_ITEM_ID; }
217
219 constexpr Int32 localId() const { return m_local_id; }
220
222 constexpr ItemLocalId itemLocalId() const { return ItemLocalId{ m_local_id }; }
223
226 {
227#ifdef ARCANE_CHECK
228 if (m_local_id!=NULL_ITEM_LOCAL_ID)
229 arcaneCheckAt((Integer)m_local_id,m_shared_info->m_unique_ids.size());
230#endif
231 // Ne pas utiliser l'accesseur normal car ce tableau peut etre utilise pour la maille
232 // nulle et dans ce cas m_local_id vaut NULL_ITEM_LOCAL_ID (qui est negatif)
233 // ce qui provoque une exception pour debordement de tableau.
234 return ItemUniqueId(m_shared_info->m_unique_ids.data()[m_local_id]);
235 }
236
238 Int32 owner() const { return m_shared_info->_ownerV2(m_local_id); }
239
241 Int16 type() const { return m_shared_info->_typeId(m_local_id); }
242
244 ItemTypeId itemTypeId() const { return ItemTypeId(type()); }
245
247 IItemFamily* itemFamily() const { return m_shared_info->m_item_family; }
248
250 eItemKind kind() const { return m_shared_info->m_item_kind; }
251
253 bool isOwn() const { return (_flags() & ItemFlags::II_Own)!=0; }
254
265 bool isShared() const { return (_flags() & ItemFlags::II_Shared)!=0; }
266
268 inline ItemWithNodes toItemWithNodes() const;
270 inline Node toNode() const;
272 inline Cell toCell() const;
274 inline Edge toEdge() const;
276 inline Face toFace() const;
278 inline Particle toParticle() const;
280 inline DoF toDoF() const;
281
283 Int32 nbParent() const { return _nbParent(); }
284
286 Item parent(Int32 i) const { return m_shared_info->_parentV2(m_local_id,i); }
287
289 Item parent() const { return m_shared_info->_parentV2(m_local_id,0); }
290
291 public:
292
294 bool isItemWithNodes() const
295 {
296 eItemKind ik = kind();
297 return (ik==IK_Unknown || ik==IK_Edge || ik==IK_Face || ik==IK_Cell );
298 }
299
301 bool isNode() const
302 {
303 eItemKind ik = kind();
304 return (ik==IK_Unknown || ik==IK_Node);
305 }
306
307 bool isCell() const
308 {
309 eItemKind ik = kind();
310 return (ik==IK_Unknown || ik==IK_Cell);
311 }
312
313 bool isEdge() const
314 {
315 eItemKind ik = kind();
316 return (ik==IK_Unknown || ik==IK_Edge);
317 }
318
319 bool isFace() const
320 {
321 eItemKind ik = kind();
322 return (ik==IK_Unknown || ik==IK_Face);
323 }
324
325 bool isParticle() const
326 {
327 eItemKind ik = kind();
328 return (ik==IK_Unknown || ik==IK_Particle);
329 }
330
331 bool isDoF() const
332 {
333 eItemKind ik = kind();
334 return (ik==IK_Unknown || ik==IK_DoF);
335 }
336
337 public:
338
347 ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane. use itemBase() or mutableItemBase() instead")
349 {
350 if (m_local_id!=NULL_ITEM_LOCAL_ID)
351 return m_shared_info->m_items_internal[m_local_id];
352 return ItemInternal::nullItem();
353 }
354
355 public:
356
363 impl::ItemBase itemBase() const
364 {
365 return impl::ItemBase(m_local_id,m_shared_info);
366 }
367
374 impl::MutableItemBase mutableItemBase() const
375 {
376 return impl::MutableItemBase(m_local_id,m_shared_info);
377 }
378
386 const ItemTypeInfo* typeInfo() const { return m_shared_info->typeInfoFromId(type()); }
387
388 public:
389
390 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
391 Item* operator->() { return this; }
392
393 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
394 const Item* operator->() const { return this; }
395
396 private:
397
399 ItemSharedInfo* m_shared_info = ItemSharedInfo::nullItemSharedInfoPointer;
400
401 protected:
402
409 Int32 m_local_id = NULL_ITEM_LOCAL_ID;
410
411 protected:
412
413 void _checkKind(bool is_valid) const
414 {
415 if (!is_valid)
416 _badConversion();
417 }
418 void _badConversion() const;
419 void _set(ItemInternal* ainternal)
420 {
421 _setFromInternal(ainternal);
422 }
423 void _set(const Item& rhs)
424 {
425 _setFromItem(rhs);
426 }
427
428 protected:
429
431 Int32 _flags() const { return m_shared_info->_flagsV2(m_local_id); }
433 Integer _nbNode() const { return _connectivity()->_nbNodeV2(m_local_id); }
435 Integer _nbEdge() const { return _connectivity()->_nbEdgeV2(m_local_id); }
437 Integer _nbFace() const { return _connectivity()->_nbFaceV2(m_local_id); }
439 Integer _nbCell() const { return _connectivity()->_nbCellV2(m_local_id); }
441 Int32 _nbHParent() const { return _connectivity()->_nbHParentV2(m_local_id); }
443 Int32 _nbHChildren() const { return _connectivity()->_nbHChildrenV2(m_local_id); }
445 Integer _nbParent() const { return m_shared_info->nbParent(); }
446 NodeLocalId _nodeId(Int32 index) const { return NodeLocalId(_connectivity()->_nodeLocalIdV2(m_local_id,index)); }
447 EdgeLocalId _edgeId(Int32 index) const { return EdgeLocalId(_connectivity()->_edgeLocalIdV2(m_local_id,index)); }
448 FaceLocalId _faceId(Int32 index) const { return FaceLocalId(_connectivity()->_faceLocalIdV2(m_local_id,index)); }
449 CellLocalId _cellId(Int32 index) const { return CellLocalId(_connectivity()->_cellLocalIdV2(m_local_id,index)); }
450 Int32 _hParentId(Int32 index) const { return _connectivity()->_hParentLocalIdV2(m_local_id,index); }
451 Int32 _hChildId(Int32 index) const { return _connectivity()->_hChildLocalIdV2(m_local_id,index); }
452 impl::ItemIndexedListView<DynExtent> _nodeList() const { return _connectivity()->nodeList(m_local_id); }
453 impl::ItemIndexedListView<DynExtent> _edgeList() const { return _connectivity()->edgeList(m_local_id); }
454 impl::ItemIndexedListView<DynExtent> _faceList() const { return _connectivity()->faceList(m_local_id); }
455 impl::ItemIndexedListView<DynExtent> _cellList() const { return _connectivity()->cellList(m_local_id); }
456 NodeLocalIdView _nodeIds() const { return _connectivity()->nodeLocalIdsView(m_local_id); }
457 EdgeLocalIdView _edgeIds() const { return _connectivity()->edgeLocalIdsView(m_local_id); }
458 FaceLocalIdView _faceIds() const { return _connectivity()->faceLocalIdsView(m_local_id); }
459 CellLocalIdView _cellIds() const { return _connectivity()->cellLocalIdsView(m_local_id); }
460
461 inline Node _node(Int32 index) const;
462 inline Edge _edge(Int32 index) const;
463 inline Face _face(Int32 index) const;
464 inline Cell _cell(Int32 index) const;
465
466 ItemBase _hParentBase(Int32 index) const { return _connectivity()->hParentBase(m_local_id, index, m_shared_info); }
467 ItemBase _hChildBase(Int32 index) const { return _connectivity()->hChildBase(m_local_id, index, m_shared_info); }
468 ItemBase _toItemBase() const { return ItemBase(m_local_id,m_shared_info); }
469
470 private:
471
472 ItemInternalConnectivityList* _connectivity() const
473 {
474 return m_shared_info->m_connectivity;
475 }
476 void _setFromInternal(ItemBase* rhs)
477 {
478 ARCANE_ITEM_ADD_STAT(m_nb_set_from_internal);
479 m_local_id = rhs->m_local_id;
480 m_shared_info = rhs->m_shared_info;
481 }
482 void _setFromItem(const Item& rhs)
483 {
484 m_local_id = rhs.m_local_id;
485 m_shared_info = rhs.m_shared_info;
486 }
487
488 public:
489
490 static void dumpStats(ITraceMng* tm);
491 static void resetStats();
492
493 private:
494
495 static std::atomic<int> m_nb_created_from_internal;
496 static std::atomic<int> m_nb_created_from_internalptr;
497 static std::atomic<int> m_nb_set_from_internal;
498
499 private:
500
501 ItemInternal* _internal() const
502 {
503 if (m_local_id!=NULL_ITEM_LOCAL_ID)
504 return m_shared_info->m_items_internal[m_local_id];
505 return ItemInternal::nullItem();
506 }
507};
508
509/*---------------------------------------------------------------------------*/
510/*---------------------------------------------------------------------------*/
517inline bool
518operator==(const Item& item1,const Item& item2)
519{
520 return item1.localId()==item2.localId();
521}
522
529inline bool
530operator!=(const Item& item1,const Item& item2)
531{
532 return item1.localId()!=item2.localId();
533}
534
541inline bool
542operator<(const Item& item1,const Item& item2)
543{
544 return item1.localId()<item2.localId();
545}
546
547/*---------------------------------------------------------------------------*/
548/*---------------------------------------------------------------------------*/
549
550} // End namespace Arcane
551
552/*---------------------------------------------------------------------------*/
553/*---------------------------------------------------------------------------*/
554
555#include "arcane/ItemVectorView.h"
556#include "arcane/ItemConnectedListView.h"
557
558/*---------------------------------------------------------------------------*/
559/*---------------------------------------------------------------------------*/
560
561namespace Arcane
562{
563
564/*---------------------------------------------------------------------------*/
565/*---------------------------------------------------------------------------*/
571class ARCANE_CORE_EXPORT Node
572: public Item
573{
574 using ThatClass = Node;
575 // Pour accéder aux constructeurs privés
576 friend class ItemEnumeratorBaseT<ThatClass>;
577 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
578 friend class ItemVectorT<ThatClass>;
579 friend class ItemVectorViewT<ThatClass>;
580 friend class ItemConnectedListViewT<ThatClass>;
581 friend class ItemVectorViewConstIteratorT<ThatClass>;
582 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
583 friend class SimdItemT<ThatClass>;
584 friend class ItemInfoListViewT<ThatClass>;
585 friend class ItemLocalIdToItemConverterT<ThatClass>;
586
587 public:
588
593 class ARCANE_DEPRECATED_REASON("Y2024: Use NodeLocalId instead") Index
594 : public Item::Index
595 {
596 public:
597 typedef Item::Index Base;
598 public:
599 explicit Index(Int32 id) : Base(id){}
600 Index(Node item) : Base(item){}
601 operator NodeLocalId() const { return NodeLocalId{localId()}; }
602 };
603
604 protected:
605
607 Node(Int32 local_id,ItemSharedInfo* shared_info)
608 : Item(local_id,shared_info) {}
609
610 public:
611
613 typedef NodeLocalId LocalIdType;
614
616 Node() = default;
617
619 Node(ItemInternal* ainternal) : Item(ainternal)
620 { ARCANE_CHECK_KIND(isNode); }
621
623 Node(const ItemBase& abase) : Item(abase)
624 { ARCANE_CHECK_KIND(isNode); }
625
627 explicit Node(const Item& aitem) : Item(aitem)
628 { ARCANE_CHECK_KIND(isNode); }
629
631 Node(const ItemInternalPtr* internals,Int32 local_id) : Item(internals,local_id)
632 { ARCANE_CHECK_KIND(isNode); }
633
636 {
637 _set(ainternal);
638 return (*this);
639 }
640
641 public:
642
644 NodeLocalId itemLocalId() const { return NodeLocalId{ m_local_id }; }
645
647 Int32 nbEdge() const { return _nbEdge(); }
648
650 Int32 nbFace() const { return _nbFace(); }
651
653 Int32 nbCell() const { return _nbCell(); }
654
656 inline Edge edge(Int32 i) const;
657
659 inline Face face(Int32 i) const;
660
662 inline Cell cell(Int32 i) const;
663
665 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
666
668 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
669
671 CellLocalId cellId(Int32 i) const { return _cellId(i); }
672
674 EdgeConnectedListViewType edges() const { return _edgeList(); }
675
677 FaceConnectedListViewType faces() const { return _faceList(); }
678
680 CellConnectedListViewType cells() const { return _cellList(); }
681
683 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
684
686 FaceLocalIdView faceIds() const { return _faceIds(); }
687
689 CellLocalIdView cellIds() const { return _cellIds(); }
690
691 // AMR
692
695 {
696 return _toItemBase()._internalActiveCells2(local_ids);
697 }
698
699 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
700 Node* operator->() { return this; }
701
702 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
703 const Node* operator->() const { return this; }
704};
705
706/*---------------------------------------------------------------------------*/
707/*---------------------------------------------------------------------------*/
708
709inline Node Item::
710_node(Int32 index) const
711{
712 return Node(_connectivity()->nodeBase(m_local_id,index));
713}
714
715/*---------------------------------------------------------------------------*/
716/*---------------------------------------------------------------------------*/
722class ARCANE_CORE_EXPORT ItemWithNodes
723: public Item
724{
725 using ThatClass = ItemWithNodes;
726 // Pour accéder aux constructeurs privés
727 friend class ItemEnumeratorBaseT<ThatClass>;
728 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
729 friend class ItemVectorT<ThatClass>;
730 friend class ItemVectorViewT<ThatClass>;
731 friend class ItemConnectedListViewT<ThatClass>;
732 friend class ItemVectorViewConstIteratorT<ThatClass>;
733 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
734 friend class SimdItemT<ThatClass>;
735 friend class ItemInfoListViewT<ThatClass>;
736 friend class ItemLocalIdToItemConverterT<ThatClass>;
737
738 protected:
739
741 ItemWithNodes(Int32 local_id,ItemSharedInfo* shared_info)
742 : Item(local_id,shared_info) {}
743
744 public:
745
747 ItemWithNodes() = default;
748
750 ItemWithNodes(ItemInternal* ainternal) : Item(ainternal)
751 { ARCANE_CHECK_KIND(isItemWithNodes); }
752
754 ItemWithNodes(const ItemBase& abase) : Item(abase)
755 { ARCANE_CHECK_KIND(isItemWithNodes); }
756
758 explicit ItemWithNodes(const Item& aitem) : Item(aitem)
759 { ARCANE_CHECK_KIND(isItemWithNodes); }
760
762 ItemWithNodes(const ItemInternalPtr* internals,Int32 local_id)
763 : Item(internals,local_id)
764 { ARCANE_CHECK_KIND(isItemWithNodes); }
765
768 {
769 _set(ainternal);
770 return (*this);
771 }
772
773 public:
774
776 Int32 nbNode() const { return _nbNode(); }
777
779 Node node(Int32 i) const { return _node(i); }
780
782 NodeConnectedListViewType nodes() const { return _nodeList(); }
783
785 NodeLocalIdView nodeIds() const { return _nodeIds(); }
786
788 NodeLocalId nodeId(Int32 index) const { return _nodeId(index); }
789
790 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
791 ItemWithNodes* operator->() { return this; }
792
793 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
794 const ItemWithNodes* operator->() const { return this; }
795};
796
797/*---------------------------------------------------------------------------*/
798/*---------------------------------------------------------------------------*/
807class ARCANE_CORE_EXPORT Edge
808: public ItemWithNodes
809{
810 using ThatClass = Edge;
811 // Pour accéder aux constructeurs privés
812 friend class ItemEnumeratorBaseT<ThatClass>;
813 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
814 friend class ItemVectorT<ThatClass>;
815 friend class ItemVectorViewT<ThatClass>;
816 friend class ItemConnectedListViewT<ThatClass>;
817 friend class ItemVectorViewConstIteratorT<ThatClass>;
818 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
819 friend class SimdItemT<ThatClass>;
820 friend class ItemInfoListViewT<ThatClass>;
821 friend class ItemLocalIdToItemConverterT<ThatClass>;
822
823 public:
824
829 class ARCANE_DEPRECATED_REASON("Y2024: Use EdgeLocalId instead") Index
830 : public Item::Index
831 {
832 public:
833 typedef Item::Index Base;
834 public:
835 explicit Index(Int32 id) : Base(id){}
836 Index(Edge item) : Base(item){}
837 operator EdgeLocalId() const { return EdgeLocalId{localId()}; }
838 };
839
840 private:
841
843 Edge(Int32 local_id,ItemSharedInfo* shared_info)
844 : ItemWithNodes(local_id,shared_info) {}
845
846 public:
847
849 typedef EdgeLocalId LocalIdType;
850
852 Edge() = default;
853
855 Edge(ItemInternal* ainternal) : ItemWithNodes(ainternal)
856 { ARCANE_CHECK_KIND(isEdge); }
857
859 Edge(const ItemBase& abase) : ItemWithNodes(abase)
860 { ARCANE_CHECK_KIND(isEdge); }
861
863 explicit Edge(const Item& aitem) : ItemWithNodes(aitem)
864 { ARCANE_CHECK_KIND(isEdge); }
865
867 Edge(const ItemInternalPtr* internals,Int32 local_id)
868 : ItemWithNodes(internals,local_id)
869 { ARCANE_CHECK_KIND(isEdge); }
870
873 {
874 _set(ainternal);
875 return (*this);
876 }
877
878 public:
879
881 EdgeLocalId itemLocalId() const { return EdgeLocalId{ m_local_id }; }
882
884 Int32 nbNode() const { return 2; }
885
887 Int32 nbFace() const { return _nbFace(); }
888
890 Int32 nbCell() const { return _nbCell(); }
891
893 inline Cell cell(Int32 i) const;
894
896 CellConnectedListViewType cells() const { return _cellList(); }
897
899 CellLocalId cellId(Int32 i) const { return _cellId(i); }
900
902 CellLocalIdView cellIds() const { return _cellIds(); }
903
905 inline Face face(Int32 i) const;
906
908 FaceConnectedListViewType faces() const { return _faceList(); }
909
911 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
912
914 FaceLocalIdView faceIds() const { return _faceIds(); }
915
916 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
917 Edge* operator->() { return this; }
918
919 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
920 const Edge* operator->() const { return this; }
921};
922
923/*---------------------------------------------------------------------------*/
924/*---------------------------------------------------------------------------*/
925
926inline Edge Item::
927_edge(Int32 index) const
928{
929 return Edge(_connectivity()->edgeBase(m_local_id,index));
930}
931
932/*---------------------------------------------------------------------------*/
933/*---------------------------------------------------------------------------*/
942class ARCANE_CORE_EXPORT Face
943: public ItemWithNodes
944{
945 using ThatClass = Face;
946 // Pour accéder aux constructeurs privés
947 friend class ItemEnumeratorBaseT<ThatClass>;
948 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
949 friend class ItemVectorT<ThatClass>;
950 friend class ItemVectorViewT<ThatClass>;
951 friend class ItemConnectedListViewT<ThatClass>;
952 friend class ItemVectorViewConstIteratorT<ThatClass>;
953 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
954 friend class SimdItemT<ThatClass>;
955 friend class ItemInfoListViewT<ThatClass>;
956 friend class ItemLocalIdToItemConverterT<ThatClass>;
957
958 public:
959
964 class ARCANE_DEPRECATED_REASON("Y2024: Use FaceLocalId instead") Index
965 : public Item::Index
966 {
967 public:
968 typedef Item::Index Base;
969 public:
970 explicit Index(Int32 id) : Base(id){}
971 Index(Face item) : Base(item){}
972 operator FaceLocalId() const { return FaceLocalId{localId()}; }
973 };
974
975 private:
976
978 Face(Int32 local_id,ItemSharedInfo* shared_info)
979 : ItemWithNodes(local_id,shared_info) {}
980
981 public:
982
984 typedef FaceLocalId LocalIdType;
985
987 Face() = default;
988
990 Face(ItemInternal* ainternal) : ItemWithNodes(ainternal)
991 { ARCANE_CHECK_KIND(isFace); }
992
994 Face(const ItemBase& abase) : ItemWithNodes(abase)
995 { ARCANE_CHECK_KIND(isFace); }
996
998 explicit Face(const Item& aitem) : ItemWithNodes(aitem)
999 { ARCANE_CHECK_KIND(isFace); }
1000
1002 Face(const ItemInternalPtr* internals,Int32 local_id)
1003 : ItemWithNodes(internals,local_id)
1004 { ARCANE_CHECK_KIND(isFace); }
1005
1008 {
1009 _set(ainternal);
1010 return (*this);
1011 }
1012
1013 public:
1014
1016 FaceLocalId itemLocalId() const { return FaceLocalId{ m_local_id }; }
1017
1019 Int32 nbCell() const { return _nbCell(); }
1020
1022 inline Cell cell(Int32 i) const;
1023
1025 CellConnectedListViewType cells() const { return _cellList(); }
1026
1028 CellLocalId cellId(Int32 i) const { return _cellId(i); }
1029
1031 CellLocalIdView cellIds() const { return _cellIds(); }
1032
1038 bool isSubDomainBoundary() const { return (_flags() & ItemFlags::II_Boundary)!=0; }
1039
1044 ARCANE_DEPRECATED_118 bool isBoundary() const { return isSubDomainBoundary(); }
1045
1048 {
1050 }
1051
1057 ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
1058 {
1060 }
1061
1063 inline Cell boundaryCell() const;
1064
1066 inline Cell backCell() const;
1067
1069 CellLocalId backCellId() const { return CellLocalId(_toItemBase().backCellId()); }
1070
1072 inline Cell frontCell() const;
1073
1075 CellLocalId frontCellId() const { return CellLocalId(_toItemBase().frontCellId()); }
1076
1082 inline Cell oppositeCell(Cell cell) const;
1083
1089 CellLocalId oppositeCellId(CellLocalId cell_id) const
1090 {
1091 ARCANE_ASSERT((backCellId()==cell_id || frontCellId()==cell_id),("cell is not connected to the face"));
1092 return (backCellId()==cell_id) ? frontCellId() : backCellId();
1093 }
1094
1103 Face masterFace() const { return _toItemBase().masterFace(); }
1104
1106 bool isMasterFace() const { return _toItemBase().isMasterFace(); }
1107
1109 bool isSlaveFace() const { return _toItemBase().isSlaveFace(); }
1110
1112 bool isTiedFace() const { return isSlaveFace() || isMasterFace(); }
1113
1121 {
1122 if (_toItemBase().isMasterFace())
1123 return _faceList();
1125 }
1126
1127 public:
1128
1130 Int32 nbEdge() const { return _nbEdge(); }
1131
1133 Edge edge(Int32 i) const { return _edge(i); }
1134
1136 EdgeConnectedListViewType edges() const { return _edgeList(); }
1137
1139 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
1140
1142 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
1143
1144 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1145 Face* operator->() { return this; }
1146
1147 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1148 const Face* operator->() const { return this; }
1149};
1150
1151/*---------------------------------------------------------------------------*/
1152/*---------------------------------------------------------------------------*/
1153
1154inline Face Item::
1155_face(Int32 index) const
1156{
1157 return Face(_connectivity()->faceBase(m_local_id,index));
1158}
1159
1160/*---------------------------------------------------------------------------*/
1161/*---------------------------------------------------------------------------*/
1189class ARCANE_CORE_EXPORT Cell
1190: public ItemWithNodes
1191{
1192 using ThatClass = Cell;
1193 // Pour accéder aux constructeurs privés
1194 friend class ItemEnumeratorBaseT<ThatClass>;
1195 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
1196 friend class ItemVectorT<ThatClass>;
1197 friend class ItemVectorViewT<ThatClass>;
1198 friend class ItemConnectedListViewT<ThatClass>;
1199 friend class ItemVectorViewConstIteratorT<ThatClass>;
1200 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
1201 friend class SimdItemT<ThatClass>;
1202 friend class ItemInfoListViewT<ThatClass>;
1203 friend class ItemLocalIdToItemConverterT<ThatClass>;
1204
1205 public:
1206
1211 class ARCANE_DEPRECATED_REASON("Y2024: Use CellLocalId instead") Index
1212 : public Item::Index
1213 {
1214 public:
1215 typedef Item::Index Base;
1216 public:
1217 explicit Index(Int32 id) : Base(id){}
1218 Index(Cell item) : Base(item){}
1219 operator CellLocalId() const { return CellLocalId{localId()}; }
1220 };
1221
1222 private:
1223
1225 Cell(Int32 local_id,ItemSharedInfo* shared_info)
1226 : ItemWithNodes(local_id,shared_info) {}
1227
1228 public:
1229
1231 typedef CellLocalId LocalIdType;
1232
1234 Cell() = default;
1235
1237 Cell(ItemInternal* ainternal) : ItemWithNodes(ainternal)
1238 { ARCANE_CHECK_KIND(isCell); }
1239
1241 Cell(const ItemBase& abase) : ItemWithNodes(abase)
1242 { ARCANE_CHECK_KIND(isCell); }
1243
1245 explicit Cell(const Item& aitem) : ItemWithNodes(aitem)
1246 { ARCANE_CHECK_KIND(isCell); }
1247
1249 Cell(const ItemInternalPtr* internals,Int32 local_id)
1250 : ItemWithNodes(internals,local_id)
1251 { ARCANE_CHECK_KIND(isCell); }
1252
1255 {
1256 _set(ainternal);
1257 return (*this);
1258 }
1259
1260 public:
1261
1263 CellLocalId itemLocalId() const { return CellLocalId{ m_local_id }; }
1264
1266 Int32 nbFace() const { return _nbFace(); }
1267
1269 Face face(Int32 i) const { return _face(i); }
1270
1272 FaceConnectedListViewType faces() const { return _faceList(); }
1273
1275 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
1276
1278 FaceLocalIdView faceIds() const { return _faceIds(); }
1279
1281 Int32 nbEdge() const { return _nbEdge(); }
1282
1284 Edge edge(Int32 i) const { return _edge(i); }
1285
1287 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
1288
1290 EdgeConnectedListViewType edges() const { return _edgeList(); }
1291
1293 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
1294
1301 Cell hParent() const { return Cell(_hParentBase(0)); }
1302
1304 Int32 nbHParent() const { return _nbHParent(); }
1305
1307 Int32 nbHChildren() const { return _nbHChildren(); }
1308
1310 Cell hChild(Int32 i) const { return Cell(_hChildBase(i)); }
1311
1313 Cell topHParent() const { return Cell(_toItemBase().topHParentBase()); }
1314
1320 bool isActive() const { return _toItemBase().isActive(); }
1321
1322 bool isSubactive() const { return _toItemBase().isSubactive(); }
1323
1329 bool isAncestor() const { return _toItemBase().isAncestor(); }
1330
1335 bool hasHChildren() const { return _toItemBase().hasHChildren(); }
1336
1342 Int32 level() const
1343 {
1347 if (this->_nbHParent() == 0)
1348 return 0;
1350 return (this->_hParentBase(0).level() + 1);
1351 }
1352
1359 {
1360 return _toItemBase().whichChildAmI(iitem->localId());
1361 }
1362
1368 Int32 whichChildAmI(CellLocalId local_id) const
1369 {
1370 return _toItemBase().whichChildAmI(local_id);
1371 }
1372
1373 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1374 Cell* operator->() { return this; }
1375
1376 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1377 const Cell* operator->() const { return this; }
1378};
1379
1380/*---------------------------------------------------------------------------*/
1381/*---------------------------------------------------------------------------*/
1382
1383inline Cell Item::
1384_cell(Int32 index) const
1385{
1386 return Cell(_connectivity()->cellBase(m_local_id,index));
1387}
1388
1389/*---------------------------------------------------------------------------*/
1390/*---------------------------------------------------------------------------*/
1396: public Item
1397{
1398 using ThatClass = Particle;
1399 // Pour accéder aux constructeurs privés
1400 friend class ItemEnumeratorBaseT<ThatClass>;
1401 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
1402 friend class ItemVectorT<ThatClass>;
1403 friend class ItemVectorViewT<ThatClass>;
1404 friend class ItemConnectedListViewT<ThatClass>;
1405 friend class ItemVectorViewConstIteratorT<ThatClass>;
1406 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
1407 friend class SimdItemT<ThatClass>;
1408 friend class ItemInfoListViewT<ThatClass>;
1409 friend class ItemLocalIdToItemConverterT<ThatClass>;
1410
1411 private:
1412
1414 Particle(Int32 local_id,ItemSharedInfo* shared_info)
1415 : Item(local_id,shared_info) {}
1416
1417 public:
1418
1420 typedef ParticleLocalId LocalIdType;
1421
1423 Particle() = default;
1424
1426 Particle(ItemInternal* ainternal) : Item(ainternal)
1427 { ARCANE_CHECK_KIND(isParticle); }
1428
1430 Particle(const ItemBase& abase) : Item(abase)
1431 { ARCANE_CHECK_KIND(isParticle); }
1432
1434 explicit Particle(const Item& aitem) : Item(aitem)
1435 { ARCANE_CHECK_KIND(isParticle); }
1436
1438 Particle(const ItemInternalPtr* internals,Int32 local_id)
1439 : Item(internals,local_id)
1440 { ARCANE_CHECK_KIND(isParticle); }
1441
1444 {
1445 _set(ainternal);
1446 return (*this);
1447 }
1448
1449 public:
1450
1452 ParticleLocalId itemLocalId() const { return ParticleLocalId{ m_local_id }; }
1453
1459 Cell cell() const { return _cell(0); }
1460
1462 CellLocalId cellId() const { return _cellId(0); }
1463
1465 bool hasCell() const { return (_cellId(0).localId()!=NULL_ITEM_LOCAL_ID); }
1466
1473 {
1474 Int32 cell_local_id = _cellId(0).localId();
1475 if (cell_local_id==NULL_ITEM_LOCAL_ID)
1476 return Cell();
1477 return _cell(0);
1478 }
1479
1480 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1481 Particle* operator->() { return this; }
1482
1483 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1484 const Particle* operator->() const { return this; }
1485};
1486
1487/*---------------------------------------------------------------------------*/
1488/*---------------------------------------------------------------------------*/
1501class DoF
1502: public Item
1503{
1504 using ThatClass = DoF;
1505 // Pour accéder aux constructeurs privés
1506 friend class ItemEnumeratorBaseT<ThatClass>;
1507 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
1508 friend class ItemVectorT<ThatClass>;
1509 friend class ItemVectorViewT<ThatClass>;
1510 friend class ItemConnectedListViewT<ThatClass>;
1511 friend class ItemVectorViewConstIteratorT<ThatClass>;
1512 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
1513 friend class SimdItemT<ThatClass>;
1514 friend class ItemInfoListViewT<ThatClass>;
1515 friend class ItemLocalIdToItemConverterT<ThatClass>;
1516
1517 private:
1518
1520 DoF(Int32 local_id,ItemSharedInfo* shared_info)
1521 : Item(local_id,shared_info) {}
1522
1523
1524 public:
1525
1526 using LocalIdType = DoFLocalId;
1527
1529 DoF() = default;
1530
1532 DoF(ItemInternal* ainternal) : Item(ainternal)
1533 { ARCANE_CHECK_KIND(isDoF); }
1534
1536 DoF(const ItemBase& abase) : Item(abase)
1537 { ARCANE_CHECK_KIND(isDoF); }
1538
1540 explicit DoF(const Item& aitem) : Item(aitem)
1541 { ARCANE_CHECK_KIND(isDoF); }
1542
1544 DoF(const ItemInternalPtr* internals,Int32 local_id)
1545 : Item(internals,local_id)
1546 { ARCANE_CHECK_KIND(isDoF); }
1547
1550 {
1551 _set(ainternal);
1552 return (*this);
1553 }
1554
1555 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1556 DoF* operator->() { return this; }
1557
1558 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1559 const DoF* operator->() const { return this; }
1560
1562 DoFLocalId itemLocalId() const { return DoFLocalId{ m_local_id }; }
1563};
1564
1565/*---------------------------------------------------------------------------*/
1566/*---------------------------------------------------------------------------*/
1567
1568/*---------------------------------------------------------------------------*/
1569/*---------------------------------------------------------------------------*/
1570
1572edge(Int32 i) const
1573{
1574 return _edge(i);
1575}
1576
1578face(Int32 i) const
1579{
1580 return _face(i);
1581}
1582
1584cell(Int32 i) const
1585{
1586 return _cell(i);
1587}
1588
1589/*---------------------------------------------------------------------------*/
1590/*---------------------------------------------------------------------------*/
1591
1593face(Int32 i) const
1594{
1595 return _face(i);
1596}
1597
1599cell(Int32 i) const
1600{
1601 return _cell(i);
1602}
1603
1604/*---------------------------------------------------------------------------*/
1605/*---------------------------------------------------------------------------*/
1606
1608boundaryCell() const
1609{
1610 return Cell(_toItemBase().boundaryCell());
1611}
1612
1614backCell() const
1615{
1616 return Cell(_toItemBase().backCell());
1617}
1618
1620frontCell() const
1621{
1622 return Cell(_toItemBase().frontCell());
1623}
1624
1626oppositeCell(Cell cell) const
1627{
1628 ARCANE_ASSERT((backCell()==cell || frontCell()==cell),("cell is not connected to the face"));
1629 return (backCell()==cell) ? frontCell() : backCell();
1630}
1631
1633cell(Int32 i) const
1634{
1635 return _cell(i);
1636}
1637
1638/*---------------------------------------------------------------------------*/
1639/*---------------------------------------------------------------------------*/
1640
1642toItemWithNodes() const
1643{
1644 ARCANE_CHECK_KIND(isItemWithNodes);
1645 return ItemWithNodes(*this);
1646}
1647
1649toNode() const
1650{
1651 ARCANE_CHECK_KIND(isNode);
1652 return Node(*this);
1653}
1654
1656toEdge() const
1657{
1658 ARCANE_CHECK_KIND(isEdge);
1659 return Edge(*this);
1660}
1661
1663toFace() const
1664{
1665 ARCANE_CHECK_KIND(isFace);
1666 return Face(*this);
1667}
1668
1670toCell() const
1671{
1672 ARCANE_CHECK_KIND(isCell);
1673 return Cell(*this);
1674}
1675
1677toParticle() const
1678{
1679 ARCANE_CHECK_KIND(isParticle);
1680 return Particle(*this);
1681}
1682
1684toDoF() const
1685{
1686 ARCANE_CHECK_KIND(isDoF);
1687 return DoF(*this);
1688}
1689
1690/*---------------------------------------------------------------------------*/
1691/*---------------------------------------------------------------------------*/
1692
1693inline ItemLocalId::
1694ItemLocalId(Item item)
1695: m_local_id(item.localId())
1696{
1697}
1698
1699template<typename ItemType> inline ItemLocalIdT<ItemType>::
1700ItemLocalIdT(ItemType item)
1701: ItemLocalId(item.localId())
1702{
1703}
1704
1705/*---------------------------------------------------------------------------*/
1706/*---------------------------------------------------------------------------*/
1707
1709operator[](ItemLocalId local_id) const
1710{
1711 return Item(local_id.localId(), m_item_shared_info);
1712}
1713
1714/*---------------------------------------------------------------------------*/
1715/*---------------------------------------------------------------------------*/
1716
1718operator[](Int32 local_id) const
1719{
1720 return Item(local_id, m_item_shared_info);
1721}
1722
1723/*---------------------------------------------------------------------------*/
1724/*---------------------------------------------------------------------------*/
1725
1726template<typename ItemType> inline ItemType ItemInfoListViewT<ItemType>::
1727operator[](ItemLocalId local_id) const
1728{
1729 return ItemType(local_id.localId(), m_item_shared_info);
1730}
1731
1732/*---------------------------------------------------------------------------*/
1733/*---------------------------------------------------------------------------*/
1734
1735template<typename ItemType> inline ItemType ItemInfoListViewT<ItemType>::
1736operator[](Int32 local_id) const
1737{
1738 return ItemType(local_id, m_item_shared_info);
1739}
1740
1741/*---------------------------------------------------------------------------*/
1742/*---------------------------------------------------------------------------*/
1743
1744inline constexpr ARCCORE_HOST_DEVICE Item ItemLocalIdToItemConverter::
1745operator[](ItemLocalId local_id) const
1746{
1747 return Item(local_id.localId(), m_item_shared_info);
1748}
1749
1750/*---------------------------------------------------------------------------*/
1751/*---------------------------------------------------------------------------*/
1752
1753inline constexpr ARCCORE_HOST_DEVICE Item ItemLocalIdToItemConverter::
1754operator[](Int32 local_id) const
1755{
1756 return Item(local_id, m_item_shared_info);
1757}
1758
1759/*---------------------------------------------------------------------------*/
1760/*---------------------------------------------------------------------------*/
1761
1762template<typename ItemType_> inline constexpr ARCCORE_HOST_DEVICE ItemType_
1764operator[](ItemLocalIdType local_id) const
1765{
1766 return ItemType(local_id.localId(), m_item_shared_info);
1767}
1768
1769/*---------------------------------------------------------------------------*/
1770/*---------------------------------------------------------------------------*/
1771
1772template<typename ItemType_> inline constexpr ARCCORE_HOST_DEVICE ItemType_
1774operator[](Int32 local_id) const
1775{
1776 return ItemType(local_id, m_item_shared_info);
1777}
1778
1779/*---------------------------------------------------------------------------*/
1780/*---------------------------------------------------------------------------*/
1781
1782} // End namespace Arcane
1783
1784/*---------------------------------------------------------------------------*/
1785/*---------------------------------------------------------------------------*/
1786
1787#include "arcane/ItemCompatibility.h"
1788
1789/*---------------------------------------------------------------------------*/
1790/*---------------------------------------------------------------------------*/
1791
1792#endif
Déclarations de types sur les entités.
Maille d'un maillage.
Definition Item.h:1191
Cell topHParent() const
parent de niveau 0 pour l'AMR
Definition Item.h:1313
Int32 nbEdge() const
Nombre d'arêtes de la maille.
Definition Item.h:1281
Cell(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1245
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Definition Item.h:1272
Int32 nbHChildren() const
Nombre d'enfants pour l'AMR.
Definition Item.h:1307
bool isAncestor() const
Definition Item.h:1329
Cell(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1225
Face face(Int32 i) const
i-ème face de la maille
Definition Item.h:1269
FaceLocalIdView faceIds() const
Liste des faces de la maille.
Definition Item.h:1278
Cell(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1237
Int32 nbFace() const
Nombre de faces de la maille.
Definition Item.h:1266
Cell & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1254
Cell(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1249
CellLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1263
EdgeLocalIdView edgeIds() const
Liste des arêtes de la maille.
Definition Item.h:1293
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la maille
Definition Item.h:1287
Int32 whichChildAmI(const ItemInternal *iitem) const
Definition Item.h:1358
Cell hChild(Int32 i) const
i-ème enfant AMR
Definition Item.h:1310
bool hasHChildren() const
Definition Item.h:1335
Cell(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1241
Edge edge(Int32 i) const
i-ème arête de la maille
Definition Item.h:1284
Cell()=default
Constructeur d'une maille nulle.
Int32 whichChildAmI(CellLocalId local_id) const
Definition Item.h:1368
FaceLocalId faceId(Int32 i) const
i-ème face de la maille
Definition Item.h:1275
bool isActive() const
Definition Item.h:1320
Int32 level() const
Definition Item.h:1342
Cell hParent() const
Definition Item.h:1301
EdgeConnectedListViewType edges() const
Liste des arêtes de la maille.
Definition Item.h:1290
Int32 nbHParent() const
Nombre de parent pour l'AMR.
Definition Item.h:1304
CellLocalId LocalIdType
Type du localId()
Definition Item.h:1231
classe degré de liberté.
Definition Item.h:1503
DoF(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1544
DoF()=default
Constructeur d'une maille non connectée.
DoF(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1536
DoF(const Item &aitem)
Construit une référence à l'entité abase.
Definition Item.h:1540
DoFLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1562
DoF & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1549
DoF(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1532
DoF(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1520
Arête d'une maille.
Definition Item.h:809
FaceConnectedListViewType faces() const
Liste des faces de l'arête.
Definition Item.h:908
CellConnectedListViewType cells() const
Liste des mailles de l'arête.
Definition Item.h:896
Cell cell(Int32 i) const
i-ème maille de l'arête
Definition Item.h:1599
Edge(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:859
Face face(Int32 i) const
i-ème face de l'arête
Definition Item.h:1593
Edge(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:867
FaceLocalIdView faceIds() const
Liste des faces de l'arête.
Definition Item.h:914
Edge & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:872
Int32 nbFace() const
Nombre de faces connectées à l'arête.
Definition Item.h:887
CellLocalIdView cellIds() const
Liste des mailles de l'arête.
Definition Item.h:902
Edge(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:863
Edge()=default
Créé une arête nulle.
FaceLocalId faceId(Int32 i) const
i-ème face de l'arête
Definition Item.h:911
Edge(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:855
EdgeLocalId LocalIdType
Type du localId()
Definition Item.h:849
Edge(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:843
Int32 nbNode() const
Nombre de sommets de l'arête.
Definition Item.h:884
CellLocalId cellId(Int32 i) const
i-ème maille de l'arête
Definition Item.h:899
Int32 nbCell() const
Nombre de mailles connectées à l'arête.
Definition Item.h:890
EdgeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:881
Face d'une maille.
Definition Item.h:944
Face()=default
Création d'une face non connecté au maillage.
bool isMasterFace() const
true s'il s'agit de la face maître d'une interface
Definition Item.h:1106
FaceLocalId LocalIdType
Type du localId()
Definition Item.h:984
CellLocalId frontCellId() const
Maille devant la face (maille nulle si aucune)
Definition Item.h:1075
Face(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:994
Cell frontCell() const
Maille devant la face (maille nulle si aucune)
Definition Item.h:1620
CellLocalId cellId(Int32 i) const
i-ème maille de la face
Definition Item.h:1028
EdgeLocalIdView edgeIds() const
Liste des arêtes de la face.
Definition Item.h:1142
Cell cell(Int32 i) const
i-ème maille de la face
Definition Item.h:1633
Int32 nbCell() const
Nombre de mailles de la face (1 ou 2)
Definition Item.h:1019
ARCANE_DEPRECATED_118 bool isBoundary() const
Definition Item.h:1044
FaceConnectedListViewType slaveFaces() const
Liste des faces esclaves associées à cette face maître.
Definition Item.h:1120
ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Definition Item.h:1057
EdgeConnectedListViewType edges() const
Liste des arêtes de la face.
Definition Item.h:1136
bool isSubDomainBoundary() const
Indique si la face est au bord du sous-domaine (i.e nbCell()==1)
Definition Item.h:1038
Face(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:998
FaceLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1016
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la face
Definition Item.h:1139
CellConnectedListViewType cells() const
Liste des mailles de la face.
Definition Item.h:1025
Face masterFace() const
Face maître associée à cette face.
Definition Item.h:1103
bool isSlaveFace() const
true s'il s'agit d'une face esclave d'une interface
Definition Item.h:1109
Edge edge(Int32 i) const
i-ème arête de la face
Definition Item.h:1133
CellLocalId backCellId() const
Maille derrière la face (maille nulle si aucune)
Definition Item.h:1069
Face(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1002
bool isSubDomainBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Definition Item.h:1047
Face(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:990
Cell boundaryCell() const
Maille associée à cette face frontière (maille nulle si aucune)
Definition Item.h:1608
Int32 nbEdge() const
Nombre d'arêtes de la face.
Definition Item.h:1130
bool isTiedFace() const
true s'il s'agit d'une face esclave ou maître d'une interface
Definition Item.h:1112
Face(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:978
CellLocalIdView cellIds() const
Liste des mailles de la face.
Definition Item.h:1031
Face & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1007
Cell backCell() const
Maille derrière la face (maille nulle si aucune)
Definition Item.h:1614
Cell oppositeCell(Cell cell) const
Maille opposée de cette face à la maille cell.
Definition Item.h:1626
CellLocalId oppositeCellId(CellLocalId cell_id) const
Maille opposée de cette face à la maille cell.
Definition Item.h:1089
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Classe de base pour les entités du maillage.
Int32 m_local_id
Numéro local (au sous-domaine) de l'entité.
ItemSharedInfo * m_shared_info
Infos partagées entre toutes les entités ayant les mêmes caractéristiques.
Int32 localId() const
Numéro local (au sous-domaine) de l'entité
Classe de base typeé des énumérateurs sur une liste d'entité connectées.
Vue sur une liste d'entités connectées à une autre.
Classe de base des énumérateurs sur une liste d'entité.
@ II_Shared
L'entité est partagée par un autre sous-domaine.
Definition ItemFlags.h:51
@ II_HasBackCell
L'entité a une maille derrière.
Definition ItemFlags.h:45
@ II_Own
L'entité est une entité propre au sous-domaine.
Definition ItemFlags.h:48
@ II_Boundary
L'entité est sur la frontière.
Definition ItemFlags.h:43
Classe de base des vues spécialisées des informations sur les entités.
ItemType operator[](ItemLocalId local_id) const
Entité associée du numéro local local_id.
Definition Item.h:1727
Item operator[](ItemLocalId local_id) const
Entité associée du numéro local local_id.
Definition Item.h:1709
Structure interne d'une entité de maillage.
Classe pour convertir un ItemLocalId vers une entité (Item).
constexpr __host__ __device__ ItemType operator[](ItemLocalIdType local_id) const
Entité de numéro local local_id.
Definition Item.h:1764
constexpr __host__ __device__ Item operator[](ItemLocalId local_id) const
Entité de numéro local local_id.
Definition Item.h:1745
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Structure interne partagée d'une entité de maillage.
ConstArrayView< ItemInternal * > m_items_internal
ItemInternal des entités.
Type d'une entité (Item).
Definition ItemTypeId.h:32
Infos sur un type d'entité du maillage.
Identifiant unique d'une entité.
Vecteur typé d'entité.
Definition ItemVector.h:166
Vue sur un tableau typé d'entités.
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
Definition Item.h:724
ItemWithNodes(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:762
NodeLocalId nodeId(Int32 index) const
i-ème noeud de l'entité.
Definition Item.h:788
ItemWithNodes(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:754
Node node(Int32 i) const
i-ème noeud de l'entité
Definition Item.h:779
ItemWithNodes(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:741
ItemWithNodes(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:758
NodeConnectedListViewType nodes() const
Liste des noeuds de l'entité
Definition Item.h:782
ItemWithNodes(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:750
ItemWithNodes()=default
Création d'une entité non connectée au maillage.
Int32 nbNode() const
Nombre de noeuds de l'entité
Definition Item.h:776
NodeLocalIdView nodeIds() const
Liste des noeuds de l'entité
Definition Item.h:785
ItemWithNodes & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:767
Index d'un Item dans une variable.
Definition Item.h:119
Classe de base d'un élément de maillage.
Definition Item.h:83
Int32 nbParent() const
Nombre de parents pour les sous-maillages.
Definition Item.h:283
const ItemTypeInfo * typeInfo() const
Infos sur le type de l'entité.
Definition Item.h:386
impl::MutableItemBase mutableItemBase() const
Partie interne modifiable de l'entité.
Definition Item.h:374
Int32 _nbHParent() const
Nombre de parent pour l'AMR.
Definition Item.h:441
static const Int32 NULL_ELEMENT
Indice d'un élément nul.
Definition Item.h:163
bool isItemWithNodes() const
true si l'entité est du genre ItemWithNodes.
Definition Item.h:294
Item(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:182
Integer _nbEdge() const
Nombre d'arêtes de l'entité ou nombre d'arêtes connectés à l'entités (pour les noeuds)
Definition Item.h:435
Integer _nbNode() const
Nombre de noeuds de l'entité
Definition Item.h:433
ItemInternal * internal() const
Partie interne de l'entité.
Definition Item.h:348
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:219
Edge toEdge() const
Converti l'entité en le genre Edge.
Definition Item.h:1656
Item(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:200
Item()=default
Création d'une entité de maillage nulle.
bool isOwn() const
true si l'entité est appartient au sous-domaine
Definition Item.h:253
static String typeName(Int32 type)
Nom du type de maille cell_type.
Definition Item.cc:51
bool isCell() const
true si l'entité est du genre Cell.
Definition Item.h:307
Int32 owner() const
Numéro du sous-domaine propriétaire de l'entité
Definition Item.h:238
ItemSharedInfo * m_shared_info
Infos partagées entre toutes les entités ayant les mêmes caractéristiques.
Definition Item.h:399
ItemLocalId LocalIdType
Type du localId()
Definition Item.h:108
Integer _nbFace() const
Nombre de faces de l'entité ou nombre de faces connectés à l'entités (pour les noeuds et arêtes)
Definition Item.h:437
ItemWithNodes toItemWithNodes() const
Converti l'entité en le genre ItemWithNodes.
Definition Item.h:1642
DoF toDoF() const
Converti l'entité en le genre DoF.
Definition Item.h:1684
Cell toCell() const
Converti l'entité en le genre Cell.
Definition Item.h:1670
eItemKind kind() const
Genre de l'entité
Definition Item.h:250
@ Tri3
Elément de type triangle (3 sommets, 2D)
Definition Item.h:149
@ Quad4
Elément de type quad (4 sommets, 2D)
Definition Item.h:150
@ Pentagon5
Elément de type pentagone (5 sommets, 2D)
Definition Item.h:151
@ Unknown
Elément de type nul.
Definition Item.h:146
@ Pyramid
Elément de type pyramide (5 sommets, 3D)
Definition Item.h:154
@ Bar2
Elément de type arête (2 sommets, 1D, 2D et 3D)
Definition Item.h:148
@ Vertex
Elément de type noeud (1 sommet 1D, 2D et 3D)
Definition Item.h:147
@ Hexa
Elément de type hexaèdre (8 sommets, 3D)
Definition Item.h:156
@ Hexagon6
Elément de type hexagone (6 sommets, 2D)
Definition Item.h:152
@ Penta
Elément de type pentaèdre (6 sommets, 3D)
Definition Item.h:155
@ Wedge8
Elément de type prisme à 8 faces (base hexagonale)
Definition Item.h:158
@ Wedge7
Elément de type prisme à 7 faces (base pentagonale)
Definition Item.h:157
@ Tetra
Elément de type tétraédre (4 sommets, 3D)
Definition Item.h:153
IItemFamily * itemFamily() const
Famille dont est issue l'entité
Definition Item.h:247
Particle toParticle() const
Converti l'entité en le genre Particle.
Definition Item.h:1677
constexpr __host__ __device__ Item(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:193
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
Definition Item.h:225
constexpr __host__ __device__ Item(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:172
constexpr bool null() const
true si l'entité est nul (i.e. non connecté au maillage)
Definition Item.h:216
Int32 _flags() const
Flags de l'entité
Definition Item.h:431
constexpr ItemLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:222
bool isFace() const
true si l'entité est du genre Edge.
Definition Item.h:319
Face toFace() const
Converti l'entité en le genre Edge.
Definition Item.h:1663
bool isNode() const
true si l'entité est du genre Node.
Definition Item.h:301
Integer _nbParent() const
Nombre de parent pour les sous-maillages.
Definition Item.h:445
Integer _nbCell() const
Nombre de mailles connectées à l'entité (pour les noeuds, arêtes et faces)
Definition Item.h:439
bool isEdge() const
true si l'entité est du genre Edge.
Definition Item.h:313
Item parent(Int32 i) const
i-ème parent pour les sous-maillages
Definition Item.h:286
ItemTypeId itemTypeId() const
Type de l'entité
Definition Item.h:244
Item parent() const
premier parent pour les sous-maillages
Definition Item.h:289
bool isDoF() const
true is l'entité est du genre DoF
Definition Item.h:331
Int32 m_local_id
Numéro local (au sous-domaine) de l'entité.
Definition Item.h:409
impl::ItemBase itemBase() const
Partie interne de l'entité.
Definition Item.h:363
bool isShared() const
Vrai si l'entité est partagé d'autres sous-domaines.
Definition Item.h:265
bool isParticle() const
true is l'entité est du genre Particle.
Definition Item.h:325
Int32 _nbHChildren() const
Nombre d' enfants pour l'AMR.
Definition Item.h:443
Int16 type() const
Type de l'entité
Definition Item.h:241
Item & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:207
Node toNode() const
Converti l'entité en le genre Node.
Definition Item.h:1649
Noeud d'un maillage.
Definition Item.h:573
Cell cell(Int32 i) const
i-ème maille du noeud
Definition Item.h:1584
FaceLocalIdView faceIds() const
Liste des faces du noeud.
Definition Item.h:686
Node(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:631
CellConnectedListViewType cells() const
Liste des mailles du noeud.
Definition Item.h:680
CellVectorView _internalActiveCells(Int32Array &local_ids) const
Enumére les mailles connectées au noeud.
Definition Item.h:694
Node(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:619
EdgeLocalIdView edgeIds() const
Liste des arêtes du noeud.
Definition Item.h:683
Node(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:607
NodeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:644
Node(const Item &aitem)
Construit une référence à l'entité abase.
Definition Item.h:627
FaceLocalId faceId(Int32 i) const
i-ème face du noeud
Definition Item.h:668
FaceConnectedListViewType faces() const
Liste des faces du noeud.
Definition Item.h:677
Node & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:635
Face face(Int32 i) const
i-ème face du noeud
Definition Item.h:1578
Int32 nbEdge() const
Nombre d'arêtes connectées au noeud.
Definition Item.h:647
Node(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:623
CellLocalIdView cellIds() const
Liste des mailles du noeud.
Definition Item.h:689
Edge edge(Int32 i) const
i-ème arête du noeud
Definition Item.h:1572
Int32 nbFace() const
Nombre de faces connectées au noeud.
Definition Item.h:650
Int32 nbCell() const
Nombre de mailles connectées au noeud.
Definition Item.h:653
EdgeConnectedListViewType edges() const
Liste des arêtes du noeud.
Definition Item.h:674
CellLocalId cellId(Int32 i) const
i-ème maille du noeud
Definition Item.h:671
EdgeLocalId edgeId(Int32 i) const
i-ème arête du noeud
Definition Item.h:665
NodeLocalId LocalIdType
Type du localId()
Definition Item.h:613
Particule.
Definition Item.h:1397
Particle(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1430
Particle()=default
Constructeur d'une particule nulle.
bool hasCell() const
Vrai si la particule est dans une maille du maillage.
Definition Item.h:1465
Particle(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1414
ParticleLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1452
Cell cell() const
Maille à laquelle appartient la particule. Il faut appeler setCell() avant d'appeler cette fonction....
Definition Item.h:1459
CellLocalId cellId() const
Maille connectée à la particule.
Definition Item.h:1462
Particle(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1438
Cell cellOrNull() const
Maille à laquelle appartient la particule ou maille nulle. Retourne cell() si la particule est dans u...
Definition Item.h:1472
Particle & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1443
ParticleLocalId LocalIdType
Type du localId()
Definition Item.h:1420
Particle(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1434
Particle(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1426
Gère un vecteur d'entité ItemType.
Definition SimdItem.h:236
Chaîne de caractères unicode.
ItemLocalIdListViewT< Node > NodeLocalIdView
Vue sur les localId() d'une liste de noeuds.
Definition ItemTypes.h:407
ItemVectorViewT< Cell > CellVectorView
Vue sur un vecteur de mailles.
Definition ItemTypes.h:304
ItemLocalIdListViewT< Edge > EdgeLocalIdView
Vue sur les localId() d'une liste d'arêtes.
Definition ItemTypes.h:417
ItemLocalIdListViewT< Face > FaceLocalIdView
Vue sur les localId() d'une liste de faces.
Definition ItemTypes.h:427
ItemLocalIdListViewT< Cell > CellLocalIdView
Vue sur les localId() d'une liste de mailles.
Definition ItemTypes.h:437
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
NodeConnectedListView NodeConnectedListViewType
Liste de noeuds connectés.
Definition ItemTypes.h:349
Int32 Integer
Type représentant un entier.
CellConnectedListView CellConnectedListViewType
Liste de mailles connectées.
Definition ItemTypes.h:355
bool operator<(const Item &item1, const Item &item2)
Compare deux entités.
Definition Item.h:542
eItemKind
Genre d'entité de maillage.
@ IK_Particle
Entité de maillage de genre particule.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Unknown
Entité de maillage de genre inconnu ou non initialisé
@ IK_Face
Entité de maillage de genre face.
@ IK_DoF
Entité de maillage de genre degre de liberte.
@ IK_Edge
Entité de maillage de genre arête.
std::int16_t Int16
Type entier signé sur 16 bits.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:214
EdgeConnectedListView EdgeConnectedListViewType
Liste d'arêtes connectées.
Definition ItemTypes.h:351
FaceConnectedListView FaceConnectedListViewType
Liste de faces connectées.
Definition ItemTypes.h:353
std::int32_t Int32
Type entier signé sur 32 bits.