16#include <Op_Diff_EF_base.h>
17#include <Champ_Uniforme.h>
18#include <Milieu_base.h>
19#include <Probleme_base.h>
20#include <Schema_Temps_base.h>
21#include <Domaine_EF.h>
22#include <Domaine_Cl_EF.h>
23#include <Champ_Fonc_P0_base.h>
28Op_Diff_EF_base::Op_Diff_EF_base()
65 inconnue = ch_transporte;
67 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
81 double dt_stab = DMAXFLOAT;
82 const Domaine_EF& domaine_EF = le_dom_EF.valeur();
92 const DoubleVect& valeurs_diffusivite = champ_diffusivite.
valeurs();
93 double alpha_max = local_max_vect(valeurs_diffusivite);
95 if ((alpha_max == 0.)||(domaine_EF.
nb_elem()==0))
100 dt_stab = min_delta_h_carre / (2. *
dimension * alpha_max);
109 const DoubleVect& valeurs_diffusivite = champ_diffusivite.
valeurs();
110 const int nb_elem = domaine_EF.
nb_elem();
113 for (elem = 0; elem < nb_elem; elem++)
116 const double diffu = valeurs_diffusivite(elem)+DMINFLOAT;
118 for (
int d=0; d<3; d++)
120 dl=coord(elems(elem,0),d)-coord(elems(elem,7),d);
123 const double dt = dx2 / diffu;
136 const DoubleTab& valeurs_diffu = champ_diffu.
valeurs();
138 const DoubleTab& valeurs_rho = champ_rho.
valeurs();
141 const int nb_elem = domaine_EF.
nb_elem();
144 for (elem = 0; elem < nb_elem; elem++)
147 const double diffu = valeurs_diffu(elem);
148 const double rho = valeurs_rho(elem);
149 const double dt = h_carre * rho / (deux_dim * diffu);
virtual DoubleTab & valeurs()=0
class Champ_base This class is the base of the fields hierarchy.
DoubleTab_t & les_sommets()
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
double carre_pas_maille(int i) const
double carre_pas_du_maillage() const
int nb_faces_bord() const
Returns the number of faces on which boundary conditions are applied:
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
class Op_Diff_EF_base Base class for EF diffusion operators.
double calculer_dt_stab() const override
Computes dt_stab.
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &) override
int impr(Sortie &os) const override
DOES NOTHING - to override in derived classes.
virtual void remplir_nu(DoubleTab &) const =0
int impr(Sortie &, const Operateur_base &) const
Prints the boundary fluxes of an EF operator at faces (i.e., diffusion, convection).
Operateur_Diff_base This class is the base of the hierarchy of operators representing.
virtual const Champ_base & diffusivite() const =0
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
Returns the field corresponding to the true diffusivity of the medium used for the time step computat...
static double mp_min(double)
Base class for output streams.
virtual const Champ_base & get_champ_masse_volumique() const
Returns the density field.
virtual void declare_support_masse_volumique(int ok)
The constructor of a derived class that uses the density field must call this function with the value...
virtual int has_champ_masse_volumique() const
Returns 1 if the density field has been associated, 0 otherwise.