Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IMeshMaterialVariableInternal.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/* IMeshMaterialVariableInternal.h (C) 2000-2024 */
9/* */
10/* API interne Arcane de 'IMeshMaterialVariable'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_INTERNAL_IMESHMATERIALVARIABLEINTERNAL_H
13#define ARCANE_CORE_MATERIALS_INTERNAL_IMESHMATERIALVARIABLEINTERNAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/core/materials/MaterialsCoreGlobal.h"
19#include "arcane/accelerator/core/RunQueue.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane::Materials
25{
26class ComponentItemListBuilder;
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33struct ARCANE_CORE_EXPORT CopyBetweenDataInfo
34{
35 public:
36
38 : m_input(input)
39 , m_output(output)
40 , m_data_size(data_size)
41 {}
42
43 public:
44
46 SmallSpan<std::byte> m_output;
47 Int32 m_data_size = 0;
48};
49
53class ARCANE_CORE_EXPORT VariableIndexerCommonArgs
54{
55 public:
56
58 : m_var_index(var_index)
59 , m_queue(queue)
60 {}
61
62 public:
63
64 void addOneCopyData(SmallSpan<const std::byte> input,
66 Int32 data_size) const
67 {
68 if (m_copy_data) {
70 m_copy_data->add(x);
71 }
72 }
73
74 bool isUseOneCommand() const { return m_copy_data; }
75
76 public:
77
78 Int32 m_var_index = -1;
79 RunQueue m_queue;
81 UniqueArray<CopyBetweenDataInfo>* m_copy_data = nullptr;
82};
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
89class ARCANE_CORE_EXPORT CopyBetweenPartialAndGlobalArgs
91{
92 public:
93
97 bool do_copy,
99 const RunQueue& queue)
101 , m_local_ids(local_ids)
102 , m_indexes_in_multiple(indexes_in_multiple)
103 , m_do_copy_between_partial_and_pure(do_copy)
104 , m_is_global_to_partial(is_global_to_partial)
105 {}
106
107 public:
108
109 SmallSpan<const Int32> m_local_ids;
110 SmallSpan<const Int32> m_indexes_in_multiple;
111 bool m_do_copy_between_partial_and_pure = true;
112 bool m_is_global_to_partial = false;
113 bool m_use_generic_copy = false;
114};
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
121class ARCANE_CORE_EXPORT InitializeWithZeroArgs
123{
124 public:
125
127 const RunQueue& queue)
129 , m_indexes_in_multiple(indexes_in_multiple)
130 {}
131
132 public:
133
134 SmallSpan<const Int32> m_indexes_in_multiple;
135};
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
142class ARCANE_CORE_EXPORT ResizeVariableIndexerArgs
144{
145 public:
146
147 ResizeVariableIndexerArgs(Int32 var_index, const RunQueue& queue)
149 {}
150
151 public:
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
159class ARCANE_CORE_EXPORT IMeshMaterialVariableInternal
160{
161 public:
162
163 virtual ~IMeshMaterialVariableInternal() = default;
164
165 public:
166
174 virtual Int32 dataTypeSize() const = 0;
175
182 Span<std::byte> bytes, RunQueue* queue) const = 0;
183
190 Span<const std::byte> bytes, RunQueue* queue) = 0;
191
194
196 virtual void saveData(IMeshComponent* component, IData* data) = 0;
197
199 virtual void restoreData(IMeshComponent* component, IData* data,
200 Integer data_index, Int32ConstArrayView ids, bool allow_null_id) = 0;
201
204
207
210
212 virtual void syncReferences(bool check_resize) = 0;
213
216};
217
218/*---------------------------------------------------------------------------*/
219/*---------------------------------------------------------------------------*/
220
221} // namespace Arcane::Materials
222
223/*---------------------------------------------------------------------------*/
224/*---------------------------------------------------------------------------*/
225
226#endif
Déclarations de types sur les entités.
File d'exécution pour un accélérateur.
Interface d'une donnée.
Definition IData.h:33
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Arguments des méthodes de copie entre valeurs partielles et globales.
Interface d'un composant (matériau ou milieu) d'un maillage.
API interne Arcane de 'IMeshMaterialVariable'.
virtual void syncReferences(bool check_resize)=0
Synchronise les références.
virtual ConstArrayView< VariableRef * > variableReferenceList() const =0
Liste des 'VariableRef' associées à cette variable.
virtual void copyFromBuffer(SmallSpan< const MatVarIndex > matvar_indexes, Span< const std::byte > bytes, RunQueue *queue)=0
Copie les valeurs de la variable depuis un buffer.
virtual Int32 dataTypeSize() const =0
Taille en octet pour conserver une valeur de la variable.
virtual void restoreData(IMeshComponent *component, IData *data, Integer data_index, Int32ConstArrayView ids, bool allow_null_id)=0
virtual void resizeForIndexer(ResizeVariableIndexerArgs &args)=0
Redimensionne la valeur partielle associée à l'indexer index.
virtual void saveData(IMeshComponent *component, IData *data)=0
virtual void copyToBuffer(SmallSpan< const MatVarIndex > matvar_indexes, Span< std::byte > bytes, RunQueue *queue) const =0
Copie les valeurs de la variable dans un buffer.
virtual void copyBetweenPartialAndGlobal(const CopyBetweenPartialAndGlobalArgs &args)=0
virtual void initializeNewItemsWithZero(InitializeWithZeroArgs &args)=0
Initialize les valeurs des nouveaux constituants avec la valeur zéro.
virtual Ref< IData > internalCreateSaveDataRef(Integer nb_value)=0
Arguments des méthodes de copie entre valeurs partielles et globales.
Arguments des méthodes de copie entre valeurs partielles et globales.
Arguments communs pour toutes les méthodes de MeshMaterialVariableIndexer.
Vue constante d'un tableau de type T.
Active toujours les traces dans les parties Arcane concernant les matériaux.
Informations pour la copie entre deux zones mémoire.