12#ifndef ARCANE_CORE_MATERIALS_CONSTITUENTITEM_H
13#define ARCANE_CORE_MATERIALS_CONSTITUENTITEM_H
17#include "arcane/core/materials/ComponentItemInternal.h"
19#include "arcane/Item.h"
57 friend MeshMaterialMng;
61 friend ConstituentItemVectorImpl;
66 : m_constituent_item_index(
mii.m_constituent_item_index)
67 , m_shared_info(
mii.m_shared_info)
72#ifndef ARCCORE_DEVICE_CODE
73 m_shared_info = ComponentItemSharedInfo::_nullInstance();
113 return Cell(m_shared_info->_globalItemBase(m_constituent_item_index));
119 return CellLocalId(m_shared_info->_globalItemId(m_constituent_item_index));
130 Int64
componentUniqueId()
const {
return m_shared_info->_componentUniqueId(m_constituent_item_index); }
136 ARCANE_CORE_EXPORT
friend std::ostream&
144#if !defined(ARCCORE_DEVICE_CODE)
156 return m_shared_info->_subItemBase(m_constituent_item_index, index);
158 ARCCORE_HOST_DEVICE matimpl::ConstituentItemBase _superItemBase()
const
160 return m_shared_info->_superItemBase(m_constituent_item_index);
162 ARCCORE_HOST_DEVICE ConstituentItemIndex _firstSubConstituentLocalId()
const
164 return m_shared_info->_firstSubConstituentLocalId(m_constituent_item_index);
169 ConstituentItemIndex m_constituent_item_index;
170 ComponentItemSharedInfo* m_shared_info =
nullptr;
175 ARCCORE_HOST_DEVICE ConstituentItemIndex _constituentItemIndex()
const
177 return m_constituent_item_index;
200 using iterator_category = std::forward_iterator_tag;
206 : m_index(enumerator.m_index)
207 , m_size(enumerator.m_size)
208 , m_first_sub_index(enumerator.m_first_sub_index)
209 , m_sub_constituent_shared_info(enumerator.m_sub_constituent_shared_info)
217 ARCANE_CHECK_AT(m_index, m_size);
226 return x.m_index == x.m_size;
233 Int32 m_first_sub_index = -1;
244 return m_sub_constituent_shared_info->_varIndex(
ConstituentItemIndex(m_first_sub_index + m_index));
248 template <
typename ConstituentItemType>
266 ARCANE_CHECK_AT(m_index, m_size);
275 , m_first_sub_index(
super_item._firstSubConstituentLocalId().localId())
276 , m_sub_constituent_shared_info(
super_item.m_shared_info->m_sub_component_item_shared_info)
285 ARCCORE_HOST_DEVICE ComponentCell operator*()
const
287 ARCANE_CHECK_AT(m_index, m_size);
288 return ComponentCell(_currentSubItemBase());
290 ARCCORE_HOST_DEVICE MatVarIndex _varIndex()
const
292 return m_sub_constituent_shared_info->_varIndex(ConstituentItemIndex(m_first_sub_index + m_index));
294 ARCCORE_HOST_DEVICE
Int32 index()
const {
return m_index; }
295 ARCCORE_HOST_DEVICE
operator ComponentItemLocalId()
const
297 return ComponentItemLocalId(_varIndex());
299 ARCCORE_HOST_DEVICE Iterator begin()
const {
return Iterator(*
this); }
300 ARCCORE_HOST_DEVICE Sentinel end()
const {
return {}; }
306 Int32 m_first_sub_index = -1;
307 ComponentItemSharedInfo* m_sub_constituent_shared_info =
nullptr;
311 ARCCORE_HOST_DEVICE matimpl::ConstituentItemBase _currentSubItemBase()
const
313 return m_sub_constituent_shared_info->_item(ConstituentItemIndex(m_first_sub_index + m_index));
339 ARCANE_CHECK_AT(m_index, m_size);
Maille arcane avec info matériaux et milieux.
Enumérateur typés sur les mailles composants d'une maille.
Enumérateur sur les constituants d'une maille.
Index d'un ConstituentItem dans une variable.
Représente un composant d'une maille multi-matériau.
__host__ __device__ CellLocalId globalCellId() const
localId() de la maille globale
__host__ __device__ bool null() const
Indique s'il s'agit de la maille nulle.
__host__ __device__ Int32 componentId() const
Identifiant du composant dans la liste des composants de ce type.
Int64 componentUniqueId() const
Numéro unique de l'entité constituant.
__host__ __device__ Int32 nbSubItem() const
Nombre de sous-éléments.
__host__ __device__ CellComponentCellEnumerator subItems() const
Liste des sous-constituents de cette entité
Cell globalCell() const
Maille globale.
__host__ __device__ ComponentCell superCell() const
Maille de niveau supérieur dans la hiérarchie.
IMeshComponent * component() const
Constituant associé.
__host__ __device__ Int32 level() const
Niveau hiérarchique de l'entité
Vecteur sur les entités d'un milieu.
Maille arcane d'un milieu.
Interface d'un composant (matériau ou milieu) d'un maillage.
Vecteur sur les entités d'un matériau.
Représente un matériau d'une maille multi-matériau.
Représente un index sur les variables matériaux et milieux.
Référence à une instance.
bool isNull() const
Indique si le compteur référence une instance non nulle.
Active toujours les traces dans les parties Arcane concernant les matériaux.
Real2 operator*(Real sca, const Real2Proxy &vec)
Multiplication par un scalaire.