16#ifndef OpConvQuickIJKScalar_cut_cell_included
17#define OpConvQuickIJKScalar_cut_cell_included
19#include <OpConvQuickIJKScalar.h>
29 bool ignore_small_cells,
31 IJK_Field_int& treatment_count,
34 cut_cell_conv_scheme_ = cut_cell_conv_scheme;
35 ignore_small_cells_ = ignore_small_cells;
36 cut_cell_flux_ = &cut_cell_flux;
37 treatment_count_ = &treatment_count;
38 new_treatment_ = &new_treatment;
41 void set_runge_kutta(
int rk_step,
double dt_tot, IJK_Field_vector3_double& current_fluxes, IJK_Field_vector3_double& RK3_F_fluxes, Cut_field_int& cellule_rk_restreint_conv_main)
50 cellule_rk_restreint_conv_main_ =
nullptr;
59 cellule_rk_restreint_conv_main_ = &cellule_rk_restreint_conv_main;
67 return &(*cut_cell_flux_)[0].get_cut_cell_disc();
72 return cut_cell_flux_;
76 const IJK_Field_local_double& flux_x,
77 const IJK_Field_local_double& flux_y,
78 const IJK_Field_local_double& flux_zmin,
79 const IJK_Field_local_double& flux_zmax,
80 IJK_Field_double& resu,
int k_layer,
bool add);
82 void Operator_IJK_div(
const IJK_Field_local_double& flux_x,
const IJK_Field_local_double& flux_y,
83 const IJK_Field_local_double& flux_zmin,
const IJK_Field_local_double& flux_zmax,
84 IJK_Field_double& resu,
int k_layer,
bool add)
override
94 inline void compute_flux_x(IJK_Field_local_double& resu,
const int k_layer)
override
96 compute_flux_<DIRECTION::X>(resu,k_layer);
98 inline void compute_flux_y(IJK_Field_local_double& resu,
const int k_layer)
override
100 compute_flux_<DIRECTION::Y>(resu,k_layer);
102 inline void compute_flux_z(IJK_Field_local_double& resu,
const int k_layer)
override
104 compute_flux_<DIRECTION::Z>(resu,k_layer);
108 template <DIRECTION _DIR_>
109 void compute_flux_(IJK_Field_local_double& resu,
const int k_layer);
111 template <DIRECTION _DIR_>
112 double compute_flux_local_(
int i,
int j,
int k);
114 template <DIRECTION _DIR_>
115 double compute_flux_local_(
int k_layer,
double delta_xyz,
double surface,
double velocity,
double input_left_left,
double input_left,
double input_centre,
double input_right);
117 template <DIRECTION _DIR_>
118 double compute_flux_local_(
double surface,
double velocity,
double input);
120 template <DIRECTION _DIR_>
121 bool flux_determined_by_wall_(
int k);
123 template <DIRECTION _DIR_>
124 Vecteur3 compute_curv_fram_local_(
int k_layer,
double input_left,
double input_centre,
double input_right);
126 void correct_flux(IJK_Field_local_double *
const flux,
int k_layer,
const int dir)
override;
128 template <DIRECTION _DIR_>
129 inline void correct_flux_(IJK_Field_local_double *
const flux,
int k_layer);
131 bool ignore_small_cells_ =
true;
135 Cut_field_int *cellule_rk_restreint_conv_main_ =
nullptr;
137 IJK_Field_int *treatment_count_ =
nullptr;
138 int *new_treatment_ =
nullptr;
142#include <OpConvQuickIJKScalar_cut_cell.tpp>
void compute_cut_cell_divergence(const FixedVector< Cut_cell_double, 3 > &cut_cell_flux, const IJK_Field_local_double &flux_x, const IJK_Field_local_double &flux_y, const IJK_Field_local_double &flux_zmin, const IJK_Field_local_double &flux_zmax, IJK_Field_double &resu, int k_layer, bool add)
void compute_flux_z(IJK_Field_local_double &resu, const int k_layer) override
void set_runge_kutta(int rk_step, double dt_tot, IJK_Field_vector3_double ¤t_fluxes, IJK_Field_vector3_double &RK3_F_fluxes, Cut_field_int &cellule_rk_restreint_conv_main)
OpConvQuickIJKScalar_cut_cell_double()
void initialise_cut_cell(Cut_cell_conv_scheme cut_cell_conv_scheme, bool ignore_small_cells, FixedVector< Cut_cell_double, 3 > &cut_cell_flux, IJK_Field_int &treatment_count, int &new_treatment)
FixedVector< Cut_cell_double, 3 > * get_cut_cell_flux()
void compute_flux_x(IJK_Field_local_double &resu, const int k_layer) override
void compute_flux_y(IJK_Field_local_double &resu, const int k_layer) override
const Cut_cell_FT_Disc * get_cut_cell_disc()
void Operator_IJK_div(const IJK_Field_local_double &flux_x, const IJK_Field_local_double &flux_y, const IJK_Field_local_double &flux_zmin, const IJK_Field_local_double &flux_zmax, IJK_Field_double &resu, int k_layer, bool add) override
OpConvQuickIJKScalar_double()
virtual void Operator_IJK_div(const IJK_Field_local_double &flux_x, const IJK_Field_local_double &flux_y, const IJK_Field_local_double &flux_zmin, const IJK_Field_local_double &flux_zmax, IJK_Field_double &resu, int k_layer, bool add)
IJK_Field_vector3_double * current_fluxes_
bool runge_kutta_flux_correction_
IJK_Field_vector3_double * RK3_F_fluxes_