A second method of defining an inlet condition which converges towards an infinite channel profile is based simply on feedback from values computed at inlet cell centers (combining the inlet boundary conditions and the effect of wall friction on the inlet walls). It assumes the mesh is very regular and orthogonal, at least on the first two inlet cell layers (using a gradient correction in the case of a less regular mesh might work, but has never been tested.
const cs_lnum_t n_cells_ext = domain->mesh->n_cells_with_ghosts;
const cs_lnum_t n_b_faces = domain->mesh->n_b_faces;
const int nt_cur = domain->time_step->nt_cur;
const cs_lnum_t *b_face_cells = domain->mesh->b_face_cells;
= (
const cs_real_3_t *)domain->mesh_quantities->b_face_normal;
= (
const cs_real_t *)domain->mesh_quantities->b_face_surf;
#define restrict
Definition: cs_defs.h:145
double cs_real_t
Floating-point value.
Definition: cs_defs.h:342
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:359
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:335
int cs_field_n_fields(void)
Return the number of defined fields.
Definition: cs_field.cpp:1593
int cs_field_key_id(const char *name)
Return an id associated with a given key name.
Definition: cs_field.cpp:2781
@ vel
Definition: cs_field_pointer.h:70
@ rho_b
Definition: cs_field_pointer.h:100
#define CS_F_(e)
Macro used to return a field pointer by its enumerated value.
Definition: cs_field_pointer.h:51
const cs_fluid_properties_t * cs_glob_fluid_properties
Definition: cs_physical_constants.cpp:465
real(c_double), pointer, save viscl0
reference molecular dynamic viscosity.
Definition: cstphy.f90:160
double viscl0
Definition: cs_physical_constants.h:75
Here, we define an inlet boundary condition for a very long channel or duct with a section matching the boundary faces of zone 'INLET'.
We fix a mean inlet velocity, and use a feedback loop assuming a fixed-point type behavior will allow us to reach a state matching that of a very long inlet channel.
For EBRSM of V2f models, to avoid laminarization at the inlet, the initial velocity (at the first time step) is divided by 10 on inlet faces adjacent to the boundary, so as to ensure a velocity gradient and turbulent production. Otherwise, the initialization may fail.
if (nt_cur == 1) {
int *mrkcel = nullptr;
mrkcel[i] = 0;
for (
cs_lnum_t f_id = 0; f_id < n_b_faces; f_id++) {
mrkcel[c_id] = 1;
}
}
}
const cs_lnum_t c_id = b_face_cells[face_id];
for (
int ii = 0; ii<
CS_F_(
vel)->dim; ii++)
CS_F_(
vel)->bc_coeffs->rcodcl1[n_b_faces*ii + face_id]
= -fmprsc*b_face_normal[face_id][ii]/b_face_surf[face_id];
if (mrkcel[c_id] == 1)
CS_F_(
vel)->bc_coeffs->rcodcl1[n_b_faces*0 + face_id] = fmprsc/10;
for (
int ii = 0; ii<
CS_F_(
vel)->dim; ii++)
uref2 += pow(
CS_F_(
vel)->bc_coeffs->rcodcl1[n_b_faces*ii + face_id], 2);
uref2,
xdh,
b_rho,
for (int f_id = 0; f_id < n_fields; f_id++) {
if (sc_id < 0)
continue;
}
}
}
else {
const cs_lnum_t c_id = b_face_cells[face_id];
acc[0] += vnrm*b_face_surf[face_id];
acc[1] += b_face_surf[face_id];
}
fmul = fmprsc/(acc[0]/acc[1]);
const cs_lnum_t c_id = b_face_cells[face_id];
for (
int ii = 0; ii<
CS_F_(
vel)->dim; ii++)
CS_F_(
vel)->bc_coeffs->rcodcl1[n_b_faces*ii + face_id]
= -fmul*vnrm*b_face_normal[face_id][ii]/b_face_surf[face_id];
CS_F_(
k)->bc_coeffs->rcodcl1[face_id] =
CS_F_(
k)->val[c_id];
}
CS_F_(
rij)->bc_coeffs->rcodcl1[n_b_faces*ii + face_id]
}
CS_F_(
k)->bc_coeffs->rcodcl1[face_id] =
CS_F_(
k)->val[c_id];
}
CS_F_(
k)->bc_coeffs->rcodcl1[face_id] =
CS_F_(
k)->val[c_id];
}
}
for (int f_id = 0; f_id < n_fields; f_id++) {
if (sc_id < 0)
continue;
}
}
}
#define BFT_FREE(_ptr)
Definition: bft_mem.h:90
#define BFT_MALLOC(_ptr, _ni, _type)
Definition: bft_mem.h:58
const cs_zone_t * cs_boundary_zone_by_name(const char *name)
Return a pointer to a boundary zone based on its name if present.
Definition: cs_boundary_zone.cpp:711
#define CS_REAL_TYPE
Definition: cs_defs.h:486
cs_real_t cs_real_2_t[2]
vector of 2 floating-point values
Definition: cs_defs.h:358
int cs_field_get_key_int(const cs_field_t *f, int key_id)
Return a integer value for a given key associated with a field.
Definition: cs_field.cpp:3275
cs_field_t * cs_field_by_id(int id)
Return a pointer to a field based on its id.
Definition: cs_field.cpp:2465
@ alp_bl
Definition: cs_field_pointer.h:79
@ nusa
Definition: cs_field_pointer.h:83
@ k
Definition: cs_field_pointer.h:72
@ eps
Definition: cs_field_pointer.h:73
@ omg
Definition: cs_field_pointer.h:82
@ rij
Definition: cs_field_pointer.h:75
@ phi
Definition: cs_field_pointer.h:77
@ f_bar
Definition: cs_field_pointer.h:78
const cs_real_t cs_math_epzero
static CS_F_HOST_DEVICE cs_real_t cs_math_3_norm(const cs_real_t v[3])
Compute the euclidean norm of a vector of dimension 3.
Definition: cs_math.h:765
static CS_F_HOST_DEVICE cs_real_t cs_math_fmax(cs_real_t x, cs_real_t y)
Compute the max value of two real values.
Definition: cs_math.h:503
static void cs_parall_sum(int n, cs_datatype_t datatype, void *val)
Sum values of a given datatype on all default communicator processes.
Definition: cs_parall.h:147
@ CS_INLET
Definition: cs_parameters.h:85
@ CS_SMOOTHWALL
Definition: cs_parameters.h:89
void cs_turbulence_bc_inlet_hyd_diam(cs_lnum_t face_id, double uref2, double dh, double rho, double mu)
Set inlet boundary condition values for turbulence variables based on a diameter and the reference v...
Definition: cs_turbulence_bc.cpp:772
const cs_turb_model_t * cs_glob_turb_model
@ CS_TURB_SPALART_ALLMARAS
Definition: cs_turbulence_model.h:69
@ CS_TURB_RIJ_EPSILON_EBRSM
Definition: cs_turbulence_model.h:62
@ CS_TURB_V2F_PHI
Definition: cs_turbulence_model.h:66
@ CS_TURB_V2F_BL_V2K
Definition: cs_turbulence_model.h:67
@ CS_TURB_K_OMEGA
Definition: cs_turbulence_model.h:68
cs_real_t * rcodcl1
Definition: cs_field.h:109
Field descriptor.
Definition: cs_field.h:131
cs_real_t * val
Definition: cs_field.h:152
cs_field_bc_coeffs_t * bc_coeffs
Definition: cs_field.h:163
int model
Definition: cs_turbulence_model.h:130
int itytur
Definition: cs_turbulence_model.h:154
const cs_lnum_t * elt_ids
Definition: cs_zone.h:65
cs_lnum_t n_elts
Definition: cs_zone.h:64