16#include <Discretisation_base.h>
17#include <Schema_Temps_base.h>
18#include <Operateur_base.h>
19#include <Probleme_base.h>
22#include <Perf_counters.h>
26 os <<
" { " <<
typ <<
" } " << finl;
64 else if (motlu==
"nb_sous_pas_de_temps")
72 int nb_ss_pas_de_temps;
73 is >> nb_ss_pas_de_temps;
77 else if (motlu==
"implicite")
92 if(motlu !=
"solveur")
94 Cerr <<
"We expected the keyword \"solveur\" instead of : "
102 if(
typ!=
"non defini")
104 Cerr <<
"We must choose the type of operator in beginning "
105 <<
"of reading block (before implicit in particular) "
126 return le_champ_inco.valeur();
135 return mon_equation->discretisation();
147 le_champ_inco=mon_equation->inconnue();
175 if (
equation().equation_non_resolue())
177 statistics().begin_count(STD_COUNTERS::compute_dt,statistics().get_last_opened_counter_level()+1);
179 statistics().end_count(STD_COUNTERS::compute_dt);
197 return mon_equation->limpr();
239 DoubleTrav derivee(resu);
243 double dt_inv=1./(double(nstep));
244 for (i=0; i<nstep; i++)
248 resu.
ajoute(dt_inv, derivee) ;
285 return ajouter(le_champ_inco->valeurs(), resu);
298 return ajouter(le_champ_inco->valeurs(), resu);
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
Class defining operators and methods for all reading operation in an input flow (file,...
Solveur_Masse_base & solv_masse()
Renvoie le solveur de masse associe a l'equation.
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
void set_fichier(const Nom &)
virtual void calculer_dt_local(DoubleTab &) const
virtual void associer_champ(const Champ_Inc_base &, const std::string &nom_ch)
virtual void mettre_a_jour(double temps)
DOES NOTHING - to override in derived classes.
virtual double calculer_dt_stab() const
Calcul dt_stab.
int set_nb_ss_pas_de_temps(int)
virtual void completer()
Associe l'operateur au domaine_dis, le domaine_Cl_dis, et a l'inconnue de son equation.
int get_nb_ss_pas_de_temps() const
virtual int impr(Sortie &os) const
DOES NOTHING - to override in derived classes.
Entree & lire_solveur(Entree &)
virtual void ajouter_contribution_explicite_au_second_membre(const Champ_Inc_base &inconnue, DoubleTab &derivee) const
void set_description(const Nom &nom)
void associer_eqn(const Equation_base &)
Associe une equation a l'operateur.
const Champ_Inc_base & mon_inconnue() const
Renvoie le champ representant l'inconnue de l'equation dont l'operateur fait partie.
virtual Operateur_base & l_op_base()=0
Entree & lire(Entree &)
Lit un operateur sur un flot d'entree.
double calculer_pas_de_temps() const
Calcule le prochain pas de temps.
int limpr() const
Demande a l'equation si une impression est necessaire Renvoie 1 pour OUI, 0 sinon.
int impr(Sortie &os) const
Imprime l'operateur sur un flot de sortie de facon inconditionnelle.
virtual DoubleTab & calculer(const DoubleTab &, DoubleTab &) const =0
Sortie & ecrire(Sortie &) const
void imprimer(Sortie &os) const
Imprime l'operateur sur un flot de sortie, si c'est necessaire.
virtual void mettre_a_jour(double temps)
Effecttue une mise a jour en temps de l'operateur.
const Nom & type() const
Renvoie le (nom du) type de l'operateur a creer.
const Discretisation_base & discretisation() const
Renvoie la discretisation de l'equation dont l'operateur fait partie.
void ajouter_contribution_explicite_au_second_membre(const Champ_Inc_base &inconnue, DoubleTab &derivee) const
virtual DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const =0
void set_description(const Nom &nom)
virtual void completer()
Met a jour les references des objets associes a l'operateur.
void set_fichier(const Nom &nom)
void associer_champ(const Champ_Inc_base &, const std::string &nom_ch)
void calculer_pas_de_temps_locaux(DoubleTab &) const
Calculate the next local time steps.
static double mp_min(double)
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
classe Solveur_Masse_base Represente la matrice de masse d'une equation.
virtual DoubleTab & appliquer(DoubleTab &) const
renvoie appliquer_impl(x/coeffient_temporelle) si on a un coefficient temporel sinon renvoie applique...
Classe de base des flux de sortie.
void ajoute(_SCALAR_TYPE_ alpha, const TRUSTVect &y, Mp_vect_options opt=VECT_ALL_ITEMS)
void ajoute_sans_ech_esp_virt(_SCALAR_TYPE_ alpha, const TRUSTVect &y, Mp_vect_options opt=VECT_REAL_ITEMS)
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")