46 const Conds_lim& les_cl = le_dom_Cl_dis_->les_conditions_limites();
48 const IntTab& face_voisins = le_dom_dis_->face_voisins();
50 DoubleTrav Verif_elem_double(le_dom_dis_->nb_elem());
52 Verif_elem_double = 0;
53 elem_paroi.resize(le_dom_dis_->nb_faces_bord());
56 for (num_cl = 0; num_cl < les_cl.size(); num_cl++)
58 const Cond_lim& la_cl = les_cl[num_cl];
61 int nfin = ndeb + la_front_dis.
nb_faces();
66 for (fac = ndeb; fac < nfin; fac++)
68 num1 = face_voisins(fac, 0);
70 num1 = face_voisins(fac, 1);
71 if (Verif_elem_double[num1] == 0)
75 Verif_elem_double[num1]++;
91 Cerr <<
"Il y a un gros pbl dans la detremination de elem_paroi_double" << finl;
110 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
114 int ndeb, nfin, elem, l_unif;
115 double norm_tau, u_etoile, norm_v = 0, dist = 0, val1, val2, val3, d_visco, visco = 1.;
119 const IntTab& face_voisins = domaine_VEF.
face_voisins();
120 const IntTab& elem_faces = domaine_VEF.
elem_faces();
123 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
128 if (tab_visco(0, 0) > DMINFLOAT)
129 visco = tab_visco(0, 0);
138 Cerr <<
"In Paroi_negligeable_VEF::calculer_hyd : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
142 for (
int n_bord = 0; n_bord < domaine_VEF.
nb_front_Cl(); n_bord++)
144 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
151 ToDo_Kokkos(
"To avoid an expensive copy D2H of array velocity.");
152 for (
int num_face = ndeb; num_face < nfin; num_face++)
154 elem = face_voisins(num_face, 0);
158 num[0] = elem_faces(elem, 0);
159 num[1] = elem_faces(elem, 1);
161 if (num[0] == num_face)
162 num[0] = elem_faces(elem, 2);
163 else if (num[1] == num_face)
164 num[1] = elem_faces(elem, 2);
166 dist = distance_2D(num_face, elem, domaine_VEF);
169 norm_v = norm_2D_vit1(vit, num[0], num[1], num_face, domaine_VEF, val1, val2);
175 num[0] = elem_faces(elem, 0);
176 num[1] = elem_faces(elem, 1);
177 num[2] = elem_faces(elem, 2);
179 if (num[0] == num_face)
180 num[0] = elem_faces(elem, 3);
181 else if (num[1] == num_face)
182 num[1] = elem_faces(elem, 3);
183 else if (num[2] == num_face)
184 num[2] = elem_faces(elem, 3);
186 dist = distance_3D(num_face, elem, domaine_VEF);
189 norm_v = norm_3D_vit1(vit, num_face, num[0], num[1], num[2], domaine_VEF, val1, val2, val3);
196 d_visco = tab_visco[elem];
198 norm_tau = d_visco * norm_v / dist;
199 u_etoile = sqrt(norm_tau);
216 const Equation_base& eqn_hydr = mon_modele_turb_hyd->equation();
222 const DoubleTab& tab_visco = ch_visco_cin.
valeurs();
228 if (tab_visco(0, 0) > DMINFLOAT)
229 visco0 = tab_visco(0, 0);
241 Cerr <<
"In Paroi_negligeable_VEF::calculer_hyd : visco = " << tab_visco.
local_min_vect() <<
" <= 0 ? " << finl;
245 for (
int n_bord = 0; n_bord < domaine_VEF.
nb_front_Cl(); n_bord++)
247 const Cond_lim& la_cl = le_dom_Cl_dis_->les_conditions_limites(n_bord);
252 int nfin = ndeb + le_bord.
nb_faces();
255 CDoubleTabView xp = domaine_VEF.
xp().view_ro();
256 CDoubleTabView xv = domaine_VEF.
xv().view_ro();
257 CDoubleTabView face_normale = domaine_VEF.
face_normales().view_ro();
258 CIntTabView elem_faces = domaine_VEF.
elem_faces().view_ro();
259 CIntTabView face_voisins = domaine_VEF.
face_voisins().view_ro();
261 CDoubleArrView visco =
static_cast<const DoubleVect&
>(tab_visco).view_ro();
263 Kokkos::parallel_for(start_gpu_timer(__KERNEL_NAME__), Kokkos::RangePolicy<>(ndeb, nfin), KOKKOS_LAMBDA (
const int num_face)
267 int elem = face_voisins(num_face, 0);
269 for (
int i = 0; i < dim; i++)
271 if (elem_faces(elem, fac) == num_face) fac++;
272 num[i] = elem_faces(elem, fac);
275 double dist = distance(dim, num_face, elem, xp, xv, face_normale);
276 dist *= (dim + 1.) / dim;
277 double norm_v = norm_vit1(dim, vit, num_face, nfac, num, face_normale, val);
278 double d_visco = l_unif ? visco0 : visco[elem];
279 double norm_tau = d_visco * norm_v / dist;
280 double u_etoile = sqrt(norm_tau);
283 end_gpu_timer(__KERNEL_NAME__);
int nb_faces_elem(int=0) const
Renvoie le nombre de face de type i des elements geometriques constituants le domaine.
virtual double face_normales(int face, int comp) const
double xv(int num_face, int k) const
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
double xp(int num_elem, int k) const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
const Domaine & domaine() const