TrioCFD 1.9.9_beta
TrioCFD documentation
Loading...
Searching...
No Matches
Energie_Multiphase.cpp
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#include <EcritureLectureSpecial.h>
17#include <Scalaire_impose_paroi.h>
18#include <Echange_global_impose.h>
19#include <Op_Conv_negligeable.h>
20#include <Energie_Multiphase.h>
21#include <Pb_Multiphase_HEM.h>
22#include <TRUSTTab_parts.h>
23#include <Champ_Uniforme.h>
24#include <Matrice_Morse.h>
25#include <Neumann_paroi.h>
26#include <Discret_Thyd.h>
27#include <Domaine_VF.h>
28#include <TRUSTTrav.h>
29#include <EChaine.h>
30#include <Domaine.h>
31#include <Param.h>
32#include <SETS.h>
33
34Implemente_instanciable(Energie_Multiphase, "Energie_Multiphase", Convection_Diffusion_Temperature_base);
35// XD Energie_Multiphase eqn_base Energie_Multiphase INHERITS_BRACE Internal energy conservation equation for a
36// XD_CONT multi-phase problem where the unknown is the temperature
37
39
41{
42 assert(l_inco_ch_);
43 assert(le_fluide);
44 evanescence_.associer_eqn(*this);
46
47 terme_convectif.set_fichier("Convection_chaleur");
48 terme_convectif.set_description((Nom)"Convective heat transfer rate=Integral(-h*u*ndS) [W] if SI units used");
49 terme_diffusif.set_fichier("Diffusion_chaleur");
50 //terme_diffusif.set_description((Nom)"Conduction heat transfer rate=Integral(lambda*grad(T)*ndS) "+unite);
51 terme_diffusif.set_description((Nom)"Conduction heat transfer rate=Integral(lambda*grad(T)*ndS) [W] if SI units used");
52
53 // Special treatment for Pb_Multiphase_HEM
54 // We enforce the presence of a source term related to the interfacial flux automatically.
55 if (sub_type(Pb_Multiphase_HEM, probleme()))
56 {
57 bool check_source_FICC = false;
58
59 for (int ii = 0; ii < sources().size(); ii++)
60 if (sources()(ii)->que_suis_je().debute_par("Flux_interfacial"))
61 check_source_FICC = true;
62
63 if (!check_source_FICC)
64 {
65 EChaine source_FI("{ flux_interfacial }");
66 lire_sources(source_FI);
67 }
68 }
69
70 return is;
71}
72
74{
76 param.ajouter_non_std("evanescence|vanishing",(this));
77}
78
80{
81 if (mot=="evanescence") is >> evanescence_;
83 return 1;
84}
85
86/*! @brief Discretizes the equation.
87 *
88 */
90{
91 const Discret_Thyd& dis=ref_cast(Discret_Thyd, discretisation());
92 Cerr << "Energy equation discretization " << finl;
93 const Pb_Multiphase& pb = ref_cast(Pb_Multiphase, probleme());
94 dis.temperature(schema_temps(), domaine_dis(), l_inco_ch_, pb.nb_phases());
95 l_inco_ch_->fixer_nature_du_champ(pb.nb_phases() == 1 ? scalaire : pb.nb_phases() == dimension ? vectoriel : multi_scalaire); //pfft
96 for (int i = 0; i < pb.nb_phases(); i++)
97 l_inco_ch_->fixer_nom_compo(i, Nom("temperature_") + pb.nom_phase(i));
98 champs_compris_.ajoute_champ(l_inco_ch_);
100 Cerr << "Energie_Multiphase::discretiser() ok" << finl;
101}
102
103/*! @brief Prints the boundary fluxes to an output stream.
104 *
105 * Calls Equation_base::impr(Sortie&).
106 *
107 * @param os Output stream.
108 * @return Propagated return code.
109 */
111{
112 return Equation_base::impr(os);
113}
114
115/*! @brief Verifies the number of components read for a field specification.
116 *
117 * In Energie_Multiphase, "wall" boundary conditions only take
118 * one component when a "flux_parietal" correlation is defined at the problem level.
119 *
120 * @param ch_ref Unknown field of the considered equation.
121 * @param nb_comp Number of components.
122 * @param cl Boundary condition.
123 */
124void Energie_Multiphase::verifie_ch_init_nb_comp_cl(const Champ_Inc_base& ch_ref, const int nb_comp, const Cond_lim_base& cl) const
125{
126 // if we are checking a boundary condition of type
127 if (probleme().has_correlation("flux_parietal")
128 && (sub_type(Neumann_paroi, cl) || sub_type(Scalaire_impose_paroi, cl) || sub_type(Echange_global_impose, cl)))
129 {
130 if (nb_comp == 1) return; // OK
131 Cerr << "Energie_Multiphase : when using a Flux_parietal correlation, only one wall temperature/heat flux "
132 << "can be specified at the boundary " << cl.le_nom() << " . Please provide 1 component instead of " << nb_comp << "!" << finl;
134 }
135 else Convection_Diffusion_Temperature_base::verifie_ch_init_nb_comp(ch_ref, nb_comp); // standard treatment
136}
137
138/*! @brief Returns the name of the equation's application domain.
139 *
140 * Here "Thermique".
141 *
142 * @return Name of the equation's application domain.
143 */
145{
146 static Motcle mot("Thermique");
147 return mot;
148}
149
155
157{
159 if (evanescence_) ok &= evanescence_->has_interface_blocs();
160 return ok;
161}
162
163/* evanescence is processed last */
164void Energie_Multiphase::dimensionner_blocs(matrices_t matrices, const tabs_t& semi_impl) const
165{
167 if (evanescence_) evanescence_->dimensionner_blocs(matrices, semi_impl);
168}
169
170void Energie_Multiphase::assembler_blocs_avec_inertie(matrices_t matrices, DoubleTab& secmem, const tabs_t& semi_impl)
171{
173 if (evanescence_) evanescence_->ajouter_blocs(matrices, secmem, semi_impl);
174}
175
176void Energie_Multiphase::calculer_alpha_rho_e_conv(const Objet_U& obj, DoubleTab& val, DoubleTab& bval, tabs_t& deriv)
177{
178 const Equation_base& eqn = ref_cast(Equation_base, obj);
179 const Pb_Multiphase& pbm = ref_cast(Pb_Multiphase, eqn.probleme());
180 const Fluide_base& fl = ref_cast(Fluide_base, eqn.milieu());
181 const Champ_base& ch_rho = fl.masse_volumique();
182 const Champ_Inc_base& ch_alpha = ref_cast(Pb_Multiphase, eqn.probleme()).equation_masse().inconnue(),
183 &ch_en = ref_cast(Champ_Inc_base, fl.energie_interne()), // always a Champ_Inc
184 *pch_rho = sub_type(Champ_Inc_base, ch_rho) ? &ref_cast(Champ_Inc_base, ch_rho) : nullptr; // not always a Champ_Inc
185 const DoubleTab& alpha = ch_alpha.valeurs(),
186 &rho = ch_rho.valeurs(),
187 &en = ch_en.valeurs();
188
189 /* field values */
190 const int N = val.line_size(),
191 Nl = val.dimension_tot(0),
192 cR = sub_type(Champ_Uniforme, ch_rho);
193 for (int i = 0; i < Nl; i++)
194 for (int n = 0; n < N; n++)
195 val(i, n) = (alpha(i, n) - pbm.alpha_inf_phase(n)) * rho(!cR * i, n) * en(i, n);
196
197 /* valeur_aux_bords can only be used if ch_rho has a domaine_dis_base */
198 DoubleTrav b_al, b_rho, b_en;
199 b_al = ch_alpha.valeur_aux_bords();
200 b_en = ch_en.valeur_aux_bords();
201
202 const int Nb = b_al.dimension_tot(0);
203 if (ch_rho.a_un_domaine_dis_base())
204 b_rho = ch_rho.valeur_aux_bords();
205 else
206 {
207 b_rho.resize(Nb, N);
208 ch_rho.valeur_aux(ref_cast(Domaine_VF, eqn.domaine_dis()).xv_bord(), b_rho);
209 }
210 for (int i = 0; i < Nb; i++)
211 for (int n = 0; n < N; n++)
212 bval(i, n) = (b_al(i, n) - pbm.alpha_inf_phase(n)) * b_rho(i, n) * b_en(i, n);
213
214 DoubleTab& d_a = deriv["alpha"]; // derivative with respect to alpha: rho * en
215 d_a.resize(Nl, N);
216
217 for (int i = 0; i < Nl; i++)
218 for (int n = 0; n < N; n++)
219 d_a(i, n) = rho(!cR * i, n) * en(i, n);
220
221 /* derivatives through rho and en */
222 const tabs_t d_vide = {},
223 &d_rho = pch_rho ? pch_rho->derivees() : d_vide,
224 &d_en = ch_en.derivees();
225
226 std::set<std::string> vars; // list of all possible derivatives
227 for (auto &&d_c : d_rho)
228 vars.insert(d_c.first);
229 for (auto &&d_c : d_en)
230 vars.insert(d_c.first);
231
232 for (auto && var : vars)
233 {
234 const DoubleTab *dr = d_rho.count(var) ? &d_rho.at(var) : nullptr,
235 *de = d_en.count(var) ? &d_en.at(var) : nullptr;
236
237 DoubleTab& d_v = deriv[var];
238 d_v.resize(Nl, N);
239
240 for (int i = 0; i < Nl; i++)
241 for (int n = 0; n < N; n++)
242 d_v(i, n) = alpha(i, n) * ((dr ? (*dr)(i, n) * en(i, n) : 0) + (de ? rho(!cR * i, n) * (*de)(i, n) : 0));
243 }
244}
245
246void Energie_Multiphase::calculer_alpha_rho_e(const Objet_U& obj, DoubleTab& val, DoubleTab& bval, tabs_t& deriv)
247{
248 const Equation_base& eqn = ref_cast(Equation_base, obj);
249 const Fluide_base& fl = ref_cast(Fluide_base, eqn.milieu());
250 const Champ_base& ch_rho = fl.masse_volumique();
251 const Champ_Inc_base& ch_alpha = ref_cast(Pb_Multiphase, eqn.probleme()).equation_masse().inconnue(),
252 &ch_en = ref_cast(Champ_Inc_base, fl.energie_interne()), // always a Champ_Inc
253 *pch_rho = sub_type(Champ_Inc_base, ch_rho) ? &ref_cast(Champ_Inc_base, ch_rho) : nullptr; // not always a Champ_Inc
254 const DoubleTab& alpha = ch_alpha.valeurs(),
255 &rho = ch_rho.valeurs(),
256 &en = ch_en.valeurs();
257
258 /* field values */
259 const int N = val.line_size(),
260 Nl = val.dimension_tot(0),
261 cR = sub_type(Champ_Uniforme, ch_rho);
262 for (int i = 0; i < Nl; i++)
263 for (int n = 0; n < N; n++)
264 val(i, n) = alpha(i, n) * rho(!cR * i, n) * en(i, n);
265
266 /* valeur_aux_bords can only be used if ch_rho has a domaine_dis_base */
267 DoubleTrav b_al, b_rho, b_en;
268 b_al = ch_alpha.valeur_aux_bords();
269 b_en = ch_en.valeur_aux_bords();
270
271 const int Nb = b_al.dimension_tot(0);
272 if (ch_rho.a_un_domaine_dis_base())
273 b_rho = ch_rho.valeur_aux_bords();
274 else
275 {
276 b_rho.resize(Nb, N);
277 ch_rho.valeur_aux(ref_cast(Domaine_VF, eqn.domaine_dis()).xv_bord(), b_rho);
278 }
279
280 for (int i = 0; i < Nb; i++)
281 for (int n = 0; n < N; n++)
282 bval(i, n) = b_al(i, n) * b_rho(i, n) * b_en(i, n);
283
284 DoubleTab& d_a = deriv["alpha"]; // derivative with respect to alpha: rho * en
285 d_a.resize(Nl, N);
286
287 for (int i = 0; i < Nl; i++)
288 for (int n = 0; n < N; n++)
289 d_a(i, n) = rho(!cR * i, n) * en(i, n);
290
291 /* derivatives through rho and en */
292 const tabs_t d_vide = { },
293 &d_rho = pch_rho ? pch_rho->derivees() : d_vide,
294 &d_en = ch_en.derivees();
295
296 std::set < std::string > vars; // list of all possible derivatives
297 for (auto &&d_c : d_rho)
298 vars.insert(d_c.first);
299 for (auto &&d_c : d_en)
300 vars.insert(d_c.first);
301
302 for (auto &&var : vars)
303 {
304 const DoubleTab *dr = d_rho.count(var) ? &d_rho.at(var) : nullptr,
305 *de = d_en.count(var) ? &d_en.at(var) : nullptr;
306
307 DoubleTab& d_v = deriv[var];
308 d_v.resize(Nl, N);
309
310 for (int i = 0; i < Nl; i++)
311 for (int n = 0; n < N; n++)
312 d_v(i, n) = alpha(i, n) * ((dr ? (*dr)(i, n) * en(i, n) : 0) + (de ? rho(!cR * i, n) * (*de)(i, n) : 0));
313 }
314}
315
316void Energie_Multiphase::calculer_alpha_rho_h(const Objet_U& obj, DoubleTab& val, DoubleTab& bval, tabs_t& deriv)
317{
318 const Equation_base& eqn = ref_cast(Equation_base, obj);
319 const Fluide_base& fl = ref_cast(Fluide_base, eqn.milieu());
320 const Champ_base& ch_rho = fl.masse_volumique();
321 const Champ_Inc_base& ch_alpha = ref_cast(Pb_Multiphase, eqn.probleme()).equation_masse().inconnue(),
322 &ch_h = ref_cast(Champ_Inc_base, fl.enthalpie()), // always a Champ_Inc
323 *pch_rho = sub_type(Champ_Inc_base, ch_rho) ? &ref_cast(Champ_Inc_base, ch_rho) : nullptr; // not always a Champ_Inc
324 const DoubleTab& alpha = ch_alpha.valeurs(),
325 &rho = ch_rho.valeurs(),
326 &h = ch_h.valeurs();
327
328 /* field values */
329 const int N = val.line_size(),
330 Nl = val.dimension_tot(0),
331 cR = sub_type(Champ_Uniforme, ch_rho);
332
333 for (int i = 0; i < Nl; i++)
334 for (int n = 0; n < N; n++)
335 val(i, n) = alpha(i, n) * rho(!cR * i, n) * h(i, n);
336
337 /* valeur_aux_bords can only be used if ch_rho has a domaine_dis_base */
338 DoubleTrav b_al, b_rho, b_h ;
339 b_al = ch_alpha.valeur_aux_bords();
340 b_h = ch_h.valeur_aux_bords();
341
342 const int Nb = b_al.dimension_tot(0);
343 if (ch_rho.a_un_domaine_dis_base())
344 b_rho = ch_rho.valeur_aux_bords();
345 else
346 {
347 b_rho.resize(Nb, N);
348 ch_rho.valeur_aux(ref_cast(Domaine_VF, eqn.domaine_dis()).xv_bord(), b_rho);
349 }
350
351 for (int i = 0; i < Nb; i++)
352 for (int n = 0; n < N; n++)
353 bval(i, n) = b_al(i, n) * b_rho(i, n) * b_h(i, n);
354
355 DoubleTab& d_a = deriv["alpha"]; // derivative with respect to alpha: rho * h
356 d_a.resize(Nl, N);
357
358 for (int i = 0; i < Nl; i++)
359 for (int n = 0; n < N; n++)
360 d_a(i, n) = rho(!cR * i, n) * h(i, n);
361
362 /* derivatives through rho and en */
363 const tabs_t d_vide = { },
364 &d_rho = pch_rho ? pch_rho->derivees() : d_vide,
365 &d_h = ch_h.derivees();
366
367 std::set < std::string > vars; // list of all possible derivatives
368 for (auto &&d_c : d_rho)
369 vars.insert(d_c.first);
370 for (auto &&d_c : d_h)
371 vars.insert(d_c.first);
372
373 for (auto &&var : vars)
374 {
375 const DoubleTab *dr = d_rho.count(var) ? &d_rho.at(var) : nullptr,
376 *dh = d_h.count(var) ? &d_h.at(var) : nullptr;
377
378 DoubleTab& d_v = deriv[var];
379 d_v.resize(Nl, N);
380
381 for (int i = 0; i < Nl; i++)
382 for (int n = 0; n < N; n++)
383 d_v(i, n) = alpha(i, n) * ((dr ? (*dr)(i, n) * h(i, n) : 0) + (dh ? rho(!cR * i, n) * (*dh)(i, n) : 0));
384 }
385}
386
388{
389 if (champ_convecte_)
390 return; // already done
391
392 const int Nt = inconnue().nb_valeurs_temporelles(),
393 Nl = inconnue().valeurs().size_reelle_ok() ? inconnue().valeurs().dimension(0) : -1,
394 Nc = inconnue().valeurs().line_size();
395
396 // champ_convecte_: same type / support as the unknown
397 discretisation().creer_champ(champ_convecte_, domaine_dis(), inconnue().que_suis_je(), "N/A", "N/A", Nc, Nl, Nt, schema_temps().temps_courant());
398
399 champ_convecte_->associer_eqn(*this);
400 auto nom_fonc = get_fonc_champ_convecte();
401 champ_convecte_->nommer(nom_fonc.first);
402 champ_convecte_->init_champ_calcule(*this, nom_fonc.second);
403}
Class Champ_Inc_base.
virtual int nb_valeurs_temporelles() const
Returns the number of temporal values currently kept.
DoubleTab & valeurs() override
Returns the array of field values at the current time.
DoubleTab valeur_aux_bords() const override
Returns the field value at the boundary faces.
virtual DoubleTab & valeurs()=0
Champ_Uniforme Represents a field that is constant in space and time.
class Champ_base This class is the base of the fields hierarchy.
Definition Champ_base.h:43
virtual int a_un_domaine_dis_base() const
Definition Champ_base.h:69
virtual DoubleTab valeur_aux_bords() const
Returns the field value at the boundary faces.
virtual DoubleTab & valeur_aux(const DoubleTab &positions, DoubleTab &valeurs) const
Causes an error! Must be overridden by derived classes.
class Cond_lim_base Base class for the hierarchy of classes that represent the different boundary con...
void temperature(const Schema_Temps_base &, Domaine_dis_base &, OWN_PTR(Champ_Inc_base)&, int nb_comp=1) const
class Discret_Thyd This class is the base class representing a discretization
static void creer_champ(OWN_PTR(Champ_Inc_base)&ch, const Domaine_dis_base &z, const Nom &type, const Nom &nom, const Nom &unite, int nb_comp, int nb_ddl, int nb_pas_dt, double temps, const Nom &directive=NOM_VIDE, const Nom &nom_discretisation=NOM_VIDE)
Static method that creates an OWN_PTR(Champ_Inc_base) of the specified type.
class Domaine_VF
Definition Domaine_VF.h:44
Classe Echange_global_impose This class represents the special case of the class.
Specialisation of Convection_Diffusion_std for multiphase flows where the transported scalar is tempe...
void verifie_ch_init_nb_comp_cl(const Champ_Inc_base &ch_ref, const int nb_comp, const Cond_lim_base &cl) const override
Verifies the number of components read for a field specification.
int has_interface_blocs() const override
int impr(Sortie &os) const override
Prints the boundary fluxes to an output stream.
Operateur_Evanescence evanescence_
const Motcle & domaine_application() const override
Returns the name of the equation's application domain.
int lire_motcle_non_standard(const Motcle &, Entree &) override
Reads non-simple-type parameters of an Objet_U from an input stream.
void assembler_blocs_avec_inertie(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={}) override
static void calculer_alpha_rho_e_conv(const Objet_U &obj, DoubleTab &val, DoubleTab &bval, tabs_t &deriv)
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={}) const override
void init_champ_convecte() const override
static void calculer_alpha_rho_e(const Objet_U &obj, DoubleTab &val, DoubleTab &bval, tabs_t &deriv)
const Champ_Inc_base & inconnue() const override
Returns the unknown field representing the unknown (T or H) (const version).
void discretiser() override
Discretizes the equation.
static void calculer_alpha_rho_h(const Objet_U &obj, DoubleTab &val, DoubleTab &bval, tabs_t &deriv)
virtual std::pair< std::string, fonc_calc_t > get_fonc_champ_convecte() const
void set_param(Param &param) const override
void dimensionner_matrice_sans_mem(Matrice_Morse &matrice) override
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
class Equation_base The role of an equation is the calculation of one or more fields....
virtual void set_param(Param &titi) const override
virtual const Milieu_base & milieu() const =0
virtual void dimensionner_matrice_sans_mem(Matrice_Morse &mat_morse)
Sources & sources()
Returns the source terms associated with the equation.
virtual void assembler_blocs_avec_inertie(matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={})
const Discretisation_base & discretisation() const
Returns the discretization associated with the equation.
virtual void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={}) const
virtual int impr(Sortie &os) const
Prints the equation operators to an output stream, unconditionally.
Probleme_base & probleme()
Returns the problem associated with the equation.
virtual void verifie_ch_init_nb_comp(const Champ_Inc_base &ch_ref, const int nb_comp) const
Verification of the number of components read for the specification of a field.
int lire_motcle_non_standard(const Motcle &, Entree &) override
Reads non-simple-type parameters of an Objet_U from an input stream.
Schema_Temps_base & schema_temps()
Returns the time scheme associated with the equation.
virtual void discretiser()
Discretizes the equation.
virtual Entree & lire_sources(Entree &)
Reading of source terms in an input stream.
virtual int has_interface_blocs() const
Champs_compris champs_compris_
Domaine_dis_base & domaine_dis()
Returns the discretized domain associated with the equation.
Base class for an incompressible fluid and its properties:
Definition Fluide_base.h:36
const Champ_base & energie_interne() const
const Champ_base & enthalpie() const
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
virtual const Champ_base & masse_volumique() const
Returns the mass density of the medium (const version).
A character string (Nom) in uppercase.
Definition Motcle.h:26
Classe Neumann_paroi This boundary condition corresponds to an imposed flux for the.
class Nom: a character string for naming TRUST objects.
Definition Nom.h:31
Base class for TRUST objects (Objet_U).
Definition Objet_U.h:68
static int dimension
Definition Objet_U.h:94
const Nom & que_suis_je() const
Returns the string identifying the class.
Definition Objet_U.cpp:104
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
Definition Objet_U.cpp:289
virtual const Nom & le_nom() const
Returns the name of the Objet_U. Virtual method to override: returns "neant" in this implementation.
Definition Objet_U.cpp:317
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
Definition Objet_U.cpp:278
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
Definition Param.cpp:489
Multiphase thermohydraulics problem of type "3*N equations":
double alpha_inf_phase(int i) const
const Nom & nom_phase(int i) const
int nb_phases() const
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
Definition Process.cpp:466
Scalaire_impose_paroi Imposes a scalar at the wall in a Convection-Diffusion equation for a scalar.
Base class for output streams.
Definition Sortie.h:52
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Definition TRUSTTab.tpp:469
_SIZE_ dimension_tot(int) const override
Definition TRUSTTab.tpp:160
_SIZE_ dimension(int d) const
Definition TRUSTTab.tpp:133
int line_size() const
Definition TRUSTVect.tpp:67
_SIZE_ size_reelle_ok() const
Definition TRUSTVect.tpp:38