16#include <Source_Masse_Fluide_Dilatable_base.h>
17#include <Champ_front_uniforme.h>
18#include <Schema_Temps_base.h>
19#include <Probleme_base.h>
20#include <Equation_base.h>
21#include <Domaine_VF.h>
42 param.lire_avec_accolades_depuis(is);
44 if (!sub_type(Champ_front_base, ch_front_source_.valeur()))
46 Cerr <<
"Source_Masse_Fluide_Dilatable_base::readOn() - param 'surfacic_flux' must be a Champ_front!!" << finl;
59 Cerr <<
"Source_Masse_Fluide_Dilatable_base::completer() ..." << finl;
67 for (
int n_bord = 0; n_bord < domaine_cl_dis_->nb_cond_lim(); n_bord++)
69 const Cond_lim& la_cl = domaine_cl_dis_->les_conditions_limites(n_bord);
73 ch_front_source_->associer_fr_dis_base(la_cl->frontiere_dis());
81 Cerr <<
"Source_Masse_Fluide_Dilatable_base::associer_domaine(): Internal error - should not happen !!" << finl;
87 ch_front_source_->fixer_nb_valeurs_temporelles(nb_cases);
90 double tps = domaine_cl_dis_->equation().schema_temps().temps_courant();
91 ch_front_source_->initialiser(tps, domaine_cl_dis_->inconnue());
93 ncomp_ = ch_front_source_->valeurs().line_size();
97 file_out_ += domaine_cl_dis_->equation().probleme().le_nom();
100 Cerr <<
"Source_Masse_Fluide_Dilatable_base => File " <<
file_out_ <<
" created ..." << finl;
105 fic <<
"# Convective and Diffusive mass source flux at the " <<
nom_bord_ <<
" boundary" << finl;
108 for (
int i = 0; i <
ncomp_; i++)
109 fic <<
" \t Convective_flux_species_" << i <<
" \t Diffusive_flux_species_" << i;
119 double sum_conv = 0.;
120 std::vector<double> sum_diff_vect(
ncomp_);
121 const DoubleTab& val_flux0 = ch_front_source_->valeurs();
126 for (
int n_bord = 0; n_bord < domaine_cl_dis_->nb_cond_lim(); n_bord++)
128 const Cond_lim& la_cl = domaine_cl_dis_->les_conditions_limites(n_bord);
137 for (
int i = 0; i <
ncomp_; i++)
139 double sum_diff = 0.;
140 for (
int f = ndeb; f < nfin; f++)
143 sum_diff += is_uniforme ? val_flux0(0, i) * surf : val_flux0(f - ndeb, i) * surf;
154 fic.
setf(ios::scientific);
157 for (
int i = 0; i <
ncomp_; i++)
158 fic <<
" \t " << sum_conv <<
" \t " << sum_diff_vect[i];
166 ch_front_source_->changer_temps_futur(temps, i);
171 ch_front_source_->set_temps_defaut(temps);
176 const DoubleTab& val_flux0 = ch_front_source_->valeurs();
183 for (
int n_bord = 0; n_bord < domaine_cl_dis_->nb_cond_lim(); n_bord++)
185 const Cond_lim& la_cl = domaine_cl_dis_->les_conditions_limites(n_bord);
194 for (
int num_face = ndeb; num_face < nfin; num_face++)
195 for (
int ncomp = 0; ncomp < val_flux0.
line_size(); ncomp++)
196 val_flux(num_face, 0) += is_uniforme ? val_flux0(0, ncomp) : val_flux0(num_face - ndeb, ncomp);
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
Domaine_dis_base & domaine_dis()
Renvoie une reference sur le domaine discretise associe aux conditions aux limites.
virtual const DoubleVect & face_surfaces() const
Class defining operators and methods for all reading operation in an input flow (file,...
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
int num_premiere_face() const
const Nom & le_nom() const override
Renvoie le nom de la frontiere geometrique.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
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.
static double mp_sum(double)
Calcule la somme de x sur tous les processeurs du groupe courant.
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...
virtual int nb_valeurs_temporelles() const =0
void setf(IOS_FORMAT code) override
Classe de base des flux de sortie.
: classe Source_Masse_Fluide_Dilatable_base Une source speciale pour l'equation de masse (utilisee se...
void changer_temps_futur(double temps, int i)
virtual void associer_domaine_cl(const Domaine_Cl_dis_base &)
void set_temps_defaut(double temps)
void fill_val_flux_tab(DoubleTrav &val_flux) const
void mettre_a_jour(double temps)