1 #ifndef __CS_CONVECTION_DIFFUSION_H__
2 #define __CS_CONVECTION_DIFFUSION_H__
98 testi = grdpai[0]*i_face_normal[0]
99 + grdpai[1]*i_face_normal[1]
100 + grdpai[2]*i_face_normal[2];
101 testj = grdpaj[0]*i_face_normal[0]
102 + grdpaj[1]*i_face_normal[1]
103 + grdpaj[2]*i_face_normal[2];
104 *testij = grdpai[0]*grdpaj[0]
105 + grdpai[1]*grdpaj[1]
106 + grdpai[2]*grdpaj[2];
109 dcc = gradi[0]*i_face_normal[0]
110 + gradi[1]*i_face_normal[1]
111 + gradi[2]*i_face_normal[2];
113 ddj = (pj-
pi)/distf *srfan;
115 dcc = gradj[0]*i_face_normal[0]
116 + gradj[1]*i_face_normal[1]
117 + gradj[2]*i_face_normal[2];
118 ddi = (pj-
pi)/distf *srfan;
121 *tesqck = pow(dcc, 2.) - pow(ddi-ddj, 2.);
156 double testi[6], testj[6];
157 double dcc[6], ddi[6], ddj[6];
161 for (
int isou = 0; isou < 6; isou++) {
162 testi[isou] = grdpai[isou][0]*i_face_normal[0]
163 + grdpai[isou][1]*i_face_normal[1]
164 + grdpai[isou][2]*i_face_normal[2];
165 testj[isou] = grdpaj[isou][0]*i_face_normal[0]
166 + grdpaj[isou][1]*i_face_normal[1]
167 + grdpaj[isou][2]*i_face_normal[2];
168 testij[isou] = grdpai[isou][0]*grdpaj[isou][0]
169 + grdpai[isou][1]*grdpaj[isou][1]
170 + grdpai[isou][2]*grdpaj[isou][2];
173 dcc[isou] = gradi[isou][0]*i_face_normal[0]
174 + gradi[isou][1]*i_face_normal[1]
175 + gradi[isou][2]*i_face_normal[2];
176 ddi[isou] = testi[isou];
177 ddj[isou] = (pj[isou]-pi[isou])/distf *srfan;
179 dcc[isou] = gradj[isou][0]*i_face_normal[0]
180 + gradj[isou][1]*i_face_normal[1]
181 + gradj[isou][2]*i_face_normal[2];
182 ddi[isou] = (pj[isou]-pi[isou])/distf *srfan;
183 ddj[isou] = testj[isou];
185 tesqck[isou] = pow(dcc[isou], 2.) - pow(ddi[isou]-ddj[isou], 2.);
226 cs_real_t diipfx, diipfy, diipfz, djjpfx, djjpfy, djjpfz;
231 diipfx = i_face_cog[0] - (cell_ceni[0] + (1.-pnd) * dijpf[0]);
232 diipfy = i_face_cog[1] - (cell_ceni[1] + (1.-pnd) * dijpf[1]);
233 diipfz = i_face_cog[2] - (cell_ceni[2] + (1.-pnd) * dijpf[2]);
235 djjpfx = i_face_cog[0] - cell_cenj[0] + pnd * dijpf[0];
236 djjpfy = i_face_cog[1] - cell_cenj[1] + pnd * dijpf[1];
237 djjpfz = i_face_cog[2] - cell_cenj[2] + pnd * dijpf[2];
239 dpxf = 0.5*(gradi[0] + gradj[0]);
240 dpyf = 0.5*(gradi[1] + gradj[1]);
241 dpzf = 0.5*(gradi[2] + gradj[2]);
244 *recoi = ircflp*(dpxf*diipfx+dpyf*diipfy+dpzf*diipfz);
245 *recoj = ircflp*(dpxf*djjpfx+dpyf*djjpfy+dpzf*djjpfz);
291 for (
int jsou = 0; jsou < 3; jsou++) {
292 dijpfv[jsou] = dijpf[jsou];
296 for (
int jsou = 0; jsou < 3; jsou++) {
297 diipfv[jsou] = i_face_cog[jsou]
298 - (cell_ceni[jsou] + (1.-pnd) * dijpfv[jsou]);
299 djjpfv[jsou] = i_face_cog[jsou]
300 - cell_cenj[jsou] + pnd * dijpfv[jsou];
306 for (
int isou = 0; isou < 6; isou++) {
308 for (
int jsou = 0; jsou < 3; jsou++)
309 dpvf[jsou] = 0.5*( gradi[isou][jsou]
310 + gradj[isou][jsou]);
314 recoi[isou] = ircflp*( dpvf[0]*diipfv[0]
316 + dpvf[2]*diipfv[2]);
319 recoj[isou] = ircflp*( dpvf[0]*djjpfv[0]
321 + dpvf[2]*djjpfv[2]);
324 pip[isou] = pi[isou] + recoi[isou];
326 pjp[isou] = pj[isou] + recoj[isou];
363 *pir = pi/relaxp - (1.-relaxp)/relaxp * pia;
364 *pjr = pj/relaxp - (1.-relaxp)/relaxp * pja;
366 *pipr = *pir + recoi;
367 *pjpr = *pjr + recoj;
401 for (
int isou = 0; isou < 6; isou++){
403 pir[isou] = pi[isou] /relaxp - (1.-relaxp)/relaxp * pia[isou];
404 pjr[isou] = pj[isou] /relaxp - (1.-relaxp)/relaxp * pja[isou];
406 pipr[isou] = pir[isou] + recoi[isou];
407 pjpr[isou] = pjr[isou] + recoj[isou];
471 for (
int isou = 0 ; isou < 6 ; isou++){
472 pir[isou] = pi[isou];
473 pjr[isou] = pj[isou];
475 pipr[isou] = pip[isou];
476 pjpr[isou] = pjp[isou];
538 for (isou = 0; isou < 6; isou++){
539 pifri[isou] = pir[isou];
540 pifrj[isou] = pi[isou];
541 pjfri[isou] = pj[isou];
542 pjfrj[isou] = pjr[isou];
573 *pifri = pnd*pipr + (1.-pnd)*pjp;
575 *pifrj = pnd*pip + (1.-pnd)*pjpr;
606 for (
int isou = 0 ; isou < 6 ; isou++){
607 pifri[isou] = pnd*pipr[isou] + (1.-pnd)*pjp[isou];
608 pjfri[isou] = pifri[isou];
609 pifrj[isou] = pnd*pip[isou] + (1.-pnd)*pjpr[isou];
610 pjfrj[isou] = pifrj[isou];
649 cs_real_t difx, dify, difz, djfx, djfy, djfz;
651 difx = i_face_cog[0] - cell_ceni[0];
652 dify = i_face_cog[1] - cell_ceni[1];
653 difz = i_face_cog[2] - cell_ceni[2];
654 djfx = i_face_cog[0] - cell_cenj[0];
655 djfy = i_face_cog[1] - cell_cenj[1];
656 djfz = i_face_cog[2] - cell_cenj[2];
660 *pifri = pir + difx*gradi[0]+dify*gradi[1]+difz*gradi[2];
661 *pifrj = pi + difx*gradi[0]+dify*gradi[1]+difz*gradi[2];
662 *pjfrj = pjr + djfx*gradj[0]+djfy*gradj[1]+djfz*gradj[2];
663 *pjfri = pj + djfx*gradj[0]+djfy*gradj[1]+djfz*gradj[2];
703 for (
int jsou = 0; jsou < 3; jsou++) {
704 difv[jsou] = i_face_cog[jsou] - cell_ceni[jsou];
705 djfv[jsou] = i_face_cog[jsou] - cell_cenj[jsou];
712 for (
int isou = 0; isou < 6; isou++) {
713 pifri[isou] = pir[isou]+ difv[0]*gradi[isou][0]
714 + difv[1]*gradi[isou][1]
715 + difv[2]*gradi[isou][2];
716 pifrj[isou] = pi[isou] + difv[0]*gradi[isou][0]
717 + difv[1]*gradi[isou][1]
718 + difv[2]*gradi[isou][2];
720 pjfrj[isou] = pjr[isou]+ djfv[0]*gradj[isou][0]
721 + djfv[1]*gradj[isou][1]
722 + djfv[2]*gradj[isou][2];
723 pjfri[isou] = pj[isou] + djfv[0]*gradj[isou][0]
724 + djfv[1]*gradj[isou][1]
725 + djfv[2]*gradj[isou][2];
759 *pifri = blencp*(*pifri)+(1.-blencp)*pir;
760 *pifrj = blencp*(*pifrj)+(1.-blencp)*pi;
761 *pjfri = blencp*(*pjfri)+(1.-blencp)*pj;
762 *pjfrj = blencp*(*pjfrj)+(1.-blencp)*pjr;
794 for (
int isou = 0; isou < 6; isou++) {
795 pifri[isou] = blencp*(pifri[isou])+(1.-blencp)*pir[isou];
796 pifrj[isou] = blencp*(pifrj[isou])+(1.-blencp)*pi[isou];
797 pjfri[isou] = blencp*(pjfri[isou])+(1.-blencp)*pj[isou];
798 pjfrj[isou] = blencp*(pjfrj[isou])+(1.-blencp)*pjr[isou];
833 flui = 0.5*(i_massflux + fabs(i_massflux));
834 fluj = 0.5*(i_massflux - fabs(i_massflux));
836 fluxij[0] += iconvp*(flui*pifri + fluj*pjfri - i_massflux*
pi);
837 fluxij[1] += iconvp*(flui*pifrj + fluj*pjfrj - i_massflux*pj);
872 flui = 0.5*(i_massflux + fabs(i_massflux));
873 fluj = 0.5*(i_massflux - fabs(i_massflux));
875 for (
int isou = 0; isou < 6; isou++){
877 fluxi[isou] += iconvp*(flui*pifri[isou] + fluj*pjfri[isou] - i_massflux*pi[isou]);
878 fluxj[isou] += iconvp*(flui*pifrj[isou] + fluj*pjfrj[isou] - i_massflux*pj[isou]);
913 flui = 0.5*(i_massflux +fabs(i_massflux));
914 fluj = 0.5*(i_massflux -fabs(i_massflux));
916 fluxij[0] += iconvp*xcppi*(flui*pifri + fluj*pjfri);
917 fluxij[1] += iconvp*xcppj*(flui*pifrj + fluj*pjfrj);
943 fluxij[0] += idiffp*i_visc*(pipr -pjp);
944 fluxij[1] += idiffp*i_visc*(pip -pjpr);
972 for (
int isou = 0; isou < 6; isou++){
973 fluxi[isou] += idiffp*i_visc*(pipr[isou] -pjp[isou]);
974 fluxj[isou] += idiffp*i_visc*(pip[isou] -pjpr[isou]);
1362 const double relaxp,
1363 const double blencp,
1499 const double relaxp,
1500 const double blencp,
1635 const double blencp,
1763 const double blencp,
1902 const double relaxp,
1903 const double blencp,
1935 srfan = i_face_surf;
1937 *upwind_switch =
false;
1979 if (tesqck<=0. || testij<=0.) {
1993 *upwind_switch =
true;
2090 const double relaxp,
2091 const double blencp,
2125 srfan = i_face_surf;
2127 for (isou = 0; isou < 6; isou++) {
2128 upwind_switch[isou] =
false;
2171 for (isou = 0 ; isou < 6; isou++) {
2172 if (tesqck[isou]<=0. || testij[isou]<=0.) {
2186 upwind_switch[isou] =
true;
2282 const double blencp,
2312 srfan = i_face_surf;
2314 *upwind_switch =
false;
2353 if (tesqck<=0. || testij<=0.) {
2367 *upwind_switch =
true;
2462 const double blencp,
2494 srfan = i_face_surf;
2496 for (isou = 0; isou < 6; isou++) {
2497 upwind_switch[isou] =
false;
2536 for (isou = 0 ; isou < 6; isou++) {
2537 if (tesqck[isou]<=0. || testij[isou]<=0.) {
2551 upwind_switch[isou] =
true;
2625 *recoi = ircflp * ( gradi[0]*diipb[0]
2627 + gradi[2]*diipb[2]);
2647 for (
int isou = 0; isou < 6; isou++) {
2648 recoi[isou] = ircflp * (gradi[isou][0]*diipb[0]
2649 + gradi[isou][1]*diipb[1]
2650 + gradi[isou][2]*diipb[2]);
2674 *pir = pi/relaxp - (1.-relaxp)/relaxp*pia;
2675 *pipr = *pir + recoi;
2698 for (
int isou = 0; isou < 6; isou++) {
2699 pir[isou] = pi[isou]/relaxp - (1.-relaxp)/relaxp*pia[isou];
2700 pipr[isou] = pir[isou] + recoi[isou];
2740 for(
int isou = 0; isou< 6; isou++) {
2741 pir[isou] = pi[isou];
2742 pipr[isou] = pi[isou] + recoi[isou];
2799 flui = 0.5*(b_massflux +fabs(b_massflux));
2800 fluj = 0.5*(b_massflux -fabs(b_massflux));
2803 pfac = inc*coefap + coefbp*pipr;
2804 *flux += iconvp*(flui*pir + fluj*pfac - b_massflux*
pi);
2810 pfac = inc*coface + cofbce*pipr;
2811 *flux += iconvp*(-b_massflux*pi + pfac);
2868 flui = 0.5*(b_massflux +fabs(b_massflux));
2869 fluj = 0.5*(b_massflux -fabs(b_massflux));
2872 pfac = inc*coefap + coefbp*pipr;
2873 *flux += iconvp*xcpp*(flui*pir + fluj*pfac);
2879 pfac = inc*coface + cofbce*pipr;
2880 *flux += iconvp*pfac;
2926 flui = 0.5*(b_massflux +fabs(b_massflux));
2927 fluj = 0.5*(b_massflux -fabs(b_massflux));
2930 pfac = inc*coefap + coefbp*pipr;
2931 *flux += iconvp*(flui*pir + fluj*pfac - b_massflux*
pi);
2975 flui = 0.5*(b_massflux +fabs(b_massflux));
2976 fluj = 0.5*(b_massflux -fabs(b_massflux));
2978 for (
int isou = 0; isou < 6; isou++) {
2979 pfac = inc*coefa[isou];
2980 for (
int jsou = 0; jsou < 6; jsou++) {
2981 pfac += coefb[isou][jsou]*pipr[jsou];
2983 flux[isou] += iconvp*(flui*pir[isou]
2985 - b_massflux*pi[isou]);
3032 flui = 0.5*(b_massflux +fabs(b_massflux));
3033 fluj = 0.5*(b_massflux -fabs(b_massflux));
3036 pfac = inc*coefap + coefbp*pipr;
3037 *flux += iconvp*xcpp*(flui*pir + fluj*pfac);
3063 cs_real_t pfacd = inc*cofafp + cofbfp*pipr;
3064 *flux += idiffp*b_visc*pfacd;
3090 for (
int isou = 0; isou < 6; isou++) {
3091 pfacd = inc*cofaf[isou];
3092 for (
int jsou = 0; jsou < 6; jsou++) {
3093 pfacd += cofbf[isou][jsou]*pipr[jsou];
3095 flux[isou] += idiffp*b_visc*pfacd;
3116 const double relaxp,
3157 const double relaxp,
3308 cs_real_t difx,dify,difz,djfx,djfy,djfz;
3310 cs_real_t pfac, pfac1, pfac2, pfac3, unsvol;
3313 for (g_id = 0; g_id < n_i_groups; g_id++) {
3314 # pragma omp parallel for private(face_id, ii, jj, difx, dify, difz, \
3315 djfx, djfy, djfz, pif, pjf, pfac, \
3316 pfac1, pfac2, pfac3)
3317 for (t_id = 0; t_id < n_i_threads; t_id++) {
3318 for (face_id = i_group_index[(t_id*n_i_groups + g_id)*2];
3319 face_id < i_group_index[(t_id*n_i_groups + g_id)*2 + 1];
3322 ii = i_face_cells[face_id][0];
3323 jj = i_face_cells[face_id][1];
3325 difx = i_face_cog[face_id][0] - cell_cen[ii][0];
3326 dify = i_face_cog[face_id][1] - cell_cen[ii][1];
3327 difz = i_face_cog[face_id][2] - cell_cen[ii][2];
3328 djfx = i_face_cog[face_id][0] - cell_cen[jj][0];
3329 djfy = i_face_cog[face_id][1] - cell_cen[jj][1];
3330 djfz = i_face_cog[face_id][2] - cell_cen[jj][2];
3333 + difx*grad[ii][0]+dify*grad[ii][1]+difz*grad[ii][2];
3335 + djfx*grad[jj][0]+djfy*grad[jj][1]+djfz*grad[jj][2];
3338 if (i_massflux[face_id] > 0.) pfac = pif;
3340 pfac1 = pfac*i_face_normal[face_id][0];
3341 pfac2 = pfac*i_face_normal[face_id][1];
3342 pfac3 = pfac*i_face_normal[face_id][2];
3344 grdpa[ii][0] = grdpa[ii][0] + pfac1;
3345 grdpa[ii][1] = grdpa[ii][1] + pfac2;
3346 grdpa[ii][2] = grdpa[ii][2] + pfac3;
3348 grdpa[jj][0] = grdpa[jj][0] - pfac1;
3349 grdpa[jj][1] = grdpa[jj][1] - pfac2;
3350 grdpa[jj][2] = grdpa[jj][2] - pfac3;
3356 for (g_id = 0; g_id < n_b_groups; g_id++) {
3357 # pragma omp parallel for private(face_id, ii, diipbx, diipby, diipbz, pfac) \
3358 if(m->n_b_faces > CS_THR_MIN)
3359 for (t_id = 0; t_id < n_b_threads; t_id++) {
3360 for (face_id = b_group_index[(t_id*n_b_groups + g_id)*2];
3361 face_id < b_group_index[(t_id*n_b_groups + g_id)*2 + 1];
3364 ii = b_face_cells[face_id];
3366 diipbx = diipb[face_id][0];
3367 diipby = diipb[face_id][1];
3368 diipbz = diipb[face_id][2];
3369 pfac = inc*coefap[face_id]
3370 + coefbp[face_id] * (pvar[ii] + diipbx*grad[ii][0]
3371 + diipby*grad[ii][1]
3372 + diipbz*grad[ii][2]);
3373 grdpa[ii][0] = grdpa[ii][0] + pfac*b_face_normal[face_id][0];
3374 grdpa[ii][1] = grdpa[ii][1] + pfac*b_face_normal[face_id][1];
3375 grdpa[ii][2] = grdpa[ii][2] + pfac*b_face_normal[face_id][2];
3381 # pragma omp parallel for private(unsvol)
3382 for (cell_id = 0; cell_id < n_cells; cell_id++) {
3384 unsvol = 1./cell_vol[cell_id];
3386 grdpa[cell_id][0] = grdpa[cell_id][0]*unsvol;
3387 grdpa[cell_id][1] = grdpa[cell_id][1]*unsvol;
3388 grdpa[cell_id][2] = grdpa[cell_id][2]*unsvol;
3474 for (g_id = 0; g_id < n_i_groups; g_id++) {
3475 # pragma omp parallel for private(face_id, ii, jj, isou, jsou, \
3476 difv, djfv, pif, pjf, pfac, vfac)
3477 for (t_id = 0; t_id < n_i_threads; t_id++) {
3478 for (face_id = i_group_index[(t_id*n_i_groups + g_id)*2];
3479 face_id < i_group_index[(t_id*n_i_groups + g_id)*2 + 1];
3482 ii = i_face_cells[face_id][0];
3483 jj = i_face_cells[face_id][1];
3485 for (jsou = 0; jsou < 3; jsou++) {
3486 difv[jsou] = i_face_cog[face_id][jsou] - cell_cen[ii][jsou];
3487 djfv[jsou] = i_face_cog[face_id][jsou] - cell_cen[jj][jsou];
3493 for (isou = 0; isou < 6; isou++) {
3494 pif = pvar[ii][isou];
3495 pjf = pvar[jj][isou];
3496 for (jsou = 0; jsou < 3; jsou++) {
3497 pif = pif + grad[ii][isou][jsou]*difv[jsou];
3498 pjf = pjf + grad[jj][isou][jsou]*djfv[jsou];
3502 if (i_massflux[face_id] > 0.) pfac = pif;
3506 for (jsou = 0; jsou < 3; jsou++) {
3507 vfac[jsou] = pfac*i_face_normal[face_id][jsou];
3509 grdpa[ii][isou][jsou] = grdpa[ii][isou][jsou] + vfac[jsou];
3510 grdpa[jj][isou][jsou] = grdpa[jj][isou][jsou] - vfac[jsou];
3518 for (g_id = 0; g_id < n_b_groups; g_id++) {
3519 # pragma omp parallel for private(face_id, ii, isou, jsou, diipbv, pfac) \
3520 if(m->n_b_faces > CS_THR_MIN)
3521 for (t_id = 0; t_id < n_b_threads; t_id++) {
3522 for (face_id = b_group_index[(t_id*n_b_groups + g_id)*2];
3523 face_id < b_group_index[(t_id*n_b_groups + g_id)*2 + 1];
3526 ii = b_face_cells[face_id];
3528 for (jsou = 0; jsou < 3; jsou++)
3529 diipbv[jsou] = diipb[face_id][jsou];
3533 for (isou = 0; isou <6; isou++) {
3534 pfac = inc*coefa[face_id][isou];
3536 for (jsou = 0; jsou < 6; jsou++)
3537 pfac += coefb[face_id][jsou][isou]*( pvar[ii][jsou]
3538 + grad[ii][jsou][0]*diipbv[0]
3539 + grad[ii][jsou][1]*diipbv[1]
3540 + grad[ii][jsou][2]*diipbv[2]);
3542 for (jsou = 0; jsou < 3; jsou++)
3543 grdpa[ii][isou][jsou] += pfac*b_face_normal[face_id][jsou];
3550 # pragma omp parallel for private(isou, jsou, unsvol)
3551 for (cell_id = 0; cell_id < n_cells; cell_id++) {
3552 unsvol = 1./cell_vol[cell_id];
3553 for (isou = 0; isou < 6; isou++) {
3554 for (jsou = 0; jsou < 3; jsou++)
3555 grdpa[cell_id][isou][jsou] = grdpa[cell_id][isou][jsou]*unsvol;
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:3115
void cs_gradient_perio_process_rij(const cs_int_t *f_id, cs_real_3_t grad[])
Process grad buffers in case of rotation on Reynolds stress tensor.
Definition: cs_gradient_perio.c:688
static void cs_b_no_relax_c_val_tensor(const cs_real_6_t pi, const cs_real_6_t recoi, cs_real_t pir[6], cs_real_t pipr[6])
Copy values at bounadry cell i for consistency with relaxation case.
Definition: cs_convection_diffusion.h:2735
double precision, dimension(:,:), pointer diipb
Definition: mesh.f90:216
#define restrict
Definition: cs_defs.h:122
static void cs_i_diff_flux(const int idiffp, 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:935
static 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.h:3266
void cs_halo_sync_var_strided(const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_real_t var[], int stride)
Definition: cs_halo.c:1288
cs_real_t cs_real_2_t[2]
vector of 2 floating-point values
Definition: cs_defs.h:306
static void cs_centered_f_val_tensor(const double pnd, const cs_real_6_t pip, const cs_real_6_t pjp, const cs_real_6_t pipr, const cs_real_6_t pjpr, cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6])
Prepare value at face ij by using a centered scheme.
Definition: cs_convection_diffusion.h:596
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:309
static void cs_blend_f_val_tensor(const double blencp, const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_6_t pir, const cs_real_6_t pjr, cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6])
Blend face values for a centered or SOLU scheme with face values for an upwind scheme.
Definition: cs_convection_diffusion.h:784
void cs_halo_perio_sync_var_sym_tens(const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_real_t var[])
Definition: cs_halo_perio.c:1002
void cs_anisotropic_diffusion_vector(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, int ifaccp, int ivisep, cs_real_3_t *restrict pvar, const cs_real_3_t *restrict pvara, const cs_int_t bc_type[], 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:6088
static void cs_i_conv_flux(const int iconvp, 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 (substracting the mass accumulation from them) to fluxes at face ij...
Definition: cs_convection_diffusion.h:821
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:5513
integer, dimension(:), allocatable icvfli
Definition: cfpoin.f90:48
static void cs_i_cd_unsteady_slope_test_tensor(bool upwind_switch[6], 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 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 unsteady algorithm...
Definition: cs_convection_diffusion.h:2459
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_int_t bc_type[], 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:6619
static void cs_b_upwind_flux(const int iconvp, const int inc, const int ifaccp, 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, cs_real_t *flux)
Add convective flux (substracting the mass accumulation from it) to flux at boundary face...
Definition: cs_convection_diffusion.h:2907
cs_real_t cs_real_66_t[6][6]
6x6 matrix of floating-point values
Definition: cs_defs.h:312
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 *pir, cs_real_t *pipr)
Handle preparation of boundary face values for the flux computation in case of an unsteady algorithm...
Definition: cs_convection_diffusion.h:3194
double precision pi
value with 16 digits
Definition: cstnum.f90:48
#define BEGIN_C_DECLS
Definition: cs_defs.h:429
int cs_int_t
Fortran-compatible integer.
Definition: cs_defs.h:295
static void cs_b_no_relax_c_val(const cs_real_t pi, const cs_real_t recoi, cs_real_t *pir, cs_real_t *pipr)
Copy values at bounadry cell i for consistency with relaxation case.
Definition: cs_convection_diffusion.h:2715
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:1497
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:389
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:351
static void cs_b_upwind_flux_cons(const int iconvp, const int inc, const int ifaccp, const cs_int_t bc_type, 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 (conservative formulation) to flux at boundary face. The convective flux is a pur...
Definition: cs_convection_diffusion.h:3013
void diftnv(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const inc, const cs_int_t *const ifaccp, const cs_int_t *const ivisep, cs_real_3_t pvar[], const cs_real_3_t pvara[], const cs_int_t bc_type[], 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 rhs[])
Definition: cs_convection_diffusion.c:405
integer(c_int), pointer, save idtvar
option for a variable time step
Definition: optcal.f90:427
static void cs_b_upwind_flux_tensor(const int iconvp, const int inc, const int ifaccp, 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:2956
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 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 an unsteady algorith...
Definition: cs_convection_diffusion.h:1271
static void cs_i_cd_steady_slope_test_tensor(bool upwind_switch[6], 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:2087
void cs_convection_diffusion_vector(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int icvflb, int inc, int ifaccp, int ivisep, cs_real_3_t *restrict pvar, const cs_real_3_t *restrict pvara, const cs_int_t bc_type[], 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:1808
void bilsc2(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const icvflb, const cs_int_t *const inc, const cs_int_t *const iccocg, const cs_int_t *const ifaccp, cs_real_t pvar[], const cs_real_t pvara[], const cs_int_t bc_type[], 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 rhs[])
Definition: cs_convection_diffusion.c:161
static void cs_solu_f_val_tensor(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_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 pir, const cs_real_6_t pjr, cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6])
Prepare value at face ij by using a Second Order Linear Upwind scheme.
Definition: cs_convection_diffusion.h:687
void cs_convection_diffusion_tensor(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int icvflb, int inc, int ifaccp, cs_real_6_t *restrict pvar, const cs_real_6_t *restrict pvara, const cs_int_t bc_type[], const cs_int_t icvfli[], 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:3388
static void cs_blend_f_val(const double blencp, const cs_real_t pi, const cs_real_t pj, const cs_real_t pir, const cs_real_t pjr, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj)
Blend face values for a centered or SOLU scheme with face values for an upwind scheme.
Definition: cs_convection_diffusion.h:749
static void cs_i_cd_unsteady_slope_test(bool *upwind_switch, 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 grdpai, const cs_real_3_t grdpaj, const cs_real_t pi, const cs_real_t pj, 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 unsteady algorithm...
Definition: cs_convection_diffusion.h:2279
cs_lnum_t n_cells
Definition: cs_mesh.h:72
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:272
int n_init_perio
Definition: cs_mesh.h:111
cs_lnum_t * group_index
Definition: cs_numbering.h:93
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:2691
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:2667
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:1100
cs_real_t * cell_cen
Definition: cs_mesh_quantities.h:53
static void cs_b_imposed_conv_flux_cons(const int iconvp, const int inc, const int ifaccp, const cs_int_t bc_type, const int icvfli, const cs_real_t pir, const cs_real_t pipr, const cs_real_t coefap, const cs_real_t coefbp, const cs_real_t coface, const cs_real_t cofbce, const cs_real_t xcpp, const cs_real_t b_massflux, cs_real_t *flux)
Add convective flux (conservative formulation) to flux at boundary face. The convective flux can be e...
Definition: cs_convection_diffusion.h:2842
void diften(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const inc, const cs_int_t *const iccocg, cs_real_t pvar[], const cs_real_t 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 viscel[], const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_t rhs[])
Definition: cs_convection_diffusion.c:361
static void cs_i_cd_steady_slope_test(bool *upwind_switch, 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 grdpai, const cs_real_3_t grdpaj, 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:1899
cs_mesh_quantities_t * cs_glob_mesh_quantities
Definition: cs_parameters.h:130
static void cs_slope_test_gradient_tensor(const int f_id, 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.h:3425
cs_real_t * i_face_normal
Definition: cs_mesh_quantities.h:57
void bilsc6(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const icvflb, const cs_int_t *const inc, const cs_int_t *const ifaccp, cs_real_6_t pvar[], const cs_real_6_t pvara[], const cs_int_t bc_type[], const cs_int_t icvfli[], 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 rhs[])
Definition: cs_convection_diffusion.c:263
Definition: cs_mesh_quantities.h:51
cs_halo_type_t
Definition: cs_halo.h:49
void diftnts(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const inc, cs_real_6_t pvar[], const cs_real_6_t pvara[], const cs_int_t bc_type[], 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 viscel[], const cs_real_2_t weighf[], const cs_real_t weighb[], cs_real_6_t rhs[])
Definition: cs_convection_diffusion.c:448
static void cs_upwind_f_val(const cs_real_t pi, const cs_real_t pj, const cs_real_t pir, const cs_real_t pjr, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj)
Prepare value at face ij by using an upwind scheme.
Definition: cs_convection_diffusion.h:496
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:8391
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:79
int cs_lnum_2_t[2]
vector of 2 local mesh-entity ids
Definition: cs_defs.h:301
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 *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 an unsteady algorith...
Definition: cs_convection_diffusion.h:1189
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:2642
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:143
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[], const cs_real_t 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:7202
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 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:3228
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:307
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:7989
int n_groups
Definition: cs_numbering.h:85
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:556
Definition: cs_parameters.h:53
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:292
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:2620
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:686
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[], const 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:491
static void cs_i_conv_flux_tensor(const int iconvp, 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:859
static void cs_b_imposed_conv_flux(const int iconvp, const int inc, const int ifaccp, const cs_int_t bc_type, const int icvfli, 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 coface, const cs_real_t cofbce, const cs_real_t b_massflux, cs_real_t *flux)
Add convective flux (substracting the mass accumulation from it) to flux at boundary face...
Definition: cs_convection_diffusion.h:2773
#define END_C_DECLS
Definition: cs_defs.h:430
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:1008
static void cs_centered_f_val(const double pnd, const cs_real_t pip, const cs_real_t pjp, const cs_real_t pipr, const cs_real_t pjpr, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj)
Prepare value at face ij by using a centered scheme.
Definition: cs_convection_diffusion.h:563
double cs_real_t
Definition: cs_defs.h:296
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:211
cs_numbering_t * b_face_numbering
Definition: cs_mesh.h:131
cs_numbering_t * i_face_numbering
Definition: cs_mesh.h:130
#define CS_PROCF(x, y)
Definition: cs_defs.h:453
void bilsct(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const inc, const cs_int_t *const iccocg, const cs_int_t *const ifaccp, cs_real_t pvar[], const cs_real_t pvara[], const cs_int_t bc_type[], 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 rhs[])
Definition: cs_convection_diffusion.c:313
int n_threads
Definition: cs_numbering.h:84
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:7565
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_t pi, const cs_real_t pj, 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 unsteady algorithm...
Definition: cs_convection_diffusion.h:1633
cs_real_t cs_real_33_t[3][3]
3x3 matrix of floating-point values
Definition: cs_defs.h:311
cs_real_t * b_face_normal
Definition: cs_mesh_quantities.h:59
int have_rotation_perio
Definition: cs_mesh.h:114
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 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 an unsteady algorith...
Definition: cs_convection_diffusion.h:1761
cs_real_t * diipb
Definition: cs_mesh_quantities.h:75
void cs_halo_perio_sync_var_vect(const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_real_t var[], int incvar)
Definition: cs_halo_perio.c:640
cs_real_t cs_real_63_t[6][3]
Definition: cs_defs.h:316
static void cs_b_diff_flux_tensor(const int idiffp, 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:3081
cs_real_t * cell_vol
Definition: cs_mesh_quantities.h:54
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_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:1360
void bilsc4(const cs_int_t *const idtvar, const cs_int_t *const f_id, const cs_var_cal_opt_t *const var_cal_opt, const cs_int_t *const icvflb, const cs_int_t *const inc, const cs_int_t *const ifaccp, const cs_int_t *const ivisep, cs_real_3_t pvar[], const cs_real_3_t pvara[], const cs_int_t bc_type[], 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 rhs[])
Definition: cs_convection_diffusion.c:211
cs_lnum_2_t * i_face_cells
Definition: cs_mesh.h:86
static void cs_b_diff_flux(const int idiffp, 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:3055
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:3156
static void cs_upwind_f_val_tensor(const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_6_t pir, const cs_real_6_t pjr, cs_real_t pifri[6], cs_real_t pifrj[6], cs_real_t pjfri[6], cs_real_t pjfrj[6])
Prepare value at face ij by using an upwind scheme.
Definition: cs_convection_diffusion.h:527
static void cs_i_no_relax_c_val(const cs_real_t pi, const cs_real_t pj, const cs_real_t pip, const cs_real_t pjp, cs_real_t *pir, cs_real_t *pjr, cs_real_t *pipr, cs_real_t *pjpr)
Copy reconstructed or not cell values for consistency with relaxation case.
Definition: cs_convection_diffusion.h:428
static void cs_solu_f_val(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 gradi, const cs_real_3_t gradj, const cs_real_t pi, const cs_real_t pj, const cs_real_t pir, const cs_real_t pjr, cs_real_t *pifri, cs_real_t *pifrj, cs_real_t *pjfri, cs_real_t *pjfrj)
Prepare value at face ij by using a Second Order Linear Upwind scheme.
Definition: cs_convection_diffusion.h:635
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 ifaccp, cs_real_t *restrict pvar, const cs_real_t *restrict pvara, const cs_int_t bc_type[], 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:808
void cs_convection_diffusion_thermal(int idtvar, int f_id, const cs_var_cal_opt_t var_cal_opt, int inc, int iccocg, int ifaccp, cs_real_t *restrict pvar, const cs_real_t *restrict pvara, const cs_int_t bc_type[], 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:4294
static void cs_i_diff_flux_tensor(const int idiffp, 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:963
cs_real_t * i_face_cog
Definition: cs_mesh_quantities.h:65
static void cs_i_no_relax_c_val_tensor(const cs_real_6_t pi, const cs_real_6_t pj, const cs_real_6_t pip, const cs_real_6_t pjp, cs_real_t pir[6], cs_real_t pjr[6], cs_real_t pipr[6], cs_real_t pjpr[6])
Copy reconstructed or not cell values for consistency with relaxation case.
Definition: cs_convection_diffusion.h:461
static void cs_i_conv_flux_cons(const int iconvp, 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 (cons. formulation) to fluxes at face ij.
Definition: cs_convection_diffusion.h:901
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:623
integer(c_int), pointer, save imrgra
type of gradient reconstruction
Definition: optcal.f90:266
cs_halo_t * halo
Definition: cs_mesh.h:127
cs_lnum_t * b_face_cells
Definition: cs_mesh.h:87
integer, save ifaccp
indicator coupling face / face only
Definition: cplsat.f90:45