TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Pb_Multiphase.h
1/****************************************************************************
2* Copyright (c) 2026, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Pb_Multiphase_included
17#define Pb_Multiphase_included
18
19#include <Energie_Multiphase.h>
20#include <Masse_Multiphase.h>
21#include <Correlation_base.h>
22#include <Pb_Fluide_base.h>
23#include <QDM_Multiphase.h>
24#include <TRUST_Deriv.h>
25#include <TRUST_List.h>
26#include <Interprete.h>
27#include <Verif_Cl.h>
28
29/*! @brief classe Pb_Multiphase Cette classe represente un probleme de thermohydraulique multiphase de type "3*N equations" :
30 *
31 * - QDM_Multiphase : equations de Navier-Stokes et de continuite pour chaque phase
32 * inconnues : v_k (vitesses par phase)
33 * champs auxiliaires : pression p, taux de presence a_k (sum a_k = 1)
34 * - Energie_Multiphase : equations de conservation de l'energie pour chaque phase
35 * inconnues : T_k (temperatures)
36 * schema de resolution typique :
37 * 1) QDM_Multiphase -> prediction des vitesses
38 * conservation de la masse -> Newton (etape "semi-implicite")
39 * 3) Energie_Multiphase -> advection/dffusion implicite de l'energie
40 *
41 *
42 * @sa Pb_Fluide_base QDM_Multiphase Masse_Multiphase Energie_Multiphase
43 */
44
46{
47 Declare_instanciable(Pb_Multiphase);
48public:
49 void typer_lire_milieu(Entree& is) override;
50 int nombre_d_equations() const override;
51 const Equation_base& equation(int) const override ;
52 Equation_base& equation(int) override;
53 void associer_milieu_base(const Milieu_base& ) override;
54 Entree& lire_equations(Entree& is, Motcle& dernier_mot) override;
55 int verifier() override;
56 void preparer_calcul() override;
57
58 /* nombre de phases du probleme */
59 int nb_phases() const { return noms_phases_.size(); }
60 const Nom& nom_phase(int i) const { return noms_phases_[i]; }
61 const Noms& noms_phases() const { return noms_phases_; }
62
63 double calculer_pas_de_temps() const override;
64
65 virtual void typer_lire_correlation_hem() { /* Do nothing */}
66
67 virtual Equation_base& equation_qdm() { return eq_qdm_; }
68 virtual const Equation_base& equation_qdm() const { return eq_qdm_; }
69 virtual Equation_base& equation_masse() { return eq_masse_; }
70 virtual const Equation_base& equation_masse() const { return eq_masse_; }
72 virtual const Equation_base& equation_energie() const { return eq_energie_; }
73
74 inline virtual bool resolution_en_T() const { return true; }
75
76 double alpha_inf_phase(int i) const { return alpha_inf_phases_[i]; }
77 void set_alpha_inf_phase(int i, double value) { alpha_inf_phases_[i] = value; }
78
79protected:
81 // equations
85 // taux de presence minimum pour gestion de l'evanescence (nuls par defaut)
87};
88
89#endif /* Pb_Multiphase_included */
classe Energie_Multiphase Cas particulier de Convection_Diffusion_std pour un fluide quasi conpressib...
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
classe Masse_Multiphase Cas particulier de Convection_Diffusion_std pour un fluide quasi conpressible
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
Definition Milieu_base.h:50
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Un tableau de chaine de caracteres (VECT(Nom)).
Definition Noms.h:26
classe Pb_Fluide_base Cette classe a pour but de disposer d une classe amont pour
classe Pb_Multiphase Cette classe represente un probleme de thermohydraulique multiphase de type "3*N...
double alpha_inf_phase(int i) const
void preparer_calcul() override
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
virtual const Equation_base & equation_qdm() const
virtual bool resolution_en_T() const
double calculer_pas_de_temps() const override
Calcul la valeur du prochain pas de temps du probleme.
QDM_Multiphase eq_qdm_
Masse_Multiphase eq_masse_
virtual Equation_base & equation_qdm()
virtual const Equation_base & equation_energie() const
DoubleVect alpha_inf_phases_
virtual void typer_lire_correlation_hem()
Energie_Multiphase eq_energie_
virtual Equation_base & equation_energie()
Entree & lire_equations(Entree &is, Motcle &dernier_mot) override
Lecture des equations du probleme.
const Nom & nom_phase(int i) const
void set_alpha_inf_phase(int i, double value)
const Noms & noms_phases() const
int nombre_d_equations() const override
Renvoie le nombre d'equation, Renvoie 2 car il y a 2 equations a un probleme de.
const Equation_base & equation(int) const override
Renvoie l'equation d'hydraulique de type Navier_Stokes_std si i=0 Renvoie l'equation de la thermique ...
virtual const Equation_base & equation_masse() const
void typer_lire_milieu(Entree &is) override
int nb_phases() const
int verifier() override
Teste la compatibilite des equations de la thermique et de l'hydraulique.
void associer_milieu_base(const Milieu_base &) override
Associe le milieu au probleme Le milieu doit etre de type fluide incompressible.
virtual Equation_base & equation_masse()
classe QDM_Multiphase Cette classe porte les termes de l'equation de la dynamique