16#include <Champ_Generique_Gradient.h>
17#include <Domaine_VF.h>
18#include <Champ_Generique_refChamp.h>
19#include <Discretisation_base.h>
20#include <Synonyme_info.h>
51 if ( (mon_champ_inc.
le_nom()==
"pression") || ((mon_champ_inc.
le_nom()!=
"vitesse") && (mon_champ_inc.
que_suis_je()==
"Champ_P1NC"))
52 || ((mon_champ_inc.
le_nom()!=
"vitesse") && (mon_champ_inc.
que_suis_je()==
"Champ_P0_VDF")) )
65 (eq_test.
le_nom()!=
"Conduction")))
73 Op_Grad_.l_op_base().associer_eqn(eqn);
82 Cerr<<
"We can apply a Champ_Generique_Gradient only to the pressure field"<<finl;
83 Cerr<<
"or to a field of type Champ_P1NC or Champ_P0_VDF at one component"<<finl;
89 Cerr<<
"We can apply a Champ_Generique_Gradient only to an unknown field of the problem"<<finl;
101 espace_stockage = creer_espace_stockage(vectoriel,
dimension,es_tmp);
107 Cerr<<
"We can apply a Champ_Generique_Gradient only to the pressure field"<<finl;
108 Cerr<<
"or to a field of type Champ_P1NC or Champ_P0_VDF at one component"<<finl;
111 return espace_stockage;
121 espace_stockage = creer_espace_stockage(vectoriel,
dimension,es_tmp);
126 if ((type_op!=
"Op_Grad_P1NC_to_P0") && (type_op!=
"Op_Grad_P0_to_Face"))
127 Op_Grad_.equation().solv_masse().appliquer(espace_stockage->
valeurs());
132 Cerr<<
"We can apply a Champ_Generique_Gradient only to the pressure field"<<finl;
133 Cerr<<
"or to a field of type Champ_P1NC or Champ_P0_VDF at one component"<<finl;
134 Cerr<<
"The space of storage of field treated here "<<nom[0]<<
" is of type"<<source.
que_suis_je()<<finl;
138 DoubleTab& espace_valeurs = espace_stockage->
valeurs();
140 return espace_stockage;
149 motcles[0] =
"composantes";
150 motcles[1] =
"unites";
152 int rang = motcles.
search(query);
163 Nom nom_champ = "pression";
165 //Valable si Champ_Fonc_P1NC
166 Noms mots(dimension);
167 Nom compo_temp="gradient_";
169 for (int i=0; i<dimension; i++) {
171 mots[i] = compo_temp+nom_champ +"X";
174 mots[i] = compo_temp+nom_champ +"Y";;
177 mots[i] = compo_temp+nom_champ +"Z";
203 unites[i] = source_unites[0]+
"/m";
217 if ((type_op==
"Op_Grad_P1NC_to_P0") && (index <= 0))
218 loc = Entity::ELEMENT;
219 else if ((type_op==
"Op_Grad_P0_to_Face") && (index <= 0))
223 Cerr <<
"Error of type : Gradient operator " << type_op <<
" is not possible for the defined field " <<
nom_post_ << finl;
234 Nom nom_post_source, nom_champ_source;
236 nom_champ_source = nom[0];
237 nom_post_source =
"Gradient_";
238 nom_post_source += nom_champ_source;
248 if (type_op==
"Op_Grad_P1NC_to_P0")
249 directive =
"champ_elem";
251 directive =
"gradient_pression";
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
const Probleme_base & get_ref_pb_base() const override
Renvoie le probleme qui porte le champ cible.
virtual const Champ_Generique_base & get_source(int i) const
virtual const int nb_comp
class Champ_Generique_Gradient OWN_PTR(Champ_base) destine a post-traiter le gradient d un champ gene...
void completer(const Postraitement_base &post) override
const Motcle get_directive_pour_discr() const override
Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression) pour lancer la discretisatio...
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
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 Champ_base & get_champ(OWN_PTR(Champ_base)&espace_stockage) const override
void nommer_source() override
Classe Champ_Generique_Operateur_base Classe de base des classes de champs generiques dediees a l 'ap...
virtual const Noms get_property(const Motcle &query) const
Renvoie la propriete demandee.
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.
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....
const Nom & le_nom() const override
Renvoie le nom de l'equation.
virtual const Champ_Inc_base & inconnue() const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
const Nom & le_nom() const override
Renvoie le nom du champ.
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 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")