16#include <Variation_rho_PolyMAC_MPFA.h>
17#include <Domaine_PolyMAC_MPFA.h>
18#include <Pb_Multiphase.h>
19#include <Champ_Elem_PolyMAC_MPFA.h>
20#include <Matrix_tools.h>
21#include <Array_tools.h>
47 for (
auto &&n_m : matrices)
48 if (n_m.first ==
"interfacial_area" || n_m.first ==
"temperature" || n_m.first ==
"pression")
55 if (n_m.first ==
"interfacial_area" || n_m.first ==
"temperature")
56 for (
int e = 0; e < ne; e++)
57 for (
int n = 0; n < N; n++)
60 if (n_m.first ==
"pression" )
61 for (
int e = 0; e < ne; e++)
62 for (
int n = 0, m = 0; n < N; n++, m+=(M>1))
82 const DoubleTab& rho = (*pch_rho).valeurs();
83 const DoubleTab& rho_p = (*pch_rho).passe();
84 const DoubleTab& dP_rho = pch_rho->
derivees().at(
"pression");
85 const DoubleTab& dT_rho = pch_rho->
derivees().at(
"temperature");
90 Matrice_Morse *Mp = matrices.count(
"pression") ? matrices.at(
"pression") :
nullptr,
91 *Mt = matrices.count(
"temperature") ? matrices.at(
"temperature") :
nullptr,
92 *Mai = matrices.count(
"interfacial_area") ? matrices.at(
"interfacial_area") :
nullptr;
96 for (
int e = 0; e < domaine.nb_elem(); e++)
97 for (
int k = 0; k < N; k++)
100 const double fac = 2./3.*1/pas_tps * pe(e) * ve(e) ;
101 secmem(e , k) += fac * inco(e, k) * (1 - rho_p(e, k)/rho(e, k));
102 if (Mp) (*Mp)(N * e + k , e) -= fac * inco(e, k) * rho_p(e, k) * -dP_rho(e, k)/(rho(e, k)*rho(e, k));
103 if (Mt) (*Mt)(N * e + k , N * e + k) -= fac * inco(e, k) * rho_p(e, k) * -dT_rho(e, k)/(rho(e, k)*rho(e, k));
104 if (Mai)(*Mai)(N * e + k, N * e + k) -= fac * ( 1 - rho_p(e, k)/rho(e, k));
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
const tabs_t & derivees() const
virtual DoubleTab & valeurs()=0
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,...
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
int nb_colonnes() const override
Return local number of columns (=size on the current proc).
DoubleVect & porosite_elem()
virtual const Champ_base & masse_volumique() const
Renvoie la masse volumique du milieu.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Pb_Multiphase Cette classe represente un probleme de thermohydraulique multiphase de type "3*N...
const Champ_base & get_champ(const Motcle &nom) const override
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
Classe de base des flux de sortie.
classe Source_base Un objet Source_base est un terme apparaissant au second membre d'une
_SIZE_ dimension_tot(int) const override
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={}) const override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={}) const override