Arcane  v3.16.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
VerifierService.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/* VerifierService.h (C) 2000-2025 */
9/* */
10/* Classe de base du service de vérification des variables. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_VERIFIERSERVICE_H
13#define ARCANE_CORE_VERIFIERSERVICE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
20#include "arcane/core/AbstractService.h"
21#include "arcane/core/IVerifierService.h"
22#include "arcane/core/VariableComparer.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
34class IDataReader;
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38/*!
39 * \ingroup StandardService
40 * \brief Classe de base du service de vérification des données
41 * entre deux exécutions.
42 */
43class ARCANE_CORE_EXPORT VerifierService
44: public AbstractService
45, public IVerifierService
46{
47 private:
48
49 struct DiffInfo
50 {
51 public:
52
53 DiffInfo()
54 : m_variable_name()
55 , m_nb_diff(0)
56 {}
57 DiffInfo(const String& var_name, Int64 nb_diff)
58 : m_variable_name(var_name)
59 , m_nb_diff(nb_diff)
60 {}
61
62 public:
63
64 String m_variable_name;
65 Int64 m_nb_diff;
66 };
67
68 public:
69
70 explicit VerifierService(const ServiceBuildInfo& sbi);
71
72 public:
73
74 IBase* serviceParent() const override;
75 IServiceInfo* serviceInfo() const override { return m_service_info; }
76 IService* serviceInterface() override { return this; }
77
78 public:
79
80 void setFileName(const String& file_name) override { m_file_name = file_name; }
81 String fileName() const override { return m_file_name; }
82
83 public:
84
85 void setResultFileName(const String& file_name) override { m_result_file_name = file_name; }
86 String resultfileName() const override { return m_result_file_name; }
87
88 //! Type de comparaison souhaité
89 void setCompareMode(eCompareMode v) override { m_compare_mode = v; }
90 eCompareMode compareMode() const override { return m_compare_mode; }
91
92 void setSubDir(const String& sub_dir) override { m_sub_dir = sub_dir; }
93 String subDir() const override { return m_sub_dir; }
94
96 {
97 m_compute_diff_method = v;
98 }
99 eVariableComparerComputeDifferenceMethod computeDifferenceMethod() const override
100 {
101 return m_compute_diff_method;
102 }
103
104 protected:
105
106 virtual void _doVerif(IDataReader* reader, const VariableCollection& variables, bool compare_ghost);
107 //! Remplit dans \a variables la liste des variables devant être relues
108 virtual void _getVariables(VariableList variables, bool parallel_sequential);
109
110 public:
111
112 ISubDomain* subDomain() { return m_sub_domain; }
113
114 protected:
115 private:
116
117 ISubDomain* m_sub_domain = nullptr;
118 IServiceInfo* m_service_info = nullptr;
119 String m_file_name;
120 String m_result_file_name;
121 String m_sub_dir;
122 eCompareMode m_compare_mode = eCompareMode::Values;
123 eVariableComparerComputeDifferenceMethod m_compute_diff_method = eVariableComparerComputeDifferenceMethod::Relative;
124
125 private:
126
127 template <typename ReaderType> void
128 _doVerif2(ReaderType reader, const VariableList& variables, bool compare_ghost);
129};
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
133
134} // End namespace Arcane
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
138
139#endif
Déclarations des types généraux de Arcane.
AbstractService(const ServiceBuildInfo &)
Constructeur à partir d'un ServiceBuildInfo.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
Interface de lecture des données d'une variable.
Definition IDataReader.h:41
Interface des informations d'un service ou d'un module.
Interface d'un service.
Definition IService.h:45
Interface du service de vérification des données entre deux exécutions.
eCompareMode
Mode de comparaison.
Structure contenant les informations pour créer un service.
Chaîne de caractères unicode.
IBase * serviceParent() const override
Accès à l'interface de base des principaux objets Arcane.
String fileName() const override
Nom du fichier contenant les valeurs de référence.
void setComputeDifferenceMethod(eVariableComparerComputeDifferenceMethod v) override
Méthode à utiliser pour calculer la différence entre deux valeurs.
IService * serviceInterface() override
Retourne l'interface bas niveau IService du service.
void setFileName(const String &file_name) override
Positionne le nom du fichier contenant les valeurs de référence.
void setCompareMode(eCompareMode v) override
Type de comparaison souhaité
void setSubDir(const String &sub_dir) override
Positionne le nom du sous répertoire contenant les valeurs de référence.
IServiceInfo * serviceInfo() const override
Accès aux informations du service.
void setResultFileName(const String &file_name) override
Nom du fichier contenant les résultats.
String subDir() const override
Nom du fichier contenant les valeurs de référence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
eVariableComparerComputeDifferenceMethod
Méthode utilisée pour calculer la différence entre deux valeurs v1 et v2.