16#ifndef Source_PDF_base_included
17#define Source_PDF_base_included
19#include <Interpolation_IBM_base.h>
20#include <Prepro_IBM_base.h>
21#include <Source_dep_inco_base.h>
22#include <TRUST_Deriv.h>
46 DoubleTab&
ajouter(DoubleTab&)
const override;
47 DoubleTab&
ajouter_(
const DoubleTab&, DoubleTab&)
const override;
48 virtual DoubleTab&
ajouter_(
const DoubleTab&, DoubleTab&,
const int)
const ;
49 DoubleTab&
calculer(DoubleTab&)
const override;
50 DoubleTab&
calculer(DoubleTab&,
const int)
const;
54 double fonct_coeff(
const double,
const double,
const double)
const;
56 virtual DoubleVect
diag_coeff_elem(ArrOfDouble&,
const DoubleTab&,
int)
const ;
83 virtual void correct_pressure(
const DoubleTab&,DoubleTab&,
const DoubleTab&)
const;
108 DoubleTab
compute_pond(
const DoubleTab& rho_m,
const DoubleTab& aire,
const DoubleVect& volume_thilde,
int& nb_som_elem,
int& nb_elems)
const;
153 inline void comp_diff_L2_max(
double dim0,
double dim1,
const DoubleTab& Array_src,
const DoubleTab& Array_prep)
155 for (
int k = 0; k < dim1; k++)
160 for (
int dof = 0; dof <dim0; dof++)
162 double diff = abs(Array_prep(dof,k) - Array_src(dof,k));
163 err_L2 += diff * diff ;
164 L2 += Array_src(dof,k) * Array_src(dof,k) ;
165 if (diff > err_max) err_max = diff;
167 if (L2 > 1.0e-12) err_L2 = sqrt(err_L2 / L2);
169 Cerr<<
" composant # "<<k<<
" => "<<err_L2<<
" "<<err_max;
classe Champ_Don_base classe de base des Champs donnes (non calcules)
classe Champ_Fonc_base Classe de base des champs qui sont fonction d'une grandeur calculee
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
OBS_PTR(Equation_base) mon_equation
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Classe de base des flux de sortie.
class Source_PDF_base Base class for the source terms for the penalisation of the momentum in the Imm...
virtual void calculer_vitesse_imposee_power_law_tbl_u_star()
ArrOfDouble get_tuvw_local() const
int impr(Sortie &) const override
void set_dt_computation_pdf(double dt)
const int & getInterpolationBool() const
int type_variable_imposee_
bool matrice_pression_variable_bool_
double temps_computation_pdf_
void set_temps_computation_pdf(double temps_pdf)
DoubleTab compute_pond(const DoubleTab &rho_m, const DoubleTab &aire, const DoubleVect &volume_thilde, int &nb_som_elem, int &nb_elems) const
void creer_champ(const Motcle &motlu) override
OWN_PTR(Interpolation_IBM_base) interpolation_lue_
virtual void calculer_variable_imposee_elem_fluid()
double aire_geometrique_IBM(DoubleTab &, int)
OWN_PTR(Champ_Fonc_base) champ_vitesse_shape_IBM_
Champ pour postraitement.
const PDF_model & get_modele() const
const bool & get_matrice_pression_variable_bool_() const
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
DoubleVect & compute_source_term_PDF(int, DoubleTab &, DoubleVect &)
const Interpolation_IBM_base & getInterpolationLu() const
virtual void filtre_CLD(DoubleTab &) const
virtual void calculer_vitesse_imposee_power_law_tbl()
OWN_PTR(Champ_Fonc_base) champ_source_term_PDF_
Champ pour postraitement.
const Prepro_IBM_base & getpreproLu() const
void comp_diff_L2_max(double dim0, double dim1, const DoubleTab &Array_src, const DoubleTab &Array_prep)
void set_sec_mem_pdf(DoubleTab &it)
const Champ_Don_base & get_champ_rotation() const
OWN_PTR(Champ_Fonc_base) champ_barycentre_IBM_
Champ pour postraitement.
void calculer_variable_imposee()
void compute_NeighNode_IBM_elem(DoubleTab &, IntLists &, bool all_elem_vois=false)
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.
virtual void calculer_variable_imposee_mean_grad()
double dt_computation_pdf_
OWN_PTR(Champ_Fonc_base) champ_pseudo_level_set_IBM_
Champ pour postraitement.
virtual void compute_variable_imposee_projete(const DoubleTab &, const DoubleTab &, double, double)
void update_elem_IBM(DoubleTab &, double, double)
OWN_PTR(Prepro_IBM_base) prepro_lu_
double fonct_regul_PDF(const int, const double)
bool barycentre_from_prepro_
OWN_PTR(Champ_Fonc_base) champ_aire_IBM_
Champ pour postraitement.
virtual void compute_indicateur_nodal_champ_aire()
virtual void set_source_pdf(DoubleTab &it)
void get_fields_from_prepro(Prepro_IBM_base &)
void rotate_imposed_velocity(DoubleTab &)
DoubleTab & calculer_pdf(DoubleTab &) const
virtual DoubleVect diag_coeff_elem(ArrOfDouble &, const DoubleTab &, int) const
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
contribution a la matrice implicite des termes sources par defaut pas de contribution
DoubleTab source_term_PDF
virtual DoubleTab compute_coeff_matrice() const
virtual void volume_source_term_PDF(DoubleTab &)
void ouvrir_fichier(SFichier &, const Nom &, const int) const override
Ouverture/creation d'un fichier d'impression d'un terme source A surcharger dans les classes derivees...
OWN_PTR(Champ_Don_base) champ_nodal_
virtual void correct_variable(const DoubleTab &, DoubleTab &) const
virtual void correct_pressure(const DoubleTab &, DoubleTab &, const DoubleTab &) const
virtual void multiply_coeff_volume(DoubleTab &) const
double fonct_coeff(const double, const double, const double) const
DoubleTab indicateur_nodal_champ_aire_
IntTab indicateur_dead_cell_
void set_fields_to_prepro(Prepro_IBM_base &)
const Champ_Don_base & get_champ_aire() const
const DoubleTab & get_sec_mem_pdf() const
virtual void calculer_variable_imposee_hybrid()
void associer_domaines(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
void update_pseudo_level_set_IBM(DoubleTab &, double)
const DoubleTab & get_source_pdf() const
DoubleTab & ajouter_(const DoubleTab &, DoubleTab &) const override
void set_variable_imposee()
DoubleTab & calculer(DoubleTab &) const override
virtual void calculer_temperature_imposee_wall_law()
virtual DoubleTab compute_coeff_elem() const
DoubleTab & ajouter(DoubleTab &) const override
const Champ_base & get_champ(const Motcle &) const override
void associer_pb(const Probleme_base &) override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
bool rotation_from_prepro_
void verify_results_prepro()
DoubleTab variable_imposee_
void set_matrice_pression_variable_bool_(bool &flag)
OWN_PTR(Champ_Fonc_base) champ_normal_IBM_
Champ pour postraitement.
virtual void correct_incr_pressure(const DoubleTab &, DoubleTab &) const
class Source_dep_inco_base Les sources heritant de cette clase doivent coder ajouter_ de facon a perm...