16#ifndef Operateur_IJK_faces_diff_base_included
17#define Operateur_IJK_faces_diff_base_included
18#include <Operateur_IJK_base.h>
19#include <Boundary_Conditions.h>
55 void ajouter(
const IJK_Field_double& vx,
const IJK_Field_double& vy,
const IJK_Field_double& vz,
56 IJK_Field_double& dvx, IJK_Field_double& dvy, IJK_Field_double& dvz);
58 void calculer(
const IJK_Field_double& vx,
const IJK_Field_double& vy,
const IJK_Field_double& vz,
59 IJK_Field_double& dvx, IJK_Field_double& dvy, IJK_Field_double& dvz);
99 const IJK_Field_double& coeff_tensor_xy,
100 const IJK_Field_double& coeff_tensor_xz,
101 const IJK_Field_double& coeff_tensor_yx,
102 const IJK_Field_double& coeff_tensor_yy,
103 const IJK_Field_double& coeff_tensor_yz,
104 const IJK_Field_double& coeff_tensor_zx,
105 const IJK_Field_double& coeff_tensor_zy,
106 const IJK_Field_double& coeff_tensor_zz);
108 inline void set_nu(
const IJK_Field_local_double& nu) {
nu_ = ν };
111 const IJK_Field_local_double&
get_v(DIRECTION _DIR_);
112 const IJK_Field_local_double&
get_nu();
115 const IJK_Field_local_double&
get_coeff_tensor(DIRECTION _COMPO1_, DIRECTION _COMPO2_);
122 template <DIRECTION _DIR_, DIRECTION _VCOMPO_>
123 inline void compute_flux_(IJK_Field_local_double& resu,
const int k_layer);
125 template <DIRECTION _DIR_, DIRECTION _VCOMPO_>
126 inline void flux_loop_(IJK_Field_local_double& resu,
int k_layer,
int top_wall = 0,
int bottom_wall = 0);
128 template <DIRECTION _DIR_, DIRECTION _VCOMPO_>
130 const ConstIJK_double_ptr& vCOMPO_ptr,
const ConstIJK_double_ptr& vDIR_ptr,
131 const ConstIJK_double_ptr& molecular_nu,
const ConstIJK_double_ptr& div_ptr,
132 const ConstIJK_double_ptr& turbulent_nu,
const ConstIJK_double_ptr& turbulent_k_energy,
133 const ConstIJK_double_ptr& structural_model, Simd_double& flux);
135 template<DIRECTION _DIR_, DIRECTION _VCOMPO_>
137 int top_wall,
int bottom_wall,
138 const ConstIJK_double_ptr& vCOMPO_ptr,
const ConstIJK_double_ptr& vDIR_ptr,
139 const ConstIJK_double_ptr& molecular_nu,
const ConstIJK_double_ptr& div_ptr,
140 const ConstIJK_double_ptr& turbulent_nu,
const ConstIJK_double_ptr& turbulent_k_energy,
141 const ConstIJK_double_ptr& structural_model, Simd_double& flux);
148 const IJK_Field_local_double *
vx_;
149 const IJK_Field_local_double *
vy_;
150 const IJK_Field_local_double *
vz_;
153 const IJK_Field_local_double *
nu_;
277#include <Operateur_IJK_faces_diff_base.tpp>
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
bool get_periodic_flag(int direction) const
Method returns true if periodic in this direction.
OpDiffAnisotropicIJK_double()
OpDiffStdWithLaminarTransposeAndDivergenceAnisotropicIJK_double()
OpDiffStdWithLaminarTransposeAndDivergenceIJK_double()
OpDiffStdWithLaminarTransposeAndDivergenceTensorialAnisotropicZeroatwallIJK_double()
OpDiffStdWithLaminarTransposeAndDivergenceTensorialZeroatwallIJK_double()
OpDiffStdWithLaminarTransposeAnisotropicIJK_double()
OpDiffStdWithLaminarTransposeIJK_double()
OpDiffStdWithLaminarTransposeTensorialAnisotropicZeroatwallIJK_double()
OpDiffStdWithLaminarTransposeTensorialZeroatwallIJK_double()
OpDiffStructuralOnlyZeroatwallIJK_double()
OpDiffTensorialAnisotropicZeroatwallIJK_double()
OpDiffTensorialZeroatwallIJK_double()
const IJK_Field_local_double * coeff_tensor_zy_
const IJK_Field_local_double & get_divergence()
void set_nu(const IJK_Field_local_double &nu)
void compute_flux_y_vx(IJK_Field_local_double &resu, const int k_layer) override
void compute_flux_z_vy(IJK_Field_local_double &resu, const int k_layer) override
const IJK_Field_local_double * vz_
const IJK_Field_local_double * coeff_tensor_xz_
const IJK_Field_local_double & get_nu()
const IJK_Field_local_double * divergence_
void ajouter(const IJK_Field_double &vx, const IJK_Field_double &vy, const IJK_Field_double &vz, IJK_Field_double &dvx, IJK_Field_double &dvy, IJK_Field_double &dvz)
const IJK_Field_local_double & get_v(DIRECTION _DIR_)
void compute_flux_z_vz(IJK_Field_local_double &resu, const int k_layer) override
void set_divergence(const IJK_Field_local_double &divergence)
void set_uniform_nu(const double &uniform_nu)
void compute_flux_x_vz(IJK_Field_local_double &resu, const int k_layer) override
void set_bc(const Boundary_Conditions &bc)
Operateur_IJK_faces_diff_base_double()
void set_coeff_x_y_z(const IJK_Field_double &coeff_tensor_xx, const IJK_Field_double &coeff_tensor_xy, const IJK_Field_double &coeff_tensor_xz, const IJK_Field_double &coeff_tensor_yx, const IJK_Field_double &coeff_tensor_yy, const IJK_Field_double &coeff_tensor_yz, const IJK_Field_double &coeff_tensor_zx, const IJK_Field_double &coeff_tensor_zy, const IJK_Field_double &coeff_tensor_zz)
void flux_loop_(IJK_Field_local_double &resu, int k_layer, int top_wall=0, int bottom_wall=0)
const IJK_Field_local_double * nu_
void compute_flux_x_vx(IJK_Field_local_double &resu, const int k_layer) override
const double * uniform_nu_
const IJK_Field_local_double * coeff_tensor_zz_
const IJK_Field_local_double * coeff_tensor_xy_
void compute_flux_y_vz(IJK_Field_local_double &resu, const int k_layer) override
const IJK_Field_local_double * vx_
void compute_flux_y_vy(IJK_Field_local_double &resu, const int k_layer) override
void flux_loop_different_dir_compo_(int i, double surface, double inv_distance_DIR, double inv_distance_COMPO, int top_wall, int bottom_wall, const ConstIJK_double_ptr &vCOMPO_ptr, const ConstIJK_double_ptr &vDIR_ptr, const ConstIJK_double_ptr &molecular_nu, const ConstIJK_double_ptr &div_ptr, const ConstIJK_double_ptr &turbulent_nu, const ConstIJK_double_ptr &turbulent_k_energy, const ConstIJK_double_ptr &structural_model, Simd_double &flux)
const IJK_Field_local_double * coeff_tensor_xx_
void flux_loop_same_dir_compo_(int i, double surface, double inv_distance_DIR, double inv_distance_COMPO, const ConstIJK_double_ptr &vCOMPO_ptr, const ConstIJK_double_ptr &vDIR_ptr, const ConstIJK_double_ptr &molecular_nu, const ConstIJK_double_ptr &div_ptr, const ConstIJK_double_ptr &turbulent_nu, const ConstIJK_double_ptr &turbulent_k_energy, const ConstIJK_double_ptr &structural_model, Simd_double &flux)
void compute_flux_x_vy(IJK_Field_local_double &resu, const int k_layer) override
virtual void initialize(const Domaine_IJK &splitting, const int harmonic_nu=0)
void compute_flux_z_vx(IJK_Field_local_double &resu, const int k_layer) override
const IJK_Field_local_double * coeff_tensor_yz_
const double & get_uniform_nu()
void calculer(const IJK_Field_double &vx, const IJK_Field_double &vy, const IJK_Field_double &vz, IJK_Field_double &dvx, IJK_Field_double &dvy, IJK_Field_double &dvz)
const IJK_Field_local_double * vy_
const IJK_Field_local_double * coeff_tensor_yx_
const IJK_Field_local_double & get_coeff_tensor(DIRECTION _COMPO1_, DIRECTION _COMPO2_)
Operateur_IJK_data_channel channel_data_
OBS_PTR(Boundary_Conditions) ref_bc_
void compute_flux_(IJK_Field_local_double &resu, const int k_layer)
compute fluxes in direction DIR for velocity component COMPO for the layer of fluxes k_layer
const IJK_Field_local_double * coeff_tensor_zx_
const IJK_Field_local_double * coeff_tensor_yy_