16#ifndef Iterateur_Source_Elem_included
17#define Iterateur_Source_Elem_included
19#include <Iterateur_Source_base.h>
20#include <Champ_Uniforme.h>
21#include <TRUSTSingle.h>
23template <
class _TYPE_>
36 DoubleTab&
ajouter(DoubleTab& )
const override;
38 void completer_()
override { nb_elem_ = le_dom->nb_elem(); }
46 _TYPE_ evaluateur_source_elem;
49 template <
typename Type_Double> DoubleTab& ajouter_(
const int, DoubleTab& )
const;
55 ((_TYPE_&) (evaluateur_source_elem)).mettre_a_jour();
58 DoubleVect& bilan = so_base->bilan();
61 (ncomp == 1) ? ajouter_<SingleDouble>(ncomp, resu) : ajouter_<ArrOfDouble>(ncomp, resu);
65template<
class _TYPE_>
template<
typename Type_Double>
66DoubleTab& Iterateur_Source_Elem<_TYPE_>::ajouter_(
const int ncomp, DoubleTab& resu)
const
68 Type_Double source(ncomp);
69 DoubleVect& bilan = so_base->bilan();
70 for (
int num_elem = 0; num_elem < nb_elem_; num_elem++)
72 evaluateur_source_elem.calculer_terme_source(num_elem, source);
73 for (
int k = 0; k < ncomp; k++)
75 resu(num_elem, k) += source[k];
76 bilan(k) += source[k];
Evaluateur_Source & evaluateur() override
DoubleTab & ajouter(DoubleTab &) const override
void completer_() override
virtual int duplique() const =0
virtual unsigned taille_memoire() const =0
int numero() const
Renvoie l'indice de l'objet dans Memoire::data.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.