TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
IJK_Ghost_Fluid_Fields.h
1/****************************************************************************
2* Copyright (c) 2024, 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 IJK_Ghost_Fluid_Fields_included
17#define IJK_Ghost_Fluid_Fields_included
18
19#include <Objet_U.h>
20#include <IJK_Field_vector.h>
21#include <IJK_Field.h>
22#include <Champs_compris_IJK_interface.h>
23#include <Champs_compris_IJK.h>
24
26
28{
29
30 Declare_instanciable( IJK_Ghost_Fluid_Fields ) ;
31
32public :
33
34 void associer(const Probleme_FTD_IJK_base& ijk_ft);
35 void initialize(const Domaine_IJK& splitting);
36
37 // Interface Champs_compris_IJK_interface:
38 bool has_champ(const Motcle& nom) const override;
39 bool has_champ(const Motcle& nom, OBS_PTR(Champ_base)& ref_champ) const { /* not used */ throw; }
40 bool has_champ_vectoriel(const Motcle& nom) const override { return false; }
41 const IJK_Field_double& get_IJK_field(const Motcle& nom) override;
42 const IJK_Field_vector3_double& get_IJK_field_vector(const Motcle& nom) override;
43 static void Fill_postprocessable_fields(std::vector<FieldInfo_t>& chps);
44 void get_noms_champs_postraitables(Noms& noms,Option opt=NONE) const;
45
48
50
55
61 void retrieve_ghost_fluid_params(const int& compute_distance,
62 const int& compute_curvature,
63 const int& n_iter_distance,
64 const int& avoid_gfm_parallel_calls,
65 const IJK_Field_local_double& boundary_flux_kmin,
66 const IJK_Field_local_double& boundary_flux_kmax)
67 {
68 compute_distance_ = compute_distance;
69 compute_curvature_ = compute_curvature;
70 n_iter_distance_ = n_iter_distance;
71 avoid_gfm_parallel_calls_ = avoid_gfm_parallel_calls;
74 boundary_flux_kmin_ = boundary_flux_kmin;
75 boundary_flux_kmax_ = boundary_flux_kmax;
76 }
77
78 const IJK_Field_double& get_eulerian_distance_ft() const
79 {
81 }
82 const IJK_Field_double& get_eulerian_distance_ns() const
83 {
85 }
86
87 const IJK_Field_vector3_double& get_eulerian_normal_vectors_ft() const
88 {
90 }
91 const IJK_Field_vector3_double& get_eulerian_facets_barycentre_ft() const
92 {
94 }
95 const IJK_Field_vector3_double& get_eulerian_normal_vectors_ns() const
96 {
98 }
99 const IJK_Field_vector3_double& get_eulerian_normal_vectors_ns_normed() const
100 {
102 }
103 const IJK_Field_vector3_double& get_eulerian_facets_barycentre_ns() const
104 {
106 }
107
108 const IJK_Field_double& get_eulerian_curvature_ft() const
109 {
111 }
112 const IJK_Field_double& get_eulerian_curvature_ns() const
113 {
115 }
116 const IJK_Field_double& get_eulerian_interfacial_area_ft() const
117 {
119 }
120 const IJK_Field_double& get_eulerian_interfacial_area_ns() const
121 {
123 }
124
125 const IJK_Field_double& get_eulerian_rising_velocities() const
126 {
128 }
129
130 const IJK_Field_vector3_int& get_dummy_int_vect() const
131 {
132 return dummy_int_vect_;
133 }
134 const IJK_Field_vector3_double& get_dummy_double_vect() const
135 {
136 return dummy_double_vect_;
137 }
138 const IJK_Field_int& get_dummy_int_field() const
139 {
140 return dummy_int_field_;
141 }
142 const IJK_Field_double& get_dummy_double_field() const
143 {
144 return dummy_double_field_;
145 }
146
147protected :
148 IJK_Field_double eulerian_distance_ft_;
149 IJK_Field_double eulerian_distance_ns_;
150
151 IJK_Field_vector3_double eulerian_normal_vectors_ft_;
152 IJK_Field_vector3_double eulerian_facets_barycentre_ft_;
153 IJK_Field_vector3_double eulerian_normal_vectors_ns_;
154 IJK_Field_vector3_double eulerian_normal_vectors_ns_normed_;
155 IJK_Field_vector3_double eulerian_facets_barycentre_ns_;
156
157 IJK_Field_vector3_double tmp_old_vector_val_;
158 IJK_Field_vector3_double tmp_new_vector_val_;
159
160 IJK_Field_int tmp_interf_cells_;
165
166 IJK_Field_double tmp_old_dist_val_;
167 IJK_Field_double tmp_new_dist_val_;
168 IJK_Field_double tmp_old_curv_val_;
169 IJK_Field_double tmp_new_curv_val_;
170
171 IJK_Field_double eulerian_curvature_ft_;
172 IJK_Field_double eulerian_curvature_ns_;
175
177
178 IJK_Field_vector3_int dummy_int_vect_;
179 IJK_Field_vector3_double dummy_double_vect_;
180 IJK_Field_int dummy_int_field_;
181 IJK_Field_double dummy_double_field_;
182
190 IJK_Field_local_double boundary_flux_kmin_;
191 IJK_Field_local_double boundary_flux_kmax_;
192
195
196
198};
199
200#endif /* IJK_Ghost_Fluid_Fields_included */
classe Champ_base Cette classe est la base de la hierarchie des champs.
Definition Champ_base.h:43
Similar to Champs_compris_interface but for IJK scalar and vector fields.
Same as Champs_compris, but specialised for IJK fields and also supports quering for vectorial fields...
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Definition Domaine_IJK.h:47
const IJK_Field_double & get_eulerian_distance_ns() const
const IJK_Field_double & get_IJK_field(const Motcle &nom) override
IJK_Field_local_double boundary_flux_kmin_
void get_noms_champs_postraitables(Noms &noms, Option opt=NONE) const
bool has_champ_vectoriel(const Motcle &nom) const override
IJK_Field_vector3_double tmp_old_vector_val_
IJK_Field_vector3_double dummy_double_vect_
IJK_Field_double eulerian_distance_ns_
IJK_Field_double eulerian_distance_ft_
const IJK_Field_double & get_dummy_double_field() const
static void Fill_postprocessable_fields(std::vector< FieldInfo_t > &chps)
IJK_Field_vector3_double eulerian_normal_vectors_ns_
const IJK_Field_double & get_eulerian_rising_velocities() const
IJK_Field_double eulerian_curvature_ft_
const IJK_Field_int & get_dummy_int_field() const
IJK_Field_vector3_double tmp_new_vector_val_
const IJK_Field_double & get_eulerian_distance_ft() const
const IJK_Field_vector3_double & get_eulerian_normal_vectors_ns_normed() const
IJK_Field_vector3_double eulerian_facets_barycentre_ft_
IJK_Field_local_double boundary_flux_kmax_
IJK_Field_vector3_double eulerian_facets_barycentre_ns_
const IJK_Field_vector3_double & get_dummy_double_vect() const
const IJK_Field_double & get_eulerian_curvature_ns() const
IJK_Field_double eulerian_interfacial_area_ft_
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base)&ref_champ) const
const IJK_Field_double & get_eulerian_interfacial_area_ft() const
const IJK_Field_vector3_double & get_eulerian_facets_barycentre_ft() const
IJK_Field_double eulerian_rising_velocities_
void associer(const Probleme_FTD_IJK_base &ijk_ft)
void initialize(const Domaine_IJK &splitting)
FixedVector< ArrOfInt, 3 > propagated_cells_indices_
IJK_Field_vector3_double eulerian_normal_vectors_ns_normed_
const IJK_Field_vector3_double & get_IJK_field_vector(const Motcle &nom) override
const IJK_Field_vector3_double & get_eulerian_normal_vectors_ns() const
OBS_PTR(Probleme_FTD_IJK_base) ref_ijk_ft_
IJK_Field_double eulerian_curvature_ns_
const IJK_Field_vector3_int & get_dummy_int_vect() const
IJK_Field_vector3_double eulerian_normal_vectors_ft_
bool has_champ(const Motcle &nom) const override
IJK_Field_vector3_int dummy_int_vect_
const IJK_Field_vector3_double & get_eulerian_normal_vectors_ft() const
void retrieve_ghost_fluid_params(const int &compute_distance, const int &compute_curvature, const int &n_iter_distance, const int &avoid_gfm_parallel_calls, const IJK_Field_local_double &boundary_flux_kmin, const IJK_Field_local_double &boundary_flux_kmax)
FixedVector< ArrOfInt, 3 > gfm_first_cells_indices_
Champs_compris_IJK champs_compris_
const IJK_Field_vector3_double & get_eulerian_facets_barycentre_ns() const
const IJK_Field_double & get_eulerian_curvature_ft() const
const IJK_Field_double & get_eulerian_interfacial_area_ns() const
void enforce_distance_curvature_values_for_post_processings()
FixedVector< ArrOfInt, 3 > interf_cells_indices_
IJK_Field_double eulerian_interfacial_area_ns_
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
Un tableau de chaine de caracteres (VECT(Nom)).
Definition Noms.h:26
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55