Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshMaterialVariablePrivate.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/* MeshMaterialVariablePrivate.h (C) 2000-2024 */
9/* */
10/* Partie privée d'une variable sur un matériau du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MESHMATERIALVARIABLEPRIVATE_H
13#define ARCANE_MATERIALS_INTERNAL_MESHMATERIALVARIABLEPRIVATE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18#include "arcane/utils/ScopedPtr.h"
19
20#include "arcane/core/VariableDependInfo.h"
21#include "arcane/core/materials/internal/IMeshMaterialVariableInternal.h"
22
23#include "arcane/materials/MeshMaterialVariableDependInfo.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30class IObserver;
31}
32
33namespace Arcane::Materials
34{
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
42class MeshMaterialVariablePrivate
44{
45 public:
46
47 MeshMaterialVariablePrivate(const MaterialVariableBuildInfo& v, MatVarSpace mvs,
48 MeshMaterialVariable* variable);
49 ~MeshMaterialVariablePrivate();
50
51 public:
52
53 MatVarSpace space() const { return m_var_space; }
54 bool hasRecursiveDepend() const { return m_has_recursive_depend; }
55 const String& name() const { return m_name; }
56 IMeshMaterialMng* materialMng() const { return m_material_mng; }
57 IMeshMaterialVariableInternal* _internalApi() { return this; }
58
59 public:
60
61 Int32 dataTypeSize() const override;
63 Span<std::byte> bytes, RunQueue* queue) const override;
64
66 Span<const std::byte> bytes, RunQueue* queue) override;
67
69
70 void saveData(IMeshComponent* component,IData* data) override;
71
72 void restoreData(IMeshComponent* component, IData* data, Integer data_index,
73 Int32ConstArrayView ids, bool allow_null_id) override;
74
76
78
80 {
81 return m_refs.view();
82 }
83 void syncReferences(bool check_resize) override;
85
86 public:
87
88 Int32 m_nb_reference = 0;
89 MeshMaterialVariableRef* m_first_reference = nullptr;
90
91 private:
92
94 IMeshMaterialMng* m_material_mng = nullptr;
95
96 public:
97
105
106 bool m_keep_on_change = true;
107 IObserver* m_global_variable_changed_observer = nullptr;
108
111
114
117
120
121 private:
122
123 bool m_has_recursive_depend = true;
125 MeshMaterialVariable* m_variable = nullptr;
126};
127
128/*---------------------------------------------------------------------------*/
129/*---------------------------------------------------------------------------*/
130
131} // namespace Arcane::Materials
132
133/*---------------------------------------------------------------------------*/
134/*---------------------------------------------------------------------------*/
135
136#endif
137
File d'exécution pour un accélérateur.
Vue constante d'un tableau de type T.
Interface d'une donnée.
Definition IData.h:33
Interface d'un observateur.
Arguments des méthodes de copie entre valeurs partielles et globales.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
API interne Arcane de 'IMeshMaterialVariable'.
Arguments des méthodes de copie entre valeurs partielles et globales.
UniqueArray< VariableRef * > m_refs
Stocke les références sur les variables tableaux qui servent pour stocker les valeurs par matériau....
void restoreData(IMeshComponent *component, IData *data, Integer data_index, Int32ConstArrayView ids, bool allow_null_id) override
void copyBetweenPartialAndGlobal(const CopyBetweenPartialAndGlobalArgs &args) override
UniqueArray< VariableDependInfo > m_depends
Liste des dépendances de cette variable.
UniqueArray< Int64 > m_modified_times
Tag de la dernière modification par matériau.
void copyToBuffer(SmallSpan< const MatVarIndex > matvar_indexes, Span< std::byte > bytes, RunQueue *queue) const override
Copie les valeurs de la variable dans un buffer.
ScopedPtrT< IMeshMaterialVariableComputeFunction > m_compute_function
Fonction de calcul.
ConstArrayView< VariableRef * > variableReferenceList() const override
Liste des 'VariableRef' associées à cette variable.
String m_name
Première référence sur la variable.
UniqueArray< MeshMaterialVariableDependInfo > m_mat_depends
Liste des dépendances de cette variable.
Ref< IData > internalCreateSaveDataRef(Integer nb_value) override
void copyFromBuffer(SmallSpan< const MatVarIndex > matvar_indexes, Span< const std::byte > bytes, RunQueue *queue) override
Copie les valeurs de la variable depuis un buffer.
void syncReferences(bool check_resize) override
Synchronise les références.
Int32 dataTypeSize() const override
Taille en octet pour conserver une valeur de la variable.
void resizeForIndexer(ResizeVariableIndexerArgs &args) override
Redimensionne la valeur partielle associée à l'indexer index.
void initializeNewItemsWithZero(InitializeWithZeroArgs &args) override
Initialize les valeurs des nouveaux constituants avec la valeur zéro.
void saveData(IMeshComponent *component, IData *data) override
Classe de base des références aux variables matériaux.
Classe de base des variables matériaux.
Arguments des méthodes de copie entre valeurs partielles et globales.
Référence à une instance.
Encapsulation d'un pointeur qui se détruit automatiquement.
Definition ScopedPtr.h:44
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
Vue d'un tableau d'éléments de type T.
Definition Span.h:513
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
@ MaterialAndEnvironment
Variable ayant des valeurs sur les milieux et matériaux.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
std::int32_t Int32
Type entier signé sur 32 bits.