16#ifndef Navier_Stokes_std_included
17#define Navier_Stokes_std_included
19#include <Traitement_particulier_NS_base.h>
20#include <Assembleur_base.h>
21#include <Operateur_Grad.h>
22#include <Operateur_Conv.h>
23#include <Operateur_Diff.h>
24#include <Operateur_Div.h>
25#include <TRUST_Deriv.h>
104 void dimensionner_blocs(matrices_t matrices,
const tabs_t& semi_impl = {})
const override;
105 void assembler_blocs(matrices_t matrices, DoubleTab& secmem,
const tabs_t& semi_impl = {})
const override;
150 virtual void sauver()
const;
205 mutable int postraitement_gradient_P_;
206 double LocalFlowRateRelativeError()
const;
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.
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
Classe Matrice_Base Classe de base de la hierarchie des matrices.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
Classe Matrice Classe generique de la hierarchie des matrices.
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
Une chaine de caractere (Nom) en majuscules.
virtual const Champ_base & diffusivite_pour_pas_de_temps() const
OWN_PTR(Traitement_particulier_NS_base) le_traitement_particulier
Operateur_Diff terme_diffusif
void dimensionner_matrice_sans_mem(Matrice_Morse &matrice) override
const Champ_Inc_base & pression() const
virtual const Champ_Inc_base & rho_la_vitesse() const
virtual void updateFluidForce(DoubleTab &)
const Milieu_base & milieu() const override
Renvoie le milieu physique de l'equation (le Fluide_base upcaste en Milieu_base).
const Champ_Inc_base & div() const
const Motcle & domaine_application() const override
Renvoie le nom du domaine d'application: "Hydraulique".
OWN_PTR(Assembleur_base) assembleur_pression_
virtual void modify_initial_variable()
void resetTime(double time) override
Reset current time of the equation. Used from ICoCo. See documentation of Problem_base::resetTime().
int reprendre(Entree &) override
Effectue une reprise a partir d'un flot d'entree.
Operateur_Conv terme_convectif
const Champ_Inc_base & grad_P() const
const Champ_Inc_base & inconnue() const override
Renvoie la vitesse (champ inconnue de l'equation) (version const).
void creer_champ(const Motcle &motlu) override
virtual const Champ_base & vitesse_pour_transport() const
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.
Entree & lire_cond_init(Entree &) override
Lecture des conditions initiales dans un flot d'entree.
DoubleTab & corriger_derivee_impl(DoubleTab &) override
Resolution de la pression, inconnue implicitee de Navier Stokes.
const Fluide_base & fluide() const
Renvoie le fluide incompressible (milieu physique de l'equation) associe a l'equation.
virtual Champ_Inc_base & vitesse()
void mettre_a_jour(double temps) override
Effectue une mise a jour en temps de l'equation.
virtual const Champ_Inc_base & vitesse() const
virtual void projeter()
Calcule la solution U des equations: | M(U-V)/dt + BtP = 0.
Operateur_Div & operateur_divergence()
Renvoie l'operateur de calcul de la divergence associe a l'equation.
void completer() override
Complete l'equation base, associe la pression a l'equation,.
Matrice matrice_pression_
int sauvegarder(Sortie &) const override
Appelle Equation_base::sauvegarder(Sortie&) et sauvegarde la pression sur un flot de sortie.
const Champ_base & get_champ(const Motcle &nom) const override
Champ_Inc_base & pression_pa()
bool initTimeStep(double dt) override
Allocation et initialisation de l'inconnue et des CLs jusqu'a present+dt.
void abortTimeStep() override
Reinitialiser ce qui doit l'etre.
int impr(Sortie &os) const override
Effectue quelques impressions sur un flot de sortie: - maximum de div U.
virtual void calculer_pression_hydrostatique(Champ_base &pression_hydro) const
std::vector< YAML_data > data_a_sauvegarder() const override
for PDI IO: retrieve name, type and dimensions of the fields to save/restore
void associer_pb_base(const Probleme_base &) override
S'associe au probleme: apelle Equation_base::associer_pb_base(const Probleme_base&).
virtual void sauver() const
Operateur_Conv & get_terme_convectif()
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
Operateur_Grad & operateur_gradient()
Renvoie l'operateur de calcul du gradient associe a l'equation.
Champ_Inc_base & grad_P()
virtual void discretiser_grad_p()
bool postraiter_gradient_pression_sans_masse_
void update_y_plus(const DoubleTab &tab)
virtual void discretiser_assembleur_pression()
Typage de l'assembleur pression.
virtual void modify_initial_gradP(DoubleTrav &)
DoubleTab & corriger_derivee_expl(DoubleTab &) override
Add a specific term for Navier Stokes (-gradP(n)) if necessary.
int has_interface_blocs() const override
void set_param(Param &titi) const override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={}) const override
int verif_Cl() const override
Verifie la compatibilite des conditions limites avec l'equation.
DoubleTab & derivee_en_temps_inco(DoubleTab &) override
Returns the time derivative of the unknown I of the equation: dI/dt = M-1*(sum(operators(I) + sources...
virtual int projection_a_faire()
int div_u_nul_et_non_dsurdt_divu_
virtual void discretiser_vitesse()
void discretiser() override
Dicretise l'equation.
void uzawa(const DoubleTab &, const Matrice_Base &, SolveurSys &, DoubleTab &, DoubleTab &)
virtual bool getCouplingInfoForFiltering() const
virtual const Champ_Don_base & diffusivite_pour_transport() const
OWN_PTR(Assembleur_base) &assembleur_pression()
int preparer_calcul() override
cf Equation_base::preparer_calcul() Assemblage du solveur pression et
Operateur_Diff & operateur_diff()
const Operateur & operateur_fonctionnel(int) const override
void reassembler_pression_si_necessaire()
const Operateur & operateur(int) const override
Renvoie le i-eme operateur de l'equation: - le terme_diffusif si i = 0.
int nombre_d_operateurs_tot() const override
void associer_milieu_base(const Milieu_base &) override
Associe un mileu physique a l'equation en construisant dynamiquement (cast) un objet de type Fluide_b...
Matrice & matrice_pression()
void assembler_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={}) const override
SolveurSys & solveur_pression()
Renvoie le solveur en pression (version const).
SolveurSys solveur_pression_
OBS_PTR(Fluide_base) le_fluide
const Champ_Inc_base & pression_pa() const
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
virtual void calculer_la_pression_en_pa()
Calcul de "la_pression_en_pa" en fonction de "la_pression".
int nombre_d_operateurs() const override
Renvoie le nombre d'operateurs de l'equation: Pour Navier Stokes Standard c'est 2.
int methode_calcul_pression_initiale_
DoubleTab getPressureTimeN()
Champ_Inc_base & pression()
void associer_fluide(const Fluide_base &un_fluide)
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
classe Operateur_Conv Classe generique de la hierarchie des operateurs representant un terme
classe Operateur_Diff Classe generique de la hierarchie des operateurs representant un terme
classe Operateur_Div Classe generique de la hierarchie des operateurs calculant la divergence
Classe Operateur_Grad Classe generique de la hierarchie des operateurs calculant le gradient.
classe Operateur Classe generique de la hierarchie des operateurs.
Helper class to factorize the readOn method of Objet_U classes.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
class SolveurSys Un SolveurSys represente n'importe qu'elle classe
Classe de base des flux de sortie.
classe Traitement_particulier_NS_base Derive de Support_Champ_Masse_Volumique: utilisation de rho