Arcane  v3.16.9.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/ComponentItemVector.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/* ComponentItemVector.h (C) 2000-2025 */
9/* */
10/* Vecteur sur des entités constituants. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_COMPONENTITEMVECTOR_H
13#define ARCANE_CORE_MATERIALS_COMPONENTITEMVECTOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Ref.h"
20
21#include "arcane/core/ItemGroup.h"
22
23#include "arcane/core/materials/IMeshComponent.h"
24#include "arcane/core/materials/ComponentItemVectorView.h"
25#include "arcane/core/materials/ComponentPartItemVectorView.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::Materials
31{
32class ConstituentItemLocalIdList;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36/*!
37 * \brief Interface pour l'implémentation de ComponentItemVector.
38 */
40{
41 friend class ComponentItemVector;
43
44 public:
45
46 virtual ~IConstituentItemVectorImpl() = default;
47
48 protected:
49
50 virtual ComponentItemVectorView _view() const = 0;
51 virtual ComponentPurePartItemVectorView _pureItems() const = 0;
52 virtual ComponentImpurePartItemVectorView _impureItems() const = 0;
53 virtual ConstArrayView<Int32> _localIds() const = 0;
54 virtual IMeshMaterialMng* _materialMng() const = 0;
55 virtual IMeshComponent* _component() const = 0;
56 virtual ConstArrayView<MatVarIndex> _matvarIndexes() const = 0;
57 virtual ConstituentItemLocalIdListView _constituentItemListView() const = 0;
58 virtual void _setItems(SmallSpan<const Int32> local_ids) = 0;
59};
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
63/*!
64 * \brief Vecteur sur les entités d'un constituant.
65 *
66 * \warning Ce vecteur n'est valide que tant que le milieu et le groupe support
67 * ne change pas.
68 *
69 * Cette classe est similaire à la classe ItemVector mais contient une liste
70 * d'entités d'un constituant (IMeshComponent). Toutes les entités doivent
71 * appartenir au même constituant.
72 *
73 * Les instances de cette classe ne sont en général pas construit
74 * directement sauf s'il s'agit de copies. Pour la création d'origine, il
75 * faut utilise MatCellVector ou EnvCellVector.
76 *
77 * Cette classe utilise une sémantique par référence. Pour effectuer une copie,
78 * il faut utiliser la commande clone() ou construire un objet via une vue:
79 *
80 \code
81 * ComponentItemVector v1 = ...;
82 * ComponentItemVector v2 = v1; // v2 fait référence à v1
83 * ComponentItemVector v3 = v1.clone(); // v3 est une copie de v1
84 * ComponentItemVector v4 = v1.view(); // v4 est une copie de v1
85 \endcode
86 */
87class ARCANE_CORE_EXPORT ComponentItemVector
88{
89 public:
90
91 //! Constructeur de recopie. Cette instance fait ensuite référence à \a rhs
93
94 //! Opérateur de recopie
96
97 protected:
98
99 //! Construit un vecteur pour le constituant \a component
101 //! Constructeur de recopie. Cette instance est une copie de \a rhs.
103
104 public:
105
106 //! Conversion vers une vue sur ce vecteur
107 operator ComponentItemVectorView() const
108 {
109 return view();
110 }
111
112 //! Vue sur ce vecteur
113 ComponentItemVectorView view() const;
114
115 //! Constituant associé
116 IMeshComponent* component() const { return _component(); }
117
118 //! Clone ce vecteur
120
121 public:
122
123 //! Liste des entités pures (associées à la maille globale) du constituant
124 ComponentPurePartItemVectorView pureItems() const;
125 //! Liste des entités impures (partielles) du constituant
126 ComponentImpurePartItemVectorView impureItems() const;
127
128 protected:
129
130 ConstArrayView<MatVarIndex> _matvarIndexes() const;
131 ConstituentItemLocalIdListView _constituentItemListView() const;
132
133 protected:
134
135 void _setItems(SmallSpan<const Int32> local_ids);
136 ConstArrayView<Int32> _localIds() const;
137 IMeshMaterialMng* _materialMng() const;
138 IMeshComponent* _component() const;
139
140 private:
141
143};
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
148} // End namespace Arcane::Materials
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152
153#endif
154
#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour déclarer les méthodes virtuelles gérant les compteurs de référence.
Vue constante d'un tableau de type T.
Vue sur un vecteur sur les entités d'un composant.
ComponentItemVectorView view() const
Vue sur ce vecteur.
IMeshComponent * component() const
Constituant associé
ComponentItemVector(const ComponentItemVector &rhs)=default
Constructeur de recopie. Cette instance fait ensuite référence à rhs.
ComponentItemVector clone() const
Clone ce vecteur.
ComponentItemVector & operator=(const ComponentItemVector &)=default
Opérateur de recopie.
Interface pour l'implémentation de ComponentItemVector.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
Active toujours les traces dans les parties Arcane concernant les matériaux.