TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Source_Transport_proto.cpp
1/****************************************************************************
2* Copyright (c) 2022, 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 <Pb_Thermohydraulique_Concentration_Turbulent.h>
17#include <Pb_Hydraulique_Concentration_Turbulent.h>
18#include <Pb_Thermohydraulique_Turbulent_QC.h>
19#include <Pb_Thermohydraulique_Turbulent.h>
20#include <Pb_Hydraulique_Turbulent.h>
21#include <Source_Transport_proto.h>
22#include <Fluide_Dilatable_base.h>
23#include <Param.h>
24
25// XD Source_Transport_proto objet_u Source_Transport_proto BRACE Must not and cannot be instanciated.
26
28{
29 Param param(nom);
30 param.ajouter("C1_eps", &C1); // XD_ADD_P double
31 // XD_CONT Constant for the epsilon equation (default = 1.44)
32 param.ajouter("C2_eps", &C2); // XD_ADD_P double
33 // XD_CONT Constant for the epsilon equation (default = 1.92)
34 param.lire_avec_accolades(is);
35 Cerr << "C1_eps = " << C1 << finl;
36 Cerr << "C2_eps = " << C2 << finl;
37 return is;
38}
39
41{
42 Param param(nom);
43 param.lire_avec_accolades(is);
44 return is ;
45}
46
48{
49 Param param(nom);
50 param.ajouter("C1_eps", &C1); // XD_ADD_P double
51 // XD_CONT Constant for the epsilon equation (default = 1.44)
52 param.ajouter("C2_eps", &C2); // XD_ADD_P double
53 // XD_CONT Constant for the epsilon equation (default = 1.92)
54 param.ajouter("C3_eps", &C3); // XD_ADD_P double
55 // XD_CONT Constant for the epsilon equation (default = 1.0)
56 param.lire_avec_accolades(is);
57 Cerr << "C1_eps = " << C1 << finl;
58 Cerr << "C2_eps = " << C2 << finl;
59 Cerr << "C3_eps = " << C3 << finl;
60 return is ;
61}
62
64
66
68{
69 Param param(nom);
70 param.ajouter("C2_eps", &C2); // XD_ADD_P double
71 // XD_CONT Constant for the epsilon equation (default = 1.92)
72 param.ajouter("interpolation_viscosite_turbulente", &_interpolation_viscosite_turbulente); // XD_ADD_P entier
73 // XD_CONT Method to interpolation the turbulent viscosity (0 for arithmetic, 1 for harmonic, 2 for volume-weighted
74 // XD_CONT harmonic, 3 for size-weighted harmonic)
75 param.ajouter("coefficient_limiteur", &_coefficient_limiteur); // XD_ADD_P double
76 // XD_CONT Clipping coefficient, never used (default = 1)
77 param.lire_avec_accolades(is);
78 Cerr << "C2_eps = " << C2 << finl;
79
80 // Checking of the value given in the data deck for "interpolation_viscosite_turbulente"
82 Cerr << "Interpolation arithmetique de la viscosite turbulente aux faces (si VEF) = " << finl;
84 Cerr << "Interpolation harmonique de la viscosite turbulente aux faces (si VEF) = " << finl;
86 Cerr << "Interpolation harmonique ponderee par les volumes de maille de la viscosite turbulente aux faces (si VEF) = " << finl;
88 Cerr << "Interpolation harmonique ponderee par les tailles de maille de la viscosite turbulente aux faces (si VEF) = " << finl;
89 else
90 {
91 Cerr << "Error in 'interpolation_viscosite_turbulente' input value :" << _interpolation_viscosite_turbulente << finl;
93 }
94
95 return is;
96}
97
99{
100 Param param(nom);
101 param.ajouter("C2_eps", &C2); // XD_ADD_P double
102 // XD_CONT Constant for the epsilon equation (default = 1.92)
103 param.ajouter("C3_eps", &C3); // XD_ADD_P double
104 // XD_CONT Constant for the epsilon equation (default = 1.0)
105 param.lire_avec_accolades(is);
106 Cerr << "C2_eps = " << C2 << finl;
107 Cerr << "C3_eps = " << C3 << finl;
108 return is;
109}
110
112
114
116{
117 if (!sub_type(Pb_Hydraulique_Turbulent, pb) && !sub_type(Pb_Thermohydraulique_Turbulent_QC, pb))
118 error_model(nom, pb.que_suis_je());
119}
120
122{
123 if (!sub_type(Pb_Thermohydraulique_Turbulent, pb))
124 error_model(nom, pb.que_suis_je());
125}
126
128{
130 error_model(nom, pb.que_suis_je());
131}
132
134{
136 error_model(nom, pb.que_suis_je());
137}
138
140{
141 if (sub_type(Pb_Thermohydraulique_Turbulent_QC, pb))
142 Cerr << "You are using the k-omega model in quasi-compressible. It might not be well validated. Use with caution." << finl;
143}
144
146{
147 const Milieu_base& milieu = pb.equation(1).milieu(); // eq thermique
148 if (pb.nombre_d_equations() < 2)
149 error_model(nom, pb.que_suis_je());
150
151 if (sub_type(Fluide_Dilatable_base, ref_cast(Fluide_base, milieu)))
152 error_model(nom, milieu.que_suis_je());
153}
154
156{
157 const Milieu_base& milieu = pb.equation(0).milieu(); // XXX : Attention pas eq 1 car Constituant derive pas de Fluide_base ! donc eq hydro
158 if (pb.nombre_d_equations() < 2)
159 error_model(nom, pb.que_suis_je());
160
161 if (sub_type(Fluide_Dilatable_base, ref_cast(Fluide_base, milieu)))
162 error_model(nom, milieu.que_suis_je());
163}
164
166{
167 const Milieu_base& milieu = pb.equation(1).milieu(); // eq thermique
168 if (pb.nombre_d_equations() < 3)
169 error_model(nom, pb.que_suis_je());
170
171 if (sub_type(Fluide_Dilatable_base, ref_cast(Fluide_base, milieu)))
172 error_model(nom, milieu.que_suis_je());
173}
174
176{
177 if (!fluide.has_beta_c())
178 {
179 Cerr << "You forgot to define beta_co field in the fluid. It is mandatory when using the K-Eps model (buoyancy effects)." << finl;
180 Cerr << "If you don't want buoyancy effects, then specify: beta_co champ_uniforme 1 0." << finl;
182 }
183}
184
186{
187 eq_hydraulique = pb.equation(0);
188}
189
191{
192 const Fluide_base& fluide = ref_cast(Fluide_base, pb.equation(1).milieu());
193 beta_t = fluide.beta_t();
194 gravite = fluide.gravite();
195 eq_thermique = ref_cast(Convection_Diffusion_Temperature, pb.equation(1));
196}
197
199{
200 const Fluide_base& fluide = ref_cast(Fluide_base, pb.equation(0).milieu()); // XXX : Attention pas eq 1 car Constituant derive pas de Fluide_base !
201 verifier_beta_concen(fluide);
202 beta_c = fluide.beta_c();
203 gravite = fluide.gravite();
204 eq_concentration = ref_cast(Convection_Diffusion_Concentration, pb.equation(1));
205}
206
208{
209 const Fluide_base& fluide = ref_cast(Fluide_base,pb.equation(1).milieu()); // a partir de l'eq thermique
210 verifier_beta_concen(fluide);
211 beta_t = fluide.beta_t();
212 beta_c = fluide.beta_c();
213 gravite = fluide.gravite();
214 eq_thermique = ref_cast(Convection_Diffusion_Temperature, pb.equation(1));
215 eq_concentration = ref_cast(Convection_Diffusion_Concentration, pb.equation(2));
216}
classe Convection_Diffusion_Concentration Cas particulier de Convection_Diffusion_std
classe Convection_Diffusion_Temperature Cas particulier de Convection_Diffusion_std
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
virtual const Milieu_base & milieu() const =0
classe Fluide_Dilatable_base Cette classe represente un d'un fluide dilatable,
classe Fluide_base Cette classe represente un d'un fluide incompressible ainsi que
Definition Fluide_base.h:38
bool has_beta_c() const
Definition Fluide_base.h:67
const Champ_Don_base & beta_c() const
Definition Fluide_base.h:65
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
Definition Milieu_base.h:50
virtual const Champ_Don_base & beta_t() const
Renvoie beta_t du milieu.
virtual const Champ_Don_base & gravite() const
Renvoie la gravite du milieu si elle a ete associe provoque une erreur sinon.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
Definition Objet_U.cpp:104
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
Definition Param.cpp:364
int lire_avec_accolades(Entree &is)
Alias of lire_avec_accolades_depuis.
Definition Param.h:577
classe Pb_Hydraulique_Concentration_Turbulent Cette classe represente un probleme d'hydraulique avec ...
classe Pb_Hydraulique_Turbulent Cette classe represente un probleme d'hydraulique turbulent dans
Classe Pb_Thermohydraulique_Concentration_Turbulent Cette classe represente un probleme de thermohydr...
classe Pb_Thermohydraulique_Turbulent Cette classe represente un probleme de thermohydraulique en flu...
classe Pb_Thermohydraulique_Turbulent Cette classe represente un probleme de thermohydraulique
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual int nombre_d_equations() const =0
virtual const Equation_base & equation(int) const =0
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
Entree & readOn_anisotherme(Entree &, const Nom &)
Entree & readOn_anisotherme_concen_real(Entree &, const Nom &)
Entree & readOn_concen(Entree &, const Nom &)
Entree & readOn_anisotherme_real(Entree &, const Nom &)
Entree & readOn_concen_real(Entree &, const Nom &)
Entree & readOn_nothing(Entree &, const Nom &)
void associer_pb_concen(const Probleme_base &)
void associer_pb_anisotherme(const Probleme_base &)
void verifier_milieu_concen(const Probleme_base &, const Nom &)
void verifier_pb_keps_anisotherme(const Probleme_base &, const Nom &)
void associer_pb_proto(const Probleme_base &)
void verifier_pb_keps(const Probleme_base &, const Nom &)
Entree & readOn_real(Entree &, const Nom &)
Entree & readOn_anisotherme_concen(Entree &, const Nom &)
void verifier_milieu_anisotherme(const Probleme_base &, const Nom &)
Entree & readOn_proto(Entree &, const Nom &)
void verifier_pb_komega(const Probleme_base &, const Nom &)
void verifier_milieu_anisotherme_concen(const Probleme_base &, const Nom &)
void associer_pb_anisotherme_concen(const Probleme_base &)
void verifier_pb_keps_concen(const Probleme_base &, const Nom &)
void verifier_beta_concen(const Fluide_base &)
void verifier_pb_keps_anisotherme_concen(const Probleme_base &, const Nom &)