1 #ifndef __CS_CONVECTION_DIFFUSION_H__ 2 #define __CS_CONVECTION_DIFFUSION_H__ 48 #define _CS_DOT_PRODUCT(vect1, vect2) \ 49 (vect1[X] * vect2[X] + vect1[Y] * vect2[Y] + vect1[Z] * vect2[Z]) 120 flui = 0.5*(i_massflux + fabs(i_massflux));
121 fluj = 0.5*(i_massflux - fabs(i_massflux));
124 fluxij[0] += iconvp * (thetap * (flui*pifri + fluj*pjfri
125 + lambdaij * phi*0.5*(
CS_ABS(i_massflux)
126 - lambdaij*i_massflux
129 * - imasac * i_massflux * pi);
130 fluxij[1] += iconvp * (thetap * (flui*pifrj + fluj*pjfrj
131 + lambdaij * phi*0.5*(
CS_ABS(i_massflux)
132 - lambdaij*i_massflux
135 - imasac * i_massflux * pj);
172 double dcc, ddi, ddj;
177 testi = grdpai[0]*i_face_normal[0]
178 + grdpai[1]*i_face_normal[1]
179 + grdpai[2]*i_face_normal[2];
180 testj = grdpaj[0]*i_face_normal[0]
181 + grdpaj[1]*i_face_normal[1]
182 + grdpaj[2]*i_face_normal[2];
183 *testij = grdpai[0]*grdpaj[0]
184 + grdpai[1]*grdpaj[1]
185 + grdpai[2]*grdpaj[2];
188 dcc = gradi[0]*i_face_normal[0]
189 + gradi[1]*i_face_normal[1]
190 + gradi[2]*i_face_normal[2];
192 ddj = (pj-
pi)/distf *srfan;
194 dcc = gradj[0]*i_face_normal[0]
195 + gradj[1]*i_face_normal[1]
196 + gradj[2]*i_face_normal[2];
197 ddi = (pj-
pi)/distf *srfan;
200 *tesqck = pow(dcc, 2.) - pow(ddi-ddj, 2.);
236 double testi[3], testj[3];
237 double dcc[3], ddi[3], ddj[3];
241 for (
int isou = 0; isou < 3; isou++) {
242 testi[isou] = grdpai[isou][0]*i_face_normal[0]
243 + grdpai[isou][1]*i_face_normal[1]
244 + grdpai[isou][2]*i_face_normal[2];
245 testj[isou] = grdpaj[isou][0]*i_face_normal[0]
246 + grdpaj[isou][1]*i_face_normal[1]
247 + grdpaj[isou][2]*i_face_normal[2];
248 testij[isou] = grdpai[isou][0]*grdpaj[isou][0]
249 + grdpai[isou][1]*grdpaj[isou][1]
250 + grdpai[isou][2]*grdpaj[isou][2];
253 dcc[isou] = gradi[isou][0]*i_face_normal[0]
254 + gradi[isou][1]*i_face_normal[1]
255 + gradi[isou][2]*i_face_normal[2];
256 ddi[isou] = testi[isou];
257 ddj[isou] = (pj[isou]-pi[isou])/distf *srfan;
259 dcc[isou] = gradj[isou][0]*i_face_normal[0]
260 + gradj[isou][1]*i_face_normal[1]
261 + gradj[isou][2]*i_face_normal[2];
262 ddi[isou] = (pj[isou]-pi[isou])/distf *srfan;
263 ddj[isou] = testj[isou];
265 tesqck[isou] = pow(dcc[isou], 2.) - pow(ddi[isou]-ddj[isou], 2.);
302 double testi[6], testj[6];
303 double dcc[6], ddi[6], ddj[6];
307 for (
int isou = 0; isou < 6; isou++) {
308 testi[isou] = grdpai[isou][0]*i_face_normal[0]
309 + grdpai[isou][1]*i_face_normal[1]
310 + grdpai[isou][2]*i_face_normal[2];
311 testj[isou] = grdpaj[isou][0]*i_face_normal[0]
312 + grdpaj[isou][1]*i_face_normal[1]
313 + grdpaj[isou][2]*i_face_normal[2];
314 testij[isou] = grdpai[isou][0]*grdpaj[isou][0]
315 + grdpai[isou][1]*grdpaj[isou][1]
316 + grdpai[isou][2]*grdpaj[isou][2];
319 dcc[isou] = gradi[isou][0]*i_face_normal[0]
320 + gradi[isou][1]*i_face_normal[1]
321 + gradi[isou][2]*i_face_normal[2];
322 ddi[isou] = testi[isou];
323 ddj[isou] = (pj[isou]-pi[isou])/distf *srfan;
325 dcc[isou] = gradj[isou][0]*i_face_normal[0]
326 + gradj[isou][1]*i_face_normal[1]
327 + gradj[isou][2]*i_face_normal[2];
328 ddi[isou] = (pj[isou]-pi[isou])/distf *srfan;
329 ddj[isou] = testj[isou];
331 tesqck[isou] = pow(dcc[isou], 2.) - pow(ddi[isou]-ddj[isou], 2.);
372 cs_real_t diipfx, diipfy, diipfz, djjpfx, djjpfy, djjpfz;
377 diipfx = i_face_cog[0] - (cell_ceni[0] + (1.-pnd) * dijpf[0]);
378 diipfy = i_face_cog[1] - (cell_ceni[1] + (1.-pnd) * dijpf[1]);
379 diipfz = i_face_cog[2] - (cell_ceni[2] + (1.-pnd) * dijpf[2]);
381 djjpfx = i_face_cog[0] - cell_cenj[0] + pnd * dijpf[0];
382 djjpfy = i_face_cog[1] - cell_cenj[1] + pnd * dijpf[1];
383 djjpfz = i_face_cog[2] - cell_cenj[2] + pnd * dijpf[2];
385 dpxf = 0.5*(gradi[0] + gradj[0]);
386 dpyf = 0.5*(gradi[1] + gradj[1]);
387 dpzf = 0.5*(gradi[2] + gradj[2]);
390 *recoi = ircflp*(dpxf*diipfx+dpyf*diipfy+dpzf*diipfz);
391 *recoj = ircflp*(dpxf*djjpfx+dpyf*djjpfy+dpzf*djjpfz);
436 for (
int jsou = 0; jsou < 3; jsou++)
437 dijpfv[jsou] = dijpf[jsou];
440 for (
int jsou = 0; jsou < 3; jsou++) {
441 diipfv[jsou] = i_face_cog[jsou]
442 - (cell_ceni[jsou] + (1.-pnd) * dijpfv[jsou]);
443 djjpfv[jsou] = i_face_cog[jsou]
444 - cell_cenj[jsou] + pnd * dijpfv[jsou];
449 for (
int isou = 0; isou < 3; isou++) {
451 for (
int jsou = 0; jsou < 3; jsou++)
452 dpvf[jsou] = 0.5*( gradi[isou][jsou]
453 + gradj[isou][jsou]);
457 recoi[isou] = ircflp*( dpvf[0]*diipfv[0]
459 + dpvf[2]*diipfv[2]);
462 recoj[isou] = ircflp*( dpvf[0]*djjpfv[0]
464 + dpvf[2]*djjpfv[2]);
466 pip[isou] = pi[isou] + recoi[isou];
468 pjp[isou] = pj[isou] + recoj[isou];
513 for (
int jsou = 0; jsou < 3; jsou++)
514 dijpfv[jsou] = dijpf[jsou];
518 for (
int jsou = 0; jsou < 3; jsou++) {
519 diipfv[jsou] = i_face_cog[jsou]
520 - (cell_ceni[jsou] + (1.-pnd) * dijpfv[jsou]);
521 djjpfv[jsou] = i_face_cog[jsou]
522 - cell_cenj[jsou] + pnd * dijpfv[jsou];
527 for (
int isou = 0; isou < 6; isou++) {
529 for (
int jsou = 0; jsou < 3; jsou++)
530 dpvf[jsou] = 0.5*( gradi[isou][jsou]
531 + gradj[isou][jsou]);
535 recoi[isou] = ircflp*( dpvf[0]*diipfv[0]
537 + dpvf[2]*diipfv[2]);
540 recoj[isou] = ircflp*( dpvf[0]*djjpfv[0]
542 + dpvf[2]*djjpfv[2]);
544 pip[isou] = pi[isou] + recoi[isou];
546 pjp[isou] = pj[isou] + recoj[isou];
582 *pir = pi/relaxp - (1.-relaxp)/relaxp * pia;
583 *pjr = pj/relaxp - (1.-relaxp)/relaxp * pja;
585 *pipr = *pir + recoi;
586 *pjpr = *pjr + recoj;
620 for (
int isou = 0; isou < 3; isou++) {
621 pir[isou] = pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
622 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
624 pipr[isou] = pir[isou] + recoi[isou];
625 pjpr[isou] = pjr[isou] + recoj[isou];
660 for (
int isou = 0; isou < 6; isou++) {
661 pir[isou] = pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
662 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
664 pipr[isou] = pir[isou] + recoi[isou];
665 pjpr[isou] = pjr[isou] + recoj[isou];
698 for (
int isou = 0; isou < 3; isou++)
715 for (
int isou = 0; isou < 6; isou++)
736 *pf = pnd*pip + (1.-pnd)*pjp;
764 *pf = p + phi * (pnd * pip + (1.-pnd) * pjp - p);
784 for (
int isou = 0; isou < 3; isou++)
785 pf[isou] = pnd*pip[isou] + (1.-pnd)*pjp[isou];
805 for (
int isou = 0; isou < 6; isou++)
806 pf[isou] = pnd*pip[isou] + (1.-pnd)*pjp[isou];
830 df[0] = i_face_cog[0] - cell_cen[0];
831 df[1] = i_face_cog[1] - cell_cen[1];
832 df[2] = i_face_cog[2] - cell_cen[2];
864 df[0] = i_face_cog[0] - cell_cen[0];
865 df[1] = i_face_cog[1] - cell_cen[1];
866 df[2] = i_face_cog[2] - cell_cen[2];
894 for (
int jsou = 0; jsou < 3; jsou++)
895 df[jsou] = i_face_cog[jsou] - cell_cen[jsou];
897 for (
int isou = 0; isou < 3; isou++) {
898 pf[isou] = p[isou] + df[0]*grad[isou][0]
899 + df[1]*grad[isou][1]
900 + df[2]*grad[isou][2];
926 for (
int jsou = 0; jsou < 3; jsou++)
927 df[jsou] = i_face_cog[jsou] - cell_cen[jsou];
929 for (
int isou = 0; isou < 6; isou++) {
930 pf[isou] = p[isou] + df[0]*grad[isou][0]
931 + df[1]*grad[isou][1]
932 + df[2]*grad[isou][2];
953 *pf = blencp * (*pf) + (1. - blencp) * p;
973 for (
int isou = 0; isou < 3; isou++)
974 pf[isou] = blencp*(pf[isou])+(1.-blencp)*p[isou];
994 for (
int isou = 0; isou < 6; isou++)
995 pf[isou] = blencp*(pf[isou])+(1.-blencp)*p[isou];
1038 flui = 0.5*(i_massflux + fabs(i_massflux));
1039 fluj = 0.5*(i_massflux - fabs(i_massflux));
1041 fluxij[0] += iconvp*xcppi*(thetap*(flui*pifri + fluj*pjfri) - imasac*i_massflux*pi);
1042 fluxij[1] += iconvp*xcppj*(thetap*(flui*pifrj + fluj*pjfrj) - imasac*i_massflux*pj);
1081 flui = 0.5*(i_massflux + fabs(i_massflux));
1082 fluj = 0.5*(i_massflux - fabs(i_massflux));
1084 for (
int isou = 0; isou < 3; isou++) {
1086 fluxi[isou] += iconvp*( thetap*(flui*pifri[isou] + fluj*pjfri[isou])
1087 - imasac*i_massflux*pi[isou]);
1088 fluxj[isou] += iconvp*( thetap*(flui*pifrj[isou] + fluj*pjfrj[isou])
1089 - imasac*i_massflux*pj[isou]);
1129 flui = 0.5*(i_massflux + fabs(i_massflux));
1130 fluj = 0.5*(i_massflux - fabs(i_massflux));
1132 for (
int isou = 0; isou < 6; isou++) {
1133 fluxi[isou] += iconvp*( thetap*(flui*pifri[isou] + fluj*pjfri[isou])
1134 - imasac*i_massflux*pi[isou]);
1135 fluxj[isou] += iconvp*( thetap*(flui*pifrj[isou] + fluj*pjfrj[isou])
1136 - imasac*i_massflux*pj[isou]);
1165 fluxij[0] += idiffp*thetap*i_visc*(pipr -pjp);
1166 fluxij[1] += idiffp*thetap*i_visc*(pip -pjpr);
1196 for (
int isou = 0; isou < 3; isou++) {
1197 fluxi[isou] += idiffp*thetap*i_visc*(pipr[isou] -pjp[isou]);
1198 fluxj[isou] += idiffp*thetap*i_visc*(pip[isou] -pjpr[isou]);
1229 for (
int isou = 0; isou < 6; isou++) {
1230 fluxi[isou] += idiffp*thetap*i_visc*(pipr[isou] -pjp[isou]);
1231 fluxj[isou] += idiffp*thetap*i_visc*(pip[isou] -pjpr[isou]);
1728 const double relaxp,
1729 const double blencp,
1804 }
else if (ischcp == 0) {
1910 const double relaxp,
1911 const double blencp,
2064 const double relaxp,
2065 const double blencp,
2217 const double blencp,
2266 }
else if (ischcp == 0) {
2452 const double blencp,
2556 const double blencp,
2680 const double relaxp,
2681 const double blencp,
2715 srfan = i_face_surf;
2717 *upwind_switch =
false;
2761 if (tesqck<=0. || testij<=0.) {
2775 *upwind_switch =
true;
2801 }
else if (ischcp == 0) {
2930 const double relaxp,
2931 const double blencp,
2965 srfan = i_face_surf;
2967 for (isou = 0; isou < 3; isou++) {
2968 upwind_switch[isou] =
false;
3013 for (isou = 0; isou < 3; isou++) {
3014 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3028 upwind_switch[isou] =
true;
3101 for (isou = 0; isou < 3; isou++) {
3160 const double relaxp,
3161 const double blencp,
3195 srfan = i_face_surf;
3197 for (isou = 0; isou < 6; isou++) {
3198 upwind_switch[isou] =
false;
3243 for (isou = 0; isou < 6; isou++) {
3244 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3258 upwind_switch[isou] =
true;
3332 for (isou = 0; isou < 6; isou++) {
3386 const double blencp,
3413 srfan = i_face_surf;
3415 *upwind_switch =
false;
3447 if (tesqck<=0. || testij<=0.) {
3457 *upwind_switch =
true;
3475 }
else if (ischcp == 0) {
3568 const double blencp,
3595 srfan = i_face_surf;
3597 for (isou = 0; isou < 3; isou++) {
3598 upwind_switch[isou] =
false;
3633 for (isou = 0; isou < 3; isou++) {
3634 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3644 upwind_switch[isou] =
true;
3694 for (isou = 0; isou < 3; isou++) {
3742 const double blencp,
3769 srfan = i_face_surf;
3771 for (isou = 0; isou < 6; isou++) {
3772 upwind_switch[isou] =
false;
3804 for (isou = 0; isou < 6; isou++) {
3805 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3815 upwind_switch[isou] =
true;
3865 for (isou = 0; isou < 6; isou++) {
3891 *recoi = ircflp * ( gradi[0]*diipb[0]
3893 + gradi[2]*diipb[2]);
3913 for (
int isou = 0; isou < 3; isou++) {
3914 recoi[isou] = ircflp * (gradi[isou][0]*diipb[0]
3915 + gradi[isou][1]*diipb[1]
3916 + gradi[isou][2]*diipb[2]);
3937 for (
int isou = 0; isou < 6; isou++) {
3938 recoi[isou] = ircflp * (gradi[isou][0]*diipb[0]
3939 + gradi[isou][1]*diipb[1]
3940 + gradi[isou][2]*diipb[2]);
3965 *pir = pi/relaxp - (1.-relaxp)/relaxp*pia;
3966 *pipr = *pir + recoi;
3990 for (
int isou = 0; isou < 3; isou++) {
3991 pir[isou] = pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
3992 pipr[isou] = pir[isou] + recoi[isou];
4017 for (
int isou = 0; isou < 6; isou++) {
4018 pir[isou] = pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
4019 pipr[isou] = pir[isou] + recoi[isou];
4078 flui = 0.5*(b_massflux +fabs(b_massflux));
4079 fluj = 0.5*(b_massflux -fabs(b_massflux));
4082 pfac = inc*coefap + coefbp*pipr;
4083 *flux += iconvp*xcpp*(thetap*(flui*pir + fluj*pfac) -imasac*( b_massflux*pi));
4089 pfac = inc*coface + cofbce*pipr;
4090 *flux += iconvp*xcpp*(-imasac*(b_massflux*
pi) + thetap*(pfac));
4147 flui = 0.5*(b_massflux +fabs(b_massflux));
4148 fluj = 0.5*(b_massflux -fabs(b_massflux));
4150 for (
int isou = 0; isou < 3; isou++) {
4151 pfac = inc*coefap[isou];
4152 for (
int jsou = 0; jsou < 3; jsou++) {
4153 pfac += coefbp[isou][jsou]*pipr[jsou];
4155 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4156 - imasac*b_massflux*
pi[isou]);
4163 for (
int isou = 0; isou < 3; isou++) {
4164 pfac = inc*coface[isou];
4165 for (
int jsou = 0; jsou < 3; jsou++) {
4166 pfac += cofbce[isou][jsou]*pipr[jsou];
4168 flux[isou] += iconvp*( thetap*pfac
4169 - imasac*b_massflux*
pi[isou]);
4219 flui = 0.5*(b_massflux +fabs(b_massflux));
4220 fluj = 0.5*(b_massflux -fabs(b_massflux));
4223 pfac = inc*coefap + coefbp*pipr;
4224 *flux += iconvp*xcpp*(thetap*(flui*pir + fluj*pfac) -imasac*( b_massflux*pi));
4268 flui = 0.5*(b_massflux +fabs(b_massflux));
4269 fluj = 0.5*(b_massflux -fabs(b_massflux));
4271 for (
int isou = 0; isou < 3; isou++) {
4272 pfac = inc*coefa[isou];
4273 for (
int jsou = 0; jsou < 3; jsou++) {
4274 pfac += coefb[isou][jsou]*pipr[jsou];
4276 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4277 - imasac*b_massflux*pi[isou]);
4322 flui = 0.5*(b_massflux +fabs(b_massflux));
4323 fluj = 0.5*(b_massflux -fabs(b_massflux));
4325 for (
int isou = 0; isou < 6; isou++) {
4326 pfac = inc*coefa[isou];
4327 for (
int jsou = 0; jsou < 6; jsou++) {
4328 pfac += coefb[isou][jsou]*pipr[jsou];
4330 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4331 - imasac*b_massflux*pi[isou]);
4360 cs_real_t pfacd = inc*cofafp + cofbfp*pipr;
4361 *flux += idiffp*thetap*b_visc*pfacd;
4390 for (
int isou = 0; isou < 3; isou++) {
4391 pfacd = inc*cofaf[isou];
4392 for (
int jsou = 0; jsou < 3; jsou++) {
4393 pfacd += cofbf[isou][jsou]*pipr[jsou];
4395 flux[isou] += idiffp*thetap*b_visc*pfacd;
4425 for (
int isou = 0; isou < 6; isou++) {
4426 pfacd = inc*cofaf[isou];
4427 for (
int jsou = 0; jsou < 6; jsou++) {
4428 pfacd += cofbf[isou][jsou]*pipr[jsou];
4430 flux[isou] += idiffp*thetap*b_visc*pfacd;
4452 const double relaxp,
4493 const double relaxp,
4534 const double relaxp,
4614 for(
int isou = 0; isou< 3; isou++)
4615 pip[isou] = pi[isou] + recoi[isou];
4645 for(
int isou = 0; isou< 6; isou++)
4646 pip[isou] = pi[isou] + recoi[isou];
5783 #undef _CS_DOT_PRODUCT static void cs_b_cd_steady(const int ircflp, 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:4451
static void cs_i_cd_unsteady_slope_test_tensor(bool upwind_switch[6], const int iconvp, const int ircflp, const int ischcp, const double blencp, 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 dijpf, 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:3738
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:695
double precision, dimension(:,:), pointer diipb
Definition: mesh.f90:216
#define restrict
Definition: cs_defs.h:122
static void cs_b_imposed_conv_flux_vector(int iconvp, cs_real_t thetap, int imasac, int inc, cs_int_t 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:4120
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:4415
cs_real_t cs_real_2_t[2]
vector of 2 floating-point values
Definition: cs_defs.h:307
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:310
static void cs_i_cd_unsteady(const int ircflp, 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 dijpf, 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:2215
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:7031
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:800
static void cs_solu_f_val_limiter(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 phi, const cs_real_t p, cs_real_t *pf)
Prepare LIMITED value at face ij by using a Second Order Linear Upwind scheme.
Definition: cs_convection_diffusion.h:855
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:5936
integer, dimension(:), allocatable icvfli
Definition: cfpoin.f90:48
static void cs_b_cd_steady_vector(const int ircflp, 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:4492
Definition: cs_convection_diffusion.h:47
#define CS_ABS(a)
Definition: cs_defs.h:411
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:712
static void cs_b_cd_unsteady(const int ircflp, 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:4571
static void cs_i_cd_steady_upwind_vector(const int ircflp, const cs_real_t relaxp, 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 dijpf, 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:1357
cs_real_t cs_real_66_t[6][6]
6x6 matrix of floating-point values
Definition: cs_defs.h:315
static void cs_b_imposed_conv_flux(int iconvp, cs_real_t thetap, int imasac, int inc, cs_int_t 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:4050
double precision pi
value with 16 digits
Definition: cstnum.f90:48
#define BEGIN_C_DECLS
Definition: cs_defs.h:448
int cs_int_t
Fortran-compatible integer.
Definition: cs_defs.h:295
Definition: cs_field_pointer.h:78
static void cs_i_cd_steady_tensor(const int ircflp, 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 dijpf, 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:2062
static void cs_i_relax_c_val_tensor(const double relaxp, const cs_real_6_t pia, const cs_real_6_t pja, const cs_real_6_t recoi, const cs_real_6_t recoj, const cs_real_6_t pi, const cs_real_6_t pj, 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:648
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:570
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 iwarnp, double epsrgp, double climgp, double extrap, 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 viselx, const cs_real_t visely[], const cs_real_t viselz[], 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:7608
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:731
integer(c_int), pointer, save idtvar
option for a variable time step
Definition: optcal.f90:431
static void cs_i_cd_steady_slope_test_vector(bool upwind_switch[3], const int iconvp, const int ircflp, const int ischcp, const double relaxp, const double blencp, 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 dijpf, 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:2926
static void cs_i_cd_steady_vector(const int ircflp, 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 dijpf, 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:1908
Definition: cs_field_pointer.h:66
static void cs_b_compute_quantities_vector(const cs_real_3_t diipb, const cs_real_33_t gradi, const int ircflp, cs_real_t recoi[3])
Reconstruct values in I' at boundary cell i.
Definition: cs_convection_diffusion.h:3908
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:969
static void cs_i_conv_flux_lax_wendroff(const int iconvp, const cs_real_t thetap, const int imasac, const int limiter, const cs_real_t lambdaij, const cs_real_t rij, 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, cs_real_2_t fluxij)
Add convective fluxes using limiter function found in the Roe-Sweby theory for the Lax Wendroff schem...
Definition: cs_convection_diffusion.h:101
static void cs_i_compute_quantities_vector(const int ircflp, const double pnd, 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 dijpf, 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:418
double cs_real_t
Floating-point value.
Definition: cs_defs.h:296
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:918
static void cs_centered_f_val_limiter(const double pnd, cs_real_t phi, const cs_real_t p, const cs_real_t pip, const cs_real_t pjp, cs_real_t *pf)
Prepare value at face ij by using a centered limited scheme. following the Roe-Sweby theory...
Definition: cs_convection_diffusion.h:757
static void cs_i_cd_unsteady_limiter(const int ircflp, const int ischcp, 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, cs_real_t phi_rij, const cs_real_3_t dijpf, 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 LIMITED unsteady a...
Definition: cs_convection_diffusion.h:2346
static void cs_slope_test_vector(const cs_real_3_t pi, const cs_real_3_t pj, const cs_real_t distf, const cs_real_t srfan, const cs_real_3_t i_face_normal, 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_t i_massflux, cs_real_t testij[3], cs_real_t tesqck[3])
Compute slope test criteria at internal face between cell i and j.
Definition: cs_convection_diffusion.h:223
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:886
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:4248
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_2_t fluxij)
Add diffusive fluxes to fluxes at face ij.
Definition: cs_convection_diffusion.h:1156
static void cs_i_cd_steady_slope_test(bool *upwind_switch, const int iconvp, const int ircflp, const int ischcp, const double relaxp, const double blencp, 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 dijpf, 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:2676
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 cs_int_t 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 secvif[], 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:2863
static void cs_i_compute_quantities_tensor(const int ircflp, const double pnd, 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 dijpf, 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:495
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:4380
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:608
static void cs_i_diff_flux_tensor(const int idiffp, const cs_real_t thetap, const cs_real_6_t pip, const cs_real_6_t pjp, const cs_real_6_t pipr, const cs_real_6_t pjpr, 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:1219
Definition: cs_convection_diffusion.h:47
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:4010
static void cs_i_cd_unsteady_tensor(const int ircflp, 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 dijpf, 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:2554
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:3958
static void cs_i_cd_steady_upwind_tensor(const int ircflp, const cs_real_t relaxp, 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 dijpf, 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:1450
void cs_anisotropic_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 secvif[], cs_real_3_t *restrict rhs)
Add the explicit part of the diffusion terms with a symmetric tensorial diffusivity for a transport e...
Definition: cs_convection_diffusion.c:6504
cs_real_t cs_limiter_function(const int limiter, cs_real_t r)
Compute different types of "limiter function" according to the method proposed by Roe-Sweby (Second O...
Definition: cs_convection_diffusion.c:605
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:822
Definition: cs_mesh_quantities.h:51
cs_halo_type_t
Definition: cs_halo.h:49
Definition: cs_convection_diffusion.h:47
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:4198
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 iwarnp, double epsrgp, double climgp, double extrap, 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:8836
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_3_t i_face_normal, const cs_real_3_t gradi, const cs_real_3_t gradj, const cs_real_3_t grdpai, const cs_real_3_t grdpaj, const cs_real_t i_massflux, double *testij, double *tesqck)
Compute slope test criteria at internal face between cell i and j.
Definition: cs_convection_diffusion.h:158
static void cs_b_compute_quantities_tensor(const cs_real_3_t diipb, const cs_real_63_t gradi, const int ircflp, cs_real_t recoi[6])
Reconstruct values in I' at boundary cell i.
Definition: cs_convection_diffusion.h:3932
static void cs_i_cd_unsteady_upwind_vector(const int ircflp, 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 dijpf, 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:1594
static void cs_slope_test_tensor(const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_t distf, const cs_real_t srfan, const cs_real_3_t i_face_normal, 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_t i_massflux, cs_real_t testij[6], cs_real_t tesqck[6])
Compute slope test criteria at internal face between cell i and j.
Definition: cs_convection_diffusion.h:289
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:1022
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:779
static void cs_b_cd_unsteady_tensor(const int ircflp, 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:4632
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:308
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 iwarnp, double epsrgp, double climgp, double extrap, 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[], const cs_real_t viselx[], const cs_real_t visely[], const cs_real_t viselz[], cs_real_t *restrict diverg)
Update the cell mass flux divergence with the face pressure (or pressure increment, or pressure double increment) gradient.
Definition: cs_convection_diffusion.c:8432
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:4302
void cs_slope_test_gradient(const int f_id, const int inc, const cs_halo_type_t halo_type, cs_real_3_t *grad, cs_real_3_t *grdpa, 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:949
static void cs_i_cd_unsteady_slope_test_vector(bool upwind_switch[3], const int iconvp, const int ircflp, const int ischcp, const double blencp, 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 dijpf, 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:3564
void itrmav(const cs_int_t *const f_id, const cs_int_t *const init, const cs_int_t *const inc, const cs_int_t *const imrgra, const cs_int_t *const iccocg, const cs_int_t *const nswrgp, const cs_int_t *const imligp, const cs_int_t *const ircflp, const cs_int_t *const iphydp, const cs_int_t *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:736
static void cs_i_conv_flux_vector(const int iconvp, const cs_real_t thetap, const int imasac, const cs_real_3_t pi, const cs_real_3_t pj, const cs_real_3_t pifri, const cs_real_3_t pifrj, const cs_real_3_t pjfri, const cs_real_3_t pjfrj, 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:1066
static void cs_i_conv_flux_tensor(const int iconvp, const cs_real_t thetap, const int imasac, const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_6_t pifri, const cs_real_6_t pifrj, const cs_real_6_t pjfri, const cs_real_6_t pjfrj, 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:1114
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:3986
Definition: cs_parameters.h:69
static void cs_b_compute_quantities(const cs_real_3_t diipb, const cs_real_3_t gradi, const int ircflp, cs_real_t *recoi)
Reconstruct values in I' at boundary cell i.
Definition: cs_convection_diffusion.h:3886
static void cs_i_diff_flux_vector(const int idiffp, const cs_real_t thetap, const cs_real_3_t pip, const cs_real_3_t pjp, const cs_real_3_t pipr, const cs_real_3_t pjpr, 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:1186
static void cs_i_cd_steady(const int ircflp, 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 dijpf, 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, 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:1726
void itrgrv(const cs_int_t *const f_id, const cs_int_t *const init, const cs_int_t *const inc, const cs_int_t *const imrgra, const cs_int_t *const iccocg, const cs_int_t *const nswrgp, const cs_int_t *const imligp, const cs_int_t *const ircflp, const cs_int_t *const iphydp, const cs_int_t *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:866
#define END_C_DECLS
Definition: cs_defs.h:449
static void cs_i_cd_steady_upwind(const int ircflp, const cs_real_t relaxp, 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 dijpf, const cs_real_3_t gradi, const cs_real_3_t gradj, 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:1265
Definition: cs_field_pointer.h:80
static void cs_i_compute_quantities(const int ircflp, const double pnd, 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 dijpf, 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:357
#define _CS_DOT_PRODUCT(vect1, vect2)
Definition: cs_convection_diffusion.h:48
void cs_slope_test_gradient_tensor(const int inc, const cs_halo_type_t halo_type, cs_real_63_t *grad, cs_real_63_t *grdpa, 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:1379
#define CS_PROCF(x, y)
Definition: cs_defs.h:472
Definition: cs_parameters.h:147
static void cs_i_cd_unsteady_vector(const int ircflp, 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 dijpf, 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:2450
static void cs_i_cd_unsteady_upwind_tensor(const int ircflp, 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 dijpf, 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:1654
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 iwarnp, double epsrgp, double climgp, double extrap, 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:7971
cs_real_t cs_real_33_t[3][3]
3x3 matrix of floating-point values
Definition: cs_defs.h:314
static void cs_i_cd_unsteady_slope_test(bool *upwind_switch, const int iconvp, const int ircflp, const int ischcp, const double blencp, 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 dijpf, 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:3382
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 cs_int_t 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:1670
static void cs_blend_f_val_tensor(const double blencp, const cs_real_6_t p, 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:990
cs_real_t cs_real_63_t[6][3]
Definition: cs_defs.h:319
static void cs_b_cd_unsteady_vector(const int ircflp, 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:4601
void itrmas(const cs_int_t *const f_id, const cs_int_t *const init, const cs_int_t *const inc, const cs_int_t *const imrgra, const cs_int_t *const iccocg, const cs_int_t *const nswrgp, const cs_int_t *const imligp, const cs_int_t *const iphydp, const cs_int_t *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 viselx[], const cs_real_t visely[], const cs_real_t viselz[], cs_real_t i_massflux[], cs_real_t b_massflux[])
Definition: cs_convection_diffusion.c:671
void cs_slope_test_gradient_vector(const int inc, const cs_halo_type_t halo_type, cs_real_33_t *grad, cs_real_33_t *grdpa, 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:1227
static void cs_i_cd_unsteady_upwind(const int ircflp, 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 dijpf, 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 *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:1535
double precision, dimension(:,:), pointer dijpf
Definition: mesh.f90:208
static void cs_b_cd_steady_tensor(const int ircflp, 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:4533
void cs_max_limiter_building(int f_id, int inc, const cs_real_t rovsdt[])
Compute a coefficient for blending that ensures the positivity of the scalar.
Definition: cs_convection_diffusion.c:1525
static void cs_i_cd_steady_slope_test_tensor(bool upwind_switch[6], const int iconvp, const int ircflp, const int ischcp, const double relaxp, const double blencp, 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 dijpf, 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:3156
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:679
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:4880
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:4351
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:1098
void itrgrp(const cs_int_t *const f_id, const cs_int_t *const init, const cs_int_t *const inc, const cs_int_t *const imrgra, const cs_int_t *const iccocg, const cs_int_t *const nswrgp, const cs_int_t *const imligp, const cs_int_t *const iphydp, const cs_int_t *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[], const cs_real_t viselx[], const cs_real_t visely[], const cs_real_t viselz[], cs_real_t diverg[])
Definition: cs_convection_diffusion.c:803
integer(c_int), pointer, save imrgra
type of gradient reconstruction
Definition: optcal.f90:270
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:3983
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:949