16#include <Champ_Gen_de_Champs_Gen.h>
17#include <Champ_Generique_refChamp.h>
18#include <Discretisation_base.h>
19#include <Champ_Fonc_base.h>
20#include <Champs_compris.h>
50 param.
ajouter(
"sources_reference",&noms_sources_ref_);
60 Journal() <<
"Reading a source type " << typ << finl;
62 is >> new_src.valeur();
65 else if (mot==
"source_reference")
67 Nom& new_s = noms_sources_ref_.add(
Nom());
69 Cerr<<
"WARNING : obsolete option. Use now sources_reference { " << new_s<<
" } instead of source_reference "<<new_s<<finl;
72 else if (mot==
"sources")
83 Cerr<<
"We should not use the keyword \"sources\" to specify a generic field"<<finl;
84 Cerr<<
"of type Champ_Gen_de_Champs_Gen without specifying sources"<<finl;
90 Journal() <<
"Reading a source type " << typ << finl;
92 is >> new_src.valeur();
98 Cerr << typ <<
" : We expected a ',' or '}'" << finl;
105 else if (mot==
"nom_source")
123 const int n = sources_.size();
124 for (
int i = 0; i < n; i++)
128OWN_PTR(
Champ_Fonc_base)& Champ_Gen_de_Champs_Gen::creer_espace_stockage(
const Nature_du_champ& nature,
134 ToDo_Kokkos(
"critical, call to creer_espace_stockage() is expensive on GPU (fields copy on host). Refactor like Champ_Generique_Moyenne and other advanced fields...");
149 if (directive==
"pression")
160 if ((sources_reference_.size()==0) && (sources_.size()==0))
163 Cerr <<
"Error : The field \"" << noms_sources_ref_ <<
"\" is not recognized in the sources_reference option of the " <<
que_suis_je() <<
" keyword." << finl;
164 Cerr <<
"\"" << noms_sources_ref_ <<
"\" should be defined before." << finl;
167 int n_sources_ref=sources_reference_.size();
170 if ( !sources_reference_[i])
173 Cerr <<
"Error : The field \"" << noms_sources_ref_[0] <<
"\" is not recognized in the sources_reference option of the " <<
que_suis_je() <<
" keyword." << finl;
174 Cerr <<
"\"" << noms_sources_ref_[0] <<
"\" should be defined before." << finl;
177 return sources_reference_[i].valeur();
180 return sources_[i-n_sources_ref].valeur();
186 return ref_cast_non_const(Champ_Generique_base,
get_source(i));
192 return sources_reference_.size()+sources_.size();
200 std::vector<YAML_data> data;
201 const int n = sources_.size();
202 for (
int i = 0; i < n; i++)
204 std::vector<YAML_data> source_data = sources_[i]->data_a_sauvegarder();
205 data.insert(data.end(), source_data.begin(), source_data.end());
215 const int n = sources_.size();
217 for (
int i = 0; i < n; i++)
227 const int n = sources_.size();
228 for (
int i = 0; i < n; i++)
235 int n_sources_ref=noms_sources_ref_.size();
236 if ( n_sources_ref!=sources_reference_.size())
238 sources_reference_.vide();
239 for (
int i=0; i<n_sources_ref; i++)
247 for (
int i = n_sources_ref ; i < n; i++)
253 const Nom& my_parent = champ.get_parent_name();
255 champ.set_parent_name(
me);
283 int rang = motcles.
search(query);
381 for (
int i=0; i<nb_sources; i++)
386 champ.nommer_sources(post);
387 champ.nommer_source();
392 champ.nommer_source(post);
396 Cerr<<
"There is no method nommer_source() for this type of field "<<finl;
397 Cerr<<
"sources_[i]->que_suis_je()"<<finl;
419 for (
int i = 0; i < n; i++)
432 for (
int i = 0; i < n; i++)
446 for (
int i = 0; i < n; i++)
475 throw std::runtime_error(std::string(
"Field ") + nom.
getString() + std::string(
" not found !"));
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 ...
void get_copy_values(DoubleTab &) const override
Remplit le tableau values avec les valeurs discretes du champ (cree une copie).
void mettre_a_jour(double temps) override
int sauvegarder(Sortie &os) const override
sauvegarde des differentes sources
const IntTab & get_ref_connectivity(Entity index1, Entity index2) const override
Renvoie le tableau de connectivite entre l'entite geometrique index1 et l'entite index2.
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 DoubleTab & get_ref_coordinates() const override
Renvoie une reference au tableau des coordonnees des sommets du maillage support du champ,...
virtual void lire_bidon(Entree &is) const
int comprend_champ_post(const Motcle &identifiant) const override
virtual int get_nb_sources() const
void nommer_sources(const Postraitement_base &post)
int get_info_type_post() const override
virtual void fixer_tstat_deb(const double t1, const double t2)
const Noms get_property(const Motcle &query) const override
Renvoie la propriete demandee.
const Champ_Generique_base & get_champ_post(const Motcle &nom) const override
virtual OWN_PTR(Champ_Fonc_base) &creer_espace_stockage(const Nature_du_champ &nature
void completer(const Postraitement_base &post) override
int reprendre(Entree &is) override
reprise des differentes sources
const Probleme_base & get_ref_pb_base() const override
Renvoie le probleme qui porte le champ cible.
void get_property_names(Motcles &list) const override
Renvoie la liste des "query" possibles pour le champ.
void get_copy_coordinates(DoubleTab &) const override
std::vector< YAML_data > data_a_sauvegarder() const override
for PDI IO: retrieve name, type and dimensions of the field to save/restore
void get_copy_connectivity(Entity index1, Entity index2, IntTab &) const override
void get_xyz_values(const DoubleTab &coords, DoubleTab &values, ArrOfBit &validity_flag) const override
Calcule la valeur ponctuelle du champ aux coordonnees donnees dans coords et les met dans values.
int get_dimension() const override
Renvoie la dimension de l'espace dans lequel le champ est defini.
const Domaine & get_ref_domain() const override
Renvoie une ref au domaine sur lequel sera evalue l espace de stockage.
void get_copy_domain(Domaine &) const override
Cree une copie du domaine sur lequel sera evalue l espace de stockage.
bool has_champ_post(const Motcle &nom) const override
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
virtual void nommer_source()
void set_param(Param ¶m) const override
virtual Champ_Generique_base & set_source(int i)
const Motcle get_directive_pour_discr() const override
Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression) pour lancer la discretisatio...
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.
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
virtual void fixer_serie(const double t1, const double t2)
const DoubleTab & get_ref_values() const override
Renvoie une reference au tableau de valeurs discretes s'il existe en memoire.
virtual const int nb_comp
class Champ_Generique_base
virtual const Noms get_property(const Motcle &query) const
Renvoie la propriete demandee.
virtual const Domaine_dis_base & get_ref_domaine_dis_base() const
Renvoie une ref au domaine_discretisee du domaine sur lequel sera evalue l espace de stockage.
virtual bool has_champ_post(const Motcle &nom) const
virtual void get_property_names(Motcles &list) const
Renvoie la liste des "query" possibles pour le champ.
virtual const IntTab & get_ref_connectivity(Entity index1, Entity index2) const
Renvoie le tableau de connectivite entre l'entite geometrique index1 et l'entite index2.
virtual int comprend_champ_post(const Motcle &identifiant) const
virtual void get_copy_connectivity(Entity index1, Entity index2, IntTab &) const
virtual const Champ_Generique_base & get_champ_post(const Motcle &nom) const
virtual const Domaine_Cl_dis_base & get_ref_zcl_dis_base() const
Renvoie une ref au domaine_cl_discretisee de l equation portant le champ cible.
virtual double get_time() const
Renvoie le temps du Champ_Generique_base.
virtual int get_dimension() const
Renvoie la dimension de l'espace dans lequel le champ est defini.
virtual int get_info_type_post() const =0
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
virtual void get_copy_domain(Domaine &) const
Cree une copie du domaine sur lequel sera evalue l espace de stockage.
virtual const DoubleTab & get_ref_coordinates() const
Renvoie une reference au tableau des coordonnees des sommets du maillage support du champ,...
virtual const DoubleTab & get_ref_values() const
Renvoie une reference au tableau de valeurs discretes s'il existe en memoire.
virtual const Probleme_base & get_ref_pb_base() const
Renvoie le probleme qui porte le champ cible.
virtual Entity get_localisation(const int index=-1) const
Renvoie le type des entites geometriques sur auxquelles les valeurs discretes sont attachees (NODE po...
virtual void get_copy_coordinates(DoubleTab &) const
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
virtual const Domaine & get_ref_domain() const
Renvoie une ref au domaine sur lequel sera evalue l espace de stockage.
virtual const Motcle get_directive_pour_discr() const
Renvoie la directive (champ_elem, champ_sommets, champ_face ou pression) pour lancer la discretisatio...
virtual const Discretisation_base & get_discretisation() const
Renvoie la discretisation associee au probleme.
OBS_PTR(Probleme_base) ref_pb_
virtual void completer(const Postraitement_base &post)=0
Classe de champ particuliere qui encapsule une reference a un champ volumique de TRUST de type Champ_...
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,...
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
const std::string & getString() const
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 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.
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
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...
virtual const Champ_Generique_base & get_champ_post(const Motcle &nom) const
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
static Sortie & Journal(int message_level=0)
Renvoie un objet statique de type Sortie qui sert de journal d'evenements.
static int me()
renvoie mon rang dans le groupe de communication courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.