16#ifndef Terme_Boussinesq_base_included
17#define Terme_Boussinesq_base_included
19#include <Convection_Diffusion_Temperature.h>
20#include <Equation_base.h>
21#include <Probleme_base.h>
22#include <TRUST_Vector.h>
66 DoubleTab&
calculer(DoubleTab& resu)
const override
75 fct_Scalaire0_[i].setVar(0,temps);
92 inline void check()
const;
103 if (inf_ou_egal(moyenne_T,T0-10) || sup_ou_egal(moyenne_T,T0+10))
105 Cerr <<
"New criteria in TRUST for the Boussinesq source term definition:" << finl;
106 Cerr <<
"To avoid an incorrect choice for T0 value" << finl;
108 Cerr <<
"should be between +/-10 degrees around T0 value." << finl;
109 Cerr <<
"The initial average temperature is : " << moyenne_T << finl;
110 Cerr <<
"T0 value is : " << T0 << finl;
111 Cerr <<
"So, you need to change T0 or the initial temperature field to respect this criteria defined by default." << finl;
112 Cerr <<
"If you want to overcome this criteria, which it is not recommended," << finl;
113 Cerr <<
"you can specify, into the Boussinesq source term definition, the option:" << finl;
114 Cerr <<
"verif_boussinesq 0" << finl;
120inline double valeur(
const DoubleTab& valeurs,
const int elem,
const int dim)
123 return valeurs(elem);
125 return valeurs(elem,dim);
129inline double valeur(
const DoubleTab& valeurs_champ,
int elem1,
int elem2,
const int compo)
132 return valeurs_champ(0,compo);
135 if (elem2<0) elem2 = elem1;
136 if (valeurs_champ.
nb_dim()==1)
137 return 0.5*(valeurs_champ(elem1)+valeurs_champ(elem2));
139 return 0.5*(valeurs_champ(elem1,compo)+valeurs_champ(elem2,compo));
142KOKKOS_INLINE_FUNCTION
143double valeur(CDoubleTabView valeurs_champ,
int valeurs_champ_dimension0,
int nb_dim,
int elem1,
int elem2,
const int compo,
int nb_compo)
145 if (valeurs_champ_dimension0==1)
146 return valeurs_champ(compo,0);
149 if (elem2 < 0) elem2 = elem1;
151 return 0.5*(valeurs_champ(elem1,0)+valeurs_champ(elem2,0));
153 return 0.5*(valeurs_champ(elem1,compo)+valeurs_champ(elem2,compo));
classe Champ_Don_base classe de base des Champs donnes (non calcules)
classe Convection_Diffusion_Temperature Cas particulier de Convection_Diffusion_std
classe Convection_Diffusion_std Cette classe est la base des equations modelisant le transport
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
Class defining operators and methods for all reading operation in an input flow (file,...
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Helper class to factorize the readOn method of Objet_U classes.
classe Parser_U Version de la classe Parser, derivant de Objet_U.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
classe Source_base Un objet Source_base est un terme apparaissant au second membre d'une
virtual DoubleTab & ajouter(DoubleTab &) const
_SIZE_ dimension(int d) const
Classe Terme_Boussinesq_base Cette classe represente le terme de gravite qui figure dans l'equation.
void set_param(Param ¶m) const override
OBS_PTR(Champ_Don_base) la_gravite_
void associer_pb(const Probleme_base &pb) override
OBS_PTR(Convection_Diffusion_std) equation_scalaire_
double Scalaire0(int i) const
const Convection_Diffusion_std & equation_scalaire() const
void mettre_a_jour(double temps) override
DOES NOTHING - to override in derived classes.
const Champ_Don_base & gravite() const
const ArrOfDouble & getScalaire0() const
DoubleTab & calculer(DoubleTab &resu) const override
VECT(Parser_U) fct_Scalaire0_
OBS_PTR(Champ_Don_base) beta_
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.
const Champ_Don_base & beta() const