Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IMultiReduce.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* IMultiReduce.h (C) 2000-2016 */
9/* */
10/* Gestion de réductions multiples. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_PARALLEL_IMULTIREDUCE_H
13#define ARCANE_PARALLEL_IMULTIREDUCE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
36class ARCANE_CORE_EXPORT ReduceSumOfRealHelper
37{
38 public:
39
41 : m_reduced_value(0.0), m_is_strict(is_strict)
42 {
43 if (!m_is_strict)
44 m_values.add(0.0);
45 }
46
47 public:
48
50 void add(Real v)
51 {
52 if (m_is_strict)
53 m_values.add(v);
54 else
55 m_values[0] += v;
56 }
57
59 void clear()
60 {
61 m_values.clear();
62 }
63
65 RealConstArrayView values() const { return m_values; }
66
68 Real reducedValue() const { return m_reduced_value; }
69
71 void setReducedValue(Real v) { m_reduced_value = v; }
72
73 private:
74 SharedArray<Real> m_values;
75 Real m_reduced_value;
76 bool m_is_strict;
77};
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
97class ARCANE_CORE_EXPORT IMultiReduce
98{
99 public:
100
101 virtual ~IMultiReduce(){}
102
103 public:
104
105 static IMultiReduce* create(IParallelMng* pm);
106
107 public:
108
110 virtual void execute() =0;
111
113 virtual bool isStrict() const =0;
114
116 virtual void setStrict(bool is_strict) =0;
117
118 public:
119
127 virtual ReduceSumOfRealHelper* getSumOfReal(const String& name) =0;
128};
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133ARCANE_END_NAMESPACE
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
137
138#endif
139
Gestion de réductions multiples.
virtual void setStrict(bool is_strict)=0
Positionne le mode strict.
virtual ReduceSumOfRealHelper * getSumOfReal(const String &name)=0
Retourne le gestionnaire de nom name. S'il n'existe pas de gestionnaire de nom name il est créé....
virtual bool isStrict() const =0
Indique si on utilise le mode strict.
virtual ~IMultiReduce()
Libère les ressources.
virtual void execute()=0
Exécute les réductions.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Classe gérant une réduction d'une somme de valeur.
RealConstArrayView values() const
Liste des valeurs accumulées.
Real reducedValue() const
Valeur réduite.
void setReducedValue(Real v)
Positionne la valeur réduite.
void add(Real v)
Ajoute la valeur v.
void clear()
Supprime les valeurs accumulées.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.