1 #ifndef __CS_CONVECTION_DIFFUSION_H__ 2 #define __CS_CONVECTION_DIFFUSION_H__ 119 double dcc, ddi, ddj;
124 testi = grdpai[0]*i_face_normal[0]
125 + grdpai[1]*i_face_normal[1]
126 + grdpai[2]*i_face_normal[2];
127 testj = grdpaj[0]*i_face_normal[0]
128 + grdpaj[1]*i_face_normal[1]
129 + grdpaj[2]*i_face_normal[2];
130 *testij = grdpai[0]*grdpaj[0]
131 + grdpai[1]*grdpaj[1]
132 + grdpai[2]*grdpaj[2];
135 dcc = gradi[0]*i_face_normal[0]
136 + gradi[1]*i_face_normal[1]
137 + gradi[2]*i_face_normal[2];
139 ddj = (pj-
pi)/distf *srfan;
141 dcc = gradj[0]*i_face_normal[0]
142 + gradj[1]*i_face_normal[1]
143 + gradj[2]*i_face_normal[2];
144 ddi = (pj-
pi)/distf *srfan;
183 double testi[3], testj[3];
184 double dcc[3], ddi[3], ddj[3];
188 for (
int isou = 0; isou < 3; isou++) {
189 testi[isou] = grdpai[isou][0]*i_face_normal[0]
190 + grdpai[isou][1]*i_face_normal[1]
191 + grdpai[isou][2]*i_face_normal[2];
192 testj[isou] = grdpaj[isou][0]*i_face_normal[0]
193 + grdpaj[isou][1]*i_face_normal[1]
194 + grdpaj[isou][2]*i_face_normal[2];
195 testij[isou] = grdpai[isou][0]*grdpaj[isou][0]
196 + grdpai[isou][1]*grdpaj[isou][1]
197 + grdpai[isou][2]*grdpaj[isou][2];
200 dcc[isou] = gradi[isou][0]*i_face_normal[0]
201 + gradi[isou][1]*i_face_normal[1]
202 + gradi[isou][2]*i_face_normal[2];
203 ddi[isou] = testi[isou];
204 ddj[isou] = (pj[isou]-pi[isou])/distf *srfan;
206 dcc[isou] = gradj[isou][0]*i_face_normal[0]
207 + gradj[isou][1]*i_face_normal[1]
208 + gradj[isou][2]*i_face_normal[2];
209 ddi[isou] = (pj[isou]-pi[isou])/distf *srfan;
210 ddj[isou] = testj[isou];
249 double testi[6], testj[6];
250 double dcc[6], ddi[6], ddj[6];
254 for (
int isou = 0; isou < 6; isou++) {
255 testi[isou] = grdpai[isou][0]*i_face_normal[0]
256 + grdpai[isou][1]*i_face_normal[1]
257 + grdpai[isou][2]*i_face_normal[2];
258 testj[isou] = grdpaj[isou][0]*i_face_normal[0]
259 + grdpaj[isou][1]*i_face_normal[1]
260 + grdpaj[isou][2]*i_face_normal[2];
261 testij[isou] = grdpai[isou][0]*grdpaj[isou][0]
262 + grdpai[isou][1]*grdpaj[isou][1]
263 + grdpai[isou][2]*grdpaj[isou][2];
266 dcc[isou] = gradi[isou][0]*i_face_normal[0]
267 + gradi[isou][1]*i_face_normal[1]
268 + gradi[isou][2]*i_face_normal[2];
269 ddi[isou] = testi[isou];
270 ddj[isou] = (pj[isou]-pi[isou])/distf *srfan;
272 dcc[isou] = gradj[isou][0]*i_face_normal[0]
273 + gradj[isou][1]*i_face_normal[1]
274 + gradj[isou][2]*i_face_normal[2];
275 ddi[isou] = (pj[isou]-pi[isou])/distf *srfan;
276 ddj[isou] = testj[isou];
319 cs_real_t diipfx, diipfy, diipfz, djjpfx, djjpfy, djjpfz;
324 diipfx = i_face_cog[0] - (cell_ceni[0] + (1.-pnd) * dijpf[0]);
325 diipfy = i_face_cog[1] - (cell_ceni[1] + (1.-pnd) * dijpf[1]);
326 diipfz = i_face_cog[2] - (cell_ceni[2] + (1.-pnd) * dijpf[2]);
328 djjpfx = i_face_cog[0] - cell_cenj[0] + pnd * dijpf[0];
329 djjpfy = i_face_cog[1] - cell_cenj[1] + pnd * dijpf[1];
330 djjpfz = i_face_cog[2] - cell_cenj[2] + pnd * dijpf[2];
332 dpxf = 0.5*(gradi[0] + gradj[0]);
333 dpyf = 0.5*(gradi[1] + gradj[1]);
334 dpzf = 0.5*(gradi[2] + gradj[2]);
337 *recoi = ircflp*(dpxf*diipfx+dpyf*diipfy+dpzf*diipfz);
338 *recoj = ircflp*(dpxf*djjpfx+dpyf*djjpfy+dpzf*djjpfz);
383 for (
int jsou = 0; jsou < 3; jsou++)
384 dijpfv[jsou] = dijpf[jsou];
387 for (
int jsou = 0; jsou < 3; jsou++) {
388 diipfv[jsou] = i_face_cog[jsou]
389 - (cell_ceni[jsou] + (1.-pnd) * dijpfv[jsou]);
390 djjpfv[jsou] = i_face_cog[jsou]
391 - cell_cenj[jsou] + pnd * dijpfv[jsou];
396 for (
int isou = 0; isou < 3; isou++) {
398 for (
int jsou = 0; jsou < 3; jsou++)
399 dpvf[jsou] = 0.5*( gradi[isou][jsou]
400 + gradj[isou][jsou]);
404 recoi[isou] = ircflp*( dpvf[0]*diipfv[0]
406 + dpvf[2]*diipfv[2]);
409 recoj[isou] = ircflp*( dpvf[0]*djjpfv[0]
411 + dpvf[2]*djjpfv[2]);
413 pip[isou] = pi[isou] + recoi[isou];
415 pjp[isou] = pj[isou] + recoj[isou];
460 for (
int jsou = 0; jsou < 3; jsou++)
461 dijpfv[jsou] = dijpf[jsou];
465 for (
int jsou = 0; jsou < 3; jsou++) {
466 diipfv[jsou] = i_face_cog[jsou]
467 - (cell_ceni[jsou] + (1.-pnd) * dijpfv[jsou]);
468 djjpfv[jsou] = i_face_cog[jsou]
469 - cell_cenj[jsou] + pnd * dijpfv[jsou];
474 for (
int isou = 0; isou < 6; isou++) {
476 for (
int jsou = 0; jsou < 3; jsou++)
477 dpvf[jsou] = 0.5*( gradi[isou][jsou]
478 + gradj[isou][jsou]);
482 recoi[isou] = ircflp*( dpvf[0]*diipfv[0]
484 + dpvf[2]*diipfv[2]);
487 recoj[isou] = ircflp*( dpvf[0]*djjpfv[0]
489 + dpvf[2]*djjpfv[2]);
491 pip[isou] = pi[isou] + recoi[isou];
493 pjp[isou] = pj[isou] + recoj[isou];
529 *pir = pi/relaxp - (1.-relaxp)/relaxp * pia;
530 *pjr = pj/relaxp - (1.-relaxp)/relaxp * pja;
532 *pipr = *pir + recoi;
533 *pjpr = *pjr + recoj;
567 for (
int isou = 0; isou < 3; isou++) {
568 pir[isou] = pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
569 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
571 pipr[isou] = pir[isou] + recoi[isou];
572 pjpr[isou] = pjr[isou] + recoj[isou];
607 for (
int isou = 0; isou < 6; isou++) {
608 pir[isou] = pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
609 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
611 pipr[isou] = pir[isou] + recoi[isou];
612 pjpr[isou] = pjr[isou] + recoj[isou];
645 for (
int isou = 0; isou < 3; isou++)
662 for (
int isou = 0; isou < 6; isou++)
683 *pf = pnd*pip + (1.-pnd)*pjp;
703 for (
int isou = 0; isou < 3; isou++)
704 pf[isou] = pnd*pip[isou] + (1.-pnd)*pjp[isou];
724 for (
int isou = 0; isou < 6; isou++)
725 pf[isou] = pnd*pip[isou] + (1.-pnd)*pjp[isou];
749 df[0] = i_face_cog[0] - cell_cen[0];
750 df[1] = i_face_cog[1] - cell_cen[1];
751 df[2] = i_face_cog[2] - cell_cen[2];
777 for (
int jsou = 0; jsou < 3; jsou++)
778 df[jsou] = i_face_cog[jsou] - cell_cen[jsou];
780 for (
int isou = 0; isou < 3; isou++) {
781 pf[isou] = p[isou] + df[0]*grad[isou][0]
782 + df[1]*grad[isou][1]
783 + df[2]*grad[isou][2];
809 for (
int jsou = 0; jsou < 3; jsou++)
810 df[jsou] = i_face_cog[jsou] - cell_cen[jsou];
812 for (
int isou = 0; isou < 6; isou++) {
813 pf[isou] = p[isou] + df[0]*grad[isou][0]
814 + df[1]*grad[isou][1]
815 + df[2]*grad[isou][2];
836 *pf = blencp * (*pf) + (1. - blencp) * p;
856 for (
int isou = 0; isou < 3; isou++)
857 pf[isou] = blencp*(pf[isou])+(1.-blencp)*p[isou];
877 for (
int isou = 0; isou < 6; isou++)
878 pf[isou] = blencp*(pf[isou])+(1.-blencp)*p[isou];
921 flui = 0.5*(i_massflux + fabs(i_massflux));
922 fluj = 0.5*(i_massflux - fabs(i_massflux));
924 fluxij[0] += iconvp*xcppi*(thetap*(flui*pifri + fluj*pjfri) - imasac*i_massflux*pi);
925 fluxij[1] += iconvp*xcppj*(thetap*(flui*pifrj + fluj*pjfrj) - imasac*i_massflux*pj);
964 flui = 0.5*(i_massflux + fabs(i_massflux));
965 fluj = 0.5*(i_massflux - fabs(i_massflux));
967 for (
int isou = 0; isou < 3; isou++) {
969 fluxi[isou] += iconvp*( thetap*(flui*pifri[isou] + fluj*pjfri[isou])
970 - imasac*i_massflux*pi[isou]);
971 fluxj[isou] += iconvp*( thetap*(flui*pifrj[isou] + fluj*pjfrj[isou])
972 - imasac*i_massflux*pj[isou]);
1012 flui = 0.5*(i_massflux + fabs(i_massflux));
1013 fluj = 0.5*(i_massflux - fabs(i_massflux));
1015 for (
int isou = 0; isou < 6; isou++) {
1016 fluxi[isou] += iconvp*( thetap*(flui*pifri[isou] + fluj*pjfri[isou])
1017 - imasac*i_massflux*pi[isou]);
1018 fluxj[isou] += iconvp*( thetap*(flui*pifrj[isou] + fluj*pjfrj[isou])
1019 - imasac*i_massflux*pj[isou]);
1048 fluxij[0] += idiffp*thetap*i_visc*(pipr -pjp);
1049 fluxij[1] += idiffp*thetap*i_visc*(pip -pjpr);
1079 for (
int isou = 0; isou < 3; isou++) {
1080 fluxi[isou] += idiffp*thetap*i_visc*(pipr[isou] -pjp[isou]);
1081 fluxj[isou] += idiffp*thetap*i_visc*(pip[isou] -pjpr[isou]);
1112 for (
int isou = 0; isou < 6; isou++) {
1113 fluxi[isou] += idiffp*thetap*i_visc*(pipr[isou] -pjp[isou]);
1114 fluxj[isou] += idiffp*thetap*i_visc*(pip[isou] -pjpr[isou]);
1611 const double relaxp,
1612 const double blencp,
1687 }
else if (ischcp == 0) {
1793 const double relaxp,
1794 const double blencp,
1947 const double relaxp,
1948 const double blencp,
2100 const double blencp,
2149 }
else if (ischcp == 0) {
2223 const double blencp,
2327 const double blencp,
2451 const double relaxp,
2452 const double blencp,
2486 srfan = i_face_surf;
2488 *upwind_switch =
false;
2532 if (tesqck<=0. || testij<=0.) {
2546 *upwind_switch =
true;
2572 }
else if (ischcp == 0) {
2701 const double relaxp,
2702 const double blencp,
2736 srfan = i_face_surf;
2738 for (isou = 0; isou < 3; isou++) {
2739 upwind_switch[isou] =
false;
2784 for (isou = 0; isou < 3; isou++) {
2785 if (tesqck[isou]<=0. || testij[isou]<=0.) {
2799 upwind_switch[isou] =
true;
2872 for (isou = 0; isou < 3; isou++) {
2931 const double relaxp,
2932 const double blencp,
2966 srfan = i_face_surf;
2968 for (isou = 0; isou < 6; isou++) {
2969 upwind_switch[isou] =
false;
3014 for (isou = 0; isou < 6; isou++) {
3015 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3029 upwind_switch[isou] =
true;
3103 for (isou = 0; isou < 6; isou++) {
3157 const double blencp,
3184 srfan = i_face_surf;
3186 *upwind_switch =
false;
3218 if (tesqck<=0. || testij<=0.) {
3228 *upwind_switch =
true;
3246 }
else if (ischcp == 0) {
3339 const double blencp,
3366 srfan = i_face_surf;
3368 for (isou = 0; isou < 3; isou++) {
3369 upwind_switch[isou] =
false;
3404 for (isou = 0; isou < 3; isou++) {
3405 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3415 upwind_switch[isou] =
true;
3465 for (isou = 0; isou < 3; isou++) {
3513 const double blencp,
3540 srfan = i_face_surf;
3542 for (isou = 0; isou < 6; isou++) {
3543 upwind_switch[isou] =
false;
3575 for (isou = 0; isou < 6; isou++) {
3576 if (tesqck[isou]<=0. || testij[isou]<=0.) {
3586 upwind_switch[isou] =
true;
3636 for (isou = 0; isou < 6; isou++) {
3662 *recoi = ircflp * ( gradi[0]*diipb[0]
3664 + gradi[2]*diipb[2]);
3684 for (
int isou = 0; isou < 3; isou++) {
3685 recoi[isou] = ircflp * (gradi[isou][0]*diipb[0]
3686 + gradi[isou][1]*diipb[1]
3687 + gradi[isou][2]*diipb[2]);
3708 for (
int isou = 0; isou < 6; isou++) {
3709 recoi[isou] = ircflp * (gradi[isou][0]*diipb[0]
3710 + gradi[isou][1]*diipb[1]
3711 + gradi[isou][2]*diipb[2]);
3736 *pir = pi/relaxp - (1.-relaxp)/relaxp*pia;
3737 *pipr = *pir + recoi;
3761 for (
int isou = 0; isou < 3; isou++) {
3762 pir[isou] = pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
3763 pipr[isou] = pir[isou] + recoi[isou];
3788 for (
int isou = 0; isou < 6; isou++) {
3789 pir[isou] = pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
3790 pipr[isou] = pir[isou] + recoi[isou];
3849 flui = 0.5*(b_massflux +fabs(b_massflux));
3850 fluj = 0.5*(b_massflux -fabs(b_massflux));
3853 pfac = inc*coefap + coefbp*pipr;
3854 *flux += iconvp*xcpp*(thetap*(flui*pir + fluj*pfac) -imasac*( b_massflux*pi));
3860 pfac = inc*coface + cofbce*pipr;
3861 *flux += iconvp*xcpp*(-imasac*(b_massflux*
pi) + thetap*(pfac));
3918 flui = 0.5*(b_massflux +fabs(b_massflux));
3919 fluj = 0.5*(b_massflux -fabs(b_massflux));
3921 for (
int isou = 0; isou < 3; isou++) {
3922 pfac = inc*coefap[isou];
3923 for (
int jsou = 0; jsou < 3; jsou++) {
3924 pfac += coefbp[isou][jsou]*pipr[jsou];
3926 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
3927 - imasac*b_massflux*
pi[isou]);
3934 for (
int isou = 0; isou < 3; isou++) {
3935 pfac = inc*coface[isou];
3936 for (
int jsou = 0; jsou < 3; jsou++) {
3937 pfac += cofbce[isou][jsou]*pipr[jsou];
3939 flux[isou] += iconvp*( thetap*pfac
3940 - imasac*b_massflux*
pi[isou]);
3990 flui = 0.5*(b_massflux +fabs(b_massflux));
3991 fluj = 0.5*(b_massflux -fabs(b_massflux));
3994 pfac = inc*coefap + coefbp*pipr;
3995 *flux += iconvp*xcpp*(thetap*(flui*pir + fluj*pfac) -imasac*( b_massflux*pi));
4041 flui = 0.5*(b_massflux +fabs(b_massflux));
4042 fluj = 0.5*(b_massflux -fabs(b_massflux));
4044 for (
int isou = 0; isou < 3; isou++) {
4045 pfac = inc*coefa[isou];
4046 for (
int jsou = 0; jsou < 3; jsou++) {
4047 pfac += coefb[isou][jsou]*pipr[jsou];
4049 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4050 - imasac*b_massflux*pi[isou]);
4097 flui = 0.5*(b_massflux +fabs(b_massflux));
4098 fluj = 0.5*(b_massflux -fabs(b_massflux));
4100 for (
int isou = 0; isou < 6; isou++) {
4101 pfac = inc*coefa[isou];
4102 for (
int jsou = 0; jsou < 6; jsou++) {
4103 pfac += coefb[isou][jsou]*pipr[jsou];
4105 flux[isou] += iconvp*( thetap*(flui*pir[isou] + fluj*pfac)
4106 - imasac*b_massflux*pi[isou]);
4135 cs_real_t pfacd = inc*cofafp + cofbfp*pipr;
4136 *flux += idiffp*thetap*b_visc*pfacd;
4165 for (
int isou = 0; isou < 3; isou++) {
4166 pfacd = inc*cofaf[isou];
4167 for (
int jsou = 0; jsou < 3; jsou++) {
4168 pfacd += cofbf[isou][jsou]*pipr[jsou];
4170 flux[isou] += idiffp*thetap*b_visc*pfacd;
4200 for (
int isou = 0; isou < 6; isou++) {
4201 pfacd = inc*cofaf[isou];
4202 for (
int jsou = 0; jsou < 6; jsou++) {
4203 pfacd += cofbf[isou][jsou]*pipr[jsou];
4205 flux[isou] += idiffp*thetap*b_visc*pfacd;
4227 const double relaxp,
4268 const double relaxp,
4309 const double relaxp,
4389 for(
int isou = 0; isou< 3; isou++)
4390 pip[isou] = pi[isou] + recoi[isou];
4420 for(
int isou = 0; isou< 6; isou++)
4421 pip[isou] = pi[isou] + recoi[isou];
4444 *fluxi += idiffp*b_visc*(pi - pj);
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:4226
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:3509
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:642
double precision, dimension(:,:), pointer diipb
Definition: mesh.f90:216
#define restrict
Definition: cs_defs.h:122
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:154
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:3891
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:4190
cs_real_t cs_real_2_t[2]
vector of 2 floating-point values
Definition: cs_defs.h:308
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:311
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:2098
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:7871
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:719
cs_nvd_type_t
Definition: cs_convection_diffusion.h:58
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:6610
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:4267
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:659
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:4346
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:1240
cs_real_t cs_real_66_t[6][6]
6x6 matrix of floating-point values
Definition: cs_defs.h:316
Definition: cs_convection_diffusion.h:67
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:1680
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:3821
double precision pi
value with 16 digits
Definition: cstnum.f90:48
#define BEGIN_C_DECLS
Definition: cs_defs.h:451
int cs_int_t
Fortran-compatible integer.
Definition: cs_defs.h:296
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:1945
Definition: cs_parameters.h:141
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:595
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:517
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:1525
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:678
integer(c_int), pointer, save idtvar
option for a variable time step
Definition: optcal.f90:532
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:2697
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:1791
Definition: cs_field_pointer.h:67
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:3679
Definition: cs_convection_diffusion.h:62
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[], cs_real_t visel[], cs_real_t diverg[])
Definition: cs_convection_diffusion.c:1099
Definition: cs_convection_diffusion.h:65
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:852
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:365
double cs_real_t
Floating-point value.
Definition: cs_defs.h:297
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:801
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:170
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:769
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:4021
static cs_real_t cs_math_sq(cs_real_t x)
Compute the square of a real value.
Definition: cs_math.h:89
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:1039
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:2447
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:3336
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:442
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:4155
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:555
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:1102
Definition: cs_convection_diffusion.h:64
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:3781
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:2325
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:3729
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:1333
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:7326
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:741
Definition: cs_mesh_quantities.h:52
cs_halo_type_t
Definition: cs_halo.h:50
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, 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:8830
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:3969
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:9689
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:105
Definition: cs_convection_diffusion.h:61
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:3703
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:1477
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:236
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:905
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:698
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:4407
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, 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 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:8472
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:309
static void cs_b_diff_flux_coupling(const int idiffp, const cs_real_t pi, const cs_real_t pj, const cs_real_t b_visc, cs_real_t *fluxi)
Add diffusive flux to flux at an internal coupling face.
Definition: cs_convection_diffusion.h:4438
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:4077
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:3335
Definition: cs_convection_diffusion.h:73
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:1244
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:949
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:997
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:4495
structure containing the variable calculation options.
Definition: cs_parameters.h:59
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:3657
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:1069
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:1609
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:1158
Definition: cs_convection_diffusion.h:69
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 iwgrp, 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 visel[], cs_real_t i_massflux[], cs_real_t b_massflux[])
Definition: cs_convection_diffusion.c:967
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[], cs_real_t visel[], 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:9298
#define END_C_DECLS
Definition: cs_defs.h:452
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:1148
Definition: cs_convection_diffusion.h:66
Definition: cs_convection_diffusion.h:71
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:304
#define CS_PROCF(x, y)
Definition: cs_defs.h:465
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:2221
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:1537
cs_real_t cs_real_33_t[3][3]
3x3 matrix of floating-point values
Definition: cs_defs.h:315
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:3153
Definition: cs_convection_diffusion.h:70
Definition: cs_convection_diffusion.h:60
Definition: cs_convection_diffusion.h:63
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:1977
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:873
cs_real_t cs_real_63_t[6][3]
Definition: cs_defs.h:320
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:4376
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:1418
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:4308
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:1826
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:2927
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:626
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:5413
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:4126
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:1393
Definition: cs_convection_diffusion.h:68
integer(c_int), pointer, save imrgra
type of gradient reconstruction
Definition: optcal.f90:353
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 iwgrp, 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:1030
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:3754
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:832
Definition: cs_convection_diffusion.h:72