14#include "arcane/core/VariableScalar.h"
16#include "arcane/utils/NotSupportedException.h"
17#include "arcane/utils/ArgumentException.h"
18#include "arcane/utils/FatalErrorException.h"
19#include "arcane/utils/TraceInfo.h"
20#include "arcane/utils/Ref.h"
21#include "arcane/utils/ITraceMng.h"
23#include "arcane/core/VariableDiff.h"
24#include "arcane/core/VariableBuildInfo.h"
25#include "arcane/core/VariableInfo.h"
26#include "arcane/core/IApplication.h"
27#include "arcane/core/IVariableMng.h"
28#include "arcane/core/IItemFamily.h"
29#include "arcane/core/IVariableSynchronizer.h"
30#include "arcane/core/IDataReader.h"
31#include "arcane/core/ItemGroup.h"
32#include "arcane/core/IDataFactoryMng.h"
33#include "arcane/core/IParallelMng.h"
34#include "arcane/core/IMesh.h"
35#include "arcane/core/internal/IVariableMngInternal.h"
37#include "arcane/core/datatype/DataStorageBuildInfo.h"
48template<
class DataType>
78 const Item& item = *i;
83 index = (*group_index_table)[index];
88 DataType
diff = DataType();
103 Int32
sid =
pm->commRank();
105 msg->pinfo() <<
"Processor " <<
sid <<
" : "
106 <<
" Unable to compare : elements numbers are different !"
122 if constexpr(std::is_same<TrueType,ReduceType>::value)
143 DataType
diff = DataType();
187 ARCANE_CHECK_PTR(true_ptr);
194template<
typename T> VariableScalarT<T>* VariableScalarT<T>::
195getReference(IVariable* var)
198 throw ArgumentException(A_FUNCINFO,
"null variable");
199 ThatClass* true_ptr =
dynamic_cast<ThatClass*
>(var);
201 ARCANE_FATAL(
"Can not build a reference from variable {0}",var->name());
208template<
typename T>
Integer VariableScalarT<T>::
209checkIfSame(IDataReader* reader,
int max_print,
bool compare_ghost)
211 if (itemKind()==IK_Particle)
215 Ref< IScalarDataT<T> > ref_data(m_value->cloneTrueEmptyRef());
216 reader->read(
this,ref_data.get());
217 ref = ref_data->value();
218 ConstArrayView<T> from_array(1,&from);
219 ConstArrayView<T> ref_array(1,&ref);
220 ScalarVariableDiff<T> csa;
221 return csa.check(
this,ref_array,from_array,max_print,compare_ghost);
232 _checkIfSameOnAllReplicaHelper(IParallelMng* pm,IVariable* var,
233 const T& value,
Integer max_print)
235 ScalarVariableDiff<T> csa;
236 return csa.checkReplica(pm,var,value,max_print);
241 _checkIfSameOnAllReplicaHelper(IParallelMng* pm,IVariable* var,
245 ScalarVariableDiff<Integer> csa;
246 return csa.checkReplica(pm,var,int_value,max_print);
253template<
typename T>
Integer VariableScalarT<T>::
254_checkIfSameOnAllReplica(IParallelMng* replica_pm,
Integer max_print)
256 return _checkIfSameOnAllReplicaHelper(replica_pm,
this,value(),max_print);
263print(std::ostream&
o)
const
265 o << m_value->value();
293 return static_cast<Real>(
sizeof(T));
302 ARCANE_UNUSED(source);
303 ARCANE_UNUSED(destination);
316 ARCANE_UNUSED(destination);
342 ARCANE_UNUSED(group);
348template<
typename DataType>
void
352 _checkSwapIsValid(&
rhs);
353 m_value->swapValues(
rhs.m_value);
356 rhs.syncReferences();
362ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE(VariableScalarT);
363template class VariableScalarT<String>;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations pour construire une instance de 'IData'.
virtual ITraceMng * traceMng()=0
Gestionnaire de message associé
virtual IParallelMng * parallelMng()=0
Gestionnaire de parallèlisme.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface du gestionnaire de variables.
Groupe d'entités de maillage.
SharedPtrT< GroupIndexTable > localIdToIndex() const
Table des local ids vers une position pour toutes les entités du groupe.
bool null() const
true is le groupe est le groupe nul
IMesh * mesh() const
Maillage auquel appartient ce groupe (0 pour le group nul)
Classe de base d'un élément de maillage.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
bool isOwn() const
true si l'entité est appartient au sous-domaine
Paramètres nécessaires à la construction d'une variable.
Infos caractérisant une variable.
DataStorageTypeInfo storageTypeInfo() const
Informations sur le type de conteneur de la variable.
IData * data() override
Données associées à la variable.
VariableScalarT(const VariableBuildInfo &v, const VariableInfo &vi)
Construit une variable basée sur la référence v.
void _setData(const Ref< IData > &data)
Positionne la donnée.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Référence à une instance.
InstanceType * get() const
Instance associée ou nullptr si aucune.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
double Real
Type représentant un réel.
Int32 Integer
Type représentant un entier.
unsigned char Byte
Type d'un octet.