15#include <Champ_Generique_Morceau_Equation.h>
16#include <Domaine_VF.h>
17#include <Champ_Generique_refChamp.h>
18#include <Discretisation_base.h>
19#include <Operateur_base.h>
21#include <Synonyme_info.h>
109 Cerr<<
"We can apply a Champ_Generique_Morceau_Equation only to an unknown field of the problem"<<finl;
121OWN_PTR(
Champ_Fonc_base)& Champ_Generique_Morceau_Equation::creer_espace_stockage(
const Nature_du_champ& nature,
135 directive =
"champ_face";
142 if (directive==
"pression")
161 OWN_PTR(Champ_Fonc_base) es_tmp;
162 Nature_du_champ nature;
165 if ((Motcle(
option_)==
"stabilite") || (Motcle(
option_)==
"flux_bords") || (Motcle(
option_)==
"flux_surfacique_bords"))
172 Cerr <<
"Error. Contact TRUST support." << finl;
176 espace_stockage = creer_espace_stockage(nature,
nb_comp,es_tmp);
178 DoubleTab& es_val = espace_stockage->
valeurs();
180 return espace_stockage;
185 OWN_PTR(Champ_Fonc_base) es_tmp;
186 Nature_du_champ nature;
189 if ((Motcle(
option_)==
"stabilite") || (Motcle(
option_)==
"flux_bords") || (Motcle(
option_)==
"flux_surfacique_bords"))
195 espace_stockage = creer_espace_stockage(nature,
nb_comp,es_tmp);
196 return espace_stockage;
202 motcles[0] =
"composantes";
203 motcles[1] =
"unites";
205 int rang = motcles.search(query);
225 if (Motcle(
option_)==
"stabilite")
227 else if (Motcle(
option_).debute_par(
"FLUX_"))
230 if (ref_eq_->inconnue().le_nom()==
"vitesse")
235 else if (ref_eq_->inconnue().le_nom()==
"temperature") unites[0]=
"W";
236 if (Motcle(
option_)==Motcle(
"flux_surfacique_bords"))
253 loc = Entity::ELEMENT;
260 Cerr <<
"Error of type : localisation should be specified to elem or som or face for the defined field " <<
nom_post_ << finl;
261 throw Champ_Generique_erreur(
"INVALID");
270 Motcle type_morceau, type_option;
274 type_morceau =
"diffusion";
276 type_morceau =
"convection";
278 type_morceau =
"gradient";
280 type_morceau =
"divergence";
283 Cerr<<
"This operateur number is not available."<<finl;
289 Cerr<<
"Currently the only pieces of equations considered for the postprocessing"<<finl;
290 Cerr<<
"are of type operator"<<finl;
294 if (Motcle(
option_)==
"stabilite")
296 else if (Motcle(
option_)==
"flux_bords")
298 type_option =
"flux_bords";
300 else if (Motcle(
option_)==
"flux_surfacique_bords")
302 type_option =
"flux_surfacique_bords";
306 Cerr<<
"Currently the only options considered for a piece of equation are \"stabilite\" and \"flux_bords\"."<<finl;
314 const Nom& nom_eq = ref_eq_->le_nom();
315 nom_post_source = nom_eq;
316 nom_post_source +=
"_";
317 nom_post_source += type_morceau;
318 nom_post_source +=
"_";
319 nom_post_source += type_option ;
320 if ((Motcle(
option_)==
"flux_bords") || (Motcle(
option_)==
"flux_surfacique_bords"))
323 nom_post_source += nume;
335 int nb_operateurs = ref_eq_->nombre_d_operateurs();
337 return ref_eq_->operateur_fonctionnel(
numero_morceau_-nb_operateurs).l_op_base();
344 int nb_operateurs = ref_eq_->nombre_d_operateurs();
346 return ref_eq_->operateur_fonctionnel(
numero_morceau_-nb_operateurs).l_op_base();
356 directive =
"champ_elem";
358 directive =
"champ_face";
360 directive =
"champ_sommets";
363 Cerr <<
"Error of type : localisation should be specified to elem or som or face for the defined field " <<
nom_post_ << finl;
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
Classe de base des champs generiques ayant comme source d'autres champs generiques L'utilisation des ...
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
void completer(const Postraitement_base &post) override
const Probleme_base & get_ref_pb_base() const override
Renvoie le probleme qui porte le champ cible.
const Domaine_Cl_dis_base & get_ref_zcl_dis_base() const override
Renvoie une ref au domaine_cl_discretisee de l equation portant le champ cible.
virtual const Champ_Generique_base & get_source(int i) const
void set_param(Param ¶m) const override
const Discretisation_base & get_discretisation() const override
Renvoie la discretisation associee au probleme.
const Domaine_dis_base & get_ref_domaine_dis_base() const override
Renvoie une ref au domaine_discretisee du domaine sur lequel sera evalue l espace de stockage.
double get_time() const override
Renvoie le temps du Champ_Generique_base.
class Champ_Generique_Morceau_Equation OWN_PTR(Champ_base) destine a post-traiter une quantite liee a...
const MorEqn & morceau() const
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
void nommer_source() override
void completer(const Postraitement_base &post) override
void set_param(Param ¶m) const override
OWN_PTR(Champ_Fonc_base) &creer_espace_stockage(const Nature_du_champ &nature
const Motcle get_directive_pour_discr() const override
Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression) pour lancer la discretisatio...
const Champ_base & get_champ(OWN_PTR(Champ_base)&espace_stockage) const override
const Champ_base & get_champ_without_evaluation(OWN_PTR(Champ_base)&espace_stockage) const override
Entity get_localisation(const int index=-1) const override
Renvoie le type des entites geometriques sur auxquelles les valeurs discretes sont attachees (NODE po...
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_...
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
virtual void completer(const Domaine_Cl_dis_base &zcl)
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
void discretiser_champ(const Motcle &directive, const Domaine_dis_base &z, const Nom &nom, const Nom &unite, int nb_comp, int nb_pas_dt, double temps, OWN_PTR(Champ_Inc_base)&champ, const Nom &sous_type=NOM_VIDE) const
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
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.
classe MorEqn Classe qui regroupe les fonctionnalites de liaison avec une
virtual Motcle get_localisation_pour_post(const Nom &option) const
virtual void calculer_pour_post(Champ_base &espace_stockage, const Nom &option, int comp) const
Une chaine de caractere (Nom) en majuscules.
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.
Helper class to factorize the readOn method of Objet_U classes.
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 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.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")