TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Modele_Shih_Zhu_Lumley_VEF.cpp
1/****************************************************************************
2* Copyright (c) 2019, 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 <Modele_Shih_Zhu_Lumley_VEF.h>
17#include <Domaine_VEF.h>
18#include <Champ_Uniforme.h>
19#include <Champ_P1NC.h>
20#include <Periodique.h>
21#include <Scatter.h>
22#include <Champ_P0_VEF.h>
23#include <Discretisation_base.h>
24#include <Check_espace_virtuel.h>
25#include <LecFicDiffuse.h>
26#include <EcritureLectureSpecial.h>
27
28Implemente_instanciable(Modele_Shih_Zhu_Lumley_VEF,"Modele_Shih_Zhu_Lumley_VEF",Modele_Fonc_Realisable_base);
29
30
31// XD Shih_Zhu_Lumley Modele_Fonc_Realisable_base Shih_Zhu_Lumley INHERITS_BRACE Functions necessary to Realizable
32// XD_CONT K-Epsilon Turbulence Model in VEF
33
34
35///////////////////////////////////////////////////////////////
36// Implementation des fonctions de la classe
37///////////////////////////////////////////////////////////////
38// printOn et readOn
39
41{
42 return s;
43}
44
46{
47 Param param(que_suis_je());
48 set_param(param);
49 param.lire_avec_accolades_depuis(is);
51 return is;
52}
53
55{
56 param.ajouter("A0",&A0_); // XD_ADD_P double
57 // XD_CONT value of parameter A0 in U* formula
58}
59
60
62{
63 const Domaine_VEF& domaine_VEF = ref_cast(Domaine_VEF,domaine_dis);
64 init_tenseur_elem(S_elem_,domaine_VEF,2);
65 init_tenseur_elem(R_elem_,domaine_VEF,2);
66
67 nfaces_ = domaine_VEF.nb_faces();
68 S_.resize_tab( nfaces_ );
69 Cmu_.resize_tab( nfaces_ );
70 C1_.resize_tab( nfaces_ );
71}
72
73void Modele_Shih_Zhu_Lumley_VEF::Calcul_Tenseurs_S_et_R_elem(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse)
74{
75 const Domaine_VEF& domaine_VEF = ref_cast(Domaine_VEF,domaine_dis);
76 const Domaine_Cl_VEF& domaine_Cl_VEF = ref_cast(Domaine_Cl_VEF,domaine_Cl_dis);
77
78 DoubleTab gradient_elem;
79 init_tenseur_elem(gradient_elem,domaine_VEF,2);
80
81 Champ_P1NC::calcul_gradient(vitesse,gradient_elem,domaine_Cl_VEF);
82
83 int nelem = S_elem_.dimension(0);
84
85 for (int elem=0; elem<nelem; elem++)
86 {
87 for (int i=0; i<dimension; i++)
88 {
89 for (int j=0; j<dimension; j++)
90 {
91 S_elem_(elem,i,j) = 0.5 * ( gradient_elem(elem,i,j) + gradient_elem(elem,j,i) );
92 R_elem_(elem,i,j) = 0.5 * ( gradient_elem(elem,i,j) - gradient_elem(elem,j,i) );
93// if (i==j)
94// for (int k=0; k<Objet_U::dimension; k++)
95// {
96// S_elem_(elem,i,j) -= 1/3 * gradient_elem(elem,k,k);
97// }
98 }
99 }
100 }
101
102 S_elem_.echange_espace_virtuel();
103 R_elem_.echange_espace_virtuel();
104}
105
106
107void Modele_Shih_Zhu_Lumley_VEF::Calcul_Tenseurs_S_et_R_elem_Paroi(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,
108 const DoubleTab& visco_tab, const DoubleTab& visco_turb,
109 const DoubleTab& tab_paroi,const int idt)
110{
111 const Domaine_VEF& domaine_VEF = ref_cast(Domaine_VEF,domaine_dis);
112 const Domaine_Cl_VEF& domaine_Cl_VEF = ref_cast(Domaine_Cl_VEF,domaine_Cl_dis);
113
114 DoubleTab gradient_elem;
115 init_tenseur_elem(gradient_elem,domaine_VEF,2);
116
117 Champ_P1NC::calcul_gradient(vitesse,gradient_elem,domaine_Cl_VEF);
118
119 if (idt>0)
120 Champ_P1NC::calcul_duidxj_paroi(gradient_elem,visco_tab,visco_turb,tab_paroi,domaine_Cl_VEF);
121
122 int nelem = S_elem_.dimension(0);
123
124 for (int elem=0; elem<nelem; elem++)
125 {
126 for (int i=0; i<dimension; i++)
127 {
128 for (int j=0; j<dimension; j++)
129 {
130 S_elem_(elem,i,j) = 0.5 * ( gradient_elem(elem,i,j) + gradient_elem(elem,j,i) );
131 R_elem_(elem,i,j) = 0.5 * ( gradient_elem(elem,i,j) - gradient_elem(elem,j,i) );
132// if (i==j)
133// for (int k=0; k<Objet_U::dimension; k++)
134// {
135// S_elem_(elem,i,j) -= 1/3 * gradient_elem(elem,k,k);
136// }
137 }
138 }
139 }
140
141 S_elem_.echange_espace_virtuel();
142 R_elem_.echange_espace_virtuel();
143}
144
145
146// Calcul de la norme S SUR LES FACES
147void Modele_Shih_Zhu_Lumley_VEF::Calcul_S(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse)
148{
149 const Domaine_VEF& domaine_VEF = ref_cast(Domaine_VEF,domaine_dis);
150 const Domaine_Cl_VEF& domaine_Cl_VEF = ref_cast(Domaine_Cl_VEF,domaine_Cl_dis);
151
152 DoubleTab S_face;
153 init_tenseur_face(S_face,domaine_VEF,2);
154 calcul_tenseur_face(S_face,S_elem_,domaine_VEF,domaine_Cl_VEF);
155
156
157 for (int face=0; face<nfaces_; face++)
158 {
159 double somme = 0.;
160 for (int i=0; i<Objet_U::dimension; i++)
161 for (int j=0; j<Objet_U::dimension; j++)
162 somme += S_face(face,i,j)*S_face(face,i,j);
163 S_[face] = sqrt(2.*somme);
164 }
165}
166
167// Calcul d'un tenseur aux faces a partir d'un tenseur aux elements
168DoubleTab& Modele_Shih_Zhu_Lumley_VEF::calcul_tenseur_face(DoubleTab& Tenseur_face, const DoubleTab& Tenseur_elem,
169 const Domaine_VEF& domaine_VEF, const Domaine_Cl_VEF& domaine_Cl_VEF) const
170{
171 assert_espace_virtuel_vect(Tenseur_elem);
172 const IntTab& face_voisins = domaine_VEF.face_voisins();
173 int nb_faces = domaine_VEF.nb_faces();
174
175 const Conds_lim& les_cl = domaine_Cl_VEF.les_conditions_limites();
176 int nb_cl=les_cl.size();
177 const DoubleVect& volumes = domaine_VEF.volumes();
178
179 for (int n_bord=0; n_bord<nb_cl; n_bord++)
180 {
181 const Cond_lim& la_cl = domaine_Cl_VEF.les_conditions_limites(n_bord);
182 const Front_VF& le_bord = ref_cast(Front_VF,la_cl->frontiere_dis());
183 int ndeb = le_bord.num_premiere_face();
184 int nfin = ndeb + le_bord.nb_faces();
185
186 if (sub_type(Periodique,la_cl.valeur()))
187 {
188 for (int fac=ndeb; fac<nfin; fac++)
189 {
190 int poly1 = face_voisins(fac,0);
191 int poly2 = face_voisins(fac,1);
192 double a=volumes(poly1)/(volumes(poly1)+volumes(poly2));
193 double b=volumes(poly2)/(volumes(poly1)+volumes(poly2));
194 for (int i=0; i<dimension; i++)
195 for (int j=0; j<dimension; j++)
196 Tenseur_face(fac,i,j) = a*Tenseur_elem(poly1,i,j) + b*Tenseur_elem(poly2,i,j);
197 }
198 }
199 else
200 {
201 for (int fac=ndeb; fac<nfin; fac++)
202 {
203 int poly1 = face_voisins(fac,0);
204 for (int i=0; i<dimension; i++)
205 for (int j=0; j<dimension; j++)
206 Tenseur_face(fac,i,j) = Tenseur_elem(poly1,i,j);
207 }
208 }
209 }
210 int n0 = domaine_VEF.premiere_face_int();
211 for (int fac = n0; fac<nb_faces; fac++)
212 {
213 int poly1 = face_voisins(fac,0);
214 int poly2 = face_voisins(fac,1);
215 double a=volumes(poly1)/(volumes(poly1)+volumes(poly2));
216 double b=volumes(poly2)/(volumes(poly1)+volumes(poly2));
217 for (int i=0; i<dimension; i++)
218 for (int j=0; j<dimension; j++)
219 Tenseur_face(fac,i,j) = a*Tenseur_elem(poly1,i,j) + b*Tenseur_elem(poly2,i,j);
220 }
221
222 return Tenseur_face;
223}
224
225// Initialisation d'une matrice aux elements
226void Modele_Shih_Zhu_Lumley_VEF::init_tenseur_elem(DoubleTab& Tenseur, const Domaine_VEF& domaine_VEF, const int ndim) const
227{
228 if(!Tenseur.get_md_vector())
229 {
230 if (ndim==1)
231 Tenseur.resize(0, Objet_U::dimension);
232 else if (ndim==2)
234 domaine_VEF.domaine().creer_tableau_elements(Tenseur);
235 }
236 Tenseur = 0.;
237}
238
239// Initialisation d'une matrice aux elements
240void Modele_Shih_Zhu_Lumley_VEF::init_tenseur_elem(DoubleTab& Tenseur, const Domaine_VEF& domaine_VEF, const int ndim)
241{
242 if(!Tenseur.get_md_vector())
243 {
244 if (ndim==1)
245 Tenseur.resize(0, Objet_U::dimension);
246 else if (ndim==2)
248 domaine_VEF.domaine().creer_tableau_elements(Tenseur);
249 }
250 Tenseur = 0.;
251}
252
253
254// Initialisation d'une matrice aux faces
255void Modele_Shih_Zhu_Lumley_VEF::init_tenseur_face(DoubleTab& Tenseur,const Domaine_VEF& domaine_VEF, const int ndim) const
256{
257 if(!Tenseur.get_md_vector())
258 {
259 if (ndim==1)
260 Tenseur.resize(0, Objet_U::dimension);
261 else if (ndim==2)
263 domaine_VEF.creer_tableau_faces(Tenseur);
264 }
265 Tenseur = 0.;
266}
267
268// Initialisation d'une matrice aux faces
269void Modele_Shih_Zhu_Lumley_VEF::init_tenseur_face(DoubleTab& Tenseur,const Domaine_VEF& domaine_VEF, const int ndim)
270{
271 if(!Tenseur.get_md_vector())
272 {
273 if (ndim==1)
274 Tenseur.resize(0, Objet_U::dimension);
275 else if (ndim==2)
277 domaine_VEF.creer_tableau_faces(Tenseur);
278 }
279 Tenseur = 0.;
280}
281
282void Modele_Shih_Zhu_Lumley_VEF::Calcul_C1 (const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,const DoubleTab& K_Eps, const double EPS_MIN)
283{
284 for (int face=0; face<nfaces_; face++)
285 {
286 double eta;
287 // Definition d'un C1 extremum base sur EPS_MIN = 1e-10
288// if (K_Eps(face,1) <= EPS_MIN)
289// eta = S_(face) * K_Eps(face,0)/BR_EPS;
290// else
291// eta = S_(face) * K_Eps(face,0)/K_Eps(face,1);
292
293 eta = S_(face) * K_Eps(face,0)/( K_Eps(face,1) + BR_EPS );
294
295 C1_[face] = std::max( 0.43 , eta / ( 5. + eta ) );
296 }
297
298}
299
300void Modele_Shih_Zhu_Lumley_VEF::Calcul_C1_BiK (const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,const DoubleTab& K, const DoubleTab& Eps, const double EPS_MIN)
301{
302 for (int face=0; face<nfaces_; face++)
303 {
304 double eta;
305
306 eta = S_(face) * K(face)/( Eps(face) + BR_EPS );
307
308 C1_[face] = std::max( 0.43 , eta / ( 5. + eta ) );
309 }
310
311}
312
313void Modele_Shih_Zhu_Lumley_VEF::Calcul_Cmu_et_S(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse, const DoubleTab& K_Eps, const double EPS_MIN)
314{
315 const Domaine_VEF& domaine_VEF = ref_cast(Domaine_VEF,domaine_dis);
316 const Domaine_Cl_VEF& domaine_Cl_VEF = ref_cast(Domaine_Cl_VEF,domaine_Cl_dis);
317
318 DoubleTab S_face;
319 init_tenseur_face(S_face,domaine_VEF,2);
320 DoubleTab R_face;
321 init_tenseur_face(R_face,domaine_VEF,2);
322
323 calcul_tenseur_face(S_face,S_elem_,domaine_VEF,domaine_Cl_VEF);
324 calcul_tenseur_face(R_face,R_elem_,domaine_VEF,domaine_Cl_VEF);
325
326 DoubleTab U_etoile_face;
327 domaine_VEF.creer_tableau_faces(U_etoile_face);
328 DoubleTab As_face;
329 domaine_VEF.creer_tableau_faces(As_face);
330
331 for (int face=0; face<nfaces_; face++)
332 {
333 double somme = 0.;
334 double somme2 = 0.;
335 double somme3 = 0.;
336
337 for (int i=0; i<Objet_U::dimension; i++)
338 {
339 for (int j=0; j<Objet_U::dimension; j++)
340 {
341 somme += S_face(face,i,j)*S_face(face,i,j)+R_face(face,i,j)*R_face(face,i,j);
342 somme2 += S_face(face,i,j)*S_face(face,i,j);
343 for (int k=0; k<Objet_U::dimension; k++)
344 {
345 somme3 += S_face(face,i,j)*S_face(face,j,k)*S_face(face,k,i);
346 }
347 }
348 }
349
350 U_etoile_face(face) = sqrt(somme);
351 double S_tilde = sqrt(somme2);
352 S_[face] = sqrt(2.*somme2);
353 double val_cosinus = sqrt(6.) * somme3 / ( S_tilde * S_tilde * S_tilde +1.e-20 );
354
355 if ( val_cosinus > 1. )
356 {
357 val_cosinus = 1. ;
358 }
359 else if ( val_cosinus < -1. )
360 {
361 val_cosinus = -1. ;
362 }
363
364 As_face(face) = sqrt(6.) * cos ( (1./3.) * acos( val_cosinus ) );
365
366// // Definition d'un Cmu extremum base sur EPS_MIN = 1e-10
367// if (K_Eps(face,1) <= EPS_MIN)
368// Cmu_[face] = 1./(A0_+As_face(face)*U_etoile_face(face)*K_Eps(face,0)/BR_EPS);
369// else
370// Cmu_[face] = 1./(A0_+As_face(face)*U_etoile_face(face)*K_Eps(face,0)/K_Eps(face,1));
371
372 Cmu_[face] = 1./(A0_+As_face(face)*U_etoile_face(face)*K_Eps(face,0)/( K_Eps(face,1) + BR_EPS));
373
374 }
375}
376
377void Modele_Shih_Zhu_Lumley_VEF::Calcul_Cmu_et_S_BiK(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse, const DoubleTab& K, const DoubleTab& Eps, const double EPS_MIN)
378{
379 const Domaine_VEF& domaine_VEF = ref_cast(Domaine_VEF,domaine_dis);
380 const Domaine_Cl_VEF& domaine_Cl_VEF = ref_cast(Domaine_Cl_VEF,domaine_Cl_dis);
381
382 DoubleTab S_face;
383 init_tenseur_face(S_face,domaine_VEF,2);
384 DoubleTab R_face;
385 init_tenseur_face(R_face,domaine_VEF,2);
386
387 calcul_tenseur_face(S_face,S_elem_,domaine_VEF,domaine_Cl_VEF);
388 calcul_tenseur_face(R_face,R_elem_,domaine_VEF,domaine_Cl_VEF);
389
390 DoubleTab U_etoile_face;
391 domaine_VEF.creer_tableau_faces(U_etoile_face);
392 DoubleTab As_face;
393 domaine_VEF.creer_tableau_faces(As_face);
394
395 for (int face=0; face<nfaces_; face++)
396 {
397 double somme = 0.;
398 double somme2 = 0.;
399 double somme3 = 0.;
400
401 for (int i=0; i<Objet_U::dimension; i++)
402 {
403 for (int j=0; j<Objet_U::dimension; j++)
404 {
405 somme += S_face(face,i,j)*S_face(face,i,j)+R_face(face,i,j)*R_face(face,i,j);
406 somme2 += S_face(face,i,j)*S_face(face,i,j);
407 for (int k=0; k<Objet_U::dimension; k++)
408 {
409 somme3 += S_face(face,i,j)*S_face(face,j,k)*S_face(face,k,i);
410 }
411 }
412 }
413
414 U_etoile_face(face) = sqrt(somme);
415 double S_tilde = sqrt(somme2);
416 S_[face] = sqrt(2.*somme2);
417 double val_cosinus = sqrt(6.) * somme3 / ( S_tilde * S_tilde * S_tilde +1.e-20 );
418
419 if ( val_cosinus > 1. )
420 {
421 val_cosinus = 1. ;
422 }
423 else if ( val_cosinus < -1. )
424 {
425 val_cosinus = -1. ;
426 }
427
428 As_face(face) = sqrt(6.) * cos ( (1./3.) * acos( val_cosinus ) );
429
430// // Definition d'un Cmu extremum base sur EPS_MIN = 1e-10
431// if (K_Eps(face,1) <= EPS_MIN)
432// Cmu_[face] = 1./(A0_+As_face(face)*U_etoile_face(face)*K_Eps(face,0)/BR_EPS);
433// else
434// Cmu_[face] = 1./(A0_+As_face(face)*U_etoile_face(face)*K_Eps(face,0)/K_Eps(face,1));
435
436 Cmu_[face] = 1./(A0_+As_face(face)*U_etoile_face(face)*K(face)/( Eps(face) + BR_EPS));
437
438 }
439}
440
441
443 const Domaine_Cl_dis_base& domaine_Cl_dis)
444{
445 le_dom_VEF = ref_cast(Domaine_VEF,domaine_dis);
446 le_dom_Cl_VEF = ref_cast(Domaine_Cl_VEF,domaine_Cl_dis);
447
448 Initialisation( domaine_dis );
449}
450
452{
453 ;
454}
455
456void Modele_Shih_Zhu_Lumley_VEF::Contributions_Sources(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,const DoubleTab& K_Eps, const double EPS_MIN)
457{
458 Calcul_Tenseurs_S_et_R_elem(domaine_dis,domaine_Cl_dis,vitesse);
459 Calcul_Cmu_et_S(domaine_dis,domaine_Cl_dis,vitesse,K_Eps,EPS_MIN);
460 Calcul_C1(domaine_dis,domaine_Cl_dis,vitesse,K_Eps,EPS_MIN);
461}
462
463void Modele_Shih_Zhu_Lumley_VEF::Contributions_Sources_Paroi(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,const DoubleTab& K_Eps, const double EPS_MIN,
464 const DoubleTab& visco, const DoubleTab& visco_turb,const DoubleTab& loi_paroi,const int idt)
465{
466 Calcul_Tenseurs_S_et_R_elem_Paroi(domaine_dis,domaine_Cl_dis,vitesse,visco,visco_turb,loi_paroi,idt);
467 Calcul_Cmu_et_S(domaine_dis,domaine_Cl_dis,vitesse,K_Eps,EPS_MIN);
468 Calcul_C1(domaine_dis,domaine_Cl_dis,vitesse,K_Eps,EPS_MIN);
469}
470
471void Modele_Shih_Zhu_Lumley_VEF::Contributions_Sources_BiK(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,const DoubleTab& K, const DoubleTab& Eps, const double EPS_MIN)
472{
473 Calcul_Tenseurs_S_et_R_elem(domaine_dis,domaine_Cl_dis,vitesse);
474 Calcul_Cmu_et_S_BiK(domaine_dis,domaine_Cl_dis,vitesse,K,Eps,EPS_MIN);
475 Calcul_C1_BiK(domaine_dis,domaine_Cl_dis,vitesse,K,Eps,EPS_MIN);
476}
477
478void Modele_Shih_Zhu_Lumley_VEF::Contributions_Sources_Paroi_BiK(const Domaine_dis_base& domaine_dis, const Domaine_Cl_dis_base& domaine_Cl_dis,const DoubleTab& vitesse,const DoubleTab& K, const DoubleTab& Eps, const double EPS_MIN,
479 const DoubleTab& visco, const DoubleTab& visco_turb,const DoubleTab& loi_paroi,const int idt)
480{
481 Calcul_Tenseurs_S_et_R_elem_Paroi(domaine_dis,domaine_Cl_dis,vitesse,visco,visco_turb,loi_paroi,idt);
482 Calcul_Cmu_et_S_BiK(domaine_dis,domaine_Cl_dis,vitesse,K,Eps,EPS_MIN);
483 Calcul_C1_BiK(domaine_dis,domaine_Cl_dis,vitesse,K,Eps,EPS_MIN);
484}
485
486
487
static DoubleTab & calcul_gradient(const DoubleTab &, DoubleTab &, const Domaine_Cl_VEF &)
static DoubleTab & calcul_duidxj_paroi(DoubleTab &, const DoubleTab &, const DoubleTab &, const DoubleTab &, const Domaine_Cl_VEF &)
classe Cond_lim Classe generique servant a representer n'importe quelle classe
Definition Cond_lim.h:31
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
Definition Conds_lim.h:32
virtual void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau parallele de valeurs aux elements.
Definition Domaine.cpp:851
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
class Domaine_VEF
Definition Domaine_VEF.h:54
int nb_faces() const
renvoie le nombre global de faces.
Definition Domaine_VF.h:471
void creer_tableau_faces(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
double volumes(int i) const
Definition Domaine_VF.h:113
int premiere_face_int() const
une face est interne ssi elle separe deux elements.
Definition Domaine_VF.h:463
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
Definition Domaine_VF.h:418
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
const Domaine & domaine() const
Class defining operators and methods for all reading operation in an input flow (file,...
Definition Entree.h:42
class Front_VF
Definition Front_VF.h:36
int nb_faces() const
Definition Front_VF.h:53
int num_premiere_face() const
Definition Front_VF.h:63
void init_tenseur_elem(DoubleTab &, const Domaine_VEF &, const int) const
void init_tenseur_face(DoubleTab &, const Domaine_VEF &, const int) const
void Contributions_Sources(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN) override
void Initialisation(const Domaine_dis_base &domaine_dis)
void Calcul_Tenseurs_S_et_R_elem(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse)
void Calcul_C1(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN) override
void Calcul_Tenseurs_S_et_R_elem_Paroi(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &visco_tab, const DoubleTab &visco_turb, const DoubleTab &tab_paroi, const int idt)
void Calcul_S(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse) override
void Calcul_Cmu_et_S_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN) override
virtual DoubleTab & calcul_tenseur_face(DoubleTab &, const DoubleTab &, const Domaine_VEF &, const Domaine_Cl_VEF &) const
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &) override
void Contributions_Sources_Paroi_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN, const DoubleTab &visco_tab, const DoubleTab &visco_turb, const DoubleTab &tab_paroi, const int idt) override
void Contributions_Sources_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN) override
void Calcul_Cmu_et_S(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN) override
void Calcul_C1_BiK(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K, const DoubleTab &Eps, const double EPS_MIN) override
virtual void set_param(Param &param) const override
void Contributions_Sources_Paroi(const Domaine_dis_base &domaine_dis, const Domaine_Cl_dis_base &domaine_Cl_dis, const DoubleTab &vitesse, const DoubleTab &K_Eps, const double EPS_MIN, const DoubleTab &visco, const DoubleTab &visco_turb, const DoubleTab &loi_paroi, const int idt) override
static int dimension
Definition Objet_U.h:99
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
Definition Objet_U.cpp:104
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
Definition Objet_U.cpp:293
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Definition Objet_U.cpp:282
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
classe Periodique Cette classe represente une condition aux limites periodique.
Definition Periodique.h:31
Classe de base des flux de sortie.
Definition Sortie.h:52
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Definition TRUSTTab.tpp:469
virtual const MD_Vector & get_md_vector() const
Definition TRUSTVect.h:123