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
classe Champ_base Cette classe est la base de la hierarchie des champs.
DoubleTab_t & les_sommets()
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
double carre_pas_maille(int i) const
double carre_pas_du_maillage() const
int nb_faces_bord() const
renvoie le nombre de faces sur lesquelles sont appliquees les conditions limites :
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
class Op_Diff_EF_base Classe de base des operateurs de diffusion EF
double calculer_dt_stab() const override
Calcul 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
Impression des flux d'un operateur EF aux faces (ie: diffusion, convection).
classe Operateur_Diff_base Cette classe est la base de la hierarchie des operateurs representant
virtual const Champ_base & diffusivite() const =0
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
Renvoie le champ_don correspondant a la vraie diffusivite du milieu qui sert pour le calcul du pas de...
static double mp_min(double)
Classe de base des flux de sortie.
virtual const Champ_base & get_champ_masse_volumique() const
Renvoie le champ de masse volumique.
virtual void declare_support_masse_volumique(int ok)
Le constructeur d'une classe derivee qui se sert de la masse volumique doit appeler cette fonction av...
virtual int has_champ_masse_volumique() const
Renvoie 1 si la masse volumique a ete associee, 0 sinon.