Arcane  v3.14.10.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-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* Item.h (C) 2000-2024 */
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 ItemPairEnumerator;
95 template<int Extent> friend class ItemConnectedListView;
96 template<typename ItemType> friend class ItemEnumeratorBaseT;
97
98 // Pour accéder à _internal()
99 friend class ItemCompatibility;
100
101 public:
102
104
107
108 using ItemBase = impl::ItemBase;
109
110 public:
111
116 class Index
118 // TODO Rendre obsolète lorsqu'on aura supprimer
119 // les classes dérivées qui sont obsolètes.
120 // On ne peut pas le faire avant car cela génère trop
121 // d'avertissements de compilation.
122 public:
123 Index() : m_local_id(NULL_ITEM_LOCAL_ID){}
124 explicit Index(Int32 id) : m_local_id(id){}
125 Index(Item item) : m_local_id(item.localId()){}
126 operator ItemLocalId() const { return ItemLocalId{m_local_id}; }
127 public:
128 Int32 localId() const { return m_local_id; }
129 private:
130 Int32 m_local_id;
131 };
132
133 public:
134
142 enum
143 {
144 Unknown ARCANE_DEPRECATED_REASON("Use 'IT_NullType' instead") = IT_NullType,
145 Vertex ARCANE_DEPRECATED_REASON("Use 'IT_Vertex' instead") = IT_Vertex,
146 Bar2 ARCANE_DEPRECATED_REASON("Use 'IT_Line2' instead") = IT_Line2,
147 Tri3 ARCANE_DEPRECATED_REASON("Use 'IT_Triangle3' instead") = IT_Triangle3,
148 Quad4 ARCANE_DEPRECATED_REASON("Use 'IT_Quad4' instead") = IT_Quad4,
149 Pentagon5 ARCANE_DEPRECATED_REASON("Use 'IT_Pentagon5' instead") = IT_Pentagon5,
150 Hexagon6 ARCANE_DEPRECATED_REASON("Use 'IT_Hexagon6' instead") = IT_Hexagon6,
151 Tetra ARCANE_DEPRECATED_REASON("Use 'IT_Tetraedron4' instead") = IT_Tetraedron4,
152 Pyramid ARCANE_DEPRECATED_REASON("Use 'IT_Pyramid5' instead") = IT_Pyramid5,
153 Penta ARCANE_DEPRECATED_REASON("Use 'IT_Pentaedron6' instead") = IT_Pentaedron6,
154 Hexa ARCANE_DEPRECATED_REASON("Use 'IT_Hexaedron8' instead") = IT_Hexaedron8,
155 Wedge7 ARCANE_DEPRECATED_REASON("Use 'IT_Heptaedron10' instead") = IT_Heptaedron10,
156 Wedge8 ARCANE_DEPRECATED_REASON("Use 'IT_Octaedron12' instead") = IT_Octaedron12
157 // Réduit au minimum pour compatibilité.
158 };
159
161 static const Int32 NULL_ELEMENT = NULL_ITEM_ID;
162
164 ARCCORE_DEPRECATED_2021("Use ItemTypeMng::typeName() instead")
165 static String typeName(Int32 type);
166
167 protected:
168
171 : m_shared_info(shared_info), m_local_id(local_id) {}
172
173 public:
174
176 Item() = default;
177
179 //ARCANE_DEPRECATED_REASON("Remove this overload")
181 {
182 ARCANE_CHECK_PTR(ainternal);
183 m_shared_info = ainternal->m_shared_info;
184 m_local_id = ainternal->m_local_id;
185 ARCANE_ITEM_ADD_STAT(m_nb_created_from_internal);
186 }
187
188 // NOTE: Pour le constructeur suivant; il est indispensable d'utiliser
189 // const& pour éviter une ambiguité avec le constructeur par recopie
191 Item(const ItemBase& abase) : m_shared_info(abase.m_shared_info), m_local_id(abase.m_local_id) {}
192
194 Item(const ItemInternalPtr* internals,Int32 local_id)
195 : Item(local_id,internals[local_id]->m_shared_info) { ARCANE_ITEM_ADD_STAT(m_nb_created_from_internalptr); }
196
199 {
200 _set(ainternal);
201 return (*this);
202 }
203
204 public:
205
207 constexpr bool null() const { return m_local_id==NULL_ITEM_ID; }
208
210 constexpr Int32 localId() const { return m_local_id; }
211
213 constexpr ItemLocalId itemLocalId() const { return ItemLocalId{ m_local_id }; }
214
217 {
218#ifdef ARCANE_CHECK
219 if (m_local_id!=NULL_ITEM_LOCAL_ID)
220 arcaneCheckAt((Integer)m_local_id,m_shared_info->m_unique_ids.size());
221#endif
222 // Ne pas utiliser l'accesseur normal car ce tableau peut etre utilise pour la maille
223 // nulle et dans ce cas m_local_id vaut NULL_ITEM_LOCAL_ID (qui est negatif)
224 // ce qui provoque une exception pour debordement de tableau.
225 return ItemUniqueId(m_shared_info->m_unique_ids.data()[m_local_id]);
226 }
227
229 Int32 owner() const { return m_shared_info->_ownerV2(m_local_id); }
230
232 Int16 type() const { return m_shared_info->_typeId(m_local_id); }
233
235 ItemTypeId itemTypeId() const { return ItemTypeId(type()); }
236
238 IItemFamily* itemFamily() const { return m_shared_info->m_item_family; }
239
241 eItemKind kind() const { return m_shared_info->m_item_kind; }
242
244 bool isOwn() const { return (_flags() & ItemFlags::II_Own)!=0; }
245
256 bool isShared() const { return (_flags() & ItemFlags::II_Shared)!=0; }
257
259 inline ItemWithNodes toItemWithNodes() const;
261 inline Node toNode() const;
263 inline Cell toCell() const;
265 inline Edge toEdge() const;
267 inline Face toFace() const;
269 inline Particle toParticle() const;
271 inline DoF toDoF() const;
272
274 Int32 nbParent() const { return _nbParent(); }
275
277 Item parent(Int32 i) const { return m_shared_info->_parentV2(m_local_id,i); }
278
280 Item parent() const { return m_shared_info->_parentV2(m_local_id,0); }
281
282 public:
283
285 bool isItemWithNodes() const
286 {
287 eItemKind ik = kind();
288 return (ik==IK_Unknown || ik==IK_Edge || ik==IK_Face || ik==IK_Cell );
289 }
290
292 bool isNode() const
293 {
294 eItemKind ik = kind();
295 return (ik==IK_Unknown || ik==IK_Node);
296 }
298 bool isCell() const
299 {
300 eItemKind ik = kind();
301 return (ik==IK_Unknown || ik==IK_Cell);
302 }
304 bool isEdge() const
305 {
306 eItemKind ik = kind();
307 return (ik==IK_Unknown || ik==IK_Edge);
308 }
310 bool isFace() const
311 {
312 eItemKind ik = kind();
313 return (ik==IK_Unknown || ik==IK_Face);
314 }
316 bool isParticle() const
317 {
318 eItemKind ik = kind();
319 return (ik==IK_Unknown || ik==IK_Particle);
320 }
322 bool isDoF() const
323 {
324 eItemKind ik = kind();
325 return (ik==IK_Unknown || ik==IK_DoF);
326 }
327
328 public:
329
338 ARCANE_DEPRECATED_REASON("Y2024: This method is internal to Arcane. use itemBase() or mutableItemBase() instead")
339 ItemInternal* internal() const
340 {
341 if (m_local_id!=NULL_ITEM_LOCAL_ID)
342 return m_shared_info->m_items_internal[m_local_id];
343 return ItemInternal::nullItem();
344 }
345
346 public:
347
355 {
356 return impl::ItemBase(m_local_id,m_shared_info);
357 }
358
366 {
367 return impl::MutableItemBase(m_local_id,m_shared_info);
368 }
369
377 const ItemTypeInfo* typeInfo() const { return m_shared_info->typeInfoFromId(type()); }
378
379 public:
380
381 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
382 Item* operator->() { return this; }
383
384 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
385 const Item* operator->() const { return this; }
386
387 private:
388
390 ItemSharedInfo* m_shared_info = ItemSharedInfo::nullItemSharedInfoPointer;
391
392 protected:
393
400 Int32 m_local_id = NULL_ITEM_LOCAL_ID;
401
402 protected:
403
404 void _checkKind(bool is_valid) const
405 {
406 if (!is_valid)
407 _badConversion();
408 }
409 void _badConversion() const;
410 void _set(ItemInternal* ainternal)
411 {
412 _setFromInternal(ainternal);
413 }
414 void _set(const Item& rhs)
415 {
416 _setFromItem(rhs);
417 }
418
419 protected:
420
422 Int32 _flags() const { return m_shared_info->_flagsV2(m_local_id); }
424 Integer _nbNode() const { return _connectivity()->_nbNodeV2(m_local_id); }
426 Integer _nbEdge() const { return _connectivity()->_nbEdgeV2(m_local_id); }
428 Integer _nbFace() const { return _connectivity()->_nbFaceV2(m_local_id); }
430 Integer _nbCell() const { return _connectivity()->_nbCellV2(m_local_id); }
432 Int32 _nbHParent() const { return _connectivity()->_nbHParentV2(m_local_id); }
434 Int32 _nbHChildren() const { return _connectivity()->_nbHChildrenV2(m_local_id); }
436 Integer _nbParent() const { return m_shared_info->nbParent(); }
437 NodeLocalId _nodeId(Int32 index) const { return NodeLocalId(_connectivity()->_nodeLocalIdV2(m_local_id,index)); }
438 EdgeLocalId _edgeId(Int32 index) const { return EdgeLocalId(_connectivity()->_edgeLocalIdV2(m_local_id,index)); }
439 FaceLocalId _faceId(Int32 index) const { return FaceLocalId(_connectivity()->_faceLocalIdV2(m_local_id,index)); }
440 CellLocalId _cellId(Int32 index) const { return CellLocalId(_connectivity()->_cellLocalIdV2(m_local_id,index)); }
441 Int32 _hParentId(Int32 index) const { return _connectivity()->_hParentLocalIdV2(m_local_id,index); }
442 Int32 _hChildId(Int32 index) const { return _connectivity()->_hChildLocalIdV2(m_local_id,index); }
443 impl::ItemIndexedListView<DynExtent> _nodeList() const { return _connectivity()->nodeList(m_local_id); }
444 impl::ItemIndexedListView<DynExtent> _edgeList() const { return _connectivity()->edgeList(m_local_id); }
445 impl::ItemIndexedListView<DynExtent> _faceList() const { return _connectivity()->faceList(m_local_id); }
446 impl::ItemIndexedListView<DynExtent> _cellList() const { return _connectivity()->cellList(m_local_id); }
447 NodeLocalIdView _nodeIds() const { return _connectivity()->nodeLocalIdsView(m_local_id); }
448 EdgeLocalIdView _edgeIds() const { return _connectivity()->edgeLocalIdsView(m_local_id); }
449 FaceLocalIdView _faceIds() const { return _connectivity()->faceLocalIdsView(m_local_id); }
450 CellLocalIdView _cellIds() const { return _connectivity()->cellLocalIdsView(m_local_id); }
451
452 inline Node _node(Int32 index) const;
453 inline Edge _edge(Int32 index) const;
454 inline Face _face(Int32 index) const;
455 inline Cell _cell(Int32 index) const;
456
457 ItemBase _hParentBase(Int32 index) const { return _connectivity()->hParentBase(m_local_id, index, m_shared_info); }
458 ItemBase _hChildBase(Int32 index) const { return _connectivity()->hChildBase(m_local_id, index, m_shared_info); }
459 ItemBase _toItemBase() const { return ItemBase(m_local_id,m_shared_info); }
460
461 private:
462
463 ItemInternalConnectivityList* _connectivity() const
464 {
465 return m_shared_info->m_connectivity;
466 }
467 void _setFromInternal(ItemBase* rhs)
468 {
469 ARCANE_ITEM_ADD_STAT(m_nb_set_from_internal);
470 m_local_id = rhs->m_local_id;
471 m_shared_info = rhs->m_shared_info;
472 }
473 void _setFromItem(const Item& rhs)
474 {
475 m_local_id = rhs.m_local_id;
476 m_shared_info = rhs.m_shared_info;
477 }
478
479 public:
480
481 static void dumpStats(ITraceMng* tm);
482 static void resetStats();
483
484 private:
485
486 static std::atomic<int> m_nb_created_from_internal;
487 static std::atomic<int> m_nb_created_from_internalptr;
488 static std::atomic<int> m_nb_set_from_internal;
489
490 private:
491
492 ItemInternal* _internal() const
493 {
494 if (m_local_id!=NULL_ITEM_LOCAL_ID)
495 return m_shared_info->m_items_internal[m_local_id];
496 return ItemInternal::nullItem();
497 }
498};
499
500/*---------------------------------------------------------------------------*/
501/*---------------------------------------------------------------------------*/
508inline bool
509operator==(const Item& item1,const Item& item2)
510{
511 return item1.localId()==item2.localId();
512}
513
520inline bool
521operator!=(const Item& item1,const Item& item2)
522{
523 return item1.localId()!=item2.localId();
524}
525
532inline bool
533operator<(const Item& item1,const Item& item2)
534{
535 return item1.localId()<item2.localId();
536}
537
538/*---------------------------------------------------------------------------*/
539/*---------------------------------------------------------------------------*/
540
541} // End namespace Arcane
542
543/*---------------------------------------------------------------------------*/
544/*---------------------------------------------------------------------------*/
545
546#include "arcane/ItemVectorView.h"
547#include "arcane/ItemConnectedListView.h"
548
549/*---------------------------------------------------------------------------*/
550/*---------------------------------------------------------------------------*/
551
552namespace Arcane
553{
554
555/*---------------------------------------------------------------------------*/
556/*---------------------------------------------------------------------------*/
562class ARCANE_CORE_EXPORT Node
563: public Item
564{
565 using ThatClass = Node;
566 // Pour accéder aux constructeurs privés
567 friend class ItemEnumeratorBaseT<ThatClass>;
568 friend class ItemConnectedEnumeratorBaseT<ThatClass>;
569 friend class ItemVectorT<ThatClass>;
570 friend class ItemVectorViewT<ThatClass>;
571 friend class ItemConnectedListViewT<ThatClass>;
572 friend class ItemVectorViewConstIteratorT<ThatClass>;
573 friend class ItemConnectedListViewConstIteratorT<ThatClass>;
574 friend class SimdItemT<ThatClass>;
575 friend class ItemInfoListViewT<ThatClass>;
576
577 public:
578
583 class ARCANE_DEPRECATED_REASON("Y2024: Use NodeLocalId instead") Index
584 : public Item::Index
585 {
586 public:
587 typedef Item::Index Base;
588 public:
589 explicit Index(Int32 id) : Base(id){}
590 Index(Node item) : Base(item){}
591 operator NodeLocalId() const { return NodeLocalId{localId()}; }
592 };
593
594 protected:
595
598 : Item(local_id,shared_info) {}
599
600 public:
601
604
606 Node() = default;
607
610 { ARCANE_CHECK_KIND(isNode); }
611
614 { ARCANE_CHECK_KIND(isNode); }
615
617 explicit Node(const Item& aitem) : Item(aitem)
618 { ARCANE_CHECK_KIND(isNode); }
619
621 Node(const ItemInternalPtr* internals,Int32 local_id) : Item(internals,local_id)
622 { ARCANE_CHECK_KIND(isNode); }
623
626 {
627 _set(ainternal);
628 return (*this);
629 }
630
631 public:
632
634 NodeLocalId itemLocalId() const { return NodeLocalId{ m_local_id }; }
635
637 Int32 nbEdge() const { return _nbEdge(); }
638
640 Int32 nbFace() const { return _nbFace(); }
641
643 Int32 nbCell() const { return _nbCell(); }
644
646 inline Edge edge(Int32 i) const;
647
649 inline Face face(Int32 i) const;
650
652 inline Cell cell(Int32 i) const;
653
655 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
656
658 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
659
661 CellLocalId cellId(Int32 i) const { return _cellId(i); }
662
664 EdgeConnectedListViewType edges() const { return _edgeList(); }
665
667 FaceConnectedListViewType faces() const { return _faceList(); }
668
670 CellConnectedListViewType cells() const { return _cellList(); }
671
673 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
674
676 FaceLocalIdView faceIds() const { return _faceIds(); }
677
679 CellLocalIdView cellIds() const { return _cellIds(); }
680
681 // AMR
682
685 {
686 return _toItemBase()._internalActiveCells2(local_ids);
687 }
688
689 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
690 Node* operator->() { return this; }
691
692 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
693 const Node* operator->() const { return this; }
694};
695
696/*---------------------------------------------------------------------------*/
697/*---------------------------------------------------------------------------*/
698
699inline Node Item::
700_node(Int32 index) const
701{
702 return Node(_connectivity()->nodeBase(m_local_id,index));
703}
704
705/*---------------------------------------------------------------------------*/
706/*---------------------------------------------------------------------------*/
712class ARCANE_CORE_EXPORT ItemWithNodes
713: public Item
714{
715 using ThatClass = ItemWithNodes;
716 // Pour accéder aux constructeurs privés
717 friend class ItemEnumeratorBaseT<ThatClass>;
719 friend class ItemVectorT<ThatClass>;
720 friend class ItemVectorViewT<ThatClass>;
721 friend class ItemConnectedListViewT<ThatClass>;
724 friend class SimdItemT<ThatClass>;
725 friend class ItemInfoListViewT<ThatClass>;
726
727 protected:
728
731 : Item(local_id,shared_info) {}
732
733 public:
734
736 ItemWithNodes() = default;
737
740 { ARCANE_CHECK_KIND(isItemWithNodes); }
741
744 { ARCANE_CHECK_KIND(isItemWithNodes); }
745
747 explicit ItemWithNodes(const Item& aitem) : Item(aitem)
748 { ARCANE_CHECK_KIND(isItemWithNodes); }
749
752 : Item(internals,local_id)
753 { ARCANE_CHECK_KIND(isItemWithNodes); }
754
757 {
758 _set(ainternal);
759 return (*this);
760 }
761
762 public:
763
765 Int32 nbNode() const { return _nbNode(); }
766
768 Node node(Int32 i) const { return _node(i); }
769
771 NodeConnectedListViewType nodes() const { return _nodeList(); }
772
774 NodeLocalIdView nodeIds() const { return _nodeIds(); }
775
777 NodeLocalId nodeId(Int32 index) const { return _nodeId(index); }
778
779 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
780 ItemWithNodes* operator->() { return this; }
781
782 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
783 const ItemWithNodes* operator->() const { return this; }
784};
785
786/*---------------------------------------------------------------------------*/
787/*---------------------------------------------------------------------------*/
796class ARCANE_CORE_EXPORT Edge
797: public ItemWithNodes
798{
799 using ThatClass = Edge;
800 // Pour accéder aux constructeurs privés
801 friend class ItemEnumeratorBaseT<ThatClass>;
803 friend class ItemVectorT<ThatClass>;
804 friend class ItemVectorViewT<ThatClass>;
805 friend class ItemConnectedListViewT<ThatClass>;
808 friend class SimdItemT<ThatClass>;
809 friend class ItemInfoListViewT<ThatClass>;
810
811 public:
812
817 class ARCANE_DEPRECATED_REASON("Y2024: Use EdgeLocalId instead") Index
818 : public Item::Index
819 {
820 public:
821 typedef Item::Index Base;
822 public:
823 explicit Index(Int32 id) : Base(id){}
824 Index(Edge item) : Base(item){}
825 operator EdgeLocalId() const { return EdgeLocalId{localId()}; }
826 };
827
828 private:
829
832 : ItemWithNodes(local_id,shared_info) {}
833
834 public:
835
838
840 Edge() = default;
841
844 { ARCANE_CHECK_KIND(isEdge); }
845
848 { ARCANE_CHECK_KIND(isEdge); }
849
851 explicit Edge(const Item& aitem) : ItemWithNodes(aitem)
852 { ARCANE_CHECK_KIND(isEdge); }
853
855 Edge(const ItemInternalPtr* internals,Int32 local_id)
856 : ItemWithNodes(internals,local_id)
857 { ARCANE_CHECK_KIND(isEdge); }
858
861 {
862 _set(ainternal);
863 return (*this);
864 }
865
866 public:
867
869 EdgeLocalId itemLocalId() const { return EdgeLocalId{ m_local_id }; }
870
872 Int32 nbNode() const { return 2; }
873
875 Int32 nbFace() const { return _nbFace(); }
876
878 Int32 nbCell() const { return _nbCell(); }
879
881 inline Cell cell(Int32 i) const;
882
884 CellConnectedListViewType cells() const { return _cellList(); }
885
887 CellLocalId cellId(Int32 i) const { return _cellId(i); }
888
890 CellLocalIdView cellIds() const { return _cellIds(); }
891
893 inline Face face(Int32 i) const;
894
896 FaceConnectedListViewType faces() const { return _faceList(); }
897
899 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
900
902 FaceLocalIdView faceIds() const { return _faceIds(); }
903
904 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
905 Edge* operator->() { return this; }
906
907 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
908 const Edge* operator->() const { return this; }
909};
910
911/*---------------------------------------------------------------------------*/
912/*---------------------------------------------------------------------------*/
913
914inline Edge Item::
915_edge(Int32 index) const
916{
917 return Edge(_connectivity()->edgeBase(m_local_id,index));
918}
919
920/*---------------------------------------------------------------------------*/
921/*---------------------------------------------------------------------------*/
930class ARCANE_CORE_EXPORT Face
931: public ItemWithNodes
932{
933 using ThatClass = Face;
934 // Pour accéder aux constructeurs privés
935 friend class ItemEnumeratorBaseT<ThatClass>;
937 friend class ItemVectorT<ThatClass>;
938 friend class ItemVectorViewT<ThatClass>;
939 friend class ItemConnectedListViewT<ThatClass>;
942 friend class SimdItemT<ThatClass>;
943 friend class ItemInfoListViewT<ThatClass>;
944
945 public:
946
951 class ARCANE_DEPRECATED_REASON("Y2024: Use FaceLocalId instead") Index
952 : public Item::Index
953 {
954 public:
955 typedef Item::Index Base;
956 public:
957 explicit Index(Int32 id) : Base(id){}
958 Index(Face item) : Base(item){}
959 operator FaceLocalId() const { return FaceLocalId{localId()}; }
960 };
961
962 private:
963
966 : ItemWithNodes(local_id,shared_info) {}
967
968 public:
969
972
974 Face() = default;
975
978 { ARCANE_CHECK_KIND(isFace); }
979
982 { ARCANE_CHECK_KIND(isFace); }
983
985 explicit Face(const Item& aitem) : ItemWithNodes(aitem)
986 { ARCANE_CHECK_KIND(isFace); }
987
989 Face(const ItemInternalPtr* internals,Int32 local_id)
990 : ItemWithNodes(internals,local_id)
991 { ARCANE_CHECK_KIND(isFace); }
992
995 {
996 _set(ainternal);
997 return (*this);
998 }
999
1000 public:
1001
1003 FaceLocalId itemLocalId() const { return FaceLocalId{ m_local_id }; }
1004
1006 Int32 nbCell() const { return _nbCell(); }
1007
1009 inline Cell cell(Int32 i) const;
1010
1012 CellConnectedListViewType cells() const { return _cellList(); }
1013
1015 CellLocalId cellId(Int32 i) const { return _cellId(i); }
1016
1018 CellLocalIdView cellIds() const { return _cellIds(); }
1019
1025 bool isSubDomainBoundary() const { return (_flags() & ItemFlags::II_Boundary)!=0; }
1026
1031 ARCANE_DEPRECATED_118 bool isBoundary() const { return isSubDomainBoundary(); }
1032
1035 {
1036 return isSubDomainBoundary() && (_flags() & ItemFlags::II_HasBackCell);
1037 }
1038
1044 ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
1045 {
1046 return isSubDomainBoundaryOutside();
1047 }
1048
1050 inline Cell boundaryCell() const;
1051
1053 inline Cell backCell() const;
1054
1056 CellLocalId backCellId() const { return CellLocalId(_toItemBase().backCellId()); }
1057
1059 inline Cell frontCell() const;
1060
1062 CellLocalId frontCellId() const { return CellLocalId(_toItemBase().frontCellId()); }
1063
1069 inline Cell oppositeCell(Cell cell) const;
1070
1077 {
1078 ARCANE_ASSERT((backCellId()==cell_id || frontCellId()==cell_id),("cell is not connected to the face"));
1079 return (backCellId()==cell_id) ? frontCellId() : backCellId();
1080 }
1081
1090 Face masterFace() const { return _toItemBase().masterFace(); }
1091
1093 bool isMasterFace() const { return _toItemBase().isMasterFace(); }
1094
1096 bool isSlaveFace() const { return _toItemBase().isSlaveFace(); }
1097
1099 bool isTiedFace() const { return isSlaveFace() || isMasterFace(); }
1100
1108 {
1109 if (_toItemBase().isMasterFace())
1110 return _faceList();
1112 }
1113
1114 public:
1115
1117 Int32 nbEdge() const { return _nbEdge(); }
1118
1120 Edge edge(Int32 i) const { return _edge(i); }
1121
1123 EdgeConnectedListViewType edges() const { return _edgeList(); }
1124
1126 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
1127
1129 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
1130
1131 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1132 Face* operator->() { return this; }
1133
1134 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1135 const Face* operator->() const { return this; }
1136};
1137
1138/*---------------------------------------------------------------------------*/
1139/*---------------------------------------------------------------------------*/
1140
1141inline Face Item::
1142_face(Int32 index) const
1143{
1144 return Face(_connectivity()->faceBase(m_local_id,index));
1145}
1146
1147/*---------------------------------------------------------------------------*/
1148/*---------------------------------------------------------------------------*/
1176class ARCANE_CORE_EXPORT Cell
1177: public ItemWithNodes
1178{
1179 using ThatClass = Cell;
1180 // Pour accéder aux constructeurs privés
1181 friend class ItemEnumeratorBaseT<ThatClass>;
1183 friend class ItemVectorT<ThatClass>;
1184 friend class ItemVectorViewT<ThatClass>;
1185 friend class ItemConnectedListViewT<ThatClass>;
1188 friend class SimdItemT<ThatClass>;
1189 friend class ItemInfoListViewT<ThatClass>;
1190
1191 public:
1192
1197 class ARCANE_DEPRECATED_REASON("Y2024: Use CellLocalId instead") Index
1198 : public Item::Index
1199 {
1200 public:
1201 typedef Item::Index Base;
1202 public:
1203 explicit Index(Int32 id) : Base(id){}
1204 Index(Cell item) : Base(item){}
1205 operator CellLocalId() const { return CellLocalId{localId()}; }
1206 };
1207
1208 private:
1209
1212 : ItemWithNodes(local_id,shared_info) {}
1213
1214 public:
1215
1218
1220 Cell() = default;
1221
1224 { ARCANE_CHECK_KIND(isCell); }
1225
1228 { ARCANE_CHECK_KIND(isCell); }
1229
1231 explicit Cell(const Item& aitem) : ItemWithNodes(aitem)
1232 { ARCANE_CHECK_KIND(isCell); }
1233
1235 Cell(const ItemInternalPtr* internals,Int32 local_id)
1236 : ItemWithNodes(internals,local_id)
1237 { ARCANE_CHECK_KIND(isCell); }
1238
1241 {
1242 _set(ainternal);
1243 return (*this);
1244 }
1245
1246 public:
1247
1249 CellLocalId itemLocalId() const { return CellLocalId{ m_local_id }; }
1250
1252 Int32 nbFace() const { return _nbFace(); }
1253
1255 Face face(Int32 i) const { return _face(i); }
1256
1258 FaceConnectedListViewType faces() const { return _faceList(); }
1259
1261 FaceLocalId faceId(Int32 i) const { return _faceId(i); }
1262
1264 FaceLocalIdView faceIds() const { return _faceIds(); }
1265
1267 Int32 nbEdge() const { return _nbEdge(); }
1268
1270 Edge edge(Int32 i) const { return _edge(i); }
1271
1273 EdgeLocalId edgeId(Int32 i) const { return _edgeId(i); }
1274
1276 EdgeConnectedListViewType edges() const { return _edgeList(); }
1277
1279 EdgeLocalIdView edgeIds() const { return _edgeIds(); }
1280
1287 Cell hParent() const { return Cell(_hParentBase(0)); }
1288
1290 Int32 nbHParent() const { return _nbHParent(); }
1291
1293 Int32 nbHChildren() const { return _nbHChildren(); }
1294
1296 Cell hChild(Int32 i) const { return Cell(_hChildBase(i)); }
1297
1299 Cell topHParent() const { return Cell(_toItemBase().topHParentBase()); }
1300
1306 bool isActive() const { return _toItemBase().isActive(); }
1307
1308 bool isSubactive() const { return _toItemBase().isSubactive(); }
1309
1315 bool isAncestor() const { return _toItemBase().isAncestor(); }
1316
1321 bool hasHChildren() const { return _toItemBase().hasHChildren(); }
1322
1328 Int32 level() const
1329 {
1333 if (this->_nbHParent() == 0)
1334 return 0;
1336 return (this->_hParentBase(0).level() + 1);
1337 }
1338
1345 {
1346 return _toItemBase().whichChildAmI(iitem->localId());
1347 }
1348
1354 Int32 whichChildAmI(CellLocalId local_id) const
1355 {
1356 return _toItemBase().whichChildAmI(local_id);
1357 }
1358
1359 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1360 Cell* operator->() { return this; }
1361
1362 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1363 const Cell* operator->() const { return this; }
1364};
1365
1366/*---------------------------------------------------------------------------*/
1367/*---------------------------------------------------------------------------*/
1368
1369inline Cell Item::
1370_cell(Int32 index) const
1371{
1372 return Cell(_connectivity()->cellBase(m_local_id,index));
1373}
1374
1375/*---------------------------------------------------------------------------*/
1376/*---------------------------------------------------------------------------*/
1382: public Item
1383{
1384 using ThatClass = Particle;
1385 // Pour accéder aux constructeurs privés
1386 friend class ItemEnumeratorBaseT<ThatClass>;
1388 friend class ItemVectorT<ThatClass>;
1389 friend class ItemVectorViewT<ThatClass>;
1390 friend class ItemConnectedListViewT<ThatClass>;
1393 friend class SimdItemT<ThatClass>;
1394 friend class ItemInfoListViewT<ThatClass>;
1395
1396 private:
1397
1400 : Item(local_id,shared_info) {}
1401
1402 public:
1403
1406
1408 Particle() = default;
1409
1412 { ARCANE_CHECK_KIND(isParticle); }
1413
1416 { ARCANE_CHECK_KIND(isParticle); }
1417
1419 explicit Particle(const Item& aitem) : Item(aitem)
1420 { ARCANE_CHECK_KIND(isParticle); }
1421
1423 Particle(const ItemInternalPtr* internals,Int32 local_id)
1424 : Item(internals,local_id)
1425 { ARCANE_CHECK_KIND(isParticle); }
1426
1429 {
1430 _set(ainternal);
1431 return (*this);
1432 }
1433
1434 public:
1435
1438
1444 Cell cell() const { return _cell(0); }
1445
1447 CellLocalId cellId() const { return _cellId(0); }
1448
1450 bool hasCell() const { return (_cellId(0).localId()!=NULL_ITEM_LOCAL_ID); }
1451
1458 {
1459 Int32 cell_local_id = _cellId(0).localId();
1460 if (cell_local_id==NULL_ITEM_LOCAL_ID)
1461 return Cell();
1462 return _cell(0);
1463 }
1464
1465 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1466 Particle* operator->() { return this; }
1467
1468 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1469 const Particle* operator->() const { return this; }
1470};
1471
1472/*---------------------------------------------------------------------------*/
1473/*---------------------------------------------------------------------------*/
1486class DoF
1487: public Item
1488{
1489 using ThatClass = DoF;
1490 // Pour accéder aux constructeurs privés
1491 friend class ItemEnumeratorBaseT<ThatClass>;
1493 friend class ItemVectorT<ThatClass>;
1494 friend class ItemVectorViewT<ThatClass>;
1495 friend class ItemConnectedListViewT<ThatClass>;
1498 friend class SimdItemT<ThatClass>;
1499 friend class ItemInfoListViewT<ThatClass>;
1500
1501 private:
1502
1505 : Item(local_id,shared_info) {}
1506
1507
1508 public:
1509
1510 using LocalIdType = DoFLocalId;
1511
1513 DoF() = default;
1514
1517 { ARCANE_CHECK_KIND(isDoF); }
1518
1521 { ARCANE_CHECK_KIND(isDoF); }
1522
1524 explicit DoF(const Item& aitem) : Item(aitem)
1525 { ARCANE_CHECK_KIND(isDoF); }
1526
1528 DoF(const ItemInternalPtr* internals,Int32 local_id)
1529 : Item(internals,local_id)
1530 { ARCANE_CHECK_KIND(isDoF); }
1531
1534 {
1535 _set(ainternal);
1536 return (*this);
1537 }
1538
1539 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1540 DoF* operator->() { return this; }
1541
1542 ARCANE_DEPRECATED_REASON("Y2022: Do not use this operator. Use operator '.' instead")
1543 const DoF* operator->() const { return this; }
1544
1547};
1548
1549/*---------------------------------------------------------------------------*/
1550/*---------------------------------------------------------------------------*/
1551
1552/*---------------------------------------------------------------------------*/
1553/*---------------------------------------------------------------------------*/
1554
1556edge(Int32 i) const
1557{
1558 return _edge(i);
1559}
1560
1562face(Int32 i) const
1563{
1564 return _face(i);
1565}
1566
1568cell(Int32 i) const
1569{
1570 return _cell(i);
1571}
1572
1573/*---------------------------------------------------------------------------*/
1574/*---------------------------------------------------------------------------*/
1575
1577face(Int32 i) const
1578{
1579 return _face(i);
1580}
1581
1583cell(Int32 i) const
1584{
1585 return _cell(i);
1586}
1587
1588/*---------------------------------------------------------------------------*/
1589/*---------------------------------------------------------------------------*/
1590
1592boundaryCell() const
1593{
1594 return Cell(_toItemBase().boundaryCell());
1595}
1596
1598backCell() const
1599{
1600 return Cell(_toItemBase().backCell());
1601}
1602
1604frontCell() const
1605{
1606 return Cell(_toItemBase().frontCell());
1607}
1608
1610oppositeCell(Cell cell) const
1611{
1612 ARCANE_ASSERT((backCell()==cell || frontCell()==cell),("cell is not connected to the face"));
1613 return (backCell()==cell) ? frontCell() : backCell();
1614}
1615
1617cell(Int32 i) const
1618{
1619 return _cell(i);
1620}
1621
1622/*---------------------------------------------------------------------------*/
1623/*---------------------------------------------------------------------------*/
1624
1626toItemWithNodes() const
1627{
1628 ARCANE_CHECK_KIND(isItemWithNodes);
1629 return ItemWithNodes(*this);
1630}
1631
1633toNode() const
1634{
1635 ARCANE_CHECK_KIND(isNode);
1636 return Node(*this);
1637}
1638
1640toEdge() const
1641{
1642 ARCANE_CHECK_KIND(isEdge);
1643 return Edge(*this);
1644}
1645
1647toFace() const
1648{
1649 ARCANE_CHECK_KIND(isFace);
1650 return Face(*this);
1651}
1652
1654toCell() const
1655{
1656 ARCANE_CHECK_KIND(isCell);
1657 return Cell(*this);
1658}
1659
1661toParticle() const
1662{
1663 ARCANE_CHECK_KIND(isParticle);
1664 return Particle(*this);
1665}
1666
1668toDoF() const
1669{
1670 ARCANE_CHECK_KIND(isDoF);
1671 return DoF(*this);
1672}
1673
1674/*---------------------------------------------------------------------------*/
1675/*---------------------------------------------------------------------------*/
1676
1677inline ItemLocalId::
1678ItemLocalId(Item item)
1679: m_local_id(item.localId())
1680{
1681}
1682
1683template<typename ItemType> inline ItemLocalIdT<ItemType>::
1684ItemLocalIdT(ItemType item)
1685: ItemLocalId(item.localId())
1686{
1687}
1688
1689/*---------------------------------------------------------------------------*/
1690/*---------------------------------------------------------------------------*/
1691
1693operator[](ItemLocalId local_id) const
1694{
1695 return Item(local_id.localId(), m_item_shared_info);
1696}
1697
1698/*---------------------------------------------------------------------------*/
1699/*---------------------------------------------------------------------------*/
1700
1702operator[](Int32 local_id) const
1703{
1704 return Item(local_id, m_item_shared_info);
1705}
1706
1707/*---------------------------------------------------------------------------*/
1708/*---------------------------------------------------------------------------*/
1709
1710template<typename ItemType> inline ItemType ItemInfoListViewT<ItemType>::
1711operator[](ItemLocalId local_id) const
1712{
1713 return ItemType(local_id.localId(), m_item_shared_info);
1714}
1715
1716/*---------------------------------------------------------------------------*/
1717/*---------------------------------------------------------------------------*/
1718
1719template<typename ItemType> inline ItemType ItemInfoListViewT<ItemType>::
1720operator[](Int32 local_id) const
1721{
1722 return ItemType(local_id, m_item_shared_info);
1723}
1724
1725/*---------------------------------------------------------------------------*/
1726/*---------------------------------------------------------------------------*/
1727
1728} // End namespace Arcane
1729
1730/*---------------------------------------------------------------------------*/
1731/*---------------------------------------------------------------------------*/
1732
1733#include "arcane/ItemCompatibility.h"
1734
1735/*---------------------------------------------------------------------------*/
1736/*---------------------------------------------------------------------------*/
1737
1738#endif
Déclarations de types sur les entités.
Tableau d'items de types quelconques.
Maille d'un maillage.
Definition Item.h:1178
Cell topHParent() const
parent de niveau 0 pour l'AMR
Definition Item.h:1299
Int32 nbEdge() const
Nombre d'arêtes de la maille.
Definition Item.h:1267
Cell(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1231
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Definition Item.h:1258
Int32 nbHChildren() const
Nombre d'enfants pour l'AMR.
Definition Item.h:1293
bool isAncestor() const
Definition Item.h:1315
Cell(Int32 local_id, ItemSharedInfo *shared_info)
Index d'une Cell dans une variable.
Definition Item.h:1211
Face face(Int32 i) const
i-ème face de la maille
Definition Item.h:1255
FaceLocalIdView faceIds() const
Liste des faces de la maille.
Definition Item.h:1264
Cell(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1223
Int32 nbFace() const
Nombre de faces de la maille.
Definition Item.h:1252
Cell & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1240
Cell(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1235
CellLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1249
EdgeLocalIdView edgeIds() const
Liste des arêtes de la maille.
Definition Item.h:1279
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la maille
Definition Item.h:1273
Int32 whichChildAmI(const ItemInternal *iitem) const
Definition Item.h:1344
Cell hChild(Int32 i) const
i-ème enfant AMR
Definition Item.h:1296
bool hasHChildren() const
Definition Item.h:1321
Cell(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1227
Edge edge(Int32 i) const
i-ème arête de la maille
Definition Item.h:1270
Cell()=default
Constructeur d'une maille nulle.
Int32 whichChildAmI(CellLocalId local_id) const
Definition Item.h:1354
FaceLocalId faceId(Int32 i) const
i-ème face de la maille
Definition Item.h:1261
bool isActive() const
Definition Item.h:1306
Int32 level() const
Definition Item.h:1328
Cell hParent() const
Definition Item.h:1287
EdgeConnectedListViewType edges() const
Liste des arêtes de la maille.
Definition Item.h:1276
Int32 nbHParent() const
Nombre de parent pour l'AMR.
Definition Item.h:1290
CellLocalId LocalIdType
Type du localId()
Definition Item.h:1217
classe degré de liberté.
Definition Item.h:1488
DoF(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1528
DoF()=default
Constructeur d'une maille non connectée.
DoF(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1520
DoF(const Item &aitem)
Construit une référence à l'entité abase.
Definition Item.h:1524
DoFLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1546
DoF & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1533
DoF(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1516
DoF(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1504
Arête d'une maille.
Definition Item.h:798
FaceConnectedListViewType faces() const
Liste des faces de l'arête.
Definition Item.h:896
CellConnectedListViewType cells() const
Liste des mailles de l'arête.
Definition Item.h:884
Cell cell(Int32 i) const
i-ème maille de l'arête
Definition Item.h:1583
Edge(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:847
Face face(Int32 i) const
i-ème face de l'arête
Definition Item.h:1577
Edge(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:855
FaceLocalIdView faceIds() const
Liste des faces de l'arête.
Definition Item.h:902
Edge & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:860
Int32 nbFace() const
Nombre de faces connectées à l'arête.
Definition Item.h:875
CellLocalIdView cellIds() const
Liste des mailles de l'arête.
Definition Item.h:890
Edge(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:851
Edge()=default
Créé une arête nulle.
FaceLocalId faceId(Int32 i) const
i-ème face de l'arête
Definition Item.h:899
Edge(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:843
EdgeLocalId LocalIdType
Type du localId()
Definition Item.h:837
Edge(Int32 local_id, ItemSharedInfo *shared_info)
Index d'une Edge dans une variable.
Definition Item.h:831
Int32 nbNode() const
Nombre de sommets de l'arête.
Definition Item.h:872
CellLocalId cellId(Int32 i) const
i-ème maille de l'arête
Definition Item.h:887
Int32 nbCell() const
Nombre de mailles connectées à l'arête.
Definition Item.h:878
EdgeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:869
Face d'une maille.
Definition Item.h:932
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:1093
FaceLocalId LocalIdType
Type du localId()
Definition Item.h:971
CellLocalId frontCellId() const
Maille devant la face (maille nulle si aucune)
Definition Item.h:1062
Face(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:981
Cell frontCell() const
Maille devant la face (maille nulle si aucune)
Definition Item.h:1604
CellLocalId cellId(Int32 i) const
i-ème maille de la face
Definition Item.h:1015
EdgeLocalIdView edgeIds() const
Liste des arêtes de la face.
Definition Item.h:1129
Cell cell(Int32 i) const
i-ème maille de la face
Definition Item.h:1617
Int32 nbCell() const
Nombre de mailles de la face (1 ou 2)
Definition Item.h:1006
ARCANE_DEPRECATED_118 bool isBoundary() const
Definition Item.h:1031
FaceConnectedListViewType slaveFaces() const
Liste des faces esclaves associées à cette face maître.
Definition Item.h:1107
ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Definition Item.h:1044
EdgeConnectedListViewType edges() const
Liste des arêtes de la face.
Definition Item.h:1123
bool isSubDomainBoundary() const
Indique si la face est au bord du sous-domaine (i.e nbCell()==1)
Definition Item.h:1025
Face(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:985
FaceLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1003
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la face
Definition Item.h:1126
CellConnectedListViewType cells() const
Liste des mailles de la face.
Definition Item.h:1012
Face masterFace() const
Face maître associée à cette face.
Definition Item.h:1090
bool isSlaveFace() const
true s'il s'agit d'une face esclave d'une interface
Definition Item.h:1096
Edge edge(Int32 i) const
i-ème arête de la face
Definition Item.h:1120
CellLocalId backCellId() const
Maille derrière la face (maille nulle si aucune)
Definition Item.h:1056
Face(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:989
bool isSubDomainBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Definition Item.h:1034
Face(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:977
Cell boundaryCell() const
Maille associée à cette face frontière (maille nulle si aucune)
Definition Item.h:1592
Int32 nbEdge() const
Nombre d'arêtes de la face.
Definition Item.h:1117
bool isTiedFace() const
true s'il s'agit d'une face esclave ou maître d'une interface
Definition Item.h:1099
Face(Int32 local_id, ItemSharedInfo *shared_info)
Index d'une Face dans une variable.
Definition Item.h:965
CellLocalIdView cellIds() const
Liste des mailles de la face.
Definition Item.h:1018
Face & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:994
Cell backCell() const
Maille derrière la face (maille nulle si aucune)
Definition Item.h:1598
Cell oppositeCell(Cell cell) const
Maille opposée de cette face à la maille cell.
Definition Item.h:1610
CellLocalId oppositeCellId(CellLocalId cell_id) const
Maille opposée de cette face à la maille cell.
Definition Item.h:1076
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:1711
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:1693
Structure interne d'une entité de maillage.
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
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:714
ItemWithNodes(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:751
NodeLocalId nodeId(Int32 index) const
i-ème noeud de l'entité.
Definition Item.h:777
ItemWithNodes(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:743
Node node(Int32 i) const
i-ème noeud de l'entité
Definition Item.h:768
ItemWithNodes(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:730
ItemWithNodes(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:747
NodeConnectedListViewType nodes() const
Liste des noeuds de l'entité
Definition Item.h:771
ItemWithNodes(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:739
ItemWithNodes()=default
Création d'une entité non connectée au maillage.
Int32 nbNode() const
Nombre de noeuds de l'entité
Definition Item.h:765
NodeLocalIdView nodeIds() const
Liste des noeuds de l'entité
Definition Item.h:774
ItemWithNodes & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:756
Index d'un Item dans une variable.
Definition Item.h:117
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:274
const ItemTypeInfo * typeInfo() const
Infos sur le type de l'entité.
Definition Item.h:377
impl::MutableItemBase mutableItemBase() const
Partie interne modifiable de l'entité.
Definition Item.h:365
Int32 _nbHParent() const
Nombre de parent pour l'AMR.
Definition Item.h:432
bool isItemWithNodes() const
true si l'entité est du genre ItemWithNodes.
Definition Item.h:285
Item(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:180
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:426
Integer _nbNode() const
Nombre de noeuds de l'entité
Definition Item.h:424
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:210
Edge toEdge() const
Converti l'entité en le genre Edge.
Definition Item.h:1640
Item(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:194
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:244
bool isCell() const
true si l'entité est du genre Cell.
Definition Item.h:298
Int32 owner() const
Numéro du sous-domaine propriétaire de l'entité
Definition Item.h:229
ItemLocalId LocalIdType
Type du localId()
Definition Item.h:106
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:428
ItemWithNodes toItemWithNodes() const
Converti l'entité en le genre ItemWithNodes.
Definition Item.h:1626
DoF toDoF() const
Converti l'entité en le genre DoF.
Definition Item.h:1668
Cell toCell() const
Converti l'entité en le genre Cell.
Definition Item.h:1654
eItemKind kind() const
Genre de l'entité
Definition Item.h:241
IItemFamily * itemFamily() const
Famille dont est issue l'entité
Definition Item.h:238
Particle toParticle() const
Converti l'entité en le genre Particle.
Definition Item.h:1661
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
Definition Item.h:216
constexpr bool null() const
true si l'entité est nul (i.e. non connecté au maillage)
Definition Item.h:207
Int32 _flags() const
Flags de l'entité
Definition Item.h:422
constexpr ItemLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:213
bool isFace() const
true si l'entité est du genre Edge.
Definition Item.h:310
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:338
Face toFace() const
Converti l'entité en le genre Edge.
Definition Item.h:1647
bool isNode() const
true si l'entité est du genre Node.
Definition Item.h:292
Integer _nbParent() const
Nombre de parent pour les sous-maillages.
Definition Item.h:436
Integer _nbCell() const
Nombre de mailles connectées à l'entité (pour les noeuds, arêtes et faces)
Definition Item.h:430
bool isEdge() const
true si l'entité est du genre Edge.
Definition Item.h:304
Item parent(Int32 i) const
i-ème parent pour les sous-maillages
Definition Item.h:277
ItemTypeId itemTypeId() const
Type de l'entité
Definition Item.h:235
Item parent() const
premier parent pour les sous-maillages
Definition Item.h:280
bool isDoF() const
true is l'entité est du genre DoF
Definition Item.h:322
Int32 m_local_id
Numéro local (au sous-domaine) de l'entité.
Definition Item.h:400
impl::ItemBase itemBase() const
Partie interne de l'entité.
Definition Item.h:354
@ ARCANE_DEPRECATED_REASON
Elément de type nul.
Definition Item.h:144
bool isShared() const
Vrai si l'entité est partagé d'autres sous-domaines.
Definition Item.h:256
bool isParticle() const
true is l'entité est du genre Particle.
Definition Item.h:316
Int32 _nbHChildren() const
Nombre d' enfants pour l'AMR.
Definition Item.h:434
Int16 type() const
Type de l'entité
Definition Item.h:232
Item & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:198
Node toNode() const
Converti l'entité en le genre Node.
Definition Item.h:1633
Item(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:191
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Méthodes permettant de modifier ItemBase.
Noeud d'un maillage.
Definition Dom.h:204
Cell cell(Int32 i) const
i-ème maille du noeud
Definition Item.h:1568
FaceLocalIdView faceIds() const
Liste des faces du noeud.
Definition Item.h:676
Node(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:621
CellConnectedListViewType cells() const
Liste des mailles du noeud.
Definition Item.h:670
CellVectorView _internalActiveCells(Int32Array &local_ids) const
Enumére les mailles connectées au noeud.
Definition Item.h:684
Node(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:609
EdgeLocalIdView edgeIds() const
Liste des arêtes du noeud.
Definition Item.h:673
Node(Int32 local_id, ItemSharedInfo *shared_info)
Index d'un Node dans une variable.
Definition Item.h:597
NodeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:634
Node(const Item &aitem)
Construit une référence à l'entité abase.
Definition Item.h:617
FaceLocalId faceId(Int32 i) const
i-ème face du noeud
Definition Item.h:658
FaceConnectedListViewType faces() const
Liste des faces du noeud.
Definition Item.h:667
Node & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:625
Face face(Int32 i) const
i-ème face du noeud
Definition Item.h:1562
Int32 nbEdge() const
Nombre d'arêtes connectées au noeud.
Definition Item.h:637
Node(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:613
CellLocalIdView cellIds() const
Liste des mailles du noeud.
Definition Item.h:679
Edge edge(Int32 i) const
i-ème arête du noeud
Definition Item.h:1556
Int32 nbFace() const
Nombre de faces connectées au noeud.
Definition Item.h:640
Int32 nbCell() const
Nombre de mailles connectées au noeud.
Definition Item.h:643
EdgeConnectedListViewType edges() const
Liste des arêtes du noeud.
Definition Item.h:664
CellLocalId cellId(Int32 i) const
i-ème maille du noeud
Definition Item.h:661
EdgeLocalId edgeId(Int32 i) const
i-ème arête du noeud
Definition Item.h:655
NodeLocalId LocalIdType
Type du localId()
Definition Item.h:603
Particule.
Definition Item.h:1383
Particle(const ItemBase &abase)
Construit une référence à l'entité abase.
Definition Item.h:1415
Particle()=default
Constructeur d'une particule nulle.
bool hasCell() const
Vrai si la particule est dans une maille du maillage.
Definition Item.h:1450
Particle(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Definition Item.h:1399
ParticleLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:1437
Cell cell() const
Maille à laquelle appartient la particule. Il faut appeler setCell() avant d'appeler cette fonction....
Definition Item.h:1444
CellLocalId cellId() const
Maille connectée à la particule.
Definition Item.h:1447
Particle(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
Definition Item.h:1423
Cell cellOrNull() const
Maille à laquelle appartient la particule ou maille nulle. Retourne cell() si la particule est dans u...
Definition Item.h:1457
Particle & operator=(ItemInternal *ainternal)
Opérateur de copie.
Definition Item.h:1428
ParticleLocalId LocalIdType
Type du localId()
Definition Item.h:1405
Particle(const Item &aitem)
Construit une référence à l'entité aitem.
Definition Item.h:1419
Particle(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Definition Item.h:1411
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:533
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.