1 #ifndef __CS_CONVECTION_DIFFUSION_H__
2 #define __CS_CONVECTION_DIFFUSION_H__
104 if (m->
halo != NULL) {
134 if (f_id > -1 && iconvp > 0 && blencp > 0. && isstpp == 0) {
136 static int _k_slope_test_f_id = -1;
140 int f_track_slope_test_id = -1;
142 if (_k_slope_test_f_id < 0)
144 if (_k_slope_test_f_id > -1 && isstpp == 0)
147 if (f_track_slope_test_id > -1)
150 if (v_slope_test != NULL) {
152 # pragma omp parallel for
153 for (
cs_lnum_t cell_id = 0; cell_id < n_cells_ext; cell_id++)
154 v_slope_test[cell_id] = 0.;
208 # pragma omp parallel for
209 for (
cs_lnum_t ii = 0; ii < n_cells_ext; ii++) {
217 for (
int g_id = 0; g_id < n_i_groups; g_id++) {
218 # pragma omp parallel for
219 for (
int t_id = 0; t_id < n_i_threads; t_id++) {
220 for (
cs_lnum_t face_id = i_group_index[(t_id*n_i_groups + g_id)*2];
221 face_id < i_group_index[(t_id*n_i_groups + g_id)*2 + 1];
226 cnt =
CS_ABS(i_massflux[face_id])*
dt[ii]/vol[ii];
227 courant[ii] =
CS_MAX(courant[ii], cnt);
229 cnt =
CS_ABS(i_massflux[face_id])*
dt[jj]/vol[jj];
230 courant[jj] =
CS_MAX(courant[jj], cnt);
237 for (
int g_id = 0; g_id < n_b_groups; g_id++) {
238 # pragma omp parallel for
239 for (
int t_id = 0; t_id < n_b_threads; t_id++) {
240 for (
cs_lnum_t face_id = b_group_index[(t_id*n_b_groups + g_id)*2];
241 face_id < b_group_index[(t_id*n_b_groups + g_id)*2 + 1];
245 cnt =
CS_ABS(b_massflux[face_id])*
dt[ii]/vol[ii];
246 courant[ii] =
CS_MAX(courant[ii], cnt);
278 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
280 if (nvf_p_c < beta_m) {
281 nvf_p_f = nvf_p_c*(1.+rfc*(1.-nvf_p_c)/beta_m);
283 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
285 nvf_p_f = r1f*nvf_p_c+rfc;
291 if (nvf_p_c < (nvf_r_c/3.)) {
292 r1 = nvf_r_f*(1.-3.*nvf_r_c+2.*nvf_r_f);
293 r2 = nvf_r_c*(1.-nvf_r_c);
295 nvf_p_f = nvf_p_c*r1/r2;
296 }
else if (nvf_p_c <= (nvf_r_c*(1.+nvf_r_f-nvf_r_c)/nvf_r_f)) {
297 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
298 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
300 nvf_p_f = nvf_r_f*(r1f*nvf_p_c/nvf_r_c + rfc);
308 if (nvf_p_c < (3.*nvf_r_c/4.)) {
309 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
311 nvf_p_f = nvf_r_f*(1.+rfc/3.)*nvf_p_c/nvf_r_c;
312 }
else if (nvf_p_c <= (nvf_r_c*(1.+2.*(nvf_r_f-nvf_r_c))/(2.*nvf_r_f-nvf_r_c))) {
313 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
314 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
316 nvf_p_f = nvf_r_f*(r1f*nvf_p_c/nvf_r_c+rfc);
318 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
320 nvf_p_f = 1.-.5*r1f*(1.-nvf_p_c);
326 if (nvf_p_c < (nvf_r_c/(2.-nvf_r_c))) {
327 nvf_p_f = (2.*nvf_r_f-nvf_r_c)*nvf_p_c/nvf_r_c;
328 }
else if (nvf_p_c < nvf_r_c) {
329 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
330 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
332 nvf_p_f = r1f*nvf_p_c+rfc;
333 }
else if (nvf_p_c < (nvf_r_c/nvf_r_f)) {
334 nvf_p_f = nvf_r_f*nvf_p_c/nvf_r_c;
342 if (nvf_p_c < (.5*nvf_r_c)) {
343 nvf_p_f = (2.*nvf_r_f-nvf_r_c)*nvf_p_c/nvf_r_c;
344 }
else if (nvf_p_c < (1.+nvf_r_c-nvf_r_f)) {
345 nvf_p_f = nvf_p_c+nvf_r_f-nvf_r_c;
353 if (nvf_p_c < nvf_r_c) {
354 nvf_p_f = nvf_r_f*nvf_p_c/nvf_r_c;
356 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
357 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
359 nvf_p_f = r1f*nvf_p_c+rfc;
365 r1 = nvf_r_c*nvf_r_c-nvf_r_f;
366 r2 = nvf_r_c*(nvf_r_c-1.);
367 r3 = nvf_r_f-nvf_r_c;
369 nvf_p_f = nvf_p_c*(r1+r3*nvf_p_c)/r2;
374 b1 = (nvf_r_c-nvf_r_f)*nvf_r_c;
375 b2 = nvf_r_c+nvf_r_f+2.*nvf_r_f*nvf_r_f-4.*nvf_r_f*nvf_r_c;
377 if (nvf_p_c < (
b1/
b2)) {
378 r1 = -nvf_r_f*(1.-3.*nvf_r_c+2.*nvf_r_f);
379 r2 = nvf_r_c*(nvf_r_c-1.);
381 nvf_p_f = nvf_p_c*r1/r2;
382 }
else if (nvf_p_c < nvf_r_c) {
383 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
384 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
386 nvf_p_f = r1f*nvf_p_c+rfc;
387 }
else if (nvf_p_c < (nvf_r_c*(1.+nvf_r_f-nvf_r_c)/nvf_r_f)) {
388 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
389 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
391 nvf_p_f = nvf_r_f*(nvf_p_c*r1f/nvf_r_c+rfc);
399 if (nvf_p_c < (nvf_r_c/nvf_r_f)) {
400 nvf_p_f = nvf_r_f*nvf_p_c/nvf_r_c;
408 r1 = nvf_r_c*nvf_r_f*(nvf_r_f-nvf_r_c);
409 r2 = 2.*nvf_r_c*(1.-nvf_r_c)-nvf_r_f*(1.-nvf_r_f);
411 if (nvf_p_c < (r1/r2)) {
412 nvf_p_f = 2.*nvf_p_c;
413 }
else if (nvf_p_c <= (nvf_r_c*(1.+nvf_r_f-nvf_r_c)/nvf_r_f)) {
414 rfc = (nvf_r_f-nvf_r_c)/(1.-nvf_r_c);
415 r1f = (1.-nvf_r_f)/(1.-nvf_r_c);
417 nvf_p_f = nvf_r_f*(nvf_p_c*r1f/nvf_r_c+rfc);
462 cs_real_t blend, high_order, low_order, ratio;
473 high_order = 2.*nvf_p_c;
489 blend =
CS_MIN(1., pow(ratio, .5));
493 nvf_p_f = blend*high_order + (1.-blend)*low_order;
496 if (c_courant < .7 && c_courant > .3) {
497 nvf_p_f = nvf_p_f + (nvf_p_f - low_order)*(.7 - c_courant )/.4;
498 }
else if (c_courant >= .7) {
503 if (c_courant <= .3) {
505 }
else if (c_courant <= .6) {
506 high_order =
CS_MIN(1., nvf_p_c/.3);
507 }
else if (c_courant <= .7) {
512 high_order = 10.*( (.7-c_courant)*
CS_MIN(1., nvf_p_c/.3)
513 + (c_courant-.6)*superbee);
533 blend =
CS_MIN(1., pow(ratio, 2.));
537 nvf_p_f = blend*high_order + (1.-blend)*low_order;
556 blend =
CS_MIN(1., pow(ratio, 4.));
560 nvf_p_f = blend*high_order + (1.-blend)*low_order;
604 testi = grdpai[0]*i_face_normal[0]
605 + grdpai[1]*i_face_normal[1]
606 + grdpai[2]*i_face_normal[2];
607 testj = grdpaj[0]*i_face_normal[0]
608 + grdpaj[1]*i_face_normal[1]
609 + grdpaj[2]*i_face_normal[2];
611 *testij = grdpai[0]*grdpaj[0]
612 + grdpai[1]*grdpaj[1]
613 + grdpai[2]*grdpaj[2];
616 dcc = gradi[0]*i_face_normal[0]
617 + gradi[1]*i_face_normal[1]
618 + gradi[2]*i_face_normal[2];
620 ddj = (pj-
pi)/distf *srfan;
622 dcc = gradj[0]*i_face_normal[0]
623 + gradj[1]*i_face_normal[1]
624 + gradj[2]*i_face_normal[2];
625 ddi = (pj-
pi)/distf *srfan;
672 for (
int i = 0; i < 3; i++) {
673 *testij += gradsti[i][0]*gradstj[i][0]
674 + gradsti[i][1]*gradstj[i][1]
675 + gradsti[i][2]*gradstj[i][2];
677 testi[i] = gradsti[i][0]*i_face_normal[0]
678 + gradsti[i][1]*i_face_normal[1]
679 + gradsti[i][2]*i_face_normal[2];
680 testj[i] = gradstj[i][0]*i_face_normal[0]
681 + gradstj[i][1]*i_face_normal[1]
682 + gradstj[i][2]*i_face_normal[2];
684 if (i_massflux > 0.) {
685 dcc[i] = gradi[i][0]*i_face_normal[0]
686 + gradi[i][1]*i_face_normal[1]
687 + gradi[i][2]*i_face_normal[2];
689 ddj[i] = (pj[i]-
pi[i])/distf *srfan;
691 dcc[i] = gradj[i][0]*i_face_normal[0]
692 + gradj[i][1]*i_face_normal[1]
693 + gradj[i][2]*i_face_normal[2];
694 ddi[i] = (pj[i]-
pi[i])/distf *srfan;
743 for (
int ij = 0; ij < 6; ij++) {
744 *testij += gradsti[ij][0]*gradstj[ij][0]
745 + gradsti[ij][1]*gradstj[ij][1]
746 + gradsti[ij][2]*gradstj[ij][2];
747 testi[ij] = gradsti[ij][0]*i_face_normal[0]
748 + gradsti[ij][1]*i_face_normal[1]
749 + gradsti[ij][2]*i_face_normal[2];
750 testj[ij] = gradstj[ij][0]*i_face_normal[0]
751 + gradstj[ij][1]*i_face_normal[1]
752 + gradstj[ij][2]*i_face_normal[2];
754 if (i_massflux > 0.) {
755 dcc[ij] = gradi[ij][0]*i_face_normal[0]
756 + gradi[ij][1]*i_face_normal[1]
757 + gradi[ij][2]*i_face_normal[2];
759 ddj[ij] = (pj[ij]-
pi[ij])/distf *srfan;
762 dcc[ij] = gradj[ij][0]*i_face_normal[0]
763 + gradj[ij][1]*i_face_normal[1]
764 + gradj[ij][2]*i_face_normal[2];
765 ddi[ij] = (pj[ij]-
pi[ij])/distf *srfan;
804 cs_real_t gradpf[3] = {0.5*(gradi[0] + gradj[0]),
805 0.5*(gradi[1] + gradj[1]),
806 0.5*(gradi[2] + gradj[2])};
850 for (
int isou = 0; isou < 3; isou++) {
852 for (
int jsou = 0; jsou < 3; jsou++)
853 dpvf[jsou] = 0.5*( gradi[isou][jsou]
854 + gradj[isou][jsou]);
861 pip[isou] =
pi[isou] + recoi[isou];
862 pjp[isou] = pj[isou] + recoj[isou];
902 for (
int isou = 0; isou < 6; isou++) {
904 for (
int jsou = 0; jsou < 3; jsou++)
905 dpvf[jsou] = 0.5*( gradi[isou][jsou]
906 + gradj[isou][jsou]);
913 pip[isou] =
pi[isou] + recoi[isou];
914 pjp[isou] = pj[isou] + recoj[isou];
950 *pir =
pi/relaxp - (1.-relaxp)/relaxp * pia;
951 *pjr = pj/relaxp - (1.-relaxp)/relaxp * pja;
953 *pipr = *pir + recoi;
954 *pjpr = *pjr + recoj;
988 for (
int isou = 0; isou < 3; isou++) {
989 pir[isou] =
pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
990 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
992 pipr[isou] = pir[isou] + recoi[isou];
993 pjpr[isou] = pjr[isou] + recoj[isou];
1028 for (
int isou = 0; isou < 6; isou++) {
1029 pir[isou] =
pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
1030 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
1032 pipr[isou] = pir[isou] + recoi[isou];
1033 pjpr[isou] = pjr[isou] + recoj[isou];
1066 for (
int isou = 0; isou < 3; isou++)
1083 for (
int isou = 0; isou < 6; isou++)
1104 *pf = pnd*pip + (1.-pnd)*pjp;
1124 for (
int isou = 0; isou < 3; isou++)
1125 pf[isou] = pnd*pip[isou] + (1.-pnd)*pjp[isou];
1145 for (
int isou = 0; isou < 6; isou++)
1146 pf[isou] = pnd*pip[isou] + (1.-pnd)*pjp[isou];
1170 df[0] = i_face_cog[0] - cell_cen[0];
1171 df[1] = i_face_cog[1] - cell_cen[1];
1172 df[2] = i_face_cog[2] - cell_cen[2];
1198 for (
int jsou = 0; jsou < 3; jsou++)
1199 df[jsou] = i_face_cog[jsou] - cell_cen[jsou];
1201 for (
int isou = 0; isou < 3; isou++) {
1202 pf[isou] =
p[isou] + df[0]*grad[isou][0]
1203 + df[1]*grad[isou][1]
1204 + df[2]*grad[isou][2];
1230 for (
int jsou = 0; jsou < 3; jsou++)
1231 df[jsou] = i_face_cog[jsou] - cell_cen[jsou];
1233 for (
int isou = 0; isou < 6; isou++) {
1234 pf[isou] =
p[isou] + df[0]*grad[isou][0]
1235 + df[1]*grad[isou][1]
1236 + df[2]*grad[isou][2];
1257 *pf = blencp * (*pf) + (1. - blencp) *
p;
1277 for (
int isou = 0; isou < 3; isou++)
1278 pf[isou] = blencp*(pf[isou])+(1.-blencp)*
p[isou];
1298 for (
int isou = 0; isou < 6; isou++)
1299 pf[isou] = blencp*(pf[isou])+(1.-blencp)*
p[isou];
1342 flui = 0.5*(i_massflux + fabs(i_massflux));
1343 fluj = 0.5*(i_massflux - fabs(i_massflux));
1345 fluxij[0] += iconvp*xcppi*(thetap*(flui*pifri + fluj*pjfri) - imasac*i_massflux*
pi);
1346 fluxij[1] += iconvp*xcppj*(thetap*(flui*pifrj + fluj*pjfrj) - imasac*i_massflux*pj);
1385 flui = 0.5*(i_massflux + fabs(i_massflux));
1386 fluj = 0.5*(i_massflux - fabs(i_massflux));
1388 for (
int isou = 0; isou < 3; isou++) {
1390 fluxi[isou] += iconvp*( thetap*(flui*pifri[isou] + fluj*pjfri[isou])
1391 - imasac*i_massflux*
pi[isou]);
1392 fluxj[isou] += iconvp*( thetap*(flui*pifrj[isou] + fluj*pjfrj[isou])
1393 - imasac*i_massflux*pj[isou]);
1433 flui = 0.5*(i_massflux + fabs(i_massflux));
1434 fluj = 0.5*(i_massflux - fabs(i_massflux));
1436 for (
int isou = 0; isou < 6; isou++) {
1437 fluxi[isou] += iconvp*( thetap*(flui*pifri[isou] + fluj*pjfri[isou])
1438 - imasac*i_massflux*
pi[isou]);
1439 fluxj[isou] += iconvp*( thetap*(flui*pifrj[isou] + fluj*pjfrj[isou])
1440 - imasac*i_massflux*pj[isou]);
1469 fluxij[0] += idiffp*thetap*i_visc*(pipr -pjp);
1470 fluxij[1] += idiffp*thetap*i_visc*(pip -pjpr);
1500 for (
int isou = 0; isou < 3; isou++) {
1501 fluxi[isou] += idiffp*thetap*i_visc*(pipr[isou] -pjp[isou]);
1502 fluxj[isou] += idiffp*thetap*i_visc*(pip[isou] -pjpr[isou]);
1533 for (
int isou = 0; isou < 6; isou++) {
1534 fluxi[isou] += idiffp*thetap*i_visc*(pipr[isou] -pjp[isou]);
1535 fluxj[isou] += idiffp*thetap*i_visc*(pip[isou] -pjpr[isou]);
1977 const double relaxp,
1978 const double blencp,
2051 }
else if (ischcp == 0) {
2158 const double relaxp,
2159 const double blencp,
2311 const double relaxp,
2312 const double blencp,
2464 const double blencp,
2513 }
else if (ischcp == 0) {
2529 }
else if (ischcp == 3) {
2559 hybrid_blend_interp =
fmin(hybrid_blend_i,hybrid_blend_j);
2560 *pif = hybrid_blend_interp*(*pif) + (1. - hybrid_blend_interp)*pif_up;
2561 *pjf = hybrid_blend_interp*(*pjf) + (1. - hybrid_blend_interp)*pjf_up;
2624 const double blencp,
2670 }
else if (ischcp == 3) {
2700 hybrid_blend_interp =
fmin(hybrid_blend_i,hybrid_blend_j);
2701 for (
int isou = 0; isou < 3; isou++) {
2702 pif[isou] = hybrid_blend_interp *pif[isou]
2703 + (1. - hybrid_blend_interp)*pif_up[isou];
2704 pjf[isou] = hybrid_blend_interp *pjf[isou]
2705 + (1. - hybrid_blend_interp)*pjf_up[isou];
2766 const double blencp,
2892 const double relaxp,
2893 const double blencp,
2894 const double blend_st,
2928 *upwind_switch =
false;
2991 }
else if (ischcp == 0) {
3048 if (tesqck <= 0. || testij <= 0.) {
3063 *upwind_switch =
true;
3147 const double relaxp,
3148 const double blencp,
3149 const double blend_st,
3221 for (isou = 0; isou < 3; isou++) {
3277 if (tesqck <= 0. || testij <= 0.) {
3291 *upwind_switch =
true;
3312 for (isou = 0; isou < 3; isou++) {
3375 const double relaxp,
3376 const double blencp,
3377 const double blend_st,
3449 for (isou = 0; isou < 6; isou++) {
3505 if (tesqck <= 0. || testij <= 0.) {
3520 *upwind_switch =
true;
3543 for (isou = 0; isou < 6; isou++) {
3601 const double blencp,
3602 const double blend_st,
3631 *upwind_switch =
false;
3674 }
else if (ischcp == 0) {
3711 if (tesqck<=0. || testij<=0.) {
3720 *upwind_switch =
true;
3764 if (i_massflux >= 0.) {
3827 const cs_real_t dist_du = dist_dc + dist_cu;
3833 const cs_real_t grad2c = ((p_d - p_c)/dist_dc - gradc)/dist_dc;
3835 cs_real_t p_u = p_c + (grad2c*dist_cu - gradc)*dist_cu;
3839 const cs_real_t nvf_r_f = (dist_fc+dist_cu)/dist_du;
3840 const cs_real_t nvf_r_c = dist_cu/dist_du;
3847 if (
CS_ABS(p_d-p_u) <= _small) {
3851 const cs_real_t nvf_p_c = (p_c - p_u)/(p_d - p_u);
3853 if (nvf_p_c <= 0. || nvf_p_c >= 1.) {
3875 *pif = p_u + nvf_p_f*(p_d - p_u);
3929 const double blencp,
3930 const double blend_st,
3982 for (
int isou = 0; isou < 3; isou++) {
4020 if (tesqck <= 0. || testij <= 0.) {
4029 *upwind_switch =
true;
4046 for (
int isou = 0; isou < 3; isou++) {
4099 const double blencp,
4100 const double blend_st,
4153 for (isou = 0; isou < 6; isou++) {
4189 if (tesqck <= 0. || testij <= 0.) {
4201 *upwind_switch =
true;
4218 for (isou = 0; isou < 6; isou++) {
4244 *recoi = bldfrp * ( gradi[0]*
diipb[0]
4246 + gradi[2]*
diipb[2]);
4266 for (
int isou = 0; isou < 3; isou++) {
4267 recoi[isou] = bldfrp * ( gradi[isou][0]*
diipb[0]
4268 + gradi[isou][1]*
diipb[1]
4269 + gradi[isou][2]*
diipb[2]);
4290 for (
int isou = 0; isou < 6; isou++) {
4291 recoi[isou] = bldfrp * ( gradi[isou][0]*
diipb[0]
4292 + gradi[isou][1]*
diipb[1]
4293 + gradi[isou][2]*
diipb[2]);
4318 *pir =
pi/relaxp - (1.-relaxp)/relaxp*pia;
4319 *pipr = *pir + recoi;
4343 for (
int isou = 0; isou < 3; isou++) {
4344 pir[isou] =
pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
4345 pipr[isou] = pir[isou] + recoi[isou];
4370 for (
int isou = 0; isou < 6; isou++) {
4371 pir[isou] =
pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
4372 pipr[isou] = pir[isou] + recoi[isou];
4431 flui = 0.5*(b_massflux +fabs(b_massflux));
4432 fluj = 0.5*(b_massflux -fabs(b_massflux));
4435 pfac = inc*coefap + coefbp*pipr;
4436 *flux += iconvp*xcpp*(thetap*(flui*pir + fluj*pfac) -imasac*( b_massflux*
pi));
4442 pfac = inc*coface + cofbce*pipr;
4443 *flux += iconvp*xcpp*(-imasac*(b_massflux*
pi) + thetap*(pfac));
4500 flui = 0.5*(b_massflux +fabs(b_massflux));
4501 fluj = 0.5*(b_massflux -fabs(b_massflux));
4503 for (
int isou = 0; isou < 3; isou++) {
4504 pfac = inc*coefap[isou];
4505 for (
int jsou = 0; jsou < 3; jsou++) {
4506 pfac += coefbp[isou][jsou]*pipr[jsou];
4508 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4509 - imasac*b_massflux*
pi[isou]);
4516 for (
int isou = 0; isou < 3; isou++) {
4517 pfac = inc*coface[isou];
4518 for (
int jsou = 0; jsou < 3; jsou++) {
4519 pfac += cofbce[isou][jsou]*pipr[jsou];
4521 flux[isou] += iconvp*( thetap*pfac
4522 - imasac*b_massflux*
pi[isou]);
4572 flui = 0.5*(b_massflux +fabs(b_massflux));
4573 fluj = 0.5*(b_massflux -fabs(b_massflux));
4576 pfac = inc*coefap + coefbp*pipr;
4577 *flux += iconvp*xcpp*(thetap*(flui*pir + fluj*pfac) -imasac*( b_massflux*
pi));
4623 flui = 0.5*(b_massflux +fabs(b_massflux));
4624 fluj = 0.5*(b_massflux -fabs(b_massflux));
4626 for (
int isou = 0; isou < 3; isou++) {
4627 pfac = inc*coefa[isou];
4628 for (
int jsou = 0; jsou < 3; jsou++) {
4629 pfac += coefb[isou][jsou]*pipr[jsou];
4631 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4632 - imasac*b_massflux*
pi[isou]);
4679 flui = 0.5*(b_massflux +fabs(b_massflux));
4680 fluj = 0.5*(b_massflux -fabs(b_massflux));
4682 for (
int isou = 0; isou < 6; isou++) {
4683 pfac = inc*coefa[isou];
4684 for (
int jsou = 0; jsou < 6; jsou++) {
4685 pfac += coefb[isou][jsou]*pipr[jsou];
4687 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4688 - imasac*b_massflux*
pi[isou]);
4717 cs_real_t pfacd = inc*cofafp + cofbfp*pipr;
4718 *flux += idiffp*thetap*b_visc*pfacd;
4747 for (
int isou = 0; isou < 3; isou++) {
4748 pfacd = inc*cofaf[isou];
4749 for (
int jsou = 0; jsou < 3; jsou++) {
4750 pfacd += cofbf[isou][jsou]*pipr[jsou];
4752 flux[isou] += idiffp*thetap*b_visc*pfacd;
4782 for (
int isou = 0; isou < 6; isou++) {
4783 pfacd = inc*cofaf[isou];
4784 for (
int jsou = 0; jsou < 6; jsou++) {
4785 pfacd += cofbf[isou][jsou]*pipr[jsou];
4787 flux[isou] += idiffp*thetap*b_visc*pfacd;
4809 const double relaxp,
4850 const double relaxp,
4891 const double relaxp,
4971 for (
int isou = 0; isou < 3; isou++)
4972 pip[isou] =
pi[isou] + recoi[isou];
5002 for(
int isou = 0; isou< 6; isou++)
5003 pip[isou] =
pi[isou] + recoi[isou];
5026 *fluxi += idiffp*b_visc*(
pi - pj);
5049 for (
int k = 0;
k < 3;
k++)
5050 fluxi[
k] += idiffp*b_visc*(
pi[
k] - pj[
k]);
5064 const int *
const f_id,
5065 const int *
const init,
5066 const int *
const inc,
5068 const int *
const iccocg,
5069 const int *
const nswrgp,
5070 const int *
const imligp,
5071 const int *
const iphydp,
5072 const int *
const iwgrp,
5073 const int *
const iwarnp,
5096 const int *
const f_id,
5097 const int *
const init,
5098 const int *
const inc,
5100 const int *
const iccocg,
5101 const int *
const nswrgp,
5102 const int *
const imligp,
5103 const int *
const ircflp,
5104 const int *
const iphydp,
5105 const int *
const iwgrp,
5106 const int *
const iwarnp,
5131 const int *
const f_id,
5132 const int *
const init,
5133 const int *
const inc,
5135 const int *
const iccocg,
5136 const int *
const nswrgp,
5137 const int *
const imligp,
5138 const int *
const iphydp,
5139 const int *
const iwgrp,
5140 const int *
const iwarnp,
5162 const int *
const f_id,
5163 const int *
const init,
5164 const int *
const inc,
5166 const int *
const iccocg,
5167 const int *
const nswrgp,
5168 const int *
const imligp,
5169 const int *
const ircflp,
5170 const int *
const iphydp,
5171 const int *
const iwgrp,
5172 const int *
const iwarnp,
static void cs_b_imposed_conv_flux(int iconvp, cs_real_t thetap, int imasac, int inc, int bc_type, int icvfli, cs_real_t pi, cs_real_t pir, cs_real_t pipr, cs_real_t coefap, cs_real_t coefbp, cs_real_t coface, cs_real_t cofbce, cs_real_t b_massflux, cs_real_t xcpp, cs_real_t *flux)
Add convective flux (substracting the mass accumulation from it) to flux at boundary face....
Definition: cs_convection_diffusion.h:4403
static void cs_centered_f_val_vector(const double pnd, const cs_real_3_t pip, const cs_real_3_t pjp, cs_real_t pf[3])
Prepare value at face ij by using a centered scheme.
Definition: cs_convection_diffusion.h:1119
void cs_anisotropic_left_diffusion_vector(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, int ivisep, cs_real_3_t *restrict pvar, const cs_real_3_t *restrict pvara, const cs_real_3_t coefav[], const cs_real_33_t coefbv[], const cs_real_3_t cofafv[], const cs_real_33_t cofbfv[], const cs_real_33_t i_visc[], const cs_real_t b_visc[], const cs_real_t i_secvis[], cs_real_3_t *restrict rhs)
Add explicit part of the terms of diffusion by a left-multiplying symmetric tensorial diffusivity for...
Definition: cs_convection_diffusion.c:8923
static void cs_i_compute_quantities(const cs_real_t bldfrp, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_3_t gradi, const cs_real_3_t gradj, const cs_real_t pi, const cs_real_t pj, cs_real_t *recoi, cs_real_t *recoj, cs_real_t *pip, cs_real_t *pjp)
Reconstruct values in I' and J'.
Definition: cs_convection_diffusion.h:792
static void cs_i_cd_unsteady_nvd(const cs_nvd_type_t limiter, const double beta, const cs_real_3_t cell_cen_c, const cs_real_3_t cell_cen_d, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t gradv_c, const cs_real_t p_c, const cs_real_t p_d, const cs_real_t local_max_c, const cs_real_t local_min_c, const cs_real_t courant_c, cs_real_t *pif, cs_real_t *pjf)
Handle preparation of internal face values for the convection flux computation in case of an unsteady...
Definition: cs_convection_diffusion.h:3798
void cs_anisotropic_diffusion_scalar(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, int iccocg, cs_real_t *restrict pvar, const cs_real_t *restrict pvara, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t *restrict viscel, const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_t *restrict rhs)
Add the explicit part of the diffusion terms with a symmetric tensor diffusivity for a transport equa...
Definition: cs_convection_diffusion.c:8168
static void cs_i_cd_steady_upwind(const cs_real_t bldfrp, const cs_real_t relaxp, const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[3], const cs_real_t gradj[3], const cs_real_t pi, const cs_real_t pj, const cs_real_t pia, const cs_real_t pja, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj, cs_real_t *pip, cs_real_t *pjp, cs_real_t *pipr, cs_real_t *pjpr)
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:1566
void cs_face_diffusion_potential(const int f_id, const cs_mesh_t *m, cs_mesh_quantities_t *fvq, int init, int inc, int imrgra, int iccocg, int nswrgp, int imligp, int iphydp, int iwgrp, int iwarnp, double epsrgp, double climgp, cs_real_3_t *restrict frcxt, cs_real_t *restrict pvar, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t *restrict visel, cs_real_t *restrict i_massflux, cs_real_t *restrict b_massflux)
Update the face mass flux with the face pressure (or pressure increment, or pressure double increment...
Definition: cs_convection_diffusion.c:10801
static void cs_b_imposed_conv_flux_vector(int iconvp, cs_real_t thetap, int imasac, int inc, int bc_type, int icvfli, const cs_real_t pi[restrict 3], const cs_real_t pir[restrict 3], const cs_real_t pipr[restrict 3], const cs_real_t coefap[restrict 3], const cs_real_t coefbp[restrict 3][3], const cs_real_t coface[restrict 3], const cs_real_t cofbce[restrict 3][3], cs_real_t b_massflux, cs_real_t flux[restrict 3])
Add convective flux (substracting the mass accumulation from it) to flux at boundary face....
Definition: cs_convection_diffusion.h:4473
void cs_diffusion_potential(const int f_id, const cs_mesh_t *m, cs_mesh_quantities_t *fvq, int init, int inc, int imrgra, int iccocg, int nswrgp, int imligp, int iphydp, int iwgrp, int iwarnp, double epsrgp, double climgp, cs_real_3_t *restrict frcxt, cs_real_t *restrict pvar, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t visel[], cs_real_t *restrict diverg)
Update the cell mass flux divergence with the face pressure (or pressure increment,...
Definition: cs_convection_diffusion.c:11639
static void cs_i_cd_unsteady_upwind_vector(const cs_real_t bldfrp, const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[3][3], const cs_real_t gradj[3][3], const cs_real_t pi[3], const cs_real_t pj[3], cs_real_t pif[3], cs_real_t pjf[3], cs_real_t pip[3], cs_real_t pjp[3])
Handle preparation of internal face values for the fluxes computation in case of an unsteady algorith...
Definition: cs_convection_diffusion.h:1858
static void cs_blend_f_val_tensor(const double blencp, const cs_real_t p[6], cs_real_t pf[6])
Blend face values for a centered or SOLU scheme with face values for an upwind scheme.
Definition: cs_convection_diffusion.h:1294
static cs_real_t cs_nvd_scheme_scalar(const cs_nvd_type_t limiter, const cs_real_t nvf_p_c, const cs_real_t nvf_r_f, const cs_real_t nvf_r_c)
Compute the normalised face scalar using the specified NVD scheme.
Definition: cs_convection_diffusion.h:266
static void cs_b_relax_c_val_tensor(const double relaxp, const cs_real_6_t pi, const cs_real_6_t pia, const cs_real_6_t recoi, cs_real_t pir[6], cs_real_t pipr[6])
Compute relaxed values at boundary cell i.
Definition: cs_convection_diffusion.h:4363
static void cs_central_downwind_cells(const cs_lnum_t ii, const cs_lnum_t jj, const cs_real_t i_massflux, cs_lnum_t *ic, cs_lnum_t *id)
Determine the upwind and downwind sides of an internal face and matching cell indices.
Definition: cs_convection_diffusion.h:3758
static void cs_i_relax_c_val(const double relaxp, const cs_real_t pia, const cs_real_t pja, const cs_real_t recoi, const cs_real_t recoj, const cs_real_t pi, const cs_real_t pj, cs_real_t *pir, cs_real_t *pjr, cs_real_t *pipr, cs_real_t *pjpr)
Compute relaxed values at cell i and j.
Definition: cs_convection_diffusion.h:938
void cs_slope_test_gradient_tensor(const int inc, const cs_halo_type_t halo_type, const cs_real_63_t *grad, cs_real_63_t *grdpa, const cs_real_6_t *pvar, const cs_real_6_t *coefa, const cs_real_66_t *coefb, const cs_real_t *i_massflux)
Compute the upwind gradient used in the slope tests.
Definition: cs_convection_diffusion.c:1325
static void cs_b_diff_flux_tensor(const int idiffp, const cs_real_t thetap, const int inc, const cs_real_6_t pipr, const cs_real_6_t cofaf, const cs_real_66_t cofbf, const cs_real_t b_visc, cs_real_t flux[6])
Add diffusive flux to flux at boundary face.
Definition: cs_convection_diffusion.h:4772
static void cs_slope_test_vector(const cs_real_t pi[3], const cs_real_t pj[3], const cs_real_t distf, const cs_real_t srfan, const cs_real_t i_face_normal[3], const cs_real_t gradi[3][3], const cs_real_t gradj[3][3], const cs_real_t gradsti[3][3], const cs_real_t gradstj[3][3], const cs_real_t i_massflux, cs_real_t *testij, cs_real_t *tesqck)
Compute slope test criteria at internal face between cell i and j.
Definition: cs_convection_diffusion.h:652
static void cs_i_cd_steady_tensor(const cs_real_t bldfrp, const int ischcp, const double relaxp, const double blencp, const cs_real_t weight, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_63_t gradi, const cs_real_63_t gradj, const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_6_t pia, const cs_real_6_t pja, cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6], cs_real_t pip[6], cs_real_t pjp[6], cs_real_t pipr[6], cs_real_t pjpr[6])
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:2309
static void cs_b_cd_unsteady(const cs_real_t bldfrp, const cs_real_3_t diipb, const cs_real_3_t gradi, const cs_real_t pi, cs_real_t *pip)
Handle preparation of boundary face values for the flux computation in case of an unsteady algorithm.
Definition: cs_convection_diffusion.h:4928
static void cs_b_diff_flux(const int idiffp, const cs_real_t thetap, const int inc, const cs_real_t pipr, const cs_real_t cofafp, const cs_real_t cofbfp, const cs_real_t b_visc, cs_real_t *flux)
Add diffusive flux to flux at boundary face.
Definition: cs_convection_diffusion.h:4708
static void cs_i_conv_flux_tensor(const int iconvp, const cs_real_t thetap, const int imasac, const cs_real_t pi[6], const cs_real_t pj[6], const cs_real_t pifri[6], const cs_real_t pifrj[6], const cs_real_t pjfri[6], const cs_real_t pjfrj[6], const cs_real_t i_massflux, cs_real_t fluxi[6], cs_real_t fluxj[6])
Add convective fluxes (substracting the mass accumulation from them) to fluxes at face ij.
Definition: cs_convection_diffusion.h:1418
static void cs_b_upwind_flux(const int iconvp, const cs_real_t thetap, const int imasac, const int inc, const int bc_type, const cs_real_t pi, const cs_real_t pir, const cs_real_t pipr, const cs_real_t coefap, const cs_real_t coefbp, const cs_real_t b_massflux, const cs_real_t xcpp, cs_real_t *flux)
Add convective flux (substracting the mass accumulation from it) to flux at boundary face....
Definition: cs_convection_diffusion.h:4551
void itrgrp(const int *const f_id, const int *const init, const int *const inc, const int *const imrgra, const int *const iccocg, const int *const nswrgp, const int *const imligp, const int *const iphydp, const int *const iwgrp, const int *const iwarnp, const cs_real_t *const epsrgp, const cs_real_t *const climgp, const cs_real_t *const extrap, cs_real_3_t frcxt[], cs_real_t pvar[], const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t visel[], cs_real_t diverg[])
Definition: cs_convection_diffusion.c:747
static void cs_b_cd_steady(const cs_real_t bldfrp, const double relaxp, const cs_real_3_t diipb, const cs_real_3_t gradi, const cs_real_t pi, const cs_real_t pia, cs_real_t *pir, cs_real_t *pipr)
Handle preparation of boundary face values for the flux computation in case of a steady algorithm.
Definition: cs_convection_diffusion.h:4808
static void cs_i_cd_steady_slope_test(bool *upwind_switch, const int iconvp, const cs_real_t bldfrp, const int ischcp, const double relaxp, const double blencp, const double blend_st, const cs_real_t weight, const cs_real_t i_dist, const cs_real_t i_face_surf, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_t i_massflux, const cs_real_3_t gradi, const cs_real_3_t gradj, const cs_real_3_t gradupi, const cs_real_3_t gradupj, const cs_real_3_t gradsti, const cs_real_3_t gradstj, const cs_real_t pi, const cs_real_t pj, const cs_real_t pia, const cs_real_t pja, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj, cs_real_t *pip, cs_real_t *pjp, cs_real_t *pipr, cs_real_t *pjpr)
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:2888
static void cs_b_cd_steady_vector(const cs_real_t bldfrp, const double relaxp, const cs_real_3_t diipb, const cs_real_33_t gradi, const cs_real_3_t pi, const cs_real_3_t pia, cs_real_t pir[3], cs_real_t pipr[3])
Handle preparation of boundary face values for the flux computation in case of a steady algorithm.
Definition: cs_convection_diffusion.h:4849
static void cs_solu_f_val(const cs_real_3_t cell_cen, const cs_real_3_t i_face_cog, const cs_real_3_t grad, const cs_real_t p, cs_real_t *pf)
Prepare value at face ij by using a Second Order Linear Upwind scheme.
Definition: cs_convection_diffusion.h:1162
static void cs_upwind_f_val_vector(const cs_real_3_t p, cs_real_t pf[3])
Prepare value at face ij by using an upwind scheme.
Definition: cs_convection_diffusion.h:1063
void cs_anisotropic_diffusion_potential(const int f_id, const cs_mesh_t *m, cs_mesh_quantities_t *fvq, int init, int inc, int imrgra, int iccocg, int nswrgp, int imligp, int ircflp, int iphydp, int iwgrp, int iwarnp, double epsrgp, double climgp, cs_real_3_t *restrict frcxt, cs_real_t *restrict pvar, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t *restrict viscel, const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_t *restrict diverg)
Add the explicit part of the divergence of the mass flux due to the pressure gradient (routine analog...
Definition: cs_convection_diffusion.c:12022
static void cs_i_cd_unsteady_vector(const cs_real_t bldfrp, const int ischcp, const double blencp, const cs_real_t weight, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_cog, const cs_real_t hybrid_blend_i, const cs_real_t hybrid_blend_j, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_33_t gradi, const cs_real_33_t gradj, const cs_real_3_t pi, const cs_real_3_t pj, cs_real_t pif[3], cs_real_t pjf[3], cs_real_t pip[3], cs_real_t pjp[3])
Handle preparation of internal face values for the fluxes computation in case of an unsteady algorith...
Definition: cs_convection_diffusion.h:2622
static void cs_i_cd_steady(const cs_real_t bldfrp, const int ischcp, const double relaxp, const double blencp, const cs_real_t weight, const cs_real_t cell_ceni[3], const cs_real_t cell_cenj[3], const cs_real_t i_face_cog[3], const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[3], const cs_real_t gradj[3], const cs_real_t gradupi[3], const cs_real_t gradupj[3], const cs_real_t pi, const cs_real_t pj, const cs_real_t pia, const cs_real_t pja, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj, cs_real_t *pip, cs_real_t *pjp, cs_real_t *pipr, cs_real_t *pjpr)
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:1975
void cs_convection_diffusion_scalar(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int icvflb, int inc, int iccocg, int imasac, cs_real_t *restrict pvar, const cs_real_t *restrict pvara, const int icvfli[], const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t *restrict rhs)
Add the explicit part of the convection/diffusion terms of a standard transport equation of a scalar ...
Definition: cs_convection_diffusion.c:1622
static void cs_b_relax_c_val_vector(const double relaxp, const cs_real_3_t pi, const cs_real_3_t pia, const cs_real_3_t recoi, cs_real_t pir[3], cs_real_t pipr[3])
Compute relaxed values at boundary cell i.
Definition: cs_convection_diffusion.h:4336
static void cs_blend_f_val(const double blencp, const cs_real_t p, cs_real_t *pf)
Blend face values for a centered or SOLU scheme with face values for an upwind scheme.
Definition: cs_convection_diffusion.h:1253
static void cs_i_conv_flux(const int iconvp, const cs_real_t thetap, const int imasac, const cs_real_t pi, const cs_real_t pj, const cs_real_t pifri, const cs_real_t pifrj, const cs_real_t pjfri, const cs_real_t pjfrj, const cs_real_t i_massflux, const cs_real_t xcppi, const cs_real_t xcppj, cs_real_2_t fluxij)
Add convective fluxes (substracting the mass accumulation from them) to fluxes at face ij.
Definition: cs_convection_diffusion.h:1326
static void cs_b_cd_unsteady_tensor(const cs_real_t bldfrp, const cs_real_3_t diipb, const cs_real_63_t gradi, const cs_real_6_t pi, cs_real_t pip[6])
Handle preparation of boundary face values for the flux computation in case of a steady algorithm.
Definition: cs_convection_diffusion.h:4989
static void cs_i_diff_flux_vector(const int idiffp, const cs_real_t thetap, const cs_real_t pip[3], const cs_real_t pjp[3], const cs_real_t pipr[3], const cs_real_t pjpr[3], const cs_real_t i_visc, cs_real_t fluxi[3], cs_real_t fluxj[3])
Add diffusive fluxes to fluxes at face ij.
Definition: cs_convection_diffusion.h:1490
void itrgrv(const int *const f_id, const int *const init, const int *const inc, const int *const imrgra, const int *const iccocg, const int *const nswrgp, const int *const imligp, const int *const ircflp, const int *const iphydp, const int *const iwgrp, const int *const iwarnp, const cs_real_t *const epsrgp, const cs_real_t *const climgp, const cs_real_t *const extrap, cs_real_3_t frcxt[], cs_real_t pvar[], const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t viscel[], const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_t diverg[])
Definition: cs_convection_diffusion.c:807
static void cs_centered_f_val(const double pnd, const cs_real_t pip, const cs_real_t pjp, cs_real_t *pf)
Prepare value at face ij by using a centered scheme.
Definition: cs_convection_diffusion.h:1099
void cs_convection_diffusion_thermal(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, int iccocg, int imasac, cs_real_t *restrict pvar, const cs_real_t *restrict pvara, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t *restrict rhs)
Add the explicit part of the convection/diffusion terms of a transport equation of a scalar field su...
Definition: cs_convection_diffusion.c:6830
static void cs_b_relax_c_val(const double relaxp, const cs_real_t pi, const cs_real_t pia, const cs_real_t recoi, cs_real_t *pir, cs_real_t *pipr)
Compute relaxed values at boundary cell i.
Definition: cs_convection_diffusion.h:4311
static void cs_b_cd_steady_tensor(const cs_real_t bldfrp, const double relaxp, const cs_real_3_t diipb, const cs_real_63_t gradi, const cs_real_6_t pi, const cs_real_6_t pia, cs_real_t pir[6], cs_real_t pipr[6])
Handle preparation of boundary face values for the flux computation in case of a steady algorithm.
Definition: cs_convection_diffusion.h:4890
static void cs_i_cd_steady_vector(const cs_real_t bldfrp, const int ischcp, const double relaxp, const double blencp, const cs_real_t weight, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_33_t gradi, const cs_real_33_t gradj, const cs_real_3_t pi, const cs_real_3_t pj, const cs_real_3_t pia, const cs_real_3_t pja, cs_real_t pifri[3], cs_real_t pifrj[3], cs_real_t pjfri[3], cs_real_t pjfrj[3], cs_real_t pip[3], cs_real_t pjp[3], cs_real_t pipr[3], cs_real_t pjpr[3])
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:2156
static void cs_i_cd_unsteady_upwind_tensor(const cs_real_t bldfrp, const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[6][3], const cs_real_t gradj[6][3], const cs_real_t pi[6], const cs_real_t pj[6], cs_real_t pif[6], cs_real_t pjf[6], cs_real_t pip[6], cs_real_t pjp[6])
Handle preparation of internal face values for the fluxes computation in case of an unsteady algorith...
Definition: cs_convection_diffusion.h:1908
static void cs_b_diff_flux_coupling(int idiffp, cs_real_t pi, cs_real_t pj, cs_real_t b_visc, cs_real_t *fluxi)
Add diffusive flux to flux at an internal coupling face.
Definition: cs_convection_diffusion.h:5020
static void cs_b_compute_quantities_tensor(const cs_real_3_t diipb, const cs_real_63_t gradi, const cs_real_t bldfrp, cs_real_t recoi[6])
Reconstruct values in I' at boundary cell i.
Definition: cs_convection_diffusion.h:4285
static void cs_b_upwind_flux_vector(const int iconvp, const cs_real_t thetap, const int imasac, const int inc, const int bc_type, const cs_real_3_t pi, const cs_real_3_t pir, const cs_real_3_t pipr, const cs_real_3_t coefa, const cs_real_33_t coefb, const cs_real_t b_massflux, cs_real_t flux[3])
Add convective flux (substracting the mass accumulation from it) to flux at boundary face....
Definition: cs_convection_diffusion.h:4603
static void cs_i_cd_unsteady_upwind(const cs_real_t bldfrp, const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[3], const cs_real_t gradj[3], const cs_real_t pi, const cs_real_t pj, cs_real_t *pif, cs_real_t *pjf, cs_real_t *pip, cs_real_t *pjp)
Handle preparation of internal face values for the fluxes computation in case of an unsteady algorith...
Definition: cs_convection_diffusion.h:1808
static void cs_b_compute_quantities_vector(const cs_real_3_t diipb, const cs_real_33_t gradi, const cs_real_t bldfrp, cs_real_t recoi[3])
Reconstruct values in I' at boundary cell i.
Definition: cs_convection_diffusion.h:4261
void cs_convection_diffusion_vector(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int icvflb, int inc, int ivisep, int imasac, cs_real_3_t *restrict pvar, const cs_real_3_t *restrict pvara, const int icvfli[], const cs_real_3_t coefav[], const cs_real_33_t coefbv[], const cs_real_3_t cofafv[], const cs_real_33_t cofbfv[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t i_secvis[], const cs_real_t b_secvis[], cs_real_3_t *restrict rhs)
Add the explicit part of the convection/diffusion terms of a transport equation of a vector field .
Definition: cs_convection_diffusion.c:4174
static void cs_sync_scalar_halo(const cs_mesh_t *m, cs_halo_type_t halo_type, int tr_dim, cs_real_t pvar[])
Definition: cs_convection_diffusion.h:99
static void cs_i_cd_steady_upwind_vector(const cs_real_t bldfrp, const cs_real_t relaxp, const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[3][3], const cs_real_t gradj[3][3], const cs_real_t pi[3], const cs_real_t pj[3], const cs_real_t pia[3], const cs_real_t pja[3], cs_real_t pifri[3], cs_real_t pifrj[3], cs_real_t pjfri[3], cs_real_t pjfrj[3], cs_real_t pip[3], cs_real_t pjp[3], cs_real_t pipr[3], cs_real_t pjpr[3])
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:1649
static void cs_slope_test(const cs_real_t pi, const cs_real_t pj, const cs_real_t distf, const cs_real_t srfan, const cs_real_t i_face_normal[3], const cs_real_t gradi[3], const cs_real_t gradj[3], const cs_real_t grdpai[3], const cs_real_t grdpaj[3], const cs_real_t i_massflux, cs_real_t *testij, cs_real_t *tesqck)
Compute slope test criteria at internal face between cell i and j.
Definition: cs_convection_diffusion.h:586
void cs_anisotropic_right_diffusion_vector(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, cs_real_3_t *restrict pvar, const cs_real_3_t *restrict pvara, const cs_real_3_t coefav[], const cs_real_33_t coefbv[], const cs_real_3_t cofafv[], const cs_real_33_t cofbfv[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t *restrict viscel, const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_3_t *restrict rhs)
Add explicit part of the terms of diffusion by a right-multiplying symmetric tensorial diffusivity fo...
Definition: cs_convection_diffusion.c:9471
static void cs_solu_f_val_tensor(const cs_real_3_t cell_cen, const cs_real_3_t i_face_cog, const cs_real_63_t grad, const cs_real_6_t p, cs_real_t pf[6])
Prepare value at face ij by using a Second Order Linear Upwind scheme.
Definition: cs_convection_diffusion.h:1222
static void cs_b_upwind_flux_tensor(const int iconvp, const cs_real_t thetap, const int imasac, const int inc, const int bc_type, const cs_real_6_t pi, const cs_real_6_t pir, const cs_real_6_t pipr, const cs_real_6_t coefa, const cs_real_66_t coefb, const cs_real_t b_massflux, cs_real_t flux[6])
Add convective flux (substracting the mass accumulation from it) to flux at boundary face....
Definition: cs_convection_diffusion.h:4659
static void cs_b_compute_quantities(const cs_real_3_t diipb, const cs_real_3_t gradi, const cs_real_t bldfrp, cs_real_t *recoi)
Reconstruct values in I' at boundary cell i.
Definition: cs_convection_diffusion.h:4239
void itrmav(const int *const f_id, const int *const init, const int *const inc, const int *const imrgra, const int *const iccocg, const int *const nswrgp, const int *const imligp, const int *const ircflp, const int *const iphydp, const int *const iwgrp, const int *const iwarnp, const cs_real_t *const epsrgp, const cs_real_t *const climgp, const cs_real_t *const extrap, cs_real_3_t frcxt[], cs_real_t pvar[], const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t viscel[], const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_t i_massflux[], cs_real_t b_massflux[])
Definition: cs_convection_diffusion.c:679
static void cs_upwind_f_val_tensor(const cs_real_6_t p, cs_real_t pf[6])
Prepare value at face ij by using an upwind scheme.
Definition: cs_convection_diffusion.h:1080
static void cs_solu_f_val_vector(const cs_real_3_t cell_cen, const cs_real_3_t i_face_cog, const cs_real_33_t grad, const cs_real_3_t p, cs_real_t pf[3])
Prepare value at face ij by using a Second Order Linear Upwind scheme.
Definition: cs_convection_diffusion.h:1190
static void cs_i_cd_steady_upwind_tensor(const cs_real_t bldfrp, const cs_real_t relaxp, const cs_real_t diipf[3], const cs_real_t djjpf[3], const cs_real_t gradi[6][3], const cs_real_t gradj[6][3], const cs_real_t pi[6], const cs_real_t pj[6], const cs_real_t pia[6], const cs_real_t pja[6], cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6], cs_real_t pip[6], cs_real_t pjp[6], cs_real_t pipr[6], cs_real_t pjpr[6])
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:1732
cs_nvd_type_t
Definition: cs_convection_diffusion.h:59
@ CS_NVD_SUPERBEE
Definition: cs_convection_diffusion.h:64
@ CS_NVD_SMART
Definition: cs_convection_diffusion.h:62
@ CS_NVD_CUBISTA
Definition: cs_convection_diffusion.h:63
@ CS_NVD_STOIC
Definition: cs_convection_diffusion.h:68
@ CS_NVD_WASEB
Definition: cs_convection_diffusion.h:70
@ CS_NVD_CLAM
Definition: cs_convection_diffusion.h:67
@ CS_NVD_OSHER
Definition: cs_convection_diffusion.h:69
@ CS_NVD_VOF_CICSAM
Definition: cs_convection_diffusion.h:72
@ CS_NVD_VOF_STACS
Definition: cs_convection_diffusion.h:73
@ CS_NVD_GAMMA
Definition: cs_convection_diffusion.h:61
@ CS_NVD_MINMOD
Definition: cs_convection_diffusion.h:66
@ CS_NVD_VOF_HRIC
Definition: cs_convection_diffusion.h:71
@ CS_NVD_MUSCL
Definition: cs_convection_diffusion.h:65
@ CS_NVD_N_TYPES
Definition: cs_convection_diffusion.h:74
static void cs_i_relax_c_val_tensor(const cs_real_t relaxp, const cs_real_t pia[6], const cs_real_t pja[6], const cs_real_t recoi[6], const cs_real_t recoj[6], const cs_real_t pi[6], const cs_real_t pj[6], cs_real_t pir[6], cs_real_t pjr[6], cs_real_t pipr[6], cs_real_t pjpr[6])
Compute relaxed values at cell i and j.
Definition: cs_convection_diffusion.h:1016
static void cs_b_cd_unsteady_vector(const cs_real_t bldfrp, const cs_real_3_t diipb, const cs_real_33_t gradi, const cs_real_3_t pi, cs_real_t pip[3])
Handle preparation of boundary face values for the flux computation in case of a steady algorithm.
Definition: cs_convection_diffusion.h:4958
static void cs_slope_test_tensor(const cs_real_t pi[6], const cs_real_t pj[6], const cs_real_t distf, const cs_real_t srfan, const cs_real_t i_face_normal[3], const cs_real_t gradi[6][3], const cs_real_t gradj[6][3], const cs_real_t gradsti[6][3], const cs_real_t gradstj[6][3], const cs_real_t i_massflux, cs_real_t *testij, cs_real_t *tesqck)
Compute slope test criteria at internal face between cell i and j.
Definition: cs_convection_diffusion.h:722
void cs_convection_diffusion_tensor(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int icvflb, int inc, int imasac, cs_real_6_t *restrict pvar, const cs_real_6_t *restrict pvara, const cs_real_6_t coefa[], const cs_real_66_t coefb[], const cs_real_6_t cofaf[], const cs_real_66_t cofbf[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t *restrict rhs)
Add the explicit part of the convection/diffusion terms of a transport equation of a vector field .
Definition: cs_convection_diffusion.c:5864
static void cs_i_cd_steady_slope_test_tensor(bool *upwind_switch, const int iconvp, const cs_real_t bldfrp, const int ischcp, const double relaxp, const double blencp, const double blend_st, const cs_real_t weight, const cs_real_t i_dist, const cs_real_t i_face_surf, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_t i_massflux, const cs_real_63_t gradi, const cs_real_63_t gradj, const cs_real_63_t grdpai, const cs_real_63_t grdpaj, const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_6_t pia, const cs_real_6_t pja, cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6], cs_real_t pip[6], cs_real_t pjp[6], cs_real_t pipr[6], cs_real_t pjpr[6])
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:3371
static void cs_i_compute_quantities_tensor(const cs_real_t bldfrp, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_63_t gradi, const cs_real_63_t gradj, const cs_real_6_t pi, const cs_real_6_t pj, cs_real_t recoi[6], cs_real_t recoj[6], cs_real_t pip[6], cs_real_t pjp[6])
Reconstruct values in I' and J'.
Definition: cs_convection_diffusion.h:886
static void cs_i_diff_flux_tensor(const int idiffp, const cs_real_t thetap, const cs_real_t pip[6], const cs_real_t pjp[6], const cs_real_t pipr[6], const cs_real_t pjpr[6], const cs_real_t i_visc, cs_real_t fluxi[6], cs_real_t fluxj[6])
Add diffusive fluxes to fluxes at face ij.
Definition: cs_convection_diffusion.h:1523
static void cs_centered_f_val_tensor(const double pnd, const cs_real_6_t pip, const cs_real_6_t pjp, cs_real_t pf[6])
Prepare value at face ij by using a centered scheme.
Definition: cs_convection_diffusion.h:1140
void cs_slope_test_gradient_vector(const int inc, const cs_halo_type_t halo_type, const cs_real_33_t *grad, cs_real_33_t *grdpa, const cs_real_3_t *pvar, const cs_real_3_t *coefa, const cs_real_33_t *coefb, const cs_real_t *i_massflux)
Compute the upwind gradient used in the slope tests.
Definition: cs_convection_diffusion.c:1170
static void cs_i_cd_unsteady(const cs_real_t bldfrp, const int ischcp, const double blencp, const cs_real_t weight, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_cog, const cs_real_t hybrid_blend_i, const cs_real_t hybrid_blend_j, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_3_t gradi, const cs_real_3_t gradj, const cs_real_3_t gradupi, const cs_real_3_t gradupj, const cs_real_t pi, const cs_real_t pj, cs_real_t *pif, cs_real_t *pjf, cs_real_t *pip, cs_real_t *pjp)
Handle preparation of internal face values for the fluxes computation in case of a unsteady algorithm...
Definition: cs_convection_diffusion.h:2462
void cs_face_convection_scalar(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int icvflb, int inc, int iccocg, int imasac, cs_real_t *restrict pvar, const cs_real_t *restrict pvara, const int icvfli[], const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], cs_real_2_t i_conv_flux[], cs_real_t b_conv_flux[])
Update face flux with convection contribution of a standard transport equation of a scalar field .
Definition: cs_convection_diffusion.c:3060
static void cs_i_cd_unsteady_slope_test_vector(bool *upwind_switch, const int iconvp, const cs_real_t bldfrp, const int ischcp, const double blencp, const double blend_st, const cs_real_t weight, const cs_real_t i_dist, const cs_real_t i_face_surf, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_t i_massflux, const cs_real_33_t gradi, const cs_real_33_t gradj, const cs_real_33_t grdpai, const cs_real_33_t grdpaj, const cs_real_3_t pi, const cs_real_3_t pj, cs_real_t pif[3], cs_real_t pjf[3], cs_real_t pip[3], cs_real_t pjp[3])
Handle preparation of internal face values for the fluxes computation in case of a unsteady algorithm...
Definition: cs_convection_diffusion.h:3925
static void cs_b_diff_flux_coupling_vector(int idiffp, const cs_real_t pi[3], const cs_real_t pj[3], cs_real_t b_visc, cs_real_t fluxi[3])
Add diffusive flux to flux at an internal coupling face for a vector.
Definition: cs_convection_diffusion.h:5043
static void cs_blend_f_val_vector(const double blencp, const cs_real_3_t p, cs_real_t pf[3])
Blend face values for a centered or SOLU scheme with face values for an upwind scheme.
Definition: cs_convection_diffusion.h:1273
static void cs_i_compute_quantities_vector(const cs_real_t bldfrp, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_33_t gradi, const cs_real_33_t gradj, const cs_real_3_t pi, const cs_real_3_t pj, cs_real_t recoi[3], cs_real_t recoj[3], cs_real_t pip[3], cs_real_t pjp[3])
Reconstruct values in I' and J'.
Definition: cs_convection_diffusion.h:834
void cs_face_anisotropic_diffusion_potential(const int f_id, const cs_mesh_t *m, cs_mesh_quantities_t *fvq, int init, int inc, int imrgra, int iccocg, int nswrgp, int imligp, int ircflp, int iphydp, int iwgrp, int iwarnp, double epsrgp, double climgp, cs_real_3_t *restrict frcxt, cs_real_t *restrict pvar, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t *restrict viscel, const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_t *restrict i_massflux, cs_real_t *restrict b_massflux)
Add the explicit part of the pressure gradient term to the mass flux in case of anisotropic diffusion...
Definition: cs_convection_diffusion.c:11152
static void cs_i_cd_unsteady_slope_test(bool *upwind_switch, const int iconvp, const cs_real_t bldfrp, const int ischcp, const double blencp, const double blend_st, const cs_real_t weight, const cs_real_t i_dist, const cs_real_t i_face_surf, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_t i_massflux, const cs_real_3_t gradi, const cs_real_3_t gradj, const cs_real_3_t gradupi, const cs_real_3_t gradupj, const cs_real_3_t gradsti, const cs_real_3_t gradstj, const cs_real_t pi, const cs_real_t pj, cs_real_t *pif, cs_real_t *pjf, cs_real_t *pip, cs_real_t *pjp)
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:3597
static void cs_i_cd_steady_slope_test_vector(bool *upwind_switch, const int iconvp, const cs_real_t bldfrp, const int ischcp, const double relaxp, const double blencp, const double blend_st, const cs_real_t weight, const cs_real_t i_dist, const cs_real_t i_face_surf, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_t i_massflux, const cs_real_33_t gradi, const cs_real_33_t gradj, const cs_real_33_t grdpai, const cs_real_33_t grdpaj, const cs_real_3_t pi, const cs_real_3_t pj, const cs_real_3_t pia, const cs_real_3_t pja, cs_real_t pifri[3], cs_real_t pifrj[3], cs_real_t pjfri[3], cs_real_t pjfrj[3], cs_real_t pip[3], cs_real_t pjp[3], cs_real_t pipr[3], cs_real_t pjpr[3])
Handle preparation of internal face values for the fluxes computation in case of a steady algorithm a...
Definition: cs_convection_diffusion.h:3143
void itrmas(const int *const f_id, const int *const init, const int *const inc, const int *const imrgra, const int *const iccocg, const int *const nswrgp, const int *const imligp, const int *const iphydp, const int *const iwgrp, const int *const iwarnp, const cs_real_t *const epsrgp, const cs_real_t *const climgp, const cs_real_t *const extrap, cs_real_3_t frcxt[], cs_real_t pvar[], const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t cofafp[], const cs_real_t cofbfp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t visel[], cs_real_t i_massflux[], cs_real_t b_massflux[])
Definition: cs_convection_diffusion.c:617
static void cs_upwind_f_val(const cs_real_t p, cs_real_t *pf)
Prepare value at face ij by using an upwind scheme.
Definition: cs_convection_diffusion.h:1047
static cs_real_t * cs_get_v_slope_test(int f_id, const cs_var_cal_opt_t var_cal_opt)
Definition: cs_convection_diffusion.h:125
static void cs_i_cd_unsteady_slope_test_tensor(bool *upwind_switch, const int iconvp, const cs_real_t bldfrp, const int ischcp, const double blencp, const double blend_st, const cs_real_t weight, const cs_real_t i_dist, const cs_real_t i_face_surf, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_normal, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_t i_massflux, const cs_real_63_t gradi, const cs_real_63_t gradj, const cs_real_63_t grdpai, const cs_real_63_t grdpaj, const cs_real_6_t pi, const cs_real_6_t pj, cs_real_t pif[6], cs_real_t pjf[6], cs_real_t pip[6], cs_real_t pjp[6])
Handle preparation of internal face values for the fluxes computation in case of a unsteady algorithm...
Definition: cs_convection_diffusion.h:4095
static void cs_i_diff_flux(const int idiffp, const cs_real_t thetap, const cs_real_t pip, const cs_real_t pjp, const cs_real_t pipr, const cs_real_t pjpr, const cs_real_t i_visc, cs_real_t fluxij[2])
Add diffusive fluxes to fluxes at face ij.
Definition: cs_convection_diffusion.h:1460
static void cs_i_conv_flux_vector(const int iconvp, const cs_real_t thetap, const int imasac, const cs_real_t pi[3], const cs_real_t pj[3], const cs_real_t pifri[3], const cs_real_t pifrj[3], const cs_real_t pjfri[3], const cs_real_t pjfrj[3], const cs_real_t i_massflux, cs_real_t fluxi[3], cs_real_t fluxj[3])
Add convective fluxes (substracting the mass accumulation from them) to fluxes at face ij.
Definition: cs_convection_diffusion.h:1370
void cs_slope_test_gradient(int f_id, int inc, cs_halo_type_t halo_type, const cs_real_3_t *grad, cs_real_3_t *grdpa, const cs_real_t *pvar, const cs_real_t *coefap, const cs_real_t *coefbp, const cs_real_t *i_massflux)
Compute the upwind gradient used in the slope tests.
Definition: cs_convection_diffusion.c:894
static cs_real_t cs_nvd_vof_scheme_scalar(const cs_nvd_type_t limiter, const cs_real_3_t i_face_normal, const cs_real_t nvf_p_c, const cs_real_t nvf_r_f, const cs_real_t nvf_r_c, const cs_real_3_t gradv_c, const cs_real_t c_courant)
Compute the normalised face scalar using the specified NVD scheme for the case of a Volume-of-Fluid (...
Definition: cs_convection_diffusion.h:451
void cs_beta_limiter_building(int f_id, int inc, const cs_real_t rovsdt[])
Compute the beta blending coefficient of the beta limiter (ensuring preservation of a given min/max p...
Definition: cs_convection_diffusion.c:1471
static void cs_b_diff_flux_vector(const int idiffp, const cs_real_t thetap, const int inc, const cs_real_3_t pipr, const cs_real_3_t cofaf, const cs_real_33_t cofbf, const cs_real_t b_visc, cs_real_t flux[3])
Add diffusive flux to flux at boundary face.
Definition: cs_convection_diffusion.h:4737
void cs_anisotropic_diffusion_tensor(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, cs_real_6_t *restrict pvar, const cs_real_6_t *restrict pvara, const cs_real_6_t coefa[], const cs_real_66_t coefb[], const cs_real_6_t cofaf[], const cs_real_66_t cofbf[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t *restrict viscel, const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_6_t *restrict rhs)
Add the explicit part of the diffusion terms with a symmetric tensor diffusivity for a transport equa...
Definition: cs_convection_diffusion.c:10184
static void cs_cell_courant_number(const int f_id, cs_real_t *courant)
Definition: cs_convection_diffusion.h:173
static void cs_i_relax_c_val_vector(const double relaxp, const cs_real_3_t pia, const cs_real_3_t pja, const cs_real_3_t recoi, const cs_real_3_t recoj, const cs_real_3_t pi, const cs_real_3_t pj, cs_real_t pir[3], cs_real_t pjr[3], cs_real_t pipr[3], cs_real_t pjpr[3])
Compute relaxed values at cell i and j.
Definition: cs_convection_diffusion.h:976
static void cs_i_cd_unsteady_tensor(const cs_real_t bldfrp, const int ischcp, const double blencp, const cs_real_t weight, const cs_real_3_t cell_ceni, const cs_real_3_t cell_cenj, const cs_real_3_t i_face_cog, const cs_real_3_t diipf, const cs_real_3_t djjpf, const cs_real_63_t gradi, const cs_real_63_t gradj, const cs_real_6_t pi, const cs_real_6_t pj, cs_real_t pif[6], cs_real_t pjf[6], cs_real_t pip[6], cs_real_t pjp[6])
Handle preparation of internal face values for the fluxes computation in case of an unsteady algorith...
Definition: cs_convection_diffusion.h:2764
void cs_upwind_gradient(const int f_id, const int inc, const cs_halo_type_t halo_type, const cs_real_t coefap[], const cs_real_t coefbp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t *restrict pvar, cs_real_3_t *restrict grdpa)
Compute the upwind gradient in order to cope with SOLU schemes observed in the litterature.
Definition: cs_convection_diffusion.c:1038
#define restrict
Definition: cs_defs.h:124
#define BEGIN_C_DECLS
Definition: cs_defs.h:492
double cs_real_t
Floating-point value.
Definition: cs_defs.h:304
#define CS_MIN(a, b)
Definition: cs_defs.h:455
cs_lnum_t cs_lnum_2_t[2]
vector of 2 local mesh-entity ids
Definition: cs_defs.h:310
#define CS_ABS(a)
Definition: cs_defs.h:454
#define CS_MAX(a, b)
Definition: cs_defs.h:456
#define CS_PROCF(x, y)
Definition: cs_defs.h:506
cs_real_t cs_real_66_t[6][6]
6x6 matrix of floating-point values
Definition: cs_defs.h:325
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:317
cs_real_t cs_real_2_t[2]
vector of 2 floating-point values
Definition: cs_defs.h:316
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:319
#define CS_UNUSED(x)
Definition: cs_defs.h:478
#define END_C_DECLS
Definition: cs_defs.h:493
cs_real_t cs_real_33_t[3][3]
3x3 matrix of floating-point values
Definition: cs_defs.h:324
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:298
cs_real_t cs_real_63_t[6][3]
Definition: cs_defs.h:332
cs_field_t * cs_field_by_id(int id)
Return a pointer to a field based on its id.
Definition: cs_field.c:2314
int cs_field_get_key_int(const cs_field_t *f, int key_id)
Return a integer value for a given key associated with a field.
Definition: cs_field.c:2991
int cs_field_key_id(const char *name)
Return an id associated with a given key name.
Definition: cs_field.c:2497
int cs_field_key_id_try(const char *name)
Return an id associated with a given key name if present.
Definition: cs_field.c:2524
@ p
Definition: cs_field_pointer.h:67
@ k
Definition: cs_field_pointer.h:70
@ dt
Definition: cs_field_pointer.h:65
#define CS_F_(e)
Macro used to return a field pointer by its enumerated value.
Definition: cs_field_pointer.h:51
void cs_halo_sync_component(const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_halo_rotation_t rotation_op, cs_real_t var[])
Definition: cs_halo.c:1754
void cs_halo_sync_var(const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_real_t var[])
Definition: cs_halo.c:1434
@ CS_HALO_ROTATION_IGNORE
Definition: cs_halo.h:64
cs_halo_type_t
Definition: cs_halo.h:50
void cs_math_3_length_unitv(const cs_real_t xa[3], const cs_real_t xb[3], cs_real_t *len, cs_real_3_t unitv)
Compute the length (euclidien norm) between two points xa and xb in a cartesian coordinate system of ...
Definition: cs_math.c:438
static cs_real_t cs_math_3_square_distance(const cs_real_t xa[3], const cs_real_t xb[3])
Compute the squared distance between two points xa and xb in a cartesian coordinate system of dimensi...
Definition: cs_math.h:304
static cs_real_t cs_math_3_norm(const cs_real_t v[3])
Compute the euclidean norm of a vector of dimension 3.
Definition: cs_math.h:397
static cs_real_t cs_math_3_square_norm(const cs_real_t v[3])
Compute the square norm of a vector of 3 real values.
Definition: cs_math.h:413
static cs_real_t cs_math_3_dot_product(const cs_real_t u[3], const cs_real_t v[3])
Compute the dot product of two vectors of 3 real values.
Definition: cs_math.h:326
static cs_real_t cs_math_sq(cs_real_t x)
Compute the square of a real value.
Definition: cs_math.h:193
const cs_real_t cs_math_epzero
cs_mesh_quantities_t * cs_glob_mesh_quantities
@ CS_COUPLED_FD
Definition: cs_parameters.h:113
integer, dimension(:), allocatable icvfli
boundary convection flux indicator of a Rusanov or an analytical flux (some boundary contributions of...
Definition: cfpoin.f90:52
double precision pi
value with 16 digits
Definition: cstnum.f90:48
cs_equation_param_t * var_cal_opt
Definition: keywords.h:135
integer(c_int), pointer, save imrgra
type of gradient reconstruction
Definition: optcal.f90:251
double precision, dimension(:,:), pointer diipb
vector II' for interior faces for every boundary face, the three components of the vector ....
Definition: mesh.f90:212
integer, save kbmasf
Definition: numvar.f90:187
integer, save kimasf
interior and boundary convective mass flux key ids of the variables
Definition: numvar.f90:187
integer(c_int), pointer, save idtvar
option for a variable time step
Definition: optcal.f90:374
double precision, save fmin
Definition: coincl.f90:133
double precision, dimension(ncharm), save beta
Definition: cpincl.f90:99
double precision, dimension(ncharm), save b1
Definition: cpincl.f90:233
double precision, dimension(ncharm), save b2
Definition: cpincl.f90:233
Set of parameters to handle an unsteady convection-diffusion-reaction equation with term sources.
Definition: cs_equation_param.h:202
double blencv
Definition: cs_equation_param.h:472
int isstpc
Definition: cs_equation_param.h:463
int iconv
Definition: cs_equation_param.h:453
Field descriptor.
Definition: cs_field.h:125
cs_real_t * val
Definition: cs_field.h:146
Definition: cs_mesh_quantities.h:89
cs_real_t * cell_vol
Definition: cs_mesh_quantities.h:92
cs_lnum_t * b_face_cells
Definition: cs_mesh.h:111
cs_numbering_t * b_face_numbering
Definition: cs_mesh.h:162
cs_numbering_t * i_face_numbering
Definition: cs_mesh.h:161
cs_lnum_t n_cells_with_ghosts
Definition: cs_mesh.h:150
cs_halo_t * halo
Definition: cs_mesh.h:155
cs_lnum_2_t * i_face_cells
Definition: cs_mesh.h:110
cs_lnum_t * group_index
Definition: cs_numbering.h:98
int n_threads
Definition: cs_numbering.h:89
int n_groups
Definition: cs_numbering.h:90