Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
core/materials/MatItem.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/* MatItem.h (C) 2000-2024 */
9/* */
10/* Entités matériau et milieux. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_MATITEM_H
13#define ARCANE_CORE_MATERIALS_MATITEM_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/Item.h"
18
19#include "arcane/core/materials/ComponentItem.h"
20#include "arcane/core/materials/ComponentItemInternal.h"
21#include "arcane/core/materials/IMeshMaterial.h"
22#include "arcane/core/materials/IMeshEnvironment.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane::Materials
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
48: public ComponentCell
49{
50 public:
51
52 ARCCORE_HOST_DEVICE MatCell(const matimpl::ConstituentItemBase& item_base)
54 {
55#ifdef ARCANE_CHECK
56 _checkLevel(item_base,LEVEL_MATERIAL);
57#endif
58 }
59
60 explicit ARCCORE_HOST_DEVICE MatCell(const ComponentCell& item)
61 : MatCell(item.constituentItemBase())
62 {
63 }
64
65 MatCell() = default;
66
67 public:
68
70 ARCCORE_HOST_DEVICE inline EnvCell envCell() const;
71
73 IMeshMaterial* material() const { return _material(); }
74
76 IUserMeshMaterial* userMaterial() const { return _material()->userMaterial(); }
77
79 ARCCORE_HOST_DEVICE Int32 materialId() const { return componentId(); }
80
81 private:
82
83 IMeshMaterial* _material() const { return static_cast<IMeshMaterial*>(component()); }
84};
85
86/*---------------------------------------------------------------------------*/
87/*---------------------------------------------------------------------------*/
105: public ComponentCell
106{
107 public:
108
109 explicit ARCCORE_HOST_DEVICE EnvCell(const matimpl::ConstituentItemBase& item_base)
111 {
112#ifdef ARCANE_CHECK
113 _checkLevel(item_base,LEVEL_ENVIRONMENT);
114#endif
115 }
116 explicit ARCCORE_HOST_DEVICE EnvCell(const ComponentCell& item)
117 : EnvCell(item.constituentItemBase())
118 {
119 }
120 EnvCell() = default;
121
122 public:
123
124 // Nombre de matériaux du milieu présents dans la maille
125 ARCCORE_HOST_DEVICE Int32 nbMaterial() const { return nbSubItem(); }
126
128 ARCCORE_HOST_DEVICE inline AllEnvCell allEnvCell() const;
129
131 ARCCORE_HOST_DEVICE inline MatCell cell(Integer i) const { return _subItemBase(i); }
132
134 IMeshEnvironment* environment() const { return _environment(); }
135
137 ARCCORE_HOST_DEVICE Int32 environmentId() const { return componentId(); }
138
140 ARCCORE_HOST_DEVICE CellMatCellEnumerator subMatItems() const
141 {
142 return CellMatCellEnumerator(*this);
143 }
144
145 private:
146
147 IMeshEnvironment* _environment() const { return static_cast<IMeshEnvironment*>(component()); }
148};
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
165: public ComponentCell
166{
167 public:
168
169 explicit ARCCORE_HOST_DEVICE AllEnvCell(const matimpl::ConstituentItemBase& item_base)
171 {
172#if defined(ARCANE_CHECK)
173 _checkLevel(item_base,LEVEL_ALLENVIRONMENT);
174#endif
175 }
176
177 explicit ARCCORE_HOST_DEVICE AllEnvCell(const ComponentCell& item)
178 : AllEnvCell(item.constituentItemBase())
179 {
180 }
181
182 AllEnvCell() = default;
183
184 public:
185
187 ARCCORE_HOST_DEVICE Int32 nbEnvironment() const { return nbSubItem(); }
188
190 EnvCell cell(Int32 i) const { return EnvCell(_subItemBase(i)); }
191
193 ARCCORE_HOST_DEVICE CellEnvCellEnumerator subEnvItems() const
194 {
195 return CellEnvCellEnumerator(*this);
196 }
197};
198
199/*---------------------------------------------------------------------------*/
200/*---------------------------------------------------------------------------*/
201
202ARCCORE_HOST_DEVICE inline EnvCell MatCell::
203envCell() const
204{
205 return EnvCell(_superItemBase());
206}
207
208/*---------------------------------------------------------------------------*/
209/*---------------------------------------------------------------------------*/
210
211ARCCORE_HOST_DEVICE inline AllEnvCell EnvCell::
212allEnvCell() const
213{
214 return AllEnvCell(_superItemBase());
215}
216
217/*---------------------------------------------------------------------------*/
218/*---------------------------------------------------------------------------*/
219
220} // End namespace Arcane::Materials
221
222/*---------------------------------------------------------------------------*/
223/*---------------------------------------------------------------------------*/
224
225#endif
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Maille arcane avec info matériaux et milieux.
EnvCell cell(Int32 i) const
i-ème maille milieu
ARCCORE_HOST_DEVICE CellEnvCellEnumerator subEnvItems() const
Enumérateur sur les mailles milieux de cette maille.
ARCCORE_HOST_DEVICE Int32 nbEnvironment() const
Nombre de milieux présents dans la maille.
Représente un composant d'une maille multi-matériau.
ARCCORE_HOST_DEVICE Int32 nbSubItem() const
Nombre de sous-éléments.
IMeshComponent * component() const
Constituant associé.
ARCCORE_HOST_DEVICE Int32 componentId() const
Identifiant du composant dans la liste des composants de ce type.
Maille arcane d'un milieu.
ARCCORE_HOST_DEVICE MatCell cell(Integer i) const
i-ème maille matériau de cette maille
ARCCORE_HOST_DEVICE AllEnvCell allEnvCell() const
Maille contenant les infos sur tous les milieux.
IMeshEnvironment * environment() const
Milieu associé
ARCCORE_HOST_DEVICE CellMatCellEnumerator subMatItems() const
Enumérateur sur les mailles matériaux de cette maille.
ARCCORE_HOST_DEVICE Int32 environmentId() const
Identifiant du milieu.
Interface d'un matériau d'un maillage.
virtual IUserMeshMaterial * userMaterial() const =0
Matériau utilisateur associé
Interface d'un matériau utilisateur.
Représente un matériau d'une maille multi-matériau.
IUserMeshMaterial * userMaterial() const
Materiau utilisateur associé
ARCCORE_HOST_DEVICE Int32 materialId() const
Identifiant du matériau.
ARCCORE_HOST_DEVICE EnvCell envCell() const
Maille milieu auquel cette maille matériau appartient.
IMeshMaterial * material() const
Materiau associé
Informations générique sur une entité d'un constituant.
Active toujours les traces dans les parties Arcane concernant les matériaux.
CellComponentCellEnumeratorT< EnvCell > CellEnvCellEnumerator
Enumérateur sur les mailles milieux d'une maille.
CellComponentCellEnumeratorT< MatCell > CellMatCellEnumerator
Enumérateur sur les mailles matériaux d'une maille.