16#include <Schema_Temps_base.h>
17#include <Equation_base.h>
18#include <Probleme_base.h>
20#include <Source_base.h>
61 Cerr <<
"You must to overload the method Source_base::mettre_a_jour() because there's a big" << finl;
62 Cerr <<
"chance that the source term " <<
que_suis_je() <<
" must be updated," << finl;
63 Cerr <<
"especially if your source has a field, you must update it..." << finl << finl;
75 Cerr <<
"You must to overload the method Source_base::resetTime() because there's big" << finl;
76 Cerr <<
"chance that the source term " <<
que_suis_je() <<
" must be reset," << finl;
77 Cerr <<
"especially if your source has a field, you must reset its current time..." << finl << finl;
118 Cerr <<
"In Source_base::associer_champ_rho" << finl;
119 Cerr <<
" field : " << champ_rho.
le_nom() << finl;
120 Cerr <<
" Source of type : " <<
que_suis_je() << finl;
121 Cerr <<
" This source does not support the association of a field rho." << finl;
122 Cerr <<
" (method associer_champ_rho must be coded for this source term)." << finl;
155 if (opt == DESCRIPTION)
167static std::map<std::string, int> counters;
176 int nb_compo=
bilan_.size();
179 Cerr <<
"No balance printed for " <<
que_suis_je() << finl;
180 Cerr <<
"cause bilan_ array is not filled." << finl;
192 DoubleVect bilan_p(
bilan_);
202 for(
int k=0; k<nb_compo; k++)
203 Flux.add_col(bilan_p(k));
244 DoubleTrav secmem(
equation().inconnue().valeurs());
255 Cerr<<
"Source_base::contribuer_au_second_membre(DoubleTab& ) const uncoded"<<finl;
293 if (counters[type.
getString()]>1 && type!=
"")
295 Cerr <<
"Code should be rewritten to have only one call to Source_base::ouvrir_fichier for " << type <<
" source and not " << counters[type.
getString()] <<
" times." << finl;
304 if (type!=
"") nomfichier+=(
Nom)
"_"+type;
315 if (!gnuplot_header) fic <<
"#";
326 os.
ouvrir(nomfichier,ios::app);
329 os.
setf(ios::scientific);
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....
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.
Probleme_base & probleme()
Renvoie le probleme associe 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.
virtual int nb_comp() const
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
OBS_PTR(Equation_base) mon_equation
Une chaine de caractere (Nom) en majuscules.
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)).
classe Objet_U Cette classe est la classe de base des Objets de TRUST
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.
static const Nom & nom_du_cas()
Renvoie une reference constante vers le nom du cas.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
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.
bool & reprise_effectuee()
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
static void mp_sum_for_each_item(TRUSTArray< _TYPE_ > &x, int n=-1)
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
static int je_suis_maitre()
renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0),...
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
int nb_impr() const
Renvoie le nombre d'impressions effectuees.
double temps_courant() const
Renvoie le temps courant.
int gnuplot_header() const
int precision_impr() const
virtual int ouvrir(const char *name, IOS_OPEN_MODE mode=ios::out)
void precision(int pre) override
void setf(IOS_FORMAT code) override
Classe de base des flux de sortie.
void set_col_width(int w)
virtual int add_col(const double ob)
classe Source_base Un objet Source_base est un terme apparaissant au second membre d'une
void set_fichier(const Nom &)
virtual void mettre_a_jour(double temps)
DOES NOTHING - to override in derived classes.
virtual void associer_pb(const Probleme_base &)=0
Champs_compris champs_compris_
const Champ_base & get_champ(const Motcle &nom) const override
virtual void associer_domaines(const Domaine_dis_base &, const Domaine_Cl_dis_base &)=0
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
const Nom description() const
virtual int impr(Sortie &os) const
virtual void resetTime(double t)
DOES NOTHING - to override in derived classes.
virtual void associer_champ_rho(const Champ_base &champ_rho)
Cette methode (ou la methode de la classe derivee) est appelee par Sources::associer_champ_rho pour c...
virtual DoubleTab & calculer(DoubleTab &) const
virtual void ouvrir_fichier(SFichier &os, const Nom &, const int flag=1) const
Ouverture/creation d'un fichier d'impression d'un terme source A surcharger dans les classes derivees...
virtual void contribuer_au_second_membre(DoubleTab &) const
contribution au second membres des termes sources en implicite par defaut erreur
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual int initialiser(double temps)
Contrairement aux methodes mettre_a_jour, les methodes initialiser des sources ne peuvent pas dependr...
virtual void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const
contribution a la matrice implicite des termes sources par defaut pas de contribution
virtual void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={ }) const
virtual void dimensionner_bloc_vitesse(Matrice_Morse &) const
virtual void completer()
Met a jour les references internes a l'objet Source_base.
virtual int has_interface_blocs() const
virtual DoubleTab & ajouter(DoubleTab &) const
virtual int a_pour_Champ_Fonc(const Motcle &mot, OBS_PTR(Champ_base) &ch_ref) const
Si la source comprend le motcle "mot", elle remplit la reference a ch_ref et renvoie 1,...
virtual void dimensionner(Matrice_Morse &) const
Dimensionnement de la matrice implicite des termes sources.
virtual void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={ }) const