TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Post_Processing_Hydrodynamic_Forces.h
1/****************************************************************************
2* Copyright (c) 2025, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Post_Processing_Hydrodynamic_Forces_included
17#define Post_Processing_Hydrodynamic_Forces_included
18
19#include <Convection_Diffusion_Temperature_FT_Disc.h>
20#include <Maillage_FT_Disc.h>
21#include <Equation_base.h>
22#include <Matrice_Dense.h>
23#include <TRUST_Ref.h>
24#include <Objet_U_With_Params.h>
25
28
30{
31 Declare_instanciable_with_param(Post_Processing_Hydrodynamic_Forces);
32
33public:
34
35 int lire_motcle_non_standard(const Motcle&, Entree&) override;
36
38 { ptr_eq_transport_=ptr_eq_transport; }
40 { ptr_eq_ns_=eqn; }
42 { ptr_eq_temp_ = eqn; }
43
48 virtual void compute_hydrodynamic_forces();
50
51 const DoubleVect& get_pressure_fa7() const { return pressure_fa7_; }
52 const DoubleVect& get_total_surface_interf() const { return total_surface_interf_; }
53 const DoubleVect& get_heat_transfer() const { return total_heat_transfer_; }
54 const DoubleTab& get_pressure_force() const { return total_pressure_force_; }
55 const DoubleTab& get_friction_force() const { return total_friction_force_; }
56 const DoubleTab& get_pressure_force_fa7() const { return pressure_force_fa7_; }
57 const DoubleTab& get_friction_force_fa7() const { return friction_force_fa7_; }
58 const DoubleTab& get_heat_transfer_fa7() const { return heat_transfer_fa7_; }
59 const DoubleTab& get_U_P1() const { return U_P1_; }
60 const DoubleTab& get_U_P2() const { return U_P2_; }
61 const DoubleTab& get_U_P2_moy() const { return U_P2_moy_; }
62 const DoubleTab& get_prop_fa7_ok_P2() const { return proportion_fa7_ok_UP2_; }
63 const DoubleTab& get_prop_P2_fluid() const { return prop_P2_fluid_compo_; }
64 const DoubleTab& get_sigma_xx_fa7() const { return sigma_xx_fa7_; }
65 const DoubleTab& get_sigma_xy_fa7() const { return sigma_xy_fa7_; }
66 const DoubleTab& get_sigma_xz_fa7() const { return sigma_xz_fa7_; }
67 const DoubleTab& get_sigma_yx_fa7() const { return sigma_yx_fa7_; }
68 const DoubleTab& get_sigma_yy_fa7() const { return sigma_yy_fa7_; }
69 const DoubleTab& get_sigma_yz_fa7() const { return sigma_yz_fa7_; }
70 const DoubleTab& get_sigma_zx_fa7() const { return sigma_zx_fa7_; }
71 const DoubleTab& get_sigma_zy_fa7() const { return sigma_zy_fa7_; }
72 const DoubleTab& get_sigma_zz_fa7() const { return sigma_zz_fa7_; }
73 const DoubleTab& get_dUdx_P1() { return dUdx_P1_; }
74 const DoubleTab& get_dUdy_P1() { return dUdy_P1_; }
75 const DoubleTab& get_dUdz_P1() { return dUdz_P1_; }
76 const DoubleTab& get_dVdx_P1() { return dVdx_P1_; }
77 const DoubleTab& get_dVdy_P1() { return dVdy_P1_; }
78 const DoubleTab& get_dVdz_P1() { return dVdz_P1_; }
79 const DoubleTab& get_dWdx_P1() { return dWdx_P1_; }
80 const DoubleTab& get_dWdy_P1() { return dWdy_P1_; }
81 const DoubleTab& get_dWdz_P1() { return dWdz_P1_; }
82 const DoubleTab& get_dUdx_P2() { return dUdx_P2_; }
83 const DoubleTab& get_dUdy_P2() { return dUdy_P2_; }
84 const DoubleTab& get_dUdz_P2() { return dUdz_P2_; }
85 const DoubleTab& get_dVdx_P2() { return dVdx_P2_; }
86 const DoubleTab& get_dVdy_P2() { return dVdy_P2_; }
87 const DoubleTab& get_dVdz_P2() { return dVdz_P2_; }
88 const DoubleTab& get_dWdx_P2() { return dWdx_P2_; }
89 const DoubleTab& get_dWdy_P2() { return dWdy_P2_; }
90 const DoubleTab& get_dWdz_P2() { return dWdz_P2_; }
91
99
104
105 virtual void resize_and_init_tables(int nb_compo_tot);
106
120
121protected:
125
126 int elem_faces_for_interp(int num_face,int i) const;
127 int face_voisins_for_interp(int num_face,int i) const;
128
129 int trilinear_interpolation_face(const DoubleTab& valeurs_champ,
130 DoubleTab& coord,
131 DoubleTab& resu);
132 int trilinear_interpolation_elem(const DoubleTab& valeurs_champ,
133 DoubleTab& coord,
134 DoubleTab& resu);
135 int trilinear_interpolation_elem(const DoubleTab& valeurs_champ,
136 DoubleTab& coord,
137 DoubleTab& resu,
138 const int is_P2,
140 Thermal_correction_discretization_method discr);
141 int trilinear_interpolation_gradU_face(const DoubleTab& valeurs_champ,
142 DoubleTab& coord,
143 DoubleTab& resu);
144 int trilinear_interpolation_gradU_elem_P1(const DoubleTab& valeurs_champ,
145 DoubleTab& coord,
146 DoubleTab& resu);
147 int trilinear_interpolation_gradU_elem(const DoubleTab& valeurs_champ,
148 DoubleTab& coord,
149 DoubleTab& resu);
150 int trilinear_interpolation_face_sommets(const DoubleTab& valeurs_champ,
151 DoubleTab& coord,
152 DoubleTab& resu);
153
154 double compute_viscosity_edges_sphere(int face1, int face2, int particle_id);
155 double find_neighboring_elements(DoubleVect& coord_elem_interp,
156 IntVect& neighboring_elements,
157 const int sauv_list_P1=0,
158 const int num_fa7=-1);
159
160 void find_neighboring_faces (DoubleVect& coord_elem_interp,
161 IntVect& neighboring_faces,
162 int orientation) const;
163 void find_neighboring_faces_xyz (DoubleVect& coord_elem_interp, IntTab& neighboring_faces) const;
164
165 virtual void resize_sigma(int nb_fa7);
166 virtual void resize_gradU_P1(int nb_fa7);
167 virtual void resize_gradU_P2(int nb_fa7);
168 virtual void resize_data_fa7(int nb_fa7);
169 void resize_coord_neighbor_fluid_fa7(int nb_fa7);
171 void fill_sigma(int fa7, Matrice_Dense stress_tensor);
172 void fill_gradU_P1(int fa7, DoubleTab gradU_P1);
173 void fill_gradU_P2(int fa7, DoubleTab gradU_P2);
174
180
181 virtual void compute_pressure_force_trilinear_linear(int nb_fa7,
182 const Maillage_FT_Disc& mesh,
184 Thermal_correction_discretization_method
185 thermal_correction_discretization_method,
186 const IntVect& compo_connexes_fa7,
187 const ArrOfDouble& fa7_surface,
188 const DoubleTab& tab_fa7_normal);
189
190 virtual void compute_friction_force_complet_tensor(int nb_fa7,
191 const Maillage_FT_Disc& mesh,
192 const IntVect& compo_connexes_fa7,
193 const ArrOfDouble& fa7_surface,
194 const DoubleTab& tab_fa7_normal);
195
196
197 virtual void compute_friction_force_projected_tensor(int nb_fa7,
198 const Maillage_FT_Disc& mesh,
199 const IntVect& compo_connexes_fa7,
200 const ArrOfDouble& fa7_surface,
201 const DoubleTab& tab_fa7_normal);
202
203 virtual void compute_neighbors_coordinates_fluid_fa7(const int nb_fa7,
204 const int is_discr_elem_diph,
205 const DoubleTab& gravity_center_fa7,
206 const Maillage_FT_Disc& mesh,
207 const DoubleTab& tab_fa7_normal,
208 const IntTab& particles_eulerian_id_number);
209
210 void compute_U_P2_moy(const int nb_particles_tot);
211 void compute_proportion_fa7_ok_and_is_fluid_P2(const int nb_particles_tot);
212
220
223
230
235 DoubleVect pressure_fa7_;
236
237 mutable IntTab list_elem_P1_all_;
238 mutable IntTab list_elem_P1_;
241
249 DoubleTab U_P2_moy_;
250 DoubleTab U_P1_;
251 DoubleTab U_P2_;
252
253 DoubleTab sigma_xx_fa7_;
254 DoubleTab sigma_xy_fa7_;
255 DoubleTab sigma_xz_fa7_;
256 DoubleTab sigma_yx_fa7_;
257 DoubleTab sigma_yy_fa7_;
258 DoubleTab sigma_yz_fa7_;
259 DoubleTab sigma_zx_fa7_;
260 DoubleTab sigma_zy_fa7_;
261 DoubleTab sigma_zz_fa7_;
262
263 DoubleTab dUdx_P1_;
264 DoubleTab dUdy_P1_;
265 DoubleTab dUdz_P1_;
266 DoubleTab dVdx_P1_;
267 DoubleTab dVdy_P1_;
268 DoubleTab dVdz_P1_;
269 DoubleTab dWdx_P1_;
270 DoubleTab dWdy_P1_;
271 DoubleTab dWdz_P1_;
272
273 DoubleTab dUdx_P2_;
274 DoubleTab dUdy_P2_;
275 DoubleTab dUdz_P2_;
276 DoubleTab dVdx_P2_;
277 DoubleTab dVdy_P2_;
278 DoubleTab dVdz_P2_;
279 DoubleTab dWdx_P2_;
280 DoubleTab dWdy_P2_;
281 DoubleTab dWdz_P2_;
282
289};
290
291#endif
: class Maillage_FT_Disc Cette classe decrit un maillage:
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
Inherits from Objet_U, adds the very common method set_param for the Objet_U hierarchy.
friend class Entree
Definition Objet_U.h:76
OBS_PTR(Convection_Diffusion_Temperature_FT_Disc) ptr_eq_temp_
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
void find_neighboring_faces(DoubleVect &coord_elem_interp, IntVect &neighboring_faces, int orientation) const
virtual void compute_friction_force_projected_tensor(int nb_fa7, const Maillage_FT_Disc &mesh, const IntVect &compo_connexes_fa7, const ArrOfDouble &fa7_surface, const DoubleTab &tab_fa7_normal)
void associate_temp_equation(const Convection_Diffusion_Temperature_FT_Disc &eqn)
const Method_friction_force_computation & get_method_friction_force_computation() const
virtual void compute_neighbors_coordinates_fluid_fa7(const int nb_fa7, const int is_discr_elem_diph, const DoubleTab &gravity_center_fa7, const Maillage_FT_Disc &mesh, const DoubleTab &tab_fa7_normal, const IntTab &particles_eulerian_id_number)
void compute_proportion_fa7_ok_and_is_fluid_P2(const int nb_particles_tot)
int trilinear_interpolation_elem(const DoubleTab &valeurs_champ, DoubleTab &coord, DoubleTab &resu)
int trilinear_interpolation_face_sommets(const DoubleTab &valeurs_champ, DoubleTab &coord, DoubleTab &resu)
void associate_ns_equation(const Navier_Stokes_FT_Disc &eqn)
int trilinear_interpolation_gradU_elem(const DoubleTab &valeurs_champ, DoubleTab &coord, DoubleTab &resu)
void fill_sigma(int fa7, Matrice_Dense stress_tensor)
void find_neighboring_faces_xyz(DoubleVect &coord_elem_interp, IntTab &neighboring_faces) const
OBS_PTR(Navier_Stokes_FT_Disc) ptr_eq_ns_
const Method_pressure_force_computation & get_method_pressure_force_computation() const
int trilinear_interpolation_face(const DoubleTab &valeurs_champ, DoubleTab &coord, DoubleTab &resu)
virtual void compute_pressure_force_trilinear_linear(int nb_fa7, const Maillage_FT_Disc &mesh, Convection_Diffusion_Temperature_FT_Disc::Thermal_correction_discretization_method thermal_correction_discretization_method, const IntVect &compo_connexes_fa7, const ArrOfDouble &fa7_surface, const DoubleTab &tab_fa7_normal)
OBS_PTR(Transport_Interfaces_FT_Disc) ptr_eq_transport_
virtual void compute_friction_force_complet_tensor(int nb_fa7, const Maillage_FT_Disc &mesh, const IntVect &compo_connexes_fa7, const ArrOfDouble &fa7_surface, const DoubleTab &tab_fa7_normal)
double find_neighboring_elements(DoubleVect &coord_elem_interp, IntVect &neighboring_elements, const int sauv_list_P1=0, const int num_fa7=-1)
void associate_transport_equation(Transport_Interfaces_FT_Disc &ptr_eq_transport)
Method_pressure_force_computation method_pressure_force_computation_
const Location_stress_tensor & get_location_stress_tensor() const
int trilinear_interpolation_gradU_elem_P1(const DoubleTab &valeurs_champ, DoubleTab &coord, DoubleTab &resu)
int trilinear_interpolation_gradU_face(const DoubleTab &valeurs_champ, DoubleTab &coord, DoubleTab &resu)
Method_friction_force_computation method_friction_force_computation_
double compute_viscosity_edges_sphere(int face1, int face2, int particle_id)