16#include <Champ_Post_Operateur_Eqn.h>
17#include <Probleme_base.h>
18#include <Postraitement.h>
19#include <Domaine_VF.h>
21#include <Champ_Generique_refChamp.h>
22#include <Discretisation_base.h>
23#include <Equation_base.h>
24#include <Operateur_base.h>
26#include <MD_Vector_composite.h>
35Champ_Post_Operateur_Eqn::Champ_Post_Operateur_Eqn()
68 if ((!ref_eq_->inconnue().is_vectorial()) && (
compo_ != -1 ))
70 Cerr<<
"Error in Champ_Post_Operateur_Eqn::verification_cas_compo()"<<finl;
71 Cerr<<
"It isn't possible to get a component from a non vectoriel field " <<finl;
76 const int nb_compo= ref_eq_->inconnue().nb_comp();
79 Cerr<<
"Error in Champ_Post_Operateur_Eqn::verification_cas_compo()"<<finl;
80 Cerr<<
"compo="<<
compo_<<
" is not allowed."<<
" You must give a value between 0 and "<< nb_compo-1<<finl;
84 if (ref_eq_->discretisation().is_vdf() && (
compo_ != -1 ))
86 Cerr<<
"Error in Champ_Post_Operateur_Eqn::verification_cas_compo()"<<finl;
87 Cerr<<
"The option compo is not available in case of VDF discretization"<<finl;
131 Cerr<<
"Champ_Post_Operateur_Eqn can be applied only to equation unknown."<<finl;
159 Cerr<<
"Error in "<<
que_suis_je()<<
" unknown localisation"<<finl;
167 espace_stockage = ref_eq_->inconnue();
168 return espace_stockage;
182 case Entity::ELEMENT:
183 directive=
"CHAMP_ELEM";
186 directive=
"CHAMP_SOMMETS";
189 directive=
"CHAMP_FACE";
192 Cerr<<
"error in Champ_Post_Operateur_Eqn::get_champ"<<finl;
197 ref_eq_->discretisation().discretiser_champ(directive,ref_eq_->domaine_dis(),
"oooo",
"unit",
nb_comp,temps,espace_stockage_fonc);
198 espace_stockage = espace_stockage_fonc;
201 return espace_stockage;
209 DoubleTab& es = (espace_stockage_complet->valeurs());
221 else if ((
numero_masse_!=-1) && ref_eq_->has_interface_blocs())
222 es=0, ref_eq_->schema_temps().ajouter_blocs({},es,ref_eq_.valeur());
224 ref_eq_->solv_masse().appliquer_impl(es);
226 if (ref_eq_->solv_masse().que_suis_je()==
"Masse_PolyMAC_CDO_Face")
229 Cerr <<
"Warning, source terms on faces with PolyMAC_CDO are post-processed as S*dV not as volumic source terms S." << finl;
230 Cerr <<
"Cause Masse_PolyMAC_CDO_Face::appliquer_impl do not divide per volume." << finl;
241 DoubleTab& es_compo = (espace_stockage_compo->valeurs());
243 for (
int i=0; i<nb_pos; i++)
245 es_compo(i) = es(i,
compo_);
247 espace_stockage = espace_stockage_compo;
250 espace_stockage = espace_stockage_complet;
252 return espace_stockage;
260 motcles[0] =
"composantes";
261 motcles[1] =
"unites";
263 int rang = motcles.
search(query);
271 int nb_comp= ref_eq_->inconnue().nb_comp();
292 int nb_comp= ref_eq_->inconnue().nb_comp();
328 nom_post_source =
"Eqn_s";
330 nom_post_source +=
"_o" ;
332 nom_post_source +=
"_m" ;
337 nom_post_source += nume;
345 return ref_eq_->operateur(
numero_op_).l_op_base();
350 return ref_eq_->operateur(
numero_op_).l_op_base();
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
virtual OWN_PTR(Champ_Fonc_base) &creer_espace_stockage(const Nature_du_champ &nature
void completer(const Postraitement_base &post) override
virtual const Champ_Generique_base & get_source(int i) const
void set_param(Param ¶m) const override
virtual const int nb_comp
Classe Champ_Generique_Operateur_base Classe de base des classes de champs generiques dediees a l 'ap...
virtual const Champ_base & get_champ(OWN_PTR(Champ_base) &espace_stockage) const =0
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
Classe de champ particuliere qui encapsule une reference a un champ volumique de TRUST de type Champ_...
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
class Champ_Post_Operateur_Eqn OWN_PTR(Champ_base) destine a post-traiter le gradient d un champ gene...
void completer(const Postraitement_base &post) override
void nommer_source() override
Entity localisation_inco_
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
const Champ_base & get_champ_compo_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const
const Champ_base & get_champ(OWN_PTR(Champ_base)&espace_stockage) const override
void set_param(Param ¶m) const override
void verification_cas_compo() const
Entity get_localisation(const int index=-1) const override
Renvoie le type des entites geometriques sur auxquelles les valeurs discretes sont attachees (NODE po...
const Champ_base & get_champ_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const override
const Operateur_base & Operateur() const override
classe Champ_base Cette classe est la base de la hierarchie des champs.
DoubleTab_t & les_sommets()
int face_sommets(int i, int j) const
renvoie le numero du ieme sommet de la face num_face.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Champ_Inc_base & inconnue() const =0
const Nom & le_nom() const override
Renvoie le nom du champ.
virtual Nature_du_champ fixer_nature_du_champ(Nature_du_champ nat)
Fixer la nature d'un champ: scalaire, multiscalaire, vectoriel.
Metadata for a distributed composite vector.
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
const MD_Vector_base & valeur() const
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
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 const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Operateur_base Classe est la base de la hierarchie des objets representant un
virtual DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const
Helper class to factorize the readOn method of Objet_U classes.
void ajouter_flag(const char *keyword, const bool *value)
Register a boolean flag whose mere presence switches it to true.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
Classe de base pour l'ensemble des postraitements.
classe Postraitement La classe est dotee -d une liste de champs generiques champs_post_complet_ qui c...
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual int nombre_d_equations() const =0
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ dimension(int d) const
virtual const MD_Vector & get_md_vector() const
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")