46 const int cnu = nu_visc.
dimension(0) == 1;
49 const DoubleTab& n_f = domaine.face_normales();
50 const DoubleVect& fs = domaine.face_surfaces();
51 const IntTab& f_e = domaine.face_voisins();
53 const bool is_VDF = pb_->discretisation().is_vdf();
57 DoubleTab pvit_elem(0, N * D);
61 domaine.domaine().creer_tableau_elements(pvit_elem);
67 for (
int f = 0; f < nf_tot; f++)
70 int c = (f_e(f, 0) >= 0) ? 0 : 1;
71 if (f_e(f, (c == 0) ? 1 : 0) >= 0)
72 Process::exit(
"Error in the definition of the boundary conditions for wall laws");
76 const double yloc = y_loc(f, n);
77 DoubleTrav u_parallel(D);
80 for (
int d = 0; d < D; d++)
81 u_orth -= pvit_elem(e, N * d + n) * n_f(f, d) / fs(f);
82 for (
int d = 0; d < D; d++)
83 u_parallel(d) = pvit_elem(e, N * d + n) - u_orth * (-n_f(f, d)) / fs(f);
87 for (
int d = 0; d < D; d++)
88 u_orth -= vit(nf_tot + e * D + d, n) * n_f(f, d) / fs(f);
89 for (
int d = 0; d < D; d++)
90 u_parallel(d) = vit(nf_tot + e * D + d, n) - u_orth * (-n_f(f, d)) / fs(f);
93 double norm_u_parallel = std::sqrt(domaine.dot(&u_parallel(0), &u_parallel(0)));
100 u_t(f, n) = y_p(f, n) * nu_visc(!cnu * e, n) / yloc;