42 const DoubleTab& tab_tau = semi_impl.count(
"tau") ? semi_impl.at(
"tau") : tau.
passe();
46 const DoubleTab& xp = domaine.xp();
47 const DoubleTab& xv = domaine.xv();
50 const DoubleVect& ve = domaine.volumes();
53 const int ne = domaine.nb_elem();
54 const int ne_tot = domaine.nb_elem_tot();
55 const int nf_tot = domaine.nb_faces_tot();
59 DoubleTrav grad_f_sqrt_tau(nf_tot, N);
60 DoubleTrav sqrt_tau(ne_tot, N);
61 for (
int e = 0; e < ne_tot ; e++)
62 for (
int n = 0; n < N; n++)
63 sqrt_tau(e,n) = std::sqrt(std::max(0., tab_tau(e,n)));
69 Op_Grad_tau.
calculer(sqrt_tau,grad_f_sqrt_tau);
72 for (
int n_bord = 0; n_bord < domaine.nb_front_Cl(); n_bord++)
73 for (
int k = 0; k < N; k++)
78 const int nfin = ndeb + le_bord.
nb_faces();
81 for (
int num_face = ndeb, num_face_cl = 0; num_face < nfin; num_face++, num_face_cl++)
83 int n0 = domaine.face_voisins(num_face, 0);
85 n0 = domaine.face_voisins(num_face, 1);
86 const int ori = domaine.orientation(num_face);
87 const double val = ref_cast(
Dirichlet, la_cl.valeur()).val_imp(num_face_cl, k);
88 grad_f_sqrt_tau(num_face, k) += - val/(xp(n0, ori) - xv(num_face, ori));
89 grad_f_sqrt_tau(num_face, k) -= - std::sqrt(val)/(xp(n0, ori) - xv(num_face, ori));
94 DoubleTab grad_e_sqrt_tau(ne_tot, N, D);
95 face_to_elem_VDF(domaine, grad_f_sqrt_tau, grad_e_sqrt_tau);
98 for(
int e = 0; e < ne; e++)
99 for (
int n = 0; n < N; n++)
102 const double fac = pe(e)*ve(e);
103 double secmem_en = 0;
105 for (
int d = 0; d < D; d++)
106 secmem_en += grad_e_sqrt_tau(e, n, d) * grad_e_sqrt_tau(e, n, d);
108 secmem(e, n) += fac * -8 * (nu_visc(e, n) + nu_turb(e, n)) * secmem_en;
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.