Arcane  v3.15.3.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;
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
106
109
110 using ItemBase = impl::ItemBase;
111
112 public:
113
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
178 Item() = default;
181 //ARCANE_DEPRECATED_REASON("Remove this overload")
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)
194 : m_shared_info(abase.m_shared_info)
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 }
307 bool isCell() const
308 {
309 eItemKind ik = kind();
310 return (ik==IK_Unknown || ik==IK_Cell);
311 }
313 bool isEdge() const
314 {
315 eItemKind ik = kind();
316 return (ik==IK_Unknown || ik==IK_Edge);
317 }
319 bool isFace() const
320 {
321 eItemKind ik = kind();
322 return (ik==IK_Unknown || ik==IK_Face);
323 }
325 bool isParticle() const
326 {
327 eItemKind ik = kind();
328 return (ik==IK_Unknown || ik==IK_Particle);
329 }
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")
348 ItemInternal* internal() const
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
364 {
365 return impl::ItemBase(m_local_id,m_shared_info);
366 }
367
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>;
578 friend class ItemVectorT<ThatClass>;
579 friend class ItemVectorViewT<ThatClass>;
580 friend class ItemConnectedListViewT<ThatClass>;
583 friend class SimdItemT<ThatClass>;
584 friend class ItemInfoListViewT<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
608 : Item(local_id,shared_info) {}
609
610 public:
611
614
616 Node() = default;
617
620 { ARCANE_CHECK_KIND(isNode); }
621
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>;
729 friend class ItemVectorT<ThatClass>;
730 friend class ItemVectorViewT<ThatClass>;
731 friend class ItemConnectedListViewT<ThatClass>;
734 friend class SimdItemT<ThatClass>;
735 friend class ItemInfoListViewT<ThatClass>;
737
738 protected:
739
742 : Item(local_id,shared_info) {}
743
744 public:
745
747 ItemWithNodes() = default;
748
751 { ARCANE_CHECK_KIND(isItemWithNodes); }
752
755 { ARCANE_CHECK_KIND(isItemWithNodes); }
756
758 explicit ItemWithNodes(const Item& aitem) : Item(aitem)
759 { ARCANE_CHECK_KIND(isItemWithNodes); }
760
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>;
814 friend class ItemVectorT<ThatClass>;
815 friend class ItemVectorViewT<ThatClass>;
816 friend class ItemConnectedListViewT<ThatClass>;
819 friend class SimdItemT<ThatClass>;
820 friend class ItemInfoListViewT<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
844 : ItemWithNodes(local_id,shared_info) {}
845
846 public:
847
850
852 Edge() = default;
853
856 { ARCANE_CHECK_KIND(isEdge); }
857
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>;
949 friend class ItemVectorT<ThatClass>;
950 friend class ItemVectorViewT<ThatClass>;
951 friend class ItemConnectedListViewT<ThatClass>;
954 friend class SimdItemT<ThatClass>;
955 friend class ItemInfoListViewT<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
979 : ItemWithNodes(local_id,shared_info) {}
980
981 public:
982
985
987 Face() = default;
988
991 { ARCANE_CHECK_KIND(isFace); }
992
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 {
1049 return isSubDomainBoundary() && (_flags() & ItemFlags::II_HasBackCell);
1050 }
1051
1057 ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
1058 {
1059 return isSubDomainBoundaryOutside();
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
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>;
1196 friend class ItemVectorT<ThatClass>;
1197 friend class ItemVectorViewT<ThatClass>;
1198 friend class ItemConnectedListViewT<ThatClass>;
1201 friend class SimdItemT<ThatClass>;
1202 friend class ItemInfoListViewT<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
1226 : ItemWithNodes(local_id,shared_info) {}
1227
1228 public:
1229
1232
1234 Cell() = default;
1235
1238 { ARCANE_CHECK_KIND(isCell); }
1239
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>;
1402 friend class ItemVectorT<ThatClass>;
1403 friend class ItemVectorViewT<ThatClass>;
1404 friend class ItemConnectedListViewT<ThatClass>;
1407 friend class SimdItemT<ThatClass>;
1408 friend class ItemInfoListViewT<ThatClass>;
1410
1411 private:
1412
1415 : Item(local_id,shared_info) {}
1416
1417 public:
1418
1421
1423 Particle() = default;
1424
1427 { ARCANE_CHECK_KIND(isParticle); }
1428
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
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>;
1508 friend class ItemVectorT<ThatClass>;
1509 friend class ItemVectorViewT<ThatClass>;
1510 friend class ItemConnectedListViewT<ThatClass>;
1513 friend class SimdItemT<ThatClass>;
1514 friend class ItemInfoListViewT<ThatClass>;
1516
1517 private:
1518
1521 : Item(local_id,shared_info) {}
1522
1523
1524 public:
1525
1526 using LocalIdType = DoFLocalId;
1527
1529 DoF() = default;
1530
1533 { ARCANE_CHECK_KIND(isDoF); }
1534
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
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.
Tableau d'items de types quelconques.
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)
Index d'une Cell dans une variable.
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)
Index d'une Edge dans une variable.
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)
Index d'une Face dans une variable.
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.
Classe de base pour les entités du maillage.
Méthodes pour conversions entre différentes classes de gestion des entités.
Classe de base typeé des énumérateurs sur une liste d'entité connectées.
Itérateur pour la classe ItemConnectedListView.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
Classe de base des énumérateurs sur une liste d'entité.
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
Vue sur une liste pour obtenir des informations sur les entités.
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 ARCCORE_HOST_DEVICE ItemType operator[](ItemLocalIdType local_id) const
Entité de numéro local local_id.
Definition Item.h:1764
Classe pour convertir un ItemLocalId vers une entité (Item).
constexpr ARCCORE_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
Enumérateur sur un tableau de tableaux d'entités du maillage.
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
Itérateur pour la classe ItemVectorView.
Vue sur un tableau typé d'entités.
Vue sur un vecteur d'entités.
Vecteur d'entités.
Definition ItemVector.h:59
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
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
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
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
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
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
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
Definition Item.h:225
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
ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane. use itemBase() or mutableItemBase() instead") ItemInternal *internal() const
Partie interne de l'entité.
Definition Item.h:347
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
@ ARCANE_DEPRECATED_REASON
Elément de type nul.
Definition Item.h:146
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
constexpr ARCCORE_HOST_DEVICE Item(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:193
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
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Méthodes permettant de modifier ItemBase.
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)
Index d'un Node dans une variable.
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
Classe de base des énumérateurs sur les entités vectortielles (SimdItem).
Definition SimdItem.h:376
Gère un vecteur d'entité ItemType.
Definition SimdItem.h:236
Gère un vecteur d'entité Item.
Definition SimdItem.h:206
Chaîne de caractères unicode.
ItemLocalIdListViewT< Node > NodeLocalIdView
Vue sur les localId() d'une liste de noeuds.
Definition ItemTypes.h:407
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 -*-
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.
Int32 LocalIdType
Type des entiers utilisés pour stocker les identifiants locaux des entités.