Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
VariableComparer.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/* VariableComparer.h (C) 2000-2025 */
9/* */
10/* Classe pour effectuer des comparaisons entre les variables. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_VARIABLECOMPARER_H
13#define ARCANE_CORE_VARIABLECOMPARER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
40
53
54/*---------------------------------------------------------------------------*/
55/*---------------------------------------------------------------------------*/
59class ARCANE_CORE_EXPORT VariableComparerArgs
60{
61 public:
62
69 void setMaxPrint(Int32 v) { m_max_print = v; }
70 Int32 maxPrint() const { return m_max_print; }
71
81 void setCompareGhost(bool v) { m_is_compare_ghost = v; }
82 bool isCompareGhost() const { return m_is_compare_ghost; }
83
84 void setDataReader(IDataReader* v) { m_data_reader = v; }
85 IDataReader* dataReader() const { return m_data_reader; }
86
87 void setCompareMode(eVariableComparerCompareMode v) { m_compare_mode = v; }
88 eVariableComparerCompareMode compareMode() const { return m_compare_mode; }
89
90 void setComputeDifferenceMethod(eVariableComparerComputeDifferenceMethod v) { m_compute_difference_method = v; }
91 eVariableComparerComputeDifferenceMethod computeDifferenceMethod() const { return m_compute_difference_method; }
92
93 void setReplicaParallelMng(IParallelMng* pm) { m_replica_parallel_mng = pm; }
94 IParallelMng* replicaParallelMng() const { return m_replica_parallel_mng; }
95
96 private:
97
98 Int32 m_max_print = 0;
99 bool m_is_compare_ghost = false;
100 IDataReader* m_data_reader = nullptr;
101 eVariableComparerCompareMode m_compare_mode = eVariableComparerCompareMode::Same;
102 eVariableComparerComputeDifferenceMethod m_compute_difference_method = eVariableComparerComputeDifferenceMethod::Relative;
103 IParallelMng* m_replica_parallel_mng = nullptr;
104};
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
111class ARCANE_CORE_EXPORT VariableComparerResults
112{
113 public:
114
115 VariableComparerResults() = default;
116 explicit VariableComparerResults(Int32 nb_diff)
117 : m_nb_diff(nb_diff)
118 {}
119
120 public:
121
122 void setNbDifference(Int32 v) { m_nb_diff = v; }
123 Int32 nbDifference() const { return m_nb_diff; }
124
125 public:
126
127 Int32 m_nb_diff = 0;
128};
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
135class ARCANE_CORE_EXPORT VariableComparer
136: public TraceAccessor
137{
138 public:
139
140 explicit VariableComparer(ITraceMng* tm);
141
142 public:
143
161 Int32 checkIfSync(IVariable* var, Int32 max_print);
162
180 Int32 checkIfSame(IVariable* var, IDataReader* reader, Int32 max_print, bool compare_ghost);
181
205
206 public:
207
223
226};
227
228/*---------------------------------------------------------------------------*/
229/*---------------------------------------------------------------------------*/
230
231} // namespace Arcane
232
233/*---------------------------------------------------------------------------*/
234/*---------------------------------------------------------------------------*/
235
236#endif
Déclarations des types généraux de Arcane.
Interface de lecture des données d'une variable.
Definition IDataReader.h:41
Interface du gestionnaire de traces.
Interface d'une variable.
Definition IVariable.h:56
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Arguments des méthodes de VariableComparer.
void setMaxPrint(Int32 v)
Positionne le nombre d'erreurs à afficher dans le listing.
void setCompareGhost(bool v)
Indique sur quelles entités on fait la comparaison.
Résultats d'une opération de comparaison.
VariableComparerResults apply(IVariable *var, const VariableComparerArgs &compare_args)
Applique la comparaison compare_args à la variable var.
VariableComparerArgs buildForCheckIfSame(IDataReader *data_reader)
Créé une comparaison pour vérifie qu'une variable est identique à une valeur de référence.
Int32 checkIfSame(IVariable *var, IDataReader *reader, Int32 max_print, bool compare_ghost)
Vérifie que la variable var est identique à une valeur de référence.
Int32 checkIfSync(IVariable *var, Int32 max_print)
Vérifie si la variable var est bien synchronisée.
Int32 checkIfSameOnAllReplica(IVariable *var, Integer max_print)
Vérifie si la variable var a les mêmes valeurs sur tous les réplicas.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eVariableComparerComputeDifferenceMethod
Méthode utilisée pour calculer la différence entre deux valeurs v1 et v2.
@ LocalNormMax
Utilise (v1-v2) / local_norm_max.
Int32 Integer
Type représentant un entier.
eVariableComparerCompareMode
Méthode de comparaison à utiliser.
@ SameReplica
Vérifie que les valeurs de la variable sont les même sur tous les replica.
@ Same
Compare avec une référence.
@ Sync
Vérifie que la variable est bien synchronisée.
std::int32_t Int32
Type entier signé sur 32 bits.