16#ifndef SurfaceVapeurIJKComputation_included
17#define SurfaceVapeurIJKComputation_included
19#include <IJK_Field_vector.h>
21#include <Linear_algebra_tools_impl.h>
22#include <Maillage_FT_IJK.h>
23#include <medcoupling++.h>
25#include <MEDCouplingCMesh.hxx>
26#include <MEDCouplingFieldDouble.hxx>
27#include <MEDCouplingUMesh.hxx>
28#include <MEDLoader.hxx>
30using MEDCoupling::DataArrayDouble;
31using MEDCoupling::DataArrayIdType;
32using MEDCoupling::DataArrayInt;
33using MEDCoupling::MCAuto;
34using MEDCoupling::MEDCouplingCMesh;
35using MEDCoupling::MEDCouplingFieldDouble;
36using MEDCoupling::MEDCouplingUMesh;
37using DAI = MCAuto<DataArrayInt>;
38using DAD = MCAuto<DataArrayDouble>;
39using MCT = MCAuto<DataArrayIdType>;
40using MCC = MCAuto<MEDCouplingCMesh>;
41using MCU = MCAuto<MEDCouplingUMesh>;
42using MCF = MCAuto<MEDCouplingFieldDouble>;
46static const int max_authorized_nb_of_groups_ = 3;
47static const int max_authorized_nb_of_components_ = 3;
48static const int dir_ = 3;
49static const double EPS_ = 1.e-12;
51void get_coo_to_keep(
const int d, std::vector<int>& COO2KEEP);
52void get_coo_inv_to_keep(
const int d, std::array<int, 3>& COOINV);
53void print_int_med(
const DataArrayIdType *data);
54void print_double_med(
const DataArrayDouble *data);
55void print_umesh_conn(
const DataArrayIdType *data);
67 const IJK_Field_double& indicatrice_ft,
68 const IJK_Field_vector3_double& normale_of_interf,
69 IJK_Field_vector3_double& surface_vapeur_par_face,
97 const IJK_Field_vector3_double& normale_of_interf,
98 IJK_Field_vector3_double& surfaces,
114 const DataArrayIdType *cIcellsIdinMesh0,
const DataArrayIdType *cellsIdinMesh0,
115 DataArrayDouble *vect)
const;
123 void slice_bubble(
const double intersect_pt,
const int dim, DataArrayIdType *cutcellsid,
bool& plan_cut_some_bubble,
124 MCU& mesh1dfil)
const;
137 void findCommonTuples(
const DataArrayIdType *mesh_merge,
const mcIdType n_tot_mesh2d, DataArrayIdType *tab_id_subcells,
138 DataArrayIdType *tab_id_cut_cells)
const;
148 std::array<int, 3>& ijk_coo)
const;
159 const IJK_Field_vector3_double& normale_of_interf,
160 const DataArrayDouble *vector,
161 const int dim,
const int i_plan,
const int nx,
162 const DataArrayIdType *ids_diph,
163 DataArrayIdType *ids_IJ_cell_from_diph)
const;
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
OBS_PTR(Domaine_IJK) ref_domaine_
static void get_maillage_MED_from_IJK_FT(MEDCouplingUMesh *maillage_bulles_mcu, const Maillage_FT_IJK &maillage_bulles_ft_ijk)
void set_maillage_MED(const Maillage_FT_IJK &maillage_ft_ijk)
void slice_bubble(const double intersect_pt, const int dim, DataArrayIdType *cutcellsid, bool &plan_cut_some_bubble, MCU &mesh1dfil) const
~SurfaceVapeurIJKComputation()
SurfaceVapeurIJKComputation()
void check_if_vect_is_from_liquid2vapor(const IJK_Field_vector3_double &normale_of_interf, const DataArrayDouble *vector, const int dim, const int i_plan, const int nx, const DataArrayIdType *ids_diph, DataArrayIdType *ids_IJ_cell_from_diph) const
void findCommonTuples(const DataArrayIdType *mesh_merge, const mcIdType n_tot_mesh2d, DataArrayIdType *tab_id_subcells, DataArrayIdType *tab_id_cut_cells) const
int compute_surf_and_barys(const Maillage_FT_IJK &maillage_ft_ijk, const IJK_Field_double &indicatrice_ft, const IJK_Field_vector3_double &normale_of_interf, IJK_Field_vector3_double &surface_vapeur_par_face, FixedVector< IJK_Field_vector3_double, 3 > &barycentre_vapeur_par_face)
void get_IJK_ind_from_ind2d(const int dim, const int i_plan, const trustIdType i_2d, const int nx, std::array< int, 3 > &ijk_coo) const
void get_vect_from_sub_cells_tuple(const int dim, const DataArrayDouble *bary0, const DataArrayIdType *cIcellsIdinMesh0, const DataArrayIdType *cellsIdinMesh0, DataArrayDouble *vect) const
static void order_elem_mesh_filaire(MEDCouplingUMesh *mesh1D)
void initialize(const Domaine_IJK &splitting)
int rempli_surface_vapeur_par_face_interieur_bulles(IJK_Field_vector3_double &surface_vapeur_par_face, const IJK_Field_double &indicatrice_ft)
bool compute_surf_mouillees_
void set_compute_surfaces_mouillees()
void calculer_surfaces_et_barys_faces_mouillees_vapeur(const Maillage_FT_IJK &maillage_ft_ijk, const IJK_Field_vector3_double &normale_of_interf, IJK_Field_vector3_double &surfaces, FixedVector< IJK_Field_vector3_double, 3 > &barycentres)