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/datatype/DataStorageBuildInfo.h"
48template<
class DataType>
78 const Item& item = *i;
83 index = (*group_index_table)[index];
88 DataType
diff = DataType();
106 <<
" Unable to compare : elements numbers are different !"
122 if constexpr(std::is_same<TrueType,ReduceType>::value)
143 DataType
diff = DataType();
144 if (VarDataTypeTraits::verifDifferent(min_value,max_value,
diff,
true)){
145 this->m_diffs_info.add(
DiffInfo(min_value,max_value,
diff,0,NULL_ITEM_ID));
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)
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,
242 const Byte& value,Integer max_print)
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();
362template class VariableScalarT<Byte>;
363template class VariableScalarT<Real>;
364template class VariableScalarT<Int16>;
365template class VariableScalarT<Int32>;
366template class VariableScalarT<Int64>;
367template class VariableScalarT<Real2>;
368template class VariableScalarT<Real2x2>;
369template class VariableScalarT<Real3>;
370template class VariableScalarT<Real3x3>;
371template class VariableScalarT<String>;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations pour construire une instance de 'IData'.
Classe de base d'une table de hachage entre les items d'un groupe et leurs positions dans la table.
Interface du gestionnaire de fabrique d'une donnée.
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.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
Interface du gestionnaire de variables.
Interface d'une variable.
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
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Paramètres nécessaires à la construction d'une variable.
Classe template d'informations sur un type d'une variable.
Classe de base pour les comparaisons de valeurs entre deux variables.
Infos caractérisant une variable.
IData * data() override
Données associées à la variable.
void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) override
Copie les valeurs des entités numéros source dans les entités numéro destination.
VariableScalarT(const VariableBuildInfo &v, const VariableInfo &vi)
Construit une variable basée sur la référence v.
void setIsSynchronized() override
Indique que la variable est synchronisée.
void synchronize() override
Synchronise la variable.
void copyItemsMeanValues(Int32ConstArrayView first_source, Int32ConstArrayView second_source, Int32ConstArrayView destination) override
Copie les moyennes des valeurs des entités numéros first_source et second_source dans les entités num...
void print(std::ostream &o) const override
Imprime les valeurs de la variable sur le flot o.
void compact(Int32ConstArrayView new_to_old_ids) override
Compacte les valeurs de la variable.
Real allocatedMemory() const override
Taille mémoire (en Koctet) utilisée par la variable.
void _setData(const Ref< IData > &data)
Positionne la donnée.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Exception lorsqu'une opération n'est pas supportée.
Chaîne de caractères unicode.
TraceMessage pinfo() const
Flot pour un message d'information en parallèle.
TraceMessage info() const
Flot pour un message d'information.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
@ IK_Particle
Entité de maillage de genre particule.
unsigned char Byte
Type d'un octet.
Int32 Integer
Type représentant un entier.