16#include <Champ_P1_isoP1Bulle.h>
17#include <TRUSTTab_parts.h>
45 const DoubleVect& volumes = zvef.
volumes();
49 double norme = 0, s = 0;
54 for (i = prs; i < sz; i++)
57 for (i = 0; i < prs; i++)
58 q(i) += alpha * somme;
59 for (i = prs; i < sz; i++)
61 for (i = 0; i < prs; i++)
65 m += q(prs + som_elem(i, k));
71 Cerr <<
"norme L1 : " << s << finl;
74 for (i = 0; i < prs; i++)
77 for (i = 0; i < prs; i++)
81 m += q(prs + som_elem(i, k));
85 norme += volumes(i) * m;
93 v += q(prs + som_elem(i, l));
98 norme += volumes(i) * v;
110 DoubleTab_parts parties_P(
valeurs());
115 DoubleTab& Pk = parties_P[0];
116 DoubleTab& Ps = parties_P[1];
119 const Domaine& le_dom = zvef.
domaine();
120 const Domaine& dom = le_dom;
122 const DoubleTab& xg = zvef.
xp();
136 DoubleVect& Pk = parties_P[0];
137 DoubleVect& Ps = parties_P[1];
164 for (i = 0; i < prs; i++)
168 m += Ps(som_elem(i, k));
175 double moyenne_K = mp_moyenne_vect(Pk);
214 if (!est_egal(
temps_, tps))
216 Cerr <<
"La methode Champ_P1_isoP1Bulle::trace effectue une interpolation des valeurs" << finl;
217 Cerr <<
"du champ dont on veut prendre la trace sur la frontiere" << finl;
218 Cerr <<
"Cette interpolation utilise par defaut les valeurs au temps present " <<
temps_ << finl;
219 Cerr <<
"de ce champ qui ne correspond pas au temps passe en parametre " << tps << finl;
227 const DoubleTab& val =
valeurs();
229 const IntTab& face_voisins = domaine_VEF.
face_voisins();
233 int elem = face_voisins(face, 0);
234 if (face_voisins(face, 1) != -1)
236 Cerr <<
"Erreur dans Champ_P1_isoP1Bulle::valeur_au_bord." << finl;
237 Cerr <<
"La face n'est pas une face de bord." << finl;
242 double la_val_bord = 0;
243 for (
int i = 0; i < (
dimension + 1); i++)
246 la_val_bord += val[nps + som_elem(elem, i)];
virtual void creer_tableau_distribue(const MD_Vector &, RESIZE_OPTIONS=RESIZE_OPTIONS::COPY_INIT)
int lire_donnees(Entree &)
Lit les valeurs du champs a partir d'un flot d'entree.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
void completer(const Domaine_Cl_dis_base &zcl) override
const Domaine_VEF & domaine_vef() const override
DoubleVect & valeur_a_elem(const DoubleVect &position, DoubleVect &val, int le_poly) const override
provoque une erreur ! doit etre surchargee par les classes derivees
int fixer_nb_valeurs_nodales(int) override
double valeur_a_elem_compo(const DoubleVect &position, int le_poly, int ncomp) const override
provoque une erreur ! doit etre surchargee par les classes derivees
Champ_base & affecter_(const Champ_base &) override
Affectation d'un OWN_PTR(Champ_base) generique (Champ_base) dans un champ inconnue.
DoubleTab & trace(const Frontiere_dis_base &, DoubleTab &, double, int distant) const override
voir Champ_base Cas particulier (malheureusement) du Champ_P0_VDF :
double norme_L2(const Domaine &dom) const
DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &valeurs, int ncomp) const override
provoque une erreur ! doit etre surchargee par les classes derivees
double valeur_au_bord(int face) const
DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &valeurs) const override
provoque une erreur ! doit etre surchargee par les classes derivees
DoubleTab & remplir_coord_noeuds(DoubleTab &) const override
DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &valeurs) const override
DoubleTab & remplir_coord_noeuds(DoubleTab &positions) const override
double valeur_a_elem_compo(const DoubleVect &position, int le_poly, int ncomp) const override
DoubleVect & valeur_a_elem(const DoubleVect &position, DoubleVect &val, int le_poly) const override
DoubleTab & trace(const Frontiere_dis_base &fr, const DoubleTab &y, DoubleTab &x, int distant) const
void completer(const Domaine_Cl_dis_base &zcl)
DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &valeurs, int ncomp) const override
virtual DoubleTab & valeurs()=0
Champ_base()
Constructeur par defaut d'un Champ_base.
virtual DoubleTab & valeur_aux(const DoubleTab &positions, DoubleTab &valeurs) const
Provoque une erreur ! Doit etre surchargee par les classes derivees.
static void verifier(const char *const msg, double)
const DoubleTab_t & coord_sommets() const
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
int numero_premier_sommet() const
virtual const MD_Vector & md_vector_p1b() const
double volumes(int i) const
const IntTab & get_num_fac_loc() const
double xp(int num_elem, int k) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
classe Frontiere_dis_base Classe representant une frontiere discretisee.
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")