16#ifndef Corrige_flux_FT_base_included
17#define Corrige_flux_FT_base_included
19#include <MonofluidVar.h>
20#include <IJK_Field_vector.h>
21#include <Boundary_Conditions_Thermique.h>
22#include <Domaine_IJK.h>
25#include <IJK_Interfaces.h>
26#include <IJK_Lata_writer.h>
27#include <Intersection_Interface_ijk.h>
28#include <Ouvrir_fichier.h>
30#include <ParcoursIJKDir.h>
31#include <IJK_One_Dimensional_Subproblems.h>
50 const IJK_Field_double& field,
57 const IJK_Field_double& field,
77 const int k_layer,
const int dir)=0;
80 const int k_layer,
const int dir) { ; };
93 const double dist,
const DoubleTab& positions,
const DoubleTab& normale,
94 ArrOfDouble& temperature_interp, ArrOfDouble& flux_normal_interp,
95 ArrOfDouble& temp_liqu, ArrOfDouble& temp_vap, DoubleTab& coo_liqu,
96 DoubleTab& coo_vap)
const = 0 ;
115 const int& neighbours_colinearity_weighting,
116 const int& keep_max_flux_correction,
117 const int& smooth_temperature_field) { ; };
122 const int& use_cell_neighbours_for_fluxes_spherical_correction,
123 const int& find_reachable_fluxes,
124 const int& use_reachable_fluxes,
125 const int& keep_first_reachable_fluxes,
126 const int& store_flux_operators_for_energy_balance) { ; };
130 IJK_Field_vector3_double& cell_faces_neighbours_corrected_velocity_temperature,
131 IJK_Field_vector3_double& cell_faces_neighbours_corrected_convective,
132 IJK_Field_vector3_double& cell_faces_neighbours_corrected_diffusive,
133 IJK_Field_vector3_double& neighbours_weighting_colinearity) { ; };
135 IJK_Field_int& neighbours_weighting,
136 IJK_Field_double& neighbours_weighting_colinearity) { ; };
138 IJK_Field_double& temperature_neighbours,
139 IJK_Field_int& neighbours_weighting,
140 IJK_Field_double& neighbours_weighting_colinearity)
const { ; };
143 IJK_Field_vector3_double& cell_faces_corrected_convective,
144 IJK_Field_vector3_double& cell_faces_corrected_diffusive) { ; };
147 const IJK_Field_int& neighbours_temperature_to_correct,
148 IJK_Field_vector3_int& cell_faces_neighbours_corrected_min_max_bool,
149 const int& max_flux_per_dir,
150 const int& check_cell_center_neighbour,
151 const int& remove_external_neighbour_values,
152 IJK_Field_int& neighbours_temperature_to_correct_trimmed) { ; };
154 const IJK_Field_int& neighbours_temperature_to_correct,
155 IJK_Field_vector3_int& cell_faces_neighbours_corrected_min_max_bool,
156 const int& max_flux_per_dir,
157 const int& check_cell_center_neighbour,
158 const int& remove_external_neighbour_values,
159 IJK_Field_int& neighbours_temperature_to_correct_trimmed) { ; };
161 const IJK_Field_vector3_int& cell_faces_neighbours_corrected_all_bool,
162 const IJK_Field_vector3_double& cell_faces_neighbours_fluxes_corrected,
163 const int& fluxes_type) { ; };
166 const int& copy_temperature_on_every_procs) { ; };
172 const IJK_Field_double *
field_ =
nullptr;
: class Corrige_flux_FT API pour modifier un champ de flux à partir de donnees à l'interface....
Intersection_Interface_ijk_cell * intersection_ijk_cell_
virtual void initialize_with_subproblems(const Domaine_IJK &splitting, const IJK_Field_double &field, const IJK_Interfaces &interfaces, const Probleme_FTD_IJK_base &ijk_ft, Intersection_Interface_ijk_face &intersection_ijk_face, Intersection_Interface_ijk_cell &intersection_ijk_cell, IJK_One_Dimensional_Subproblems &thermal_local_subproblems)
virtual void set_distance_cell_faces_from_lrs(const int &distance_cell_faces_from_lrs)
virtual void set_convection_diffusion_correction(const int &convective_flux_correction, const int &diffusive_flux_correction)
virtual void compute_temperature_cell_centre(IJK_Field_double &temperature) const
bool test_if_stencil_inclut_bout_interface_vapeur() const
virtual void replace_cell_neighbours_thermal_convective_diffusive_fluxes_faces(const IJK_Field_vector3_int &cell_faces_neighbours_corrected_min_max_bool, const IJK_Field_vector3_int &cell_faces_neighbours_corrected_all_bool, const IJK_Field_vector3_double &cell_faces_neighbours_fluxes_corrected, const int &fluxes_type)
virtual void corrige_flux_diff_faceIJ(IJK_Field_local_double *const flux, const int k_layer, const int dir)
virtual void complete_thermal_fluxes_face_centre(const int &fluxes_correction_conservations)
virtual void set_convection_negligible(const int &convection_negligible)
bool test_if_stencil_inclut_bout_interface_liquide() const
OBS_PTR(IJK_Interfaces) interfaces_
virtual void set_zero_temperature_increment(IJK_Field_double &d_temperature) const
virtual void set_eulerian_normal_vectors_ns_normed(const IJK_Field_vector3_double *eulerian_normal_vectors_ns_normed)
virtual void set_correction_cell_faces_neighbours(const int &find_cell_neighbours_for_fluxes_spherical_correction, const int &use_cell_neighbours_for_fluxes_spherical_correction, const int &find_reachable_fluxes, const int &use_reachable_fluxes, const int &keep_first_reachable_fluxes, const int &store_flux_operators_for_energy_balance)
virtual void compute_min_max_ijk_any_reachable_fluxes(const IJK_Field_vector3_int &cell_faces_neighbours_corrected_all_bool, const IJK_Field_int &neighbours_temperature_to_correct, IJK_Field_vector3_int &cell_faces_neighbours_corrected_min_max_bool, const int &max_flux_per_dir, const int &check_cell_center_neighbour, const int &remove_external_neighbour_values, IJK_Field_int &neighbours_temperature_to_correct_trimmed)
virtual void set_temperature_fluxes_periodic_sharing_strategy_on_processors(const int ©_fluxes_on_every_procs, const int ©_temperature_on_every_procs)
virtual void store_cell_faces_corrected(IJK_Field_vector3_int &cell_faces_corrected_bool, IJK_Field_vector3_double &cell_faces_corrected_convective, IJK_Field_vector3_double &cell_faces_corrected_diffusive)
virtual void set_correction_cell_neighbours(const int &correct_temperature_cell_neighbours, const int &neighbours_colinearity_weighting, const int &keep_max_flux_correction, const int &smooth_temperature_field)
virtual void compute_cell_neighbours_faces_indices_for_spherical_correction(const int &n_iter_distance)
virtual void calcul_temperature_flux_interface(const IJK_Field_double &temperature, const double ldal, const double ldav, const double dist, const DoubleTab &positions, const DoubleTab &normale, ArrOfDouble &temperature_interp, ArrOfDouble &flux_normal_interp, ArrOfDouble &temp_liqu, ArrOfDouble &temp_vap, DoubleTab &coo_liqu, DoubleTab &coo_vap) const =0
OBS_PTR(Probleme_FTD_IJK_base) ref_ijk_ft_
OBS_PTR(Domaine_IJK) domaine_
Intersection_Interface_ijk_face * intersection_ijk_face_
virtual void compute_thermal_diffusive_fluxes(const int &last_flux)
virtual void update_intersections()
virtual void correct_flux_spherical(Simd_double &a, Simd_double &b, const int &i, const int &j, const int &k_layer, const int dir)
virtual void compute_ijk_pure_faces_indices()
virtual void compute_thermal_convective_fluxes(const int &last_flux)
virtual void initialize(const Domaine_IJK &dom, const IJK_Field_double &field, const IJK_Interfaces &interfaces, const Probleme_FTD_IJK_base &ijk_ft, Intersection_Interface_ijk_face &intersection_ijk_face, Intersection_Interface_ijk_cell &intersection_ijk_cell)
virtual void initialise_cell_neighbours_indices_to_correct()
virtual void set_debug(const int &debug)
virtual void set_cell_faces_neighbours_corrected_bool(IJK_Field_vector3_int &cell_faces_neighbours_corrected_bool)
virtual void compute_cell_neighbours_faces_indices_to_correct(IJK_Field_vector3_int &cell_faces_neighbours_corrected_bool, IJK_Field_vector3_double &cell_faces_neighbours_corrected_velocity_temperature, IJK_Field_vector3_double &cell_faces_neighbours_corrected_convective, IJK_Field_vector3_double &cell_faces_neighbours_corrected_diffusive, IJK_Field_vector3_double &neighbours_weighting_colinearity)
const IJK_Field_double * field_
virtual void set_diffusion_negligible(const int &diffusion_negligible)
virtual void compute_min_max_ijk_reachable_fluxes(const IJK_Field_vector3_int &cell_faces_neighbours_corrected_all_bool, const IJK_Field_int &neighbours_temperature_to_correct, IJK_Field_vector3_int &cell_faces_neighbours_corrected_min_max_bool, const int &max_flux_per_dir, const int &check_cell_center_neighbour, const int &remove_external_neighbour_values, IJK_Field_int &neighbours_temperature_to_correct_trimmed)
virtual void sort_ijk_intersections_subproblems_indices_by_k_layers()
virtual void corrige_flux_faceIJ(IJK_Field_local_double *const flux, const int k_layer, const int dir)=0
void set_physical_parameters(const double rhocpl, const double rhocpv, const double ldal, const double ldav)
virtual void clear_vectors()
virtual void set_fluxes_feedback_params(const int discrete_integral, const int levels)
virtual void replace_temperature_cell_centre_neighbours(IJK_Field_double &temperature, IJK_Field_double &temperature_neighbours, IJK_Field_int &neighbours_weighting, IJK_Field_double &neighbours_weighting_colinearity) const
virtual void compute_temperature_cell_centre_neighbours(IJK_Field_double &temperature_neighbours, IJK_Field_int &neighbours_weighting, IJK_Field_double &neighbours_weighting_colinearity)
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...