43 const Domaine_VDF& domaine_VDF = le_dom_VDF.valeur();
46 const DoubleTab& K_eps = mon_eq_transport_K_Eps->inconnue().valeurs();
47 const DoubleTab& visco_turb = mon_eq_transport_K_Eps->modele_turbulence().viscosite_turbulente().valeurs();
48 const DoubleTab& vit = eq_hydraulique->inconnue().valeurs();
49 const DoubleVect& volumes = domaine_VDF.
volumes();
50 const DoubleVect& porosite_vol = le_dom_Cl_VDF->equation().milieu().porosite_elem();
52 const IntTab& elem_faces = domaine_VDF.
elem_faces();
53 const int nbcouches = mon_eq_transport_K_Eps->get_nbcouches();
54 int ndeb,nfin,elem,face_courante,elem_courant;
55 double dist, d_visco,y_etoile, critere_switch=0.;
57 int valswitch, icouche;
58 const int impr2 = mon_eq_transport_K_Eps->get_impr();
60 const int typeswitch = mon_eq_transport_K_Eps->get_switch();
61 if ( typeswitch == 0 ) valswitch = mon_eq_transport_K_Eps->get_yswitch();
62 else valswitch = mon_eq_transport_K_Eps->get_nutswitch();
65 DoubleTrav P(nb_elem_tot), Eps(nb_elem_tot), tab_couches(nb_elem_tot);
70 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
75 visco = std::max(tab_visco(0,0),DMINFLOAT);
82 for (elem=0; elem<nb_elem; elem++)
84 Eps[elem] = K_eps(elem,1);
89 for (
int n_bord=0; n_bord<domaine_VDF_NS.
nb_front_Cl(); n_bord++)
98 for (
int num_face=ndeb; num_face<nfin; num_face++)
100 if ( (elem =face_voisins(num_face,0)) != -1) ;
102 elem = face_voisins(num_face,1);
106 d_visco = tab_visco[elem];
110 face_courante = num_face;
114 for(icouche=0; (icouche<nbcouches) && (elem_courant != -1); icouche++)
117 if (K_eps(elem_courant,0)>0)
118 kSqRt=sqrt(K_eps(elem_courant,0));
119 y_etoile = kSqRt*dist/d_visco;
121 critere_switch = y_etoile;
123 critere_switch = visco_turb[elem_courant]/d_visco;
124 if (critere_switch < valswitch)
126 tab_couches[elem_courant]=1;
127 double Leps,Lmu,vvSqRt;
128 if (K_eps(elem_courant,0)>0)
129 loi2couches.
LepsLmu(K_eps(elem_courant,0),d_visco,dist,y_etoile,Leps,Lmu,vvSqRt);
131 loi2couches.
LepsLmu(1.e-3,d_visco,dist,y_etoile,Leps,Lmu,vvSqRt);
134 Eps[elem_courant] = K_eps(elem_courant,0)*kSqRt/Leps;
135 else Eps[elem_courant] = 1.e-3;
141 if ( elem_faces(elem_courant,0) == face_courante)
142 face_courante = elem_faces(elem_courant,2);
143 else if ( elem_faces(elem_courant,1) == face_courante)
144 face_courante = elem_faces(elem_courant,3);
145 else if ( elem_faces(elem_courant,2) == face_courante)
146 face_courante = elem_faces(elem_courant,0);
147 else if ( elem_faces(elem_courant,3) == face_courante)
148 face_courante = elem_faces(elem_courant,1);
149 if ( face_voisins(face_courante,0) != elem_courant)
150 elem_courant = face_voisins(face_courante,0);
152 elem_courant = face_voisins(face_courante,1);
156 if ((eq_hydraulique->schema_temps().limpr()) && (impr2 == 1) )
158 if ( (typeswitch == 0) )
159 Cout <<
"Changement de couche a la maille " << icouche <<
" (" << domaine_VDF_NS.
xp(elem_courant,0) <<
";" << domaine_VDF_NS.
xp(elem_courant,1) <<
") y* = " << critere_switch << finl;
161 Cout <<
"Changement de couche a la maille " << icouche <<
" (" << domaine_VDF_NS.
xp(elem_courant,0) <<
";" << domaine_VDF_NS.
xp(elem_courant,1) <<
") nu_t/nu = " << critere_switch << finl;
167 for (
int num_face=ndeb; num_face<nfin; num_face++)
169 if ( (elem =face_voisins(num_face,0)) != -1) ;
171 elem = face_voisins(num_face,1);
175 d_visco = tab_visco[elem];
178 face_courante = num_face;
181 for(icouche=0; (icouche<nbcouches) && (elem_courant != -1); icouche++)
184 if (K_eps(elem_courant,0)>0)
185 kSqRt=sqrt(K_eps(elem_courant,0));
186 y_etoile = kSqRt*dist/d_visco;
188 critere_switch = y_etoile;
190 critere_switch = visco_turb[elem_courant]/d_visco;
191 if (critere_switch < valswitch)
193 tab_couches[elem_courant]=1;
194 double Leps,Lmu,vvSqRt;
195 if (K_eps(elem_courant,0)>0)
196 loi2couches.
LepsLmu(K_eps(elem_courant,0),d_visco,dist,y_etoile,Leps,Lmu,vvSqRt);
198 loi2couches.
LepsLmu(1.e-3,d_visco,dist,y_etoile,Leps,Lmu,vvSqRt);
200 Eps[elem_courant] = K_eps(elem_courant,0)*kSqRt/Leps;
201 else Eps[elem_courant] = 1.e-3;
209 if ( elem_faces(elem_courant,0) == face_courante)
210 face_courante = elem_faces(elem_courant,3);
211 else if ( elem_faces(elem_courant,1) == face_courante)
212 face_courante = elem_faces(elem_courant,4);
213 else if ( elem_faces(elem_courant,2) == face_courante)
214 face_courante = elem_faces(elem_courant,5);
215 else if ( elem_faces(elem_courant,3) == face_courante)
216 face_courante = elem_faces(elem_courant,0);
217 else if ( elem_faces(elem_courant,4) == face_courante)
218 face_courante = elem_faces(elem_courant,1);
219 else if ( elem_faces(elem_courant,5) == face_courante)
220 face_courante = elem_faces(elem_courant,2);
222 if ( face_voisins(face_courante,0) != elem_courant)
223 elem_courant = face_voisins(face_courante,0);
225 elem_courant = face_voisins(face_courante,1);
228 if ((eq_hydraulique->schema_temps().limpr()) && (impr2 == 1) && (elem_courant != -1))
230 if ( (typeswitch == 0) )
231 Cout <<
"Changement de couche a la maille " << icouche <<
" (" << domaine_VDF_NS.
xp(elem_courant,0) <<
";" << domaine_VDF_NS.
xp(elem_courant,1) <<
";" << domaine_VDF_NS.
xp(elem_courant,2) <<
") y* = " << critere_switch << finl;
233 Cout <<
"Changement de couche a la maille " << icouche <<
" (" << domaine_VDF_NS.
xp(elem_courant,0) <<
";" << domaine_VDF_NS.
xp(elem_courant,1) <<
";" << domaine_VDF_NS.
xp(elem_courant,2) <<
") nu_t/nu = " << critere_switch << finl;
250 for (elem=0; elem<nb_elem; elem++)
252 secmem(elem,0) += (P(elem)-Eps(elem))*volumes(elem)*porosite_vol(elem);
253 if (K_eps(elem,0) >= 10.e-10)
254 secmem(elem,1) += (
C1*P(elem)-
C2*Eps(elem))*volumes(elem)*porosite_vol(elem)*Eps(elem)/K_eps(elem,0);