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);
class Cond_lim Generic class used to represent any class
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
Domaine_dis_base & domaine_dis()
Returns a reference to the discretized domain associated with the boundary conditions.
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()
Returns the time scheme associated with the equation.
int num_premiere_face() const
const Nom & le_nom() const override
Returns the name of the geometric boundary.
const Equation_base & equation() const
Returns the reference to the equation pointed to by MorEqn::mon_equation.
Base class for TRUST objects (Objet_U).
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.
static const Nom & nom_du_cas()
Returns a constant reference to the case name. This method is static.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
static double mp_sum(double)
Computes the sum of x over all processors in the current group.
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
static int je_suis_maitre()
Returns 1 if on the master processor of the current group (i.e. me() == 0), 0 otherwise.
SFichier is to the C++ ofstream class what Sortie is to the C++ ostream class.
virtual int nb_valeurs_temporelles() const =0
void setf(IOS_FORMAT code) override
Base class for output streams.
Special mass source term for the mass equation (used only during the projection/correction step).
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)