Arcane  v3.16.2.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
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
338 bool hasFlags(Int32 flags) const { return (_flags() & flags); }
339
341 Int32 flags() const { return m_shared_info->_flagsV2(m_local_id); }
342
343 public:
344
353 ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane. use itemBase() or mutableItemBase() instead")
355 {
356 if (m_local_id!=NULL_ITEM_LOCAL_ID)
357 return m_shared_info->m_items_internal[m_local_id];
358 return ItemInternal::nullItem();
359 }
360
361 public:
362
369 impl::ItemBase itemBase() const
370 {
371 return impl::ItemBase(m_local_id,m_shared_info);
372 }
373
380 impl::MutableItemBase mutableItemBase() const
381 {
382 return impl::MutableItemBase(m_local_id,m_shared_info);
383 }
384
392 const ItemTypeInfo* typeInfo() const { return m_shared_info->typeInfoFromId(type()); }
393
394 public:
395
396 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
397 Item* operator->() { return this; }
398
399 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
400 const Item* operator->() const { return this; }
401
402 private:
403
405 ItemSharedInfo* m_shared_info = ItemSharedInfo::nullItemSharedInfoPointer;
406
407 protected:
408
415 Int32 m_local_id = NULL_ITEM_LOCAL_ID;
416
417 protected:
418
419 void _checkKind(bool is_valid) const
420 {
421 if (!is_valid)
422 _badConversion();
423 }
424 void _badConversion() const;
425 void _set(ItemInternal* ainternal)
426 {
427 _setFromInternal(ainternal);
428 }
429 void _set(const Item& rhs)
430 {
431 _setFromItem(rhs);
432 }
433
434 protected:
435
437 Int32 _flags() const { return m_shared_info->_flagsV2(m_local_id); }
439 Integer _nbNode() const { return _connectivity()->_nbNodeV2(m_local_id); }
441 Integer _nbEdge() const { return _connectivity()->_nbEdgeV2(m_local_id); }
443 Integer _nbFace() const { return _connectivity()->_nbFaceV2(m_local_id); }
445 Integer _nbCell() const { return _connectivity()->_nbCellV2(m_local_id); }
447 Int32 _nbHParent() const { return _connectivity()->_nbHParentV2(m_local_id); }
449 Int32 _nbHChildren() const { return _connectivity()->_nbHChildrenV2(m_local_id); }
451 Integer _nbParent() const { return m_shared_info->nbParent(); }
452 NodeLocalId _nodeId(Int32 index) const { return NodeLocalId(_connectivity()->_nodeLocalIdV2(m_local_id,index)); }
453 EdgeLocalId _edgeId(Int32 index) const { return EdgeLocalId(_connectivity()->_edgeLocalIdV2(m_local_id,index)); }
454 FaceLocalId _faceId(Int32 index) const { return FaceLocalId(_connectivity()->_faceLocalIdV2(m_local_id,index)); }
455 CellLocalId _cellId(Int32 index) const { return CellLocalId(_connectivity()->_cellLocalIdV2(m_local_id,index)); }
456 Int32 _hParentId(Int32 index) const { return _connectivity()->_hParentLocalIdV2(m_local_id,index); }
457 Int32 _hChildId(Int32 index) const { return _connectivity()->_hChildLocalIdV2(m_local_id,index); }
458 impl::ItemIndexedListView<DynExtent> _nodeList() const { return _connectivity()->nodeList(m_local_id); }
459 impl::ItemIndexedListView<DynExtent> _edgeList() const { return _connectivity()->edgeList(m_local_id); }
460 impl::ItemIndexedListView<DynExtent> _faceList() const { return _connectivity()->faceList(m_local_id); }
461 impl::ItemIndexedListView<DynExtent> _cellList() const { return _connectivity()->cellList(m_local_id); }
462 NodeLocalIdView _nodeIds() const { return _connectivity()->nodeLocalIdsView(m_local_id); }
463 EdgeLocalIdView _edgeIds() const { return _connectivity()->edgeLocalIdsView(m_local_id); }
464 FaceLocalIdView _faceIds() const { return _connectivity()->faceLocalIdsView(m_local_id); }
465 CellLocalIdView _cellIds() const { return _connectivity()->cellLocalIdsView(m_local_id); }
466
467 inline Node _node(Int32 index) const;
468 inline Edge _edge(Int32 index) const;
469 inline Face _face(Int32 index) const;
470 inline Cell _cell(Int32 index) const;
471
472 ItemBase _hParentBase(Int32 index) const { return _connectivity()->hParentBase(m_local_id, index, m_shared_info); }
473 ItemBase _hChildBase(Int32 index) const { return _connectivity()->hChildBase(m_local_id, index, m_shared_info); }
474 ItemBase _toItemBase() const { return ItemBase(m_local_id,m_shared_info); }
475
477 Int32 _nbLinearNode() const { return itemBase()._nbLinearNode(); }
478
479 private:
480
481 ItemInternalConnectivityList* _connectivity() const
482 {
483 return m_shared_info->m_connectivity;
484 }
485 void _setFromInternal(ItemBase* rhs)
486 {
487 ARCANE_ITEM_ADD_STAT(m_nb_set_from_internal);
488 m_local_id = rhs->m_local_id;
489 m_shared_info = rhs->m_shared_info;
490 }
491 void _setFromItem(const Item& rhs)
492 {
493 m_local_id = rhs.m_local_id;
494 m_shared_info = rhs.m_shared_info;
495 }
496
497 public:
498
499 static void dumpStats(ITraceMng* tm);
500 static void resetStats();
501
502 private:
503
504 static std::atomic<int> m_nb_created_from_internal;
505 static std::atomic<int> m_nb_created_from_internalptr;
506 static std::atomic<int> m_nb_set_from_internal;
507
508 private:
509
510 ItemInternal* _internal() const
511 {
512 if (m_local_id!=NULL_ITEM_LOCAL_ID)
513 return m_shared_info->m_items_internal[m_local_id];
514 return ItemInternal::nullItem();
515 }
516};
517
518/*---------------------------------------------------------------------------*/
519/*---------------------------------------------------------------------------*/
526inline bool
527operator==(const Item& item1,const Item& item2)
528{
529 return item1.localId()==item2.localId();
530}
531
538inline bool
539operator!=(const Item& item1,const Item& item2)
540{
541 return item1.localId()!=item2.localId();
542}
543
550inline bool
551operator<(const Item& item1,const Item& item2)
552{
553 return item1.localId()<item2.localId();
554}
555
556/*---------------------------------------------------------------------------*/
557/*---------------------------------------------------------------------------*/
558
559} // End namespace Arcane
560
561/*---------------------------------------------------------------------------*/
562/*---------------------------------------------------------------------------*/
563
564#include "arcane/ItemVectorView.h"
565#include "arcane/ItemConnectedListView.h"
566
567/*---------------------------------------------------------------------------*/
568/*---------------------------------------------------------------------------*/
569
570namespace Arcane
571{
572
573/*---------------------------------------------------------------------------*/
574/*---------------------------------------------------------------------------*/
580class ARCANE_CORE_EXPORT Node
581: public Item
582{
583 using ThatClass = Node;
584 // Pour accéder aux constructeurs privés
585 friend class ItemEnumeratorBaseT<ThatClass>;
586 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
587 friend class ItemVectorT<ThatClass>;
588 friend class ItemVectorViewT<ThatClass>;
589 friend class ItemConnectedListViewT<ThatClass>;
590 friend class ItemVectorViewConstIteratorT<ThatClass>;
591 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
592 friend class SimdItemT<ThatClass>;
593 friend class ItemInfoListViewT<ThatClass>;
594 friend class ItemLocalIdToItemConverterT<ThatClass>;
595
596 public:
597
602 class ARCANE_DEPRECATED_REASON("Y2024: Use NodeLocalId instead") Index
603 : public Item::Index
604 {
605 public:
606 typedef Item::Index Base;
607 public:
608 explicit Index(Int32 id) : Base(id){}
609 Index(Node item) : Base(item){}
610 operator NodeLocalId() const { return NodeLocalId{localId()}; }
611 };
612
613 protected:
614
616 Node(Int32 local_id,ItemSharedInfo* shared_info)
617 : Item(local_id,shared_info) {}
618
619 public:
620
622 typedef NodeLocalId LocalIdType;
623
625 Node() = default;
626
628 Node(ItemInternal* ainternal) : Item(ainternal)
629 { ARCANE_CHECK_KIND(isNode); }
630
632 Node(const ItemBase& abase) : Item(abase)
633 { ARCANE_CHECK_KIND(isNode); }
634
636 explicit Node(const Item& aitem) : Item(aitem)
637 { ARCANE_CHECK_KIND(isNode); }
638
640 Node(const ItemInternalPtr* internals,Int32 local_id) : Item(internals,local_id)
641 { ARCANE_CHECK_KIND(isNode); }
642
645 {
646 _set(ainternal);
647 return (*this);
648 }
649
650 public:
651
653 NodeLocalId itemLocalId() const { return NodeLocalId{ m_local_id }; }
654
656 Int32 nbEdge() const { return _nbEdge(); }
657
659 Int32 nbFace() const { return _nbFace(); }
660
662 Int32 nbCell() const { return _nbCell(); }
663
665 inline Edge edge(Int32 i) const;
666
668 inline Face face(Int32 i) const;
669
671 inline Cell cell(Int32 i) const;
672
674 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
675
677 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
678
680 CellLocalId cellId(Int32 i) const { return _cellId(i); }
681
683 EdgeConnectedListViewType edges() const { return _edgeList(); }
684
686 FaceConnectedListViewType faces() const { return _faceList(); }
687
689 CellConnectedListViewType cells() const { return _cellList(); }
690
692 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
693
695 FaceLocalIdView faceIds() const { return _faceIds(); }
696
698 CellLocalIdView cellIds() const { return _cellIds(); }
699
700 // AMR
701
704 {
705 return _toItemBase()._internalActiveCells2(local_ids);
706 }
707
708 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
709 Node* operator->() { return this; }
710
711 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
712 const Node* operator->() const { return this; }
713};
714
715/*---------------------------------------------------------------------------*/
716/*---------------------------------------------------------------------------*/
717
718inline Node Item::
719_node(Int32 index) const
720{
721 return Node(_connectivity()->nodeBase(m_local_id,index));
722}
723
724/*---------------------------------------------------------------------------*/
725/*---------------------------------------------------------------------------*/
731class ARCANE_CORE_EXPORT ItemWithNodes
732: public Item
733{
734 using ThatClass = ItemWithNodes;
735 // Pour accéder aux constructeurs privés
736 friend class ItemEnumeratorBaseT<ThatClass>;
737 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
738 friend class ItemVectorT<ThatClass>;
739 friend class ItemVectorViewT<ThatClass>;
740 friend class ItemConnectedListViewT<ThatClass>;
741 friend class ItemVectorViewConstIteratorT<ThatClass>;
742 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
743 friend class SimdItemT<ThatClass>;
744 friend class ItemInfoListViewT<ThatClass>;
745 friend class ItemLocalIdToItemConverterT<ThatClass>;
746
747 protected:
748
750 ItemWithNodes(Int32 local_id,ItemSharedInfo* shared_info)
751 : Item(local_id,shared_info) {}
752
753 public:
754
756 ItemWithNodes() = default;
757
759 ItemWithNodes(ItemInternal* ainternal) : Item(ainternal)
760 { ARCANE_CHECK_KIND(isItemWithNodes); }
761
763 ItemWithNodes(const ItemBase& abase) : Item(abase)
764 { ARCANE_CHECK_KIND(isItemWithNodes); }
765
767 explicit ItemWithNodes(const Item& aitem) : Item(aitem)
768 { ARCANE_CHECK_KIND(isItemWithNodes); }
769
771 ItemWithNodes(const ItemInternalPtr* internals,Int32 local_id)
772 : Item(internals,local_id)
773 { ARCANE_CHECK_KIND(isItemWithNodes); }
774
777 {
778 _set(ainternal);
779 return (*this);
780 }
781
782 public:
783
785 Int32 nbNode() const { return _nbNode(); }
786
788 Node node(Int32 i) const { return _node(i); }
789
791 NodeConnectedListViewType nodes() const { return _nodeList(); }
792
794 NodeLocalIdView nodeIds() const { return _nodeIds(); }
795
797 NodeLocalId nodeId(Int32 index) const { return _nodeId(index); }
798
800 Int32 nbLinearNode() const { return _nbLinearNode(); }
801
802 public:
803
804 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
805 ItemWithNodes* operator->() { return this; }
806
807 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
808 const ItemWithNodes* operator->() const { return this; }
809};
810
811/*---------------------------------------------------------------------------*/
812/*---------------------------------------------------------------------------*/
821class ARCANE_CORE_EXPORT Edge
822: public ItemWithNodes
823{
824 using ThatClass = Edge;
825 // Pour accéder aux constructeurs privés
826 friend class ItemEnumeratorBaseT<ThatClass>;
827 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
828 friend class ItemVectorT<ThatClass>;
829 friend class ItemVectorViewT<ThatClass>;
830 friend class ItemConnectedListViewT<ThatClass>;
831 friend class ItemVectorViewConstIteratorT<ThatClass>;
832 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
833 friend class SimdItemT<ThatClass>;
834 friend class ItemInfoListViewT<ThatClass>;
835 friend class ItemLocalIdToItemConverterT<ThatClass>;
836
837 public:
838
843 class ARCANE_DEPRECATED_REASON("Y2024: Use EdgeLocalId instead") Index
844 : public Item::Index
845 {
846 public:
847 typedef Item::Index Base;
848 public:
849 explicit Index(Int32 id) : Base(id){}
850 Index(Edge item) : Base(item){}
851 operator EdgeLocalId() const { return EdgeLocalId{localId()}; }
852 };
853
854 private:
855
857 Edge(Int32 local_id,ItemSharedInfo* shared_info)
858 : ItemWithNodes(local_id,shared_info) {}
859
860 public:
861
863 typedef EdgeLocalId LocalIdType;
864
866 Edge() = default;
867
869 Edge(ItemInternal* ainternal) : ItemWithNodes(ainternal)
870 { ARCANE_CHECK_KIND(isEdge); }
871
873 Edge(const ItemBase& abase) : ItemWithNodes(abase)
874 { ARCANE_CHECK_KIND(isEdge); }
875
877 explicit Edge(const Item& aitem) : ItemWithNodes(aitem)
878 { ARCANE_CHECK_KIND(isEdge); }
879
881 Edge(const ItemInternalPtr* internals,Int32 local_id)
882 : ItemWithNodes(internals,local_id)
883 { ARCANE_CHECK_KIND(isEdge); }
884
887 {
888 _set(ainternal);
889 return (*this);
890 }
891
892 public:
893
895 EdgeLocalId itemLocalId() const { return EdgeLocalId{ m_local_id }; }
896
898 Int32 nbNode() const { return 2; }
899
901 Int32 nbFace() const { return _nbFace(); }
902
904 Int32 nbCell() const { return _nbCell(); }
905
907 inline Cell cell(Int32 i) const;
908
910 CellConnectedListViewType cells() const { return _cellList(); }
911
913 CellLocalId cellId(Int32 i) const { return _cellId(i); }
914
916 CellLocalIdView cellIds() const { return _cellIds(); }
917
919 inline Face face(Int32 i) const;
920
922 FaceConnectedListViewType faces() const { return _faceList(); }
923
925 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
926
928 FaceLocalIdView faceIds() const { return _faceIds(); }
929
930 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
931 Edge* operator->() { return this; }
932
933 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
934 const Edge* operator->() const { return this; }
935};
936
937/*---------------------------------------------------------------------------*/
938/*---------------------------------------------------------------------------*/
939
940inline Edge Item::
941_edge(Int32 index) const
942{
943 return Edge(_connectivity()->edgeBase(m_local_id,index));
944}
945
946/*---------------------------------------------------------------------------*/
947/*---------------------------------------------------------------------------*/
956class ARCANE_CORE_EXPORT Face
957: public ItemWithNodes
958{
959 using ThatClass = Face;
960 // Pour accéder aux constructeurs privés
961 friend class ItemEnumeratorBaseT<ThatClass>;
962 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
963 friend class ItemVectorT<ThatClass>;
964 friend class ItemVectorViewT<ThatClass>;
965 friend class ItemConnectedListViewT<ThatClass>;
966 friend class ItemVectorViewConstIteratorT<ThatClass>;
967 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
968 friend class SimdItemT<ThatClass>;
969 friend class ItemInfoListViewT<ThatClass>;
970 friend class ItemLocalIdToItemConverterT<ThatClass>;
971
972 public:
973
978 class ARCANE_DEPRECATED_REASON("Y2024: Use FaceLocalId instead") Index
979 : public Item::Index
980 {
981 public:
982 typedef Item::Index Base;
983 public:
984 explicit Index(Int32 id) : Base(id){}
985 Index(Face item) : Base(item){}
986 operator FaceLocalId() const { return FaceLocalId{localId()}; }
987 };
988
989 private:
990
992 Face(Int32 local_id,ItemSharedInfo* shared_info)
993 : ItemWithNodes(local_id,shared_info) {}
994
995 public:
996
998 typedef FaceLocalId LocalIdType;
999
1001 Face() = default;
1002
1004 Face(ItemInternal* ainternal) : ItemWithNodes(ainternal)
1005 { ARCANE_CHECK_KIND(isFace); }
1006
1008 Face(const ItemBase& abase) : ItemWithNodes(abase)
1009 { ARCANE_CHECK_KIND(isFace); }
1010
1012 explicit Face(const Item& aitem) : ItemWithNodes(aitem)
1013 { ARCANE_CHECK_KIND(isFace); }
1014
1016 Face(const ItemInternalPtr* internals,Int32 local_id)
1017 : ItemWithNodes(internals,local_id)
1018 { ARCANE_CHECK_KIND(isFace); }
1019
1022 {
1023 _set(ainternal);
1024 return (*this);
1025 }
1026
1027 public:
1028
1030 FaceLocalId itemLocalId() const { return FaceLocalId{ m_local_id }; }
1031
1033 Int32 nbCell() const { return _nbCell(); }
1034
1036 inline Cell cell(Int32 i) const;
1037
1039 CellConnectedListViewType cells() const { return _cellList(); }
1040
1042 CellLocalId cellId(Int32 i) const { return _cellId(i); }
1043
1045 CellLocalIdView cellIds() const { return _cellIds(); }
1046
1052 bool isSubDomainBoundary() const { return (_flags() & ItemFlags::II_Boundary)!=0; }
1053
1058 ARCANE_DEPRECATED_118 bool isBoundary() const { return isSubDomainBoundary(); }
1059
1062 {
1064 }
1065
1071 ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
1072 {
1074 }
1075
1077 inline Cell boundaryCell() const;
1078
1080 inline Cell backCell() const;
1081
1083 CellLocalId backCellId() const { return CellLocalId(_toItemBase().backCellId()); }
1084
1086 inline Cell frontCell() const;
1087
1089 CellLocalId frontCellId() const { return CellLocalId(_toItemBase().frontCellId()); }
1090
1096 inline Cell oppositeCell(Cell cell) const;
1097
1103 CellLocalId oppositeCellId(CellLocalId cell_id) const
1104 {
1105 ARCANE_ASSERT((backCellId()==cell_id || frontCellId()==cell_id),("cell is not connected to the face"));
1106 return (backCellId()==cell_id) ? frontCellId() : backCellId();
1107 }
1108
1117 Face masterFace() const { return _toItemBase().masterFace(); }
1118
1120 bool isMasterFace() const { return _toItemBase().isMasterFace(); }
1121
1123 bool isSlaveFace() const { return _toItemBase().isSlaveFace(); }
1124
1126 bool isTiedFace() const { return isSlaveFace() || isMasterFace(); }
1127
1135 {
1136 if (_toItemBase().isMasterFace())
1137 return _faceList();
1139 }
1140
1141 public:
1142
1144 Int32 nbEdge() const { return _nbEdge(); }
1145
1147 Edge edge(Int32 i) const { return _edge(i); }
1148
1150 EdgeConnectedListViewType edges() const { return _edgeList(); }
1151
1153 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
1154
1156 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
1157
1158 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1159 Face* operator->() { return this; }
1160
1161 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1162 const Face* operator->() const { return this; }
1163};
1164
1165/*---------------------------------------------------------------------------*/
1166/*---------------------------------------------------------------------------*/
1167
1168inline Face Item::
1169_face(Int32 index) const
1170{
1171 return Face(_connectivity()->faceBase(m_local_id,index));
1172}
1173
1174/*---------------------------------------------------------------------------*/
1175/*---------------------------------------------------------------------------*/
1203class ARCANE_CORE_EXPORT Cell
1204: public ItemWithNodes
1205{
1206 using ThatClass = Cell;
1207 // Pour accéder aux constructeurs privés
1208 friend class ItemEnumeratorBaseT<ThatClass>;
1209 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
1210 friend class ItemVectorT<ThatClass>;
1211 friend class ItemVectorViewT<ThatClass>;
1212 friend class ItemConnectedListViewT<ThatClass>;
1213 friend class ItemVectorViewConstIteratorT<ThatClass>;
1214 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
1215 friend class SimdItemT<ThatClass>;
1216 friend class ItemInfoListViewT<ThatClass>;
1217 friend class ItemLocalIdToItemConverterT<ThatClass>;
1218
1219 public:
1220
1225 class ARCANE_DEPRECATED_REASON("Y2024: Use CellLocalId instead") Index
1226 : public Item::Index
1227 {
1228 public:
1229 typedef Item::Index Base;
1230 public:
1231 explicit Index(Int32 id) : Base(id){}
1232 Index(Cell item) : Base(item){}
1233 operator CellLocalId() const { return CellLocalId{localId()}; }
1234 };
1235
1236 private:
1237
1239 Cell(Int32 local_id,ItemSharedInfo* shared_info)
1240 : ItemWithNodes(local_id,shared_info) {}
1241
1242 public:
1243
1245 typedef CellLocalId LocalIdType;
1246
1248 Cell() = default;
1249
1251 Cell(ItemInternal* ainternal) : ItemWithNodes(ainternal)
1252 { ARCANE_CHECK_KIND(isCell); }
1253
1255 Cell(const ItemBase& abase) : ItemWithNodes(abase)
1256 { ARCANE_CHECK_KIND(isCell); }
1257
1259 explicit Cell(const Item& aitem) : ItemWithNodes(aitem)
1260 { ARCANE_CHECK_KIND(isCell); }
1261
1263 Cell(const ItemInternalPtr* internals,Int32 local_id)
1264 : ItemWithNodes(internals,local_id)
1265 { ARCANE_CHECK_KIND(isCell); }
1266
1269 {
1270 _set(ainternal);
1271 return (*this);
1272 }
1273
1274 public:
1275
1277 CellLocalId itemLocalId() const { return CellLocalId{ m_local_id }; }
1278
1280 Int32 nbFace() const { return _nbFace(); }
1281
1283 Face face(Int32 i) const { return _face(i); }
1284
1286 FaceConnectedListViewType faces() const { return _faceList(); }
1287
1289 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
1290
1292 FaceLocalIdView faceIds() const { return _faceIds(); }
1293
1295 Int32 nbEdge() const { return _nbEdge(); }
1296
1298 Edge edge(Int32 i) const { return _edge(i); }
1299
1301 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
1302
1304 EdgeConnectedListViewType edges() const { return _edgeList(); }
1305
1307 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
1308
1315 Cell hParent() const { return Cell(_hParentBase(0)); }
1316
1318 Int32 nbHParent() const { return _nbHParent(); }
1319
1321 Int32 nbHChildren() const { return _nbHChildren(); }
1322
1324 Cell hChild(Int32 i) const { return Cell(_hChildBase(i)); }
1325
1327 Cell topHParent() const { return Cell(_toItemBase().topHParentBase()); }
1328
1334 bool isActive() const { return _toItemBase().isActive(); }
1335
1336 bool isSubactive() const { return _toItemBase().isSubactive(); }
1337
1343 bool isAncestor() const { return _toItemBase().isAncestor(); }
1344
1349 bool hasHChildren() const { return _toItemBase().hasHChildren(); }
1350
1356 Int32 level() const
1357 {
1361 if (this->_nbHParent() == 0)
1362 return 0;
1364 return (this->_hParentBase(0).level() + 1);
1365 }
1366
1373 {
1374 return _toItemBase().whichChildAmI(iitem->localId());
1375 }
1376
1382 Int32 whichChildAmI(CellLocalId local_id) const
1383 {
1384 return _toItemBase().whichChildAmI(local_id);
1385 }
1386
1387 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1388 Cell* operator->() { return this; }
1389
1390 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1391 const Cell* operator->() const { return this; }
1392};
1393
1394/*---------------------------------------------------------------------------*/
1395/*---------------------------------------------------------------------------*/
1396
1397inline Cell Item::
1398_cell(Int32 index) const
1399{
1400 return Cell(_connectivity()->cellBase(m_local_id,index));
1401}
1402
1403/*---------------------------------------------------------------------------*/
1404/*---------------------------------------------------------------------------*/
1410: public Item
1411{
1412 using ThatClass = Particle;
1413 // Pour accéder aux constructeurs privés
1414 friend class ItemEnumeratorBaseT<ThatClass>;
1415 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
1416 friend class ItemVectorT<ThatClass>;
1417 friend class ItemVectorViewT<ThatClass>;
1418 friend class ItemConnectedListViewT<ThatClass>;
1419 friend class ItemVectorViewConstIteratorT<ThatClass>;
1420 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
1421 friend class SimdItemT<ThatClass>;
1422 friend class ItemInfoListViewT<ThatClass>;
1423 friend class ItemLocalIdToItemConverterT<ThatClass>;
1424
1425 private:
1426
1428 Particle(Int32 local_id,ItemSharedInfo* shared_info)
1429 : Item(local_id,shared_info) {}
1430
1431 public:
1432
1434 typedef ParticleLocalId LocalIdType;
1435
1437 Particle() = default;
1438
1440 Particle(ItemInternal* ainternal) : Item(ainternal)
1441 { ARCANE_CHECK_KIND(isParticle); }
1442
1444 Particle(const ItemBase& abase) : Item(abase)
1445 { ARCANE_CHECK_KIND(isParticle); }
1446
1448 explicit Particle(const Item& aitem) : Item(aitem)
1449 { ARCANE_CHECK_KIND(isParticle); }
1450
1452 Particle(const ItemInternalPtr* internals,Int32 local_id)
1453 : Item(internals,local_id)
1454 { ARCANE_CHECK_KIND(isParticle); }
1455
1458 {
1459 _set(ainternal);
1460 return (*this);
1461 }
1462
1463 public:
1464
1466 ParticleLocalId itemLocalId() const { return ParticleLocalId{ m_local_id }; }
1467
1473 Cell cell() const { return _cell(0); }
1474
1476 CellLocalId cellId() const { return _cellId(0); }
1477
1479 bool hasCell() const { return (_cellId(0).localId()!=NULL_ITEM_LOCAL_ID); }
1480
1487 {
1488 Int32 cell_local_id = _cellId(0).localId();
1489 if (cell_local_id==NULL_ITEM_LOCAL_ID)
1490 return Cell();
1491 return _cell(0);
1492 }
1493
1494 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1495 Particle* operator->() { return this; }
1496
1497 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1498 const Particle* operator->() const { return this; }
1499};
1500
1501/*---------------------------------------------------------------------------*/
1502/*---------------------------------------------------------------------------*/
1515class DoF
1516: public Item
1517{
1518 using ThatClass = DoF;
1519 // Pour accéder aux constructeurs privés
1520 friend class ItemEnumeratorBaseT<ThatClass>;
1521 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
1522 friend class ItemVectorT<ThatClass>;
1523 friend class ItemVectorViewT<ThatClass>;
1524 friend class ItemConnectedListViewT<ThatClass>;
1525 friend class ItemVectorViewConstIteratorT<ThatClass>;
1526 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
1527 friend class SimdItemT<ThatClass>;
1528 friend class ItemInfoListViewT<ThatClass>;
1529 friend class ItemLocalIdToItemConverterT<ThatClass>;
1530
1531 private:
1532
1534 DoF(Int32 local_id,ItemSharedInfo* shared_info)
1535 : Item(local_id,shared_info) {}
1536
1537
1538 public:
1539
1540 using LocalIdType = DoFLocalId;
1541
1543 DoF() = default;
1544
1546 DoF(ItemInternal* ainternal) : Item(ainternal)
1547 { ARCANE_CHECK_KIND(isDoF); }
1548
1550 DoF(const ItemBase& abase) : Item(abase)
1551 { ARCANE_CHECK_KIND(isDoF); }
1552
1554 explicit DoF(const Item& aitem) : Item(aitem)
1555 { ARCANE_CHECK_KIND(isDoF); }
1556
1558 DoF(const ItemInternalPtr* internals,Int32 local_id)
1559 : Item(internals,local_id)
1560 { ARCANE_CHECK_KIND(isDoF); }
1561
1564 {
1565 _set(ainternal);
1566 return (*this);
1567 }
1568
1569 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1570 DoF* operator->() { return this; }
1571
1572 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1573 const DoF* operator->() const { return this; }
1574
1576 DoFLocalId itemLocalId() const { return DoFLocalId{ m_local_id }; }
1577};
1578
1579/*---------------------------------------------------------------------------*/
1580/*---------------------------------------------------------------------------*/
1581
1582/*---------------------------------------------------------------------------*/
1583/*---------------------------------------------------------------------------*/
1584
1586edge(Int32 i) const
1587{
1588 return _edge(i);
1589}
1590
1592face(Int32 i) const
1593{
1594 return _face(i);
1595}
1596
1598cell(Int32 i) const
1599{
1600 return _cell(i);
1601}
1602
1603/*---------------------------------------------------------------------------*/
1604/*---------------------------------------------------------------------------*/
1605
1607face(Int32 i) const
1608{
1609 return _face(i);
1610}
1611
1613cell(Int32 i) const
1614{
1615 return _cell(i);
1616}
1617
1618/*---------------------------------------------------------------------------*/
1619/*---------------------------------------------------------------------------*/
1620
1622boundaryCell() const
1623{
1624 return Cell(_toItemBase().boundaryCell());
1625}
1626
1628backCell() const
1629{
1630 return Cell(_toItemBase().backCell());
1631}
1632
1634frontCell() const
1635{
1636 return Cell(_toItemBase().frontCell());
1637}
1638
1640oppositeCell(Cell cell) const
1641{
1642 ARCANE_ASSERT((backCell()==cell || frontCell()==cell),("cell is not connected to the face"));
1643 return (backCell()==cell) ? frontCell() : backCell();
1644}
1645
1647cell(Int32 i) const
1648{
1649 return _cell(i);
1650}
1651
1652/*---------------------------------------------------------------------------*/
1653/*---------------------------------------------------------------------------*/
1654
1656toItemWithNodes() const
1657{
1658 ARCANE_CHECK_KIND(isItemWithNodes);
1659 return ItemWithNodes(*this);
1660}
1661
1663toNode() const
1664{
1665 ARCANE_CHECK_KIND(isNode);
1666 return Node(*this);
1667}
1668
1670toEdge() const
1671{
1672 ARCANE_CHECK_KIND(isEdge);
1673 return Edge(*this);
1674}
1675
1677toFace() const
1678{
1679 ARCANE_CHECK_KIND(isFace);
1680 return Face(*this);
1681}
1682
1684toCell() const
1685{
1686 ARCANE_CHECK_KIND(isCell);
1687 return Cell(*this);
1688}
1689
1691toParticle() const
1692{
1693 ARCANE_CHECK_KIND(isParticle);
1694 return Particle(*this);
1695}
1696
1698toDoF() const
1699{
1700 ARCANE_CHECK_KIND(isDoF);
1701 return DoF(*this);
1702}
1703
1704/*---------------------------------------------------------------------------*/
1705/*---------------------------------------------------------------------------*/
1706
1707inline ItemLocalId::
1708ItemLocalId(Item item)
1709: m_local_id(item.localId())
1710{
1711}
1712
1713template<typename ItemType> inline ItemLocalIdT<ItemType>::
1714ItemLocalIdT(ItemType item)
1715: ItemLocalId(item.localId())
1716{
1717}
1718
1719/*---------------------------------------------------------------------------*/
1720/*---------------------------------------------------------------------------*/
1721
1723operator[](ItemLocalId local_id) const
1724{
1725 return Item(local_id.localId(), m_item_shared_info);
1726}
1727
1728/*---------------------------------------------------------------------------*/
1729/*---------------------------------------------------------------------------*/
1730
1732operator[](Int32 local_id) const
1733{
1734 return Item(local_id, m_item_shared_info);
1735}
1736
1737/*---------------------------------------------------------------------------*/
1738/*---------------------------------------------------------------------------*/
1739
1740template<typename ItemType> inline ItemType ItemInfoListViewT<ItemType>::
1741operator[](ItemLocalId local_id) const
1742{
1743 return ItemType(local_id.localId(), m_item_shared_info);
1744}
1745
1746/*---------------------------------------------------------------------------*/
1747/*---------------------------------------------------------------------------*/
1748
1749template<typename ItemType> inline ItemType ItemInfoListViewT<ItemType>::
1750operator[](Int32 local_id) const
1751{
1752 return ItemType(local_id, m_item_shared_info);
1753}
1754
1755/*---------------------------------------------------------------------------*/
1756/*---------------------------------------------------------------------------*/
1757
1758inline constexpr ARCCORE_HOST_DEVICE Item ItemLocalIdToItemConverter::
1759operator[](ItemLocalId local_id) const
1760{
1761 return Item(local_id.localId(), m_item_shared_info);
1762}
1763
1764/*---------------------------------------------------------------------------*/
1765/*---------------------------------------------------------------------------*/
1766
1767inline constexpr ARCCORE_HOST_DEVICE Item ItemLocalIdToItemConverter::
1768operator[](Int32 local_id) const
1769{
1770 return Item(local_id, m_item_shared_info);
1771}
1772
1773/*---------------------------------------------------------------------------*/
1774/*---------------------------------------------------------------------------*/
1775
1776template<typename ItemType_> inline constexpr ARCCORE_HOST_DEVICE ItemType_
1778operator[](ItemLocalIdType local_id) const
1779{
1780 return ItemType(local_id.localId(), m_item_shared_info);
1781}
1782
1783/*---------------------------------------------------------------------------*/
1784/*---------------------------------------------------------------------------*/
1785
1786template<typename ItemType_> inline constexpr ARCCORE_HOST_DEVICE ItemType_
1788operator[](Int32 local_id) const
1789{
1790 return ItemType(local_id, m_item_shared_info);
1791}
1792
1793/*---------------------------------------------------------------------------*/
1794/*---------------------------------------------------------------------------*/
1795
1796} // End namespace Arcane
1797
1798/*---------------------------------------------------------------------------*/
1799/*---------------------------------------------------------------------------*/
1800
1801#include "arcane/ItemCompatibility.h"
1802
1803/*---------------------------------------------------------------------------*/
1804/*---------------------------------------------------------------------------*/
1805
1806#endif
Déclarations de types sur les entités.
Maille d'un maillage.
Definition Item.h:1205
Cell topHParent() const
parent de niveau 0 pour l'AMR
Definition Item.h:1327
Int32 nbEdge() const
Nombre d'arêtes de la maille.
Definition Item.h:1295
Cell(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1259
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Definition Item.h:1286
Int32 nbHChildren() const
Nombre d'enfants pour l'AMR.
Definition Item.h:1321
bool isAncestor() const
Definition Item.h:1343
Cell(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1239
Face face(Int32 i) const
i-ème face de la maille
Definition Item.h:1283
FaceLocalIdView faceIds() const
Liste des faces de la maille.
Definition Item.h:1292
Cell(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1251
Int32 nbFace() const
Nombre de faces de la maille.
Definition Item.h:1280
Cell & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1268
Cell(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1263
CellLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1277
EdgeLocalIdView edgeIds() const
Liste des arêtes de la maille.
Definition Item.h:1307
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la maille
Definition Item.h:1301
Int32 whichChildAmI(const ItemInternal *iitem) const
Definition Item.h:1372
Cell hChild(Int32 i) const
i-ème enfant AMR
Definition Item.h:1324
bool hasHChildren() const
Definition Item.h:1349
Cell(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1255
Edge edge(Int32 i) const
i-ème arête de la maille
Definition Item.h:1298
Cell()=default
Constructeur d'une maille nulle.
Int32 whichChildAmI(CellLocalId local_id) const
Definition Item.h:1382
FaceLocalId faceId(Int32 i) const
i-ème face de la maille
Definition Item.h:1289
bool isActive() const
Definition Item.h:1334
Int32 level() const
Definition Item.h:1356
Cell hParent() const
Definition Item.h:1315
EdgeConnectedListViewType edges() const
Liste des arêtes de la maille.
Definition Item.h:1304
Int32 nbHParent() const
Nombre de parent pour l'AMR.
Definition Item.h:1318
CellLocalId LocalIdType
Type du localId()
Definition Item.h:1245
classe degré de liberté.
Definition Item.h:1517
DoF(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1558
DoF()=default
Constructeur d'une maille non connectée.
DoF(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1550
DoF(const Item &aitem)
Construit une référence à l'entité abase.
Definition Item.h:1554
DoFLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1576
DoF & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1563
DoF(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1546
DoF(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1534
Arête d'une maille.
Definition Item.h:823
FaceConnectedListViewType faces() const
Liste des faces de l'arête.
Definition Item.h:922
CellConnectedListViewType cells() const
Liste des mailles de l'arête.
Definition Item.h:910
Cell cell(Int32 i) const
i-ème maille de l'arête
Definition Item.h:1613
Edge(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:873
Face face(Int32 i) const
i-ème face de l'arête
Definition Item.h:1607
Edge(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:881
FaceLocalIdView faceIds() const
Liste des faces de l'arête.
Definition Item.h:928
Edge & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:886
Int32 nbFace() const
Nombre de faces connectées à l'arête.
Definition Item.h:901
CellLocalIdView cellIds() const
Liste des mailles de l'arête.
Definition Item.h:916
Edge(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:877
Edge()=default
Créé une arête nulle.
FaceLocalId faceId(Int32 i) const
i-ème face de l'arête
Definition Item.h:925
Edge(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:869
EdgeLocalId LocalIdType
Type du localId()
Definition Item.h:863
Edge(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:857
Int32 nbNode() const
Nombre de sommets de l'arête.
Definition Item.h:898
CellLocalId cellId(Int32 i) const
i-ème maille de l'arête
Definition Item.h:913
Int32 nbCell() const
Nombre de mailles connectées à l'arête.
Definition Item.h:904
EdgeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:895
Face d'une maille.
Definition Item.h:958
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:1120
FaceLocalId LocalIdType
Type du localId()
Definition Item.h:998
CellLocalId frontCellId() const
Maille devant la face (maille nulle si aucune)
Definition Item.h:1089
Face(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1008
Cell frontCell() const
Maille devant la face (maille nulle si aucune)
Definition Item.h:1634
CellLocalId cellId(Int32 i) const
i-ème maille de la face
Definition Item.h:1042
EdgeLocalIdView edgeIds() const
Liste des arêtes de la face.
Definition Item.h:1156
Cell cell(Int32 i) const
i-ème maille de la face
Definition Item.h:1647
Int32 nbCell() const
Nombre de mailles de la face (1 ou 2)
Definition Item.h:1033
ARCANE_DEPRECATED_118 bool isBoundary() const
Definition Item.h:1058
FaceConnectedListViewType slaveFaces() const
Liste des faces esclaves associées à cette face maître.
Definition Item.h:1134
ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Definition Item.h:1071
EdgeConnectedListViewType edges() const
Liste des arêtes de la face.
Definition Item.h:1150
bool isSubDomainBoundary() const
Indique si la face est au bord du sous-domaine (i.e nbCell()==1)
Definition Item.h:1052
Face(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1012
FaceLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1030
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la face
Definition Item.h:1153
CellConnectedListViewType cells() const
Liste des mailles de la face.
Definition Item.h:1039
Face masterFace() const
Face maître associée à cette face.
Definition Item.h:1117
bool isSlaveFace() const
true s'il s'agit d'une face esclave d'une interface
Definition Item.h:1123
Edge edge(Int32 i) const
i-ème arête de la face
Definition Item.h:1147
CellLocalId backCellId() const
Maille derrière la face (maille nulle si aucune)
Definition Item.h:1083
Face(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1016
bool isSubDomainBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Definition Item.h:1061
Face(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1004
Cell boundaryCell() const
Maille associée à cette face frontière (maille nulle si aucune)
Definition Item.h:1622
Int32 nbEdge() const
Nombre d'arêtes de la face.
Definition Item.h:1144
bool isTiedFace() const
true s'il s'agit d'une face esclave ou maître d'une interface
Definition Item.h:1126
Face(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:992
CellLocalIdView cellIds() const
Liste des mailles de la face.
Definition Item.h:1045
Face & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1021
Cell backCell() const
Maille derrière la face (maille nulle si aucune)
Definition Item.h:1628
Cell oppositeCell(Cell cell) const
Maille opposée de cette face à la maille cell.
Definition Item.h:1640
CellLocalId oppositeCellId(CellLocalId cell_id) const
Maille opposée de cette face à la maille cell.
Definition Item.h:1103
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:58
@ II_HasBackCell
L'entité a une maille derrière.
Definition ItemFlags.h:52
@ II_Own
L'entité est une entité propre au sous-domaine.
Definition ItemFlags.h:55
@ II_Boundary
L'entité est sur la frontière.
Definition ItemFlags.h:50
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:1741
Item operator[](ItemLocalId local_id) const
Entité associée du numéro local local_id.
Definition Item.h:1723
Informations de connectivité, pour une famille d'entité, permettant la transition entre les anciennes...
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:1778
constexpr __host__ __device__ Item operator[](ItemLocalId local_id) const
Entité de numéro local local_id.
Definition Item.h:1759
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:733
ItemWithNodes(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:771
NodeLocalId nodeId(Int32 index) const
i-ème noeud de l'entité.
Definition Item.h:797
ItemWithNodes(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:763
Node node(Int32 i) const
i-ème noeud de l'entité
Definition Item.h:788
ItemWithNodes(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:750
ItemWithNodes(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:767
Int32 nbLinearNode() const
Nombre de noeuds de l'entité linéaire associée (si entité ordre 2 ou plus)
Definition Item.h:800
NodeConnectedListViewType nodes() const
Liste des noeuds de l'entité
Definition Item.h:791
ItemWithNodes(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:759
ItemWithNodes()=default
Création d'une entité non connectée au maillage.
Int32 nbNode() const
Nombre de noeuds de l'entité
Definition Item.h:785
NodeLocalIdView nodeIds() const
Liste des noeuds de l'entité
Definition Item.h:794
ItemWithNodes & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:776
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:392
impl::MutableItemBase mutableItemBase() const
Partie interne modifiable de l'entité.
Definition Item.h:380
Int32 _nbHParent() const
Nombre de parent pour l'AMR.
Definition Item.h:447
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:441
Integer _nbNode() const
Nombre de noeuds de l'entité
Definition Item.h:439
ItemInternal * internal() const
Partie interne de l'entité.
Definition Item.h:354
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:1670
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:405
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:443
ItemWithNodes toItemWithNodes() const
Converti l'entité en le genre ItemWithNodes.
Definition Item.h:1656
DoF toDoF() const
Converti l'entité en le genre DoF.
Definition Item.h:1698
Cell toCell() const
Converti l'entité en le genre Cell.
Definition Item.h:1684
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
Int32 flags() const
Flags de l'entité
Definition Item.h:341
Particle toParticle() const
Converti l'entité en le genre Particle.
Definition Item.h:1691
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:437
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:1677
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:451
Integer _nbCell() const
Nombre de mailles connectées à l'entité (pour les noeuds, arêtes et faces)
Definition Item.h:445
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:415
impl::ItemBase itemBase() const
Partie interne de l'entité.
Definition Item.h:369
bool hasFlags(Int32 flags) const
Retourne si les flags flags sont positionnées pour l'entité
Definition Item.h:338
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:449
Int16 type() const
Type de l'entité
Definition Item.h:241
Int32 _nbLinearNode() const
Nombre de noeuds de l'entité
Definition Item.h:477
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:1663
Noeud d'un maillage.
Definition Item.h:582
Cell cell(Int32 i) const
i-ème maille du noeud
Definition Item.h:1598
FaceLocalIdView faceIds() const
Liste des faces du noeud.
Definition Item.h:695
Node(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:640
CellConnectedListViewType cells() const
Liste des mailles du noeud.
Definition Item.h:689
CellVectorView _internalActiveCells(Int32Array &local_ids) const
Enumére les mailles connectées au noeud.
Definition Item.h:703
Node(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:628
EdgeLocalIdView edgeIds() const
Liste des arêtes du noeud.
Definition Item.h:692
Node(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:616
NodeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:653
Node(const Item &aitem)
Construit une référence à l'entité abase.
Definition Item.h:636
FaceLocalId faceId(Int32 i) const
i-ème face du noeud
Definition Item.h:677
FaceConnectedListViewType faces() const
Liste des faces du noeud.
Definition Item.h:686
Node & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:644
Face face(Int32 i) const
i-ème face du noeud
Definition Item.h:1592
Int32 nbEdge() const
Nombre d'arêtes connectées au noeud.
Definition Item.h:656
Node(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:632
CellLocalIdView cellIds() const
Liste des mailles du noeud.
Definition Item.h:698
Edge edge(Int32 i) const
i-ème arête du noeud
Definition Item.h:1586
Int32 nbFace() const
Nombre de faces connectées au noeud.
Definition Item.h:659
Int32 nbCell() const
Nombre de mailles connectées au noeud.
Definition Item.h:662
EdgeConnectedListViewType edges() const
Liste des arêtes du noeud.
Definition Item.h:683
CellLocalId cellId(Int32 i) const
i-ème maille du noeud
Definition Item.h:680
EdgeLocalId edgeId(Int32 i) const
i-ème arête du noeud
Definition Item.h:674
NodeLocalId LocalIdType
Type du localId()
Definition Item.h:622
Particule.
Definition Item.h:1411
Particle(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1444
Particle()=default
Constructeur d'une particule nulle.
bool hasCell() const
Vrai si la particule est dans une maille du maillage.
Definition Item.h:1479
Particle(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1428
ParticleLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1466
Cell cell() const
Maille à laquelle appartient la particule. Il faut appeler setCell() avant d'appeler cette fonction....
Definition Item.h:1473
CellLocalId cellId() const
Maille connectée à la particule.
Definition Item.h:1476
Particle(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1452
Cell cellOrNull() const
Maille à laquelle appartient la particule ou maille nulle. Retourne cell() si la particule est dans u...
Definition Item.h:1486
Particle & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1457
ParticleLocalId LocalIdType
Type du localId()
Definition Item.h:1434
Particle(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1448
Particle(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1440
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:551
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
@ Cell
Le maillage est AMR par maille.
Definition MeshKind.h:52
std::int32_t Int32
Type entier signé sur 32 bits.