57 if (!res_en_T)
Process::exit(
"Dispersion_bulles_PolyMAC_MPFA::ajouter_blocs NOT YET PORTED TO ENTHALPY EQUATION ! TODO FIXME !!");
61 const IntTab& f_e = domaine.face_voisins(), &fcl = ch.
fcl(), &e_f = domaine.elem_faces();
63 const DoubleTab& vf_dir = domaine.volumes_entrelaces_dir(), &xp = domaine.xp(), &xv = domaine.xv();
64 const DoubleTab& pvit = ch.
passe(),
77 Np = press.line_size(),
79 nf_tot = domaine.nb_faces_tot(),
80 nf = domaine.nb_faces(),
81 ne_tot = domaine.nb_elem_tot(),
82 cR = (rho.dimension_tot(0) == 1),
83 cM = (mu.dimension_tot(0) == 1),
84 Nk = (k_turb) ? (*k_turb).dimension(1) : 1;
85 DoubleTrav nut(domaine.nb_elem_tot(), N);
92 in.
alpha.
resize(N), in.
T.
resize(N), in.
p.
resize(N), in.
rho.
resize(N), in.
mu.
resize(N), in.
sigma.
resize(N*(N-1)/2), in.
k_turb.
resize(N), in.
nut.
resize(N), in.
d_bulles.
resize(N), in.
nv.
resize(N, N);
97 DoubleTrav grad_f_a(pvit);
100 const DoubleTab& fg_w = ch_a.
fgrad_w;
102 const IntTab& fcl_a = ch_a.
fcl();
105 const int nb_max_sat = N * (N-1) /2;
106 DoubleTrav Sigma_tab(ne_tot,nb_max_sat);
109 for (
int k = 0; k < N; k++)
110 for (
int l = k + 1; l < N; l++)
115 const int ind_trav = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
119 for (
int ii = 0; ii < ne_tot; ii++) Sigma_tab(ii, ind_trav) = sig(ii);
124 const int ind_trav = (k*(N-1)-(k-1)*(k)/2) + (l-k-1);
125 for (
int i = 0 ; i<ne_tot ; i++) Sigma_tab(i,ind_trav) = res_en_T ? sat.
sigma(temp(i,k),press(i,k * (Np > 1))) : sat.
sigma_h(temp(i,k),press(i,k * (Np > 1))) ;
129 for (
int n = 0; n < N; n++)
130 for (
int f = 0; f < nf_tot; f++)
133 for (
int j = fg_d(f); j < fg_d(f+1) ; j++)
137 if ( (f_bord = e-ne_tot) < 0)
138 grad_f_a(f, n) += fg_w(j) * alpha(e, n);
139 else if (fcl_a(f_bord, 0) == 1 || fcl_a(f_bord, 0) == 2)
140 grad_f_a(f, n) += fg_w(j) ? fg_w(j) * ref_cast(
Echange_impose_base, cls_a[fcl_a(f_bord, 1)].valeur()).T_ext(fcl_a(f_bord, 2), n) : 0;
141 else if (fcl_a(f_bord, 0) == 4)
142 grad_f_a(f, n) += fg_w(j) ? fg_w(j) * ref_cast(
Neumann_paroi , cls_a[fcl_a(f_bord, 1)].valeur()).flux_impose(fcl_a(f_bord, 2), n) : 0;
143 else if (fcl_a(f_bord, 0) == 6)
144 grad_f_a(f, n) += fg_w(j) * ref_cast(
Dirichlet, cls_a[fcl_a(f_bord, 1)].valeur()).val_imp(fcl_a(f_bord, 2), n);
149 for (
int n = 0; n < N; n++)
150 for (
int e = 0; e < ne_tot; e++)
151 for (
int d = 0; d < D; d++)
153 grad_f_a(nf_tot + D*e +d, n) = 0 ;
154 for (
int j = 0, f; j < e_f.dimension(1) && (f = e_f(e, j)) >= 0; j++)
155 grad_f_a(nf_tot + D*e +d, n) += (e == f_e(f, 0) ? 1 : -1) * fs(f) * (xv(f, d) - xp(e, d)) / ve(e) * grad_f_a(f, n);
159 for (
int f = 0; f < nf; f++)
162 in.
alpha=0., in.
T=0., in.
p=0, in.
rho=0., in.
mu=0., in.
sigma=0., in.
k_turb=0., in.
nut=0., in.
d_bulles=0., in.
nv=0., in.
k_WIT=0;
164 for (
int c = 0; c < 2 && (e = f_e(f, c)) >= 0; c++)
166 for (
int n = 0; n < N; n++)
168 in.
alpha[n] += vf_dir(f, c)/vf(f) * alpha(e, n);
169 in.
p[n] += vf_dir(f, c)/vf(f) * press(e, n * (Np > 1));
170 in.
T[n] += vf_dir(f, c)/vf(f) * temp(e, n);
171 in.
rho[n] += vf_dir(f, c)/vf(f) * rho(!cR * e, n);
172 in.
mu[n] += vf_dir(f, c)/vf(f) * mu(!cM * e, n);
173 in.
nut[n] +=
is_turb ? vf_dir(f, c)/vf(f) * nut(e,n) : 0;
174 in.
d_bulles[n] += (d_bulles) ? vf_dir(f, c)/vf(f) * (*d_bulles)(e,n) : 0;
175 for (
int k = n+1; k < N; k++)
178 const int ind_trav = (n*(N-1)-(n-1)*(n)/2) + (k-n-1);
179 in.
sigma[ind_trav] += vf_dir(f, c) / vf(f) * Sigma_tab(e, ind_trav);
181 for (
int k = 0; k < N; k++)
182 in.
nv(k, n) += vf_dir(f, c)/vf(f) * ch.
v_norm(pvit, pvit, e, f, k, n,
nullptr,
nullptr);
184 for (
int n = 0; n <Nk; n++) in.
k_turb[n] += (k_turb) ? vf_dir(f, c)/vf(f) * (*k_turb)(e,0) : 0;
185 in.
k_WIT += (k_WIT) ? vf_dir(f, c)/vf(f) * (*k_WIT)(e,0) : 0.;
191 for (
int k = 0; k < N; k++)
192 for (
int l = 0; l < N; l++)
195 double fac =
beta_*pf(f) * vf(f);
196 secmem(f, k) += fac * ( - out.
Ctd(k, l) * grad_f_a(f, k) + out.
Ctd(l, k) * grad_f_a(f, l));
201 for (
int e = 0; e < ne_tot; e++)
204 for (
int n = 0; n < N; n++)
206 in.
alpha[n] = alpha(e, n);
207 in.
p[n] = press(e, n * (Np > 1));
208 in.
T[n] = temp(e, n);
209 in.
rho[n] = rho(!cR * e, n);
210 in.
mu[n] = mu(!cM * e, n);
212 in.
d_bulles[n] = (d_bulles) ? (*d_bulles)(e,n) : 0;
213 for (
int k = n+1; k < N; k++)
216 const int ind_trav = (n*(N-1)-(n-1)*(n)/2) + (k-n-1);
217 in.
sigma[ind_trav] = Sigma_tab(e, ind_trav);
219 for (
int k = 0; k < N; k++)
220 in.
nv(k, n) = ch.
v_norm(pvit, pvit, e, -1, k, n,
nullptr,
nullptr);
222 for (
int n = 0; n <Nk; n++) in.
k_turb[n] = (k_turb) ? (*k_turb)(e,0) : 0;
223 in.
k_WIT = (k_WIT) ? (*k_WIT)(e,0) : 0;
228 for (
int d = 0, i = nf_tot + D * e; d < D; d++, i++)
229 for (
int k = 0; k < N; k++)
230 for (
int l = 0; l < N; l++)
233 double fac =
beta_*pe(e) * ve(e);
234 secmem(i, k) += fac * ( - out.
Ctd(k, l) * grad_f_a(i, k) + out.
Ctd(l, k) * grad_f_a(i, l));