38 const DoubleVect& ve = domaine.volumes();
40 const int nf_tot = domaine.nb_faces_tot();
41 const int ne = domaine.nb_elem();
46 const std::string Type_diss = get_dissipation_type(
equation());
49 for (
int e = 0 ; e < ne ; e++)
50 for (
int n = 0; n < N ; n++)
52 double grad_grad {0.0};
53 for (
int d_U = 0; d_U < D; d_U++)
54 for (
int d_X = 0; d_X < D; d_X++)
55 grad_grad += ( tab_grad(nf_tot + d_U + e * D , D * n + d_X) + tab_grad(nf_tot + d_X + e * D , D * n + d_U) ) * tab_grad(nf_tot + d_X + e * D , D * n + d_U) ;
57 const double fac = std::max(grad_grad, 0.) * pe(e) * ve(e) *
alpha_omega_ ;
59 if (Type_diss ==
"tau")
61 secmem(e, n) -= fac * (2*tab_diss(e, n) - tab_pdiss(e, n)) * tab_pdiss(e, n) * (alp ? (*alp)(e,n) : 1.0);
63 for (
auto &&i_m : matrices)
65 if (i_m.first ==
"tau")
66 (*i_m.second)(N*e+n, N*e+n) += fac * 2 * tab_pdiss(e, n) * (alp ? (*alp)(e,n) : 1.0) ;
67 if (i_m.first ==
"alpha")
68 (*i_m.second)(N*e+n, Na*e+n) += fac * (2*tab_diss(e, n) - tab_pdiss(e, n)) * tab_pdiss(e, n);
71 else if (Type_diss ==
"omega")
73 secmem(e, n) += fac * (alp ? (*alp)(e,n) : 1.0);
74 for (
auto &&i_m : matrices)
75 if (i_m.first ==
"alpha")
76 (*i_m.second)(N*e+n, Na*e+n) += fac;