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>
103 void dimensionner_blocs(matrices_t matrices,
const tabs_t& semi_impl = {})
const override;
104 void assembler_blocs(matrices_t matrices, DoubleTab& secmem,
const tabs_t& semi_impl = {})
const override;
149 virtual void sauver()
const;
204 mutable int postraitement_gradient_P_;
205 double LocalFlowRateRelativeError()
const;
class Champ_Don_base base class of Given Fields (not calculated)
class Champ_Fonc_base Base class of fields that are functions of a calculated quantity
class Champ_base This class is the base of the fields hierarchy.
Class defining operators and methods for all reading operation in an input flow (file,...
class Equation_base The role of an equation is the calculation of one or more fields....
Base class for an incompressible fluid and its properties:
Matrice_Base class - Base class of the matrix hierarchy.
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
Matrice class - Generic class in the matrix hierarchy.
Milieu_base This class is the base of the (physical) medium hierarchy.
A character string (Nom) in uppercase.
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
Returns the physical medium of the equation (Fluide_base upcast to Milieu_base).
const Champ_Inc_base & div() const
const Motcle & domaine_application() const override
Returns the name of the application domain: "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
Performs a restart from an input stream.
Operateur_Conv terme_convectif
const Champ_Inc_base & grad_P() const
const Champ_Inc_base & inconnue() const override
Returns the velocity (unknown field of the equation) (const version).
void creer_champ(const Motcle &motlu) override
virtual const Champ_base & vitesse_pour_transport() const
int lire_motcle_non_standard(const Motcle &, Entree &) override
Reads non-simple-type parameters of an Objet_U from an input stream.
Entree & lire_cond_init(Entree &) override
Reading of initial conditions in an input stream.
DoubleTab & corriger_derivee_impl(DoubleTab &) override
Resolution de la pression, inconnue implicitee de Navier Stokes.
const Fluide_base & fluide() const
Returns the incompressible fluid (physical medium of the equation) associated with the equation.
virtual Champ_Inc_base & vitesse()
void mettre_a_jour(double temps) override
Performs a time update of the equation.
virtual const Champ_Inc_base & vitesse() const
virtual void projeter()
Computes the solution U of the equations: | M(U-V)/dt + BtP = 0.
Operateur_Div & operateur_divergence()
Returns the divergence operator associated with the equation.
void completer() override
Completes the base equation, associates the pressure with the equation,.
Matrice matrice_pression_
int sauvegarder(Sortie &) const override
Calls Equation_base::sauvegarder(Sortie&) and saves the pressure to an output stream.
const Champ_base & get_champ(const Motcle &nom) const override
Champ_Inc_base & pression_pa()
bool initTimeStep(double dt) override
Allocation and initialization of the unknown and boundary conditions until present+dt.
void abortTimeStep() override
Reinitialize what must be.
int impr(Sortie &os) const override
Prints some information to an output stream: - maximum of 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
Associates with the problem: calls 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()
Returns the gradient operator associated with the 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()
Types the pressure assembler.
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
Verifies the compatibility of boundary conditions with the 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
Discretizes the 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() Assembly of the pressure solver and
Operateur_Diff & operateur_diff()
const Operateur & operateur_fonctionnel(int) const override
void reassembler_pression_si_necessaire()
const Operateur & operateur(int) const override
Returns the i-th operator of the equation: - terme_diffusif if i = 0.
int nombre_d_operateurs_tot() const override
void associer_milieu_base(const Milieu_base &) override
Associates a physical medium with the equation by dynamically constructing (casting) an object of typ...
Matrice & matrice_pression()
void assembler_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={}) const override
SolveurSys & solveur_pression()
Returns the pressure solver (const version).
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()
Computes "la_pression_en_pa" from "la_pression".
int nombre_d_operateurs() const override
Returns the number of operators in the equation: 2 for the standard Navier-Stokes equations.
int methode_calcul_pression_initiale_
DoubleTab getPressureTimeN()
Champ_Inc_base & pression()
void associer_fluide(const Fluide_base &un_fluide)
class Nom: a character string for naming TRUST objects.
An array of character strings (VECT(Nom)).
Operateur_Conv Generic class of the hierarchy of operators representing a convection term.
Operateur_Diff Generic class of the hierarchy of operators representing a diffusion.
Operateur_Div Generic class of the hierarchy of operators computing the divergence.
Classe Operateur_Grad Generic class of the hierarchy of operators computing the gradient.
class Operateur Generic class of the operator hierarchy.
Helper class to factorize the readOn method of Objet_U classes.
class Probleme_base It is a Probleme_U that is not a coupling.
class SolveurSys A SolveurSys represents any class
Base class for output streams.
Traitement_particulier_NS_base Derives from Support_Champ_Masse_Volumique: use of rho.