Arcane  v3.16.2.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/IMeshComponent.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/* IMeshComponent.h (C) 2000-2025 */
9/* */
10/* Interface d'un composant (matériau ou milieu) d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_CORE_IMESHCOMPONENT_H
13#define ARCANE_MATERIALS_CORE_IMESHCOMPONENT_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
20#include "arcane/core/materials/MaterialsCoreGlobal.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::Materials
26{
27class IMeshComponentInternal;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \ingroup ArcaneMaterials
33 * \brief Interface d'un composant (matériau ou milieu) d'un maillage.
34 */
35class ARCANE_CORE_EXPORT IMeshComponent
36{
37 public:
38
39 virtual ~IMeshComponent() = default;
40
41 public:
42
43 //! Gestionnaire associé.
45
46 //! Gestionnaire de trace associé.
47 virtual ITraceMng* traceMng() =0;
48
49 //! Nom du composant
50 virtual String name() const =0;
51
52 /*!
53 * \brief Groupe des mailles de ce matériau.
54 *
55 * \warning Ce groupe ne doit pas être modifié. Pour changer
56 * le nombre d'éléments d'un matériau, il faut passer
57 * par le materialMng().
58 */
59 virtual CellGroup cells() const =0;
60
61 /*!
62 * \brief Identifiant du composant.
63 *
64 * Il s'agit aussi de l'indice (en commençant par 0) de ce composant
65 * dans la liste des composants de ce type.
66 * Il existe une liste spécifique pour les matériaux et les milieux
67 * et donc un composant qui représente un matériau peut avoir le
68 * même id qu'un composant représentant un milieu.
69 */
70 virtual Int32 id() const =0;
71
72 /*!
73 * \brief Maille de ce composant pour la maille \a c.
74 *
75 * Si le composant n'est pas présent dans la présent dans la maille,
76 * la maille nulle est retournée.
77 *
78 * Le coût de cette fonction est proportionnel au nombre de composants
79 * présents dans la maille.
80 */
81 virtual ComponentCell findComponentCell(AllEnvCell c) const =0;
82
83 //! Vue associée à ce composant
84 virtual ComponentItemVectorView view() const =0;
85
86 //! Vérifie que le composant est valide.
87 virtual void checkValid() =0;
88
89 //! Vrai si le composant est un matériau
90 virtual bool isMaterial() const =0;
91
92 //! Vrai si le composant est un milieu
93 virtual bool isEnvironment() const =0;
94
95 //! Indique si le composant est défini pour l'espace \a space
96 virtual bool hasSpace(MatVarSpace space) const =0;
97
98 //! Vue sur la liste des entités pures (associées à la maille globale) du composant
100
101 //! Vue sur la liste des entités impures (partielles) partielles du composant
103
104 //! Vue sur la partie pure ou impure des entités du composant
106
107 /*!
108 * \brief Retourne le composant sous la forme d'un IMeshMaterial.
109 *
110 * Si isMaterial()==false, retourne \a nullptr
111 */
113
114 /*!
115 * \brief Retourne le composant sous la forme d'un IMeshMaterial.
116 *
117 * Si isEnvironment()==false, retourne \a nullptr
118 */
120
121 /*!
122 * \brief Positionne une politique d'exécution pour ce constituant
123 *
124 * \warning Cette méthode est expérimentale. A ne pas utiliser en dehors d'Arcane.
125 *
126 * Si \a policy est différent de eExecutionPolicy::None, elle sera utilisée pour
127 * les opérations de création de EnvCellVector, MatCellVector ou ComponentItemVector
128 */
130
131 /*!
132 * \brief Politique d'exécution spécifique.
133 *
134 * \sa setSpecificExecutionPolicy().
135 */
137
138 public:
139
140 //! API interne
141 virtual IMeshComponentInternal* _internalApi() =0;
142};
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146
147} // End namespace Arcane::Materials
148
149/*---------------------------------------------------------------------------*/
150/*---------------------------------------------------------------------------*/
151
152#endif
Déclarations de types sur les entités.
Interface du gestionnaire de traces.
Maille arcane avec info matériaux et milieux.
Vue sur un vecteur sur les entités d'un composant.
Vue sur une partie pure ou partielles des entités d'un composant.
Interface d'un composant (matériau ou milieu) d'un maillage.
virtual ComponentPartItemVectorView partItems(eMatPart part) const =0
Vue sur la partie pure ou impure des entités du composant.
virtual String name() const =0
Nom du composant.
virtual CellGroup cells() const =0
Groupe des mailles de ce matériau.
virtual Int32 id() const =0
Identifiant du composant.
virtual bool isEnvironment() const =0
Vrai si le composant est un milieu.
virtual Accelerator::eExecutionPolicy specificExecutionPolicy() const =0
Politique d'exécution spécifique.
virtual IMeshMaterial * asMaterial()=0
Retourne le composant sous la forme d'un IMeshMaterial.
virtual void setSpecificExecutionPolicy(Accelerator::eExecutionPolicy policy)=0
Positionne une politique d'exécution pour ce constituant.
virtual ComponentImpurePartItemVectorView impureItems() const =0
Vue sur la liste des entités impures (partielles) partielles du composant.
virtual IMeshEnvironment * asEnvironment()=0
Retourne le composant sous la forme d'un IMeshMaterial.
virtual ITraceMng * traceMng()=0
Gestionnaire de trace associé.
virtual ComponentItemVectorView view() const =0
Vue associée à ce composant.
virtual IMeshComponentInternal * _internalApi()=0
API interne.
virtual bool hasSpace(MatVarSpace space) const =0
Indique si le composant est défini pour l'espace space.
virtual bool isMaterial() const =0
Vrai si le composant est un matériau.
virtual ComponentCell findComponentCell(AllEnvCell c) const =0
Maille de ce composant pour la maille c.
virtual void checkValid()=0
Vérifie que le composant est valide.
virtual ComponentPurePartItemVectorView pureItems() const =0
Vue sur la liste des entités pures (associées à la maille globale) du composant.
virtual IMeshMaterialMng * materialMng()=0
Gestionnaire associé.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Interface d'un matériau d'un maillage.
Chaîne de caractères unicode.
ItemGroupT< Cell > CellGroup
Groupe de mailles.
Definition ItemTypes.h:183
eExecutionPolicy
Politique d'exécution pour un Runner.
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
eMatPart
Partie d'un composant.
std::int32_t Int32
Type entier signé sur 32 bits.