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.);
161 cs_real_t diipfx, diipfy, diipfz, djjpfx, djjpfy, djjpfz;
166 diipfx = i_face_cog[0] - (cell_ceni[0] + (1.-pnd) * dijpf[0]);
167 diipfy = i_face_cog[1] - (cell_ceni[1] + (1.-pnd) * dijpf[1]);
168 diipfz = i_face_cog[2] - (cell_ceni[2] + (1.-pnd) * dijpf[2]);
170 djjpfx = i_face_cog[0] - cell_cenj[0] + pnd * dijpf[0];
171 djjpfy = i_face_cog[1] - cell_cenj[1] + pnd * dijpf[1];
172 djjpfz = i_face_cog[2] - cell_cenj[2] + pnd * dijpf[2];
174 dpxf = 0.5*(gradi[0] + gradj[0]);
175 dpyf = 0.5*(gradi[1] + gradj[1]);
176 dpzf = 0.5*(gradi[2] + gradj[2]);
179 *recoi = ircflp*(dpxf*diipfx+dpyf*diipfy+dpzf*diipfz);
180 *recoj = ircflp*(dpxf*djjpfx+dpyf*djjpfy+dpzf*djjpfz);
216 *pir = pi/relaxp - (1.-relaxp)/relaxp * pia;
217 *pjr = pj/relaxp - (1.-relaxp)/relaxp * pja;
219 *pipr = *pir + recoi;
220 *pjpr = *pjr + recoj;
314 *pifri = pnd*pipr + (1.-pnd)*pjp;
316 *pifrj = pnd*pip + (1.-pnd)*pjpr;
355 cs_real_t difx, dify, difz, djfx, djfy, djfz;
357 difx = i_face_cog[0] - cell_ceni[0];
358 dify = i_face_cog[1] - cell_ceni[1];
359 difz = i_face_cog[2] - cell_ceni[2];
360 djfx = i_face_cog[0] - cell_cenj[0];
361 djfy = i_face_cog[1] - cell_cenj[1];
362 djfz = i_face_cog[2] - cell_cenj[2];
366 *pifri = pir + difx*gradi[0]+dify*gradi[1]+difz*gradi[2];
367 *pifrj = pi + difx*gradi[0]+dify*gradi[1]+difz*gradi[2];
368 *pjfrj = pjr + djfx*gradj[0]+djfy*gradj[1]+djfz*gradj[2];
369 *pjfri = pj + djfx*gradj[0]+djfy*gradj[1]+djfz*gradj[2];
401 *pifri = blencp*(*pifri)+(1.-blencp)*pir;
402 *pifrj = blencp*(*pifrj)+(1.-blencp)*pi;
403 *pjfri = blencp*(*pjfri)+(1.-blencp)*pj;
404 *pjfrj = blencp*(*pjfrj)+(1.-blencp)*pjr;
437 flui = 0.5*(i_massflux + fabs(i_massflux));
438 fluj = 0.5*(i_massflux - fabs(i_massflux));
440 fluxij[0] += iconvp*(flui*pifri + fluj*pjfri - i_massflux*
pi);
441 fluxij[1] += iconvp*(flui*pifrj + fluj*pjfrj - i_massflux*pj);
475 flui = 0.5*(i_massflux +fabs(i_massflux));
476 fluj = 0.5*(i_massflux -fabs(i_massflux));
478 fluxij[0] += iconvp*xcppi*(flui*pifri + fluj*pjfri);
479 fluxij[1] += iconvp*xcppj*(flui*pifrj + fluj*pjfrj);
505 fluxij[0] += idiffp*i_visc*(pipr -pjp);
506 fluxij[1] += idiffp*i_visc*(pip -pjpr);
1025 srfan = i_face_surf;
1027 *upwind_switch =
false;
1069 if (tesqck<=0. || testij<=0.) {
1083 *upwind_switch =
true;
1178 const double blencp,
1208 srfan = i_face_surf;
1210 *upwind_switch =
false;
1249 if (tesqck<=0. || testij<=0.) {
1263 *upwind_switch =
true;
1335 *recoi = ircflp * ( gradi[0]*diipb[0]
1337 + gradi[2]*diipb[2]);
1361 *pir = pi/relaxp - (1.-relaxp)/relaxp*pia;
1362 *pipr = *pir + recoi;
1438 flui = 0.5*(b_massflux +fabs(b_massflux));
1439 fluj = 0.5*(b_massflux -fabs(b_massflux));
1442 pfac = inc*coefap + coefbp*pipr;
1443 *flux += iconvp*(flui*pir + fluj*pfac - b_massflux*
pi);
1449 pfac = inc*coface + cofbce*pipr;
1450 *flux += iconvp*(-b_massflux*pi + pfac);
1507 flui = 0.5*(b_massflux +fabs(b_massflux));
1508 fluj = 0.5*(b_massflux -fabs(b_massflux));
1511 pfac = inc*coefap + coefbp*pipr;
1512 *flux += iconvp*xcpp*(flui*pir + fluj*pfac);
1518 pfac = inc*coface + cofbce*pipr;
1519 *flux += iconvp*pfac;
1565 flui = 0.5*(b_massflux +fabs(b_massflux));
1566 fluj = 0.5*(b_massflux -fabs(b_massflux));
1569 pfac = inc*coefap + coefbp*pipr;
1570 *flux += iconvp*(flui*pir + fluj*pfac - b_massflux*
pi);
1617 flui = 0.5*(b_massflux +fabs(b_massflux));
1618 fluj = 0.5*(b_massflux -fabs(b_massflux));
1621 pfac = inc*coefap + coefbp*pipr;
1622 *flux += iconvp*xcpp*(flui*pir + fluj*pfac);
1648 cs_real_t pfacd = inc*cofafp + cofbfp*pipr;
1649 *flux += idiffp*b_visc*pfacd;
1670 const double relaxp,
1789 cs_real_t difx,dify,difz,djfx,djfy,djfz;
1791 cs_real_t pfac, pfac1, pfac2, pfac3, unsvol;
1794 for (g_id = 0; g_id < n_i_groups; g_id++) {
1795 # pragma omp parallel for private(face_id, ii, jj, difx, dify, difz, \
1796 djfx, djfy, djfz, pif, pjf, pfac, \
1797 pfac1, pfac2, pfac3)
1798 for (t_id = 0; t_id < n_i_threads; t_id++) {
1799 for (face_id = i_group_index[(t_id*n_i_groups + g_id)*2];
1800 face_id < i_group_index[(t_id*n_i_groups + g_id)*2 + 1];
1803 ii = i_face_cells[face_id][0];
1804 jj = i_face_cells[face_id][1];
1806 difx = i_face_cog[face_id][0] - cell_cen[ii][0];
1807 dify = i_face_cog[face_id][1] - cell_cen[ii][1];
1808 difz = i_face_cog[face_id][2] - cell_cen[ii][2];
1809 djfx = i_face_cog[face_id][0] - cell_cen[jj][0];
1810 djfy = i_face_cog[face_id][1] - cell_cen[jj][1];
1811 djfz = i_face_cog[face_id][2] - cell_cen[jj][2];
1814 + difx*grad[ii][0]+dify*grad[ii][1]+difz*grad[ii][2];
1816 + djfx*grad[jj][0]+djfy*grad[jj][1]+djfz*grad[jj][2];
1819 if (i_massflux[face_id] > 0.) pfac = pif;
1821 pfac1 = pfac*i_face_normal[face_id][0];
1822 pfac2 = pfac*i_face_normal[face_id][1];
1823 pfac3 = pfac*i_face_normal[face_id][2];
1825 grdpa[ii][0] = grdpa[ii][0] + pfac1;
1826 grdpa[ii][1] = grdpa[ii][1] + pfac2;
1827 grdpa[ii][2] = grdpa[ii][2] + pfac3;
1829 grdpa[jj][0] = grdpa[jj][0] - pfac1;
1830 grdpa[jj][1] = grdpa[jj][1] - pfac2;
1831 grdpa[jj][2] = grdpa[jj][2] - pfac3;
1837 for (g_id = 0; g_id < n_b_groups; g_id++) {
1838 # pragma omp parallel for private(face_id, ii, diipbx, diipby, diipbz, pfac) \
1839 if(m->n_b_faces > CS_THR_MIN)
1840 for (t_id = 0; t_id < n_b_threads; t_id++) {
1841 for (face_id = b_group_index[(t_id*n_b_groups + g_id)*2];
1842 face_id < b_group_index[(t_id*n_b_groups + g_id)*2 + 1];
1845 ii = b_face_cells[face_id];
1847 diipbx = diipb[face_id][0];
1848 diipby = diipb[face_id][1];
1849 diipbz = diipb[face_id][2];
1850 pfac = inc*coefap[face_id]
1851 + coefbp[face_id] * (pvar[ii] + diipbx*grad[ii][0]
1852 + diipby*grad[ii][1]
1853 + diipbz*grad[ii][2]);
1854 grdpa[ii][0] = grdpa[ii][0] + pfac*b_face_normal[face_id][0];
1855 grdpa[ii][1] = grdpa[ii][1] + pfac*b_face_normal[face_id][1];
1856 grdpa[ii][2] = grdpa[ii][2] + pfac*b_face_normal[face_id][2];
1862 # pragma omp parallel for private(unsvol)
1863 for (cell_id = 0; cell_id < n_cells; cell_id++) {
1865 unsvol = 1./cell_vol[cell_id];
1867 grdpa[cell_id][0] = grdpa[cell_id][0]*unsvol;
1868 grdpa[cell_id][1] = grdpa[cell_id][1]*unsvol;
1869 grdpa[cell_id][2] = grdpa[cell_id][2]*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:1669
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:588
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:497
void itrmav(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:464
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:1747
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
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:309
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:5072
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:425
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:4501
integer, dimension(:), allocatable icvfli
Definition: cfpoin.f90:48
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:1546
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:1708
double precision pi
value with 16 digits
Definition: cstnum.f90:48
#define BEGIN_C_DECLS
Definition: cs_defs.h:419
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:1377
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:204
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:1598
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:355
integer(c_int), pointer, save idtvar
option for a variable time step
Definition: optcal.f90:437
void cs_anisotropic_diffusion_potential(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:6763
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:1709
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_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:391
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:1175
cs_lnum_t n_cells
Definition: cs_mesh.h:72
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(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:1354
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:1481
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:311
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:989
cs_mesh_quantities_t * cs_glob_mesh_quantities
Definition: cs_parameters.h:124
cs_real_t * i_face_normal
Definition: cs_mesh_quantities.h:57
Definition: cs_mesh_quantities.h:51
cs_halo_type_t
Definition: cs_halo.h:49
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:272
void itrgrv(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:592
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:628
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:5617
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:6365
int n_groups
Definition: cs_numbering.h:85
Definition: cs_parameters.h:52
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:1330
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:399
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:1412
#define END_C_DECLS
Definition: cs_defs.h:420
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:539
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:304
double cs_real_t
Definition: cs_defs.h:296
void cs_face_anisotropic_diffusion_potential(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:5975
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:146
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:443
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:263
int n_threads
Definition: cs_numbering.h:84
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:851
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
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:576
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:717
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:1640
double precision, dimension(:,:), pointer dijpf
Definition: mesh.f90:208
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:240
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:341
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:712
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:3286
cs_real_t * i_face_cog
Definition: cs_mesh_quantities.h:65
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:463
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:529
integer(c_int), pointer, save imrgra
type of gradient reconstruction
Definition: optcal.f90:276
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