TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Cut_cell_diffusion_flux_interface.cpp
1/****************************************************************************
2* Copyright (c) 2015 - 2016, 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#include <Cut_cell_diffusion_flux_interface.h>
17#include <Cut_cell_FT_Disc.h>
18#include <IJK_Thermal_base.h>
19#include <Process.h>
20
21#include <IJK_Navier_Stokes_tools.h>
22#include <IJK_Navier_Stokes_tools_cut_cell.h>
23
24void calculer_flux_interface_sur_facettes(METHODE_FLUX_INTERFACE methode_flux_interface,
25 bool next_time,
26 double coeff_liquid,
27 double coeff_vapour,
28 DoubleTabFT& interfacial_temperature,
29 DoubleTabFT& interfacial_phin_ai,
30 const Cut_field_double& cut_field_temperature,
31 const Facettes_Interp_FT& cut_cell_facettes_interpolation);
32void calculer_flux_interface_sur_maillage_ft(bool next_time,
33 const DoubleTabFT& interfacial_phin_ai,
34 const Cut_cell_FT_Disc& cut_cell_disc,
35 IJK_Field_double& flux_interface_ft);
36
37void ajout_flux_interface_a_divergence_simple(int phase, const DoubleTabFT_cut_cell_scalar& flux_interface_efficace, Cut_field_double& cut_field_d_field);
38
39void calcul_temperature_flux_interface(bool next_time,
40 bool cut_cell,
41 bool no_jump,
42 const Cut_field_double& cut_field,
43 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
44 const double ldal,
45 const double ldav,
46 DoubleTabFT& temperature_interp,
47 DoubleTabFT& flux_normal_interp);
48void calcul_velocity_flux_interface(bool next_time,
49 bool cut_cell,
50 bool no_jump,
51 bool no_transpose,
52 const Cut_field_vector3_double& cut_field_velocity,
53 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
54 const double ldal,
55 const double ldav,
56 FixedVector<DoubleTabFT, 3>& velocity_interp,
57 FixedVector<FixedVector<DoubleTabFT, 3>, 2>& flux_normal_interp);
58
59void calculer_flux_interface_implementation(bool next_time,
60 METHODE_FLUX_INTERFACE methode_flux_interface,
61 double lambda_liquid,
62 double lambda_vapour,
63 DoubleTabFT& interfacial_temperature,
64 DoubleTabFT& interfacial_phin_ai,
65 const Cut_field_double& cut_field_temperature,
66 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
67 IJK_Field_double& flux_interface_ft);
68
69void ajout_flux_interface_a_divergence_implementation(int phase, const DoubleTabFT_cut_cell_scalar& flux_interface_efficace, Cut_field_double& cut_field_d_field);
70
71
72
73void calculer_flux_interface_sur_facettes(METHODE_FLUX_INTERFACE methode_flux_interface,
74 bool next_time,
75 double coeff_liquid,
76 double coeff_vapour,
77 DoubleTabFT& interfacial_temperature,
78 DoubleTabFT& interfacial_phin_ai,
79 const Cut_field_double& cut_field_temperature,
80 const Facettes_Interp_FT& cut_cell_facettes_interpolation)
81{
82 if (methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_PURE || methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_CUT_CELL
83 || methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_PURE_NO_JUMP || methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_CUT_CELL_NO_JUMP)
84 {
85 bool cut_cell = (methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_CUT_CELL || methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_CUT_CELL_NO_JUMP);
86 bool no_jump = (methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_PURE_NO_JUMP || methode_flux_interface == METHODE_FLUX_INTERFACE::INTERP_CUT_CELL_NO_JUMP);
87
88 if (!cut_cell)
89 {
90 if (next_time)
91 {
92 assert(cut_field_temperature.check_agreement_diph_pure_cellules_finalement_pures());
93 }
94 else
95 {
96 assert(cut_field_temperature.check_agreement_diph_pure_cellules_initialement_pures());
97 }
98
99 assert(cut_field_temperature.check_agreement_tableau_pure_cellules_diphasiques(next_time));
100 }
101
102 calcul_temperature_flux_interface(next_time,
103 cut_cell,
104 no_jump,
105 cut_field_temperature,
106 cut_cell_facettes_interpolation,
107 coeff_liquid,
108 coeff_vapour,
109 interfacial_temperature,
110 interfacial_phin_ai);
111 }
112 else
113 {
114 Cerr << "Methode non reconnue pour le calcul du flux a l'interface." << finl;
116 }
117
118 const Maillage_FT_IJK& maillage = next_time ? cut_cell_facettes_interpolation.maillage_ft_ijk() : cut_cell_facettes_interpolation.old_maillage_ft_ijk();
119 const ArrOfDouble& surface_facettes = maillage.get_update_surface_facettes();
120 const int nb_facettes = maillage.nb_facettes();
121 for (int fa7 = 0; fa7 < nb_facettes; fa7++)
122 {
123 interfacial_phin_ai(fa7) *= surface_facettes(fa7);
124 interfacial_temperature(fa7) *= surface_facettes(fa7);
125 }
126}
127
128void calculer_flux_interface_sur_maillage_ft(bool next_time,
129 const DoubleTabFT& interfacial_phin_ai,
130 const Cut_cell_FT_Disc& cut_cell_disc,
131 IJK_Field_double& flux_interface_ft)
132{
133 // Calcul des flux sur le maillage FT
134 {
135 const Maillage_FT_IJK& mesh = next_time ? cut_cell_disc.get_interfaces().maillage_ft_ijk() : cut_cell_disc.get_interfaces().old_maillage_ft_ijk();
137
138 const int ni = flux_interface_ft.ni();
139 const int nj = flux_interface_ft.nj();
140 const int nk = flux_interface_ft.nk();
141
142 // Initialisation
143 {
144 for (int k = 0; k < nk; k++)
145 {
146 for (int j = 0; j < nj; j++)
147 {
148 for (int i = 0; i < ni; i++)
149 {
150 flux_interface_ft(i, j, k) = 0.;
151 }
152 }
153 }
154 }
155
156 // Calcul pour les faces coupees par l'interface
157 {
158 const ArrOfInt& index_elem = intersec.index_elem();
159 for (int k = 0; k < nk; k++)
160 {
161 for (int j = 0; j < nj; j++)
162 {
163 for (int i = 0; i < ni; i++)
164 {
165 if (next_time ? (!cut_cell_disc.get_interfaces().est_pure(cut_cell_disc.get_interfaces().In(i,j,k))) : (!cut_cell_disc.get_interfaces().est_pure(cut_cell_disc.get_interfaces().I(i,j,k))))
166 {
167 double somme_contrib = 0.;
168 const int num_elem = mesh.get_domaine().convert_ijk_cell_to_packed(i,j,k);
169
170 int index = index_elem[num_elem];
171 // Boucle sur les facettes qui traversent cet element
172 while (index >= 0)
173 {
174 const Intersections_Elem_Facettes_Data& data = intersec.data_intersection(index);
175 const int fa7 = data.numero_facette_;
176 somme_contrib += interfacial_phin_ai[fa7] * data.fraction_surface_intersection_;
177
178 index = data.index_facette_suivante_;
179 };
180
181 flux_interface_ft(i,j,k) = somme_contrib;
182 }
183 }
184 }
185 }
186 }
187 }
188
189 flux_interface_ft.echange_espace_virtuel(flux_interface_ft.ghost());
190}
191
192void calculer_flux_interface_efficace(const IJK_Field_double& flux_interface_ns_old, const IJK_Field_double& flux_interface_ns_next, DoubleTabFT_cut_cell_scalar& flux_interface_efficace)
193{
194 // Correction par la surface efficace
195 const Cut_cell_FT_Disc& cut_cell_disc = flux_interface_efficace.get_cut_cell_disc();
196 const DoubleTabFT_cut_cell_scalar& surface_efficace_interface = cut_cell_disc.get_interfaces().get_surface_efficace_interface();
197 const IJK_Field_double& old_surface_interface = cut_cell_disc.get_interfaces().get_surface_interface_old();
198 const IJK_Field_double& next_surface_interface = cut_cell_disc.get_interfaces().get_surface_interface_next();
199 for (int n = 0; n < cut_cell_disc.get_n_tot(); n++)
200 {
201 Int3 ijk = cut_cell_disc.get_ijk(n);
202 int i = ijk[0];
203 int j = ijk[1];
204 int k = ijk[2];
205
206 if (IJK_Interfaces::est_pure(.5*(cut_cell_disc.get_interfaces().I(i, j, k) + cut_cell_disc.get_interfaces().In(i, j, k))))
207 {
208 // Si la cellule est purement monophasique, il n'y a pas d'intersection avec l'interface
209 flux_interface_efficace(n) = 0.;
210 }
211 else
212 {
213 assert(flux_interface_ns_old.ghost() == flux_interface_ns_next.ghost());
214 if (!cut_cell_disc.get_domaine().within_ghost(i, j, k, flux_interface_ns_old.ghost(), flux_interface_ns_old.ghost()))
215 continue;
216
217 double old_indicatrice = cut_cell_disc.get_interfaces().I(i,j,k);
218 double next_indicatrice = cut_cell_disc.get_interfaces().In(i,j,k);
219
220 if (IJK_Interfaces::devient_pure(old_indicatrice, next_indicatrice))
221 {
222 assert(old_surface_interface(i,j,k) != 0.);
223 flux_interface_efficace(n) = (flux_interface_ns_old(i,j,k)/old_surface_interface(i,j,k)) * surface_efficace_interface(n);
224 }
225 else if (IJK_Interfaces::devient_diphasique(old_indicatrice, next_indicatrice))
226 {
227 assert(next_surface_interface(i,j,k) != 0.);
228 flux_interface_efficace(n) = (flux_interface_ns_next(i,j,k)/next_surface_interface(i,j,k)) * surface_efficace_interface(n);
229 }
230 else
231 {
232 assert(old_surface_interface(i,j,k) != 0.);
233 assert(next_surface_interface(i,j,k) != 0.);
234 flux_interface_efficace(n) = .5 * (flux_interface_ns_old(i,j,k)/old_surface_interface(i,j,k) + flux_interface_ns_next(i,j,k)/next_surface_interface(i,j,k)) * surface_efficace_interface(n);
235 }
236 }
237 }
238}
239
240void calculer_flux_interface_implementation(bool next_time,
241 METHODE_FLUX_INTERFACE methode_flux_interface,
242 double lambda_liquid,
243 double lambda_vapour,
244 DoubleTabFT& interfacial_temperature,
245 DoubleTabFT& interfacial_phin_ai,
246 const Cut_field_double& cut_field_temperature,
247 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
248 IJK_Field_double& flux_interface_ft)
249{
250 calculer_flux_interface_sur_facettes(methode_flux_interface, next_time, lambda_liquid, lambda_vapour, interfacial_temperature, interfacial_phin_ai, cut_field_temperature, cut_cell_facettes_interpolation);
251
252 calculer_flux_interface_sur_maillage_ft(next_time, interfacial_phin_ai, cut_field_temperature.get_cut_cell_disc(), flux_interface_ft);
253}
254
255void calculer_flux_interface_next(METHODE_FLUX_INTERFACE methode_flux_interface,
256 double lambda_liquid,
257 double lambda_vapour,
258 DoubleTabFT& interfacial_temperature,
259 DoubleTabFT& interfacial_phin_ai,
260 const Cut_field_double& cut_field_temperature,
261 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
262 IJK_Field_double& flux_interface_ft)
263{
264 calculer_flux_interface_implementation(true /* next time */, methode_flux_interface, lambda_liquid, lambda_vapour, interfacial_temperature, interfacial_phin_ai, cut_field_temperature, cut_cell_facettes_interpolation, flux_interface_ft);
265}
266
267void calculer_flux_interface_old(METHODE_FLUX_INTERFACE methode_flux_interface,
268 double lambda_liquid,
269 double lambda_vapour,
270 DoubleTabFT& interfacial_temperature,
271 DoubleTabFT& interfacial_phin_ai,
272 const Cut_field_double& cut_field_temperature,
273 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
274 IJK_Field_double& flux_interface_ft)
275{
276 calculer_flux_interface_implementation(false /* old time */, methode_flux_interface, lambda_liquid, lambda_vapour, interfacial_temperature, interfacial_phin_ai, cut_field_temperature, cut_cell_facettes_interpolation, flux_interface_ft);
277}
278
279void ajout_flux_interface_a_divergence(const DoubleTabFT_cut_cell_scalar& flux_interface_efficace, Cut_field_double& cut_field_d_temperature)
280{
281 for (int phase = 0; phase < 2; phase++)
282 {
283 ajout_flux_interface_a_divergence_implementation(phase, flux_interface_efficace, cut_field_d_temperature);
284 }
285}
286
287void ajout_flux_interface_a_divergence_implementation(int phase, const DoubleTabFT_cut_cell_scalar& flux_interface_efficace, Cut_field_double& cut_field_d_field)
288{
289 ajout_flux_interface_a_divergence_simple(phase, flux_interface_efficace, cut_field_d_field);
290}
291
292void ajout_flux_interface_a_divergence_simple(int phase, const DoubleTabFT_cut_cell_scalar& flux_interface_efficace, Cut_field_double& cut_field_d_field)
293{
294 const Cut_cell_FT_Disc& cut_cell_disc = cut_field_d_field.get_cut_cell_disc();
295 DoubleTabFT_cut_cell& diph_d_field = (phase == 0) ? cut_field_d_field.diph_v_ : cut_field_d_field.diph_l_;
296
297 for (int n = 0; n < cut_cell_disc.get_n_loc(); n++)
298 {
299 int sign = (phase == 0) ? +1 : -1;
300 diph_d_field(n) += sign * flux_interface_efficace(n);
301 }
302}
303
304void calcul_temperature_flux_interface(
305 bool next_time,
306 bool cut_cell,
307 bool no_jump,
308 const Cut_field_double& cut_field,
309 const Facettes_Interp_FT& cut_cell_facettes_interpolation,
310 const double ldal,
311 const double ldav,
312 DoubleTabFT& temperature_interp,
313 DoubleTabFT& flux_normal_interp)
314{
315 double dist_1 = cut_cell_facettes_interpolation.get_distance_interpolation_1();
316 double dist_2 = cut_cell_facettes_interpolation.get_distance_interpolation_2();
317
318 const FixedVector<IntTabFT, 4>& interpolation_signed_independent_index = next_time ? cut_cell_facettes_interpolation.get_signed_independent_index_next() : cut_cell_facettes_interpolation.get_signed_independent_index_old();
319 const FixedVector<DoubleTabFT, 4>& interpolation_coefficient = next_time ? cut_cell_facettes_interpolation.get_coefficient_next() : cut_cell_facettes_interpolation.get_coefficient_old();
320
321 const Maillage_FT_IJK& maillage = next_time ? cut_cell_facettes_interpolation.maillage_ft_ijk() : cut_cell_facettes_interpolation.old_maillage_ft_ijk();
322 const int nb_facettes = maillage.nb_facettes();
323 const DoubleTab& normale_facettes = maillage.get_update_normale_facettes();
324
325 int number_of_interpolation_points = cut_cell_facettes_interpolation.get_number_of_interpolation_points();
326
327 temperature_interp.resize(nb_facettes);
328 flux_normal_interp.resize(nb_facettes);
329 if ((ldal + ldav) == 0.)
330 {
331 Cerr << "Corrige flux used with no conductivity. Ti and Qi set to 0. " << finl;
332 temperature_interp = 0.;
333 flux_normal_interp = 0.;
334 return;
335 }
336 for (int fa7 = 0; fa7 < nb_facettes; fa7++)
337 {
338 double T_1v;
339 double T_1l;
340 double T_2v;
341 double T_2l;
342
343 if (!cut_cell)
344 {
345 Vecteur3 coords_fa7 = maillage.coords_fa7(fa7);
346 Vecteur3 normal(normale_facettes, fa7);
347
350
351 T_1v = ijk_interpolate_skip_unknown_points(cut_field, coord_1v, 1.e31);
352 T_1l = ijk_interpolate_skip_unknown_points(cut_field, coord_1l, 1.e31);
353
354 if (number_of_interpolation_points > 1)
355 {
358
359 T_2v = ijk_interpolate_skip_unknown_points(cut_field, coord_2v, 1.e31);
360 T_2l = ijk_interpolate_skip_unknown_points(cut_field, coord_2l, 1.e31);
361 }
362 else
363 {
364 T_2v = 0.;
365 T_2l = 0.;
366 }
367 }
368 else
369 {
370 double field_0_liqu_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[1](fa7, 0));
371 double field_1_liqu_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[1](fa7, 1));
372 double field_2_liqu_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[1](fa7, 2));
373 double field_3_liqu_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[1](fa7, 3));
374 double field_0_vap_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[0](fa7, 0));
375 double field_1_vap_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[0](fa7, 1));
376 double field_2_vap_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[0](fa7, 2));
377 double field_3_vap_1 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[0](fa7, 3));
378
379 T_1l = field_0_liqu_1*interpolation_coefficient[1](fa7, 0) + field_1_liqu_1*interpolation_coefficient[1](fa7, 1) + field_2_liqu_1*interpolation_coefficient[1](fa7, 2) + field_3_liqu_1*interpolation_coefficient[1](fa7, 3);
380 T_1v = field_0_vap_1*interpolation_coefficient[0](fa7, 0) + field_1_vap_1*interpolation_coefficient[0](fa7, 1) + field_2_vap_1*interpolation_coefficient[0](fa7, 2) + field_3_vap_1*interpolation_coefficient[0](fa7, 3);
381
382 if (number_of_interpolation_points > 1)
383 {
384 double field_0_liqu_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[3](fa7, 0));
385 double field_1_liqu_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[3](fa7, 1));
386 double field_2_liqu_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[3](fa7, 2));
387 double field_3_liqu_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[3](fa7, 3));
388 double field_0_vap_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[2](fa7, 0));
389 double field_1_vap_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[2](fa7, 1));
390 double field_2_vap_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[2](fa7, 2));
391 double field_3_vap_2 = cut_field.from_signed_independent_index(interpolation_signed_independent_index[2](fa7, 3));
392
393 T_2l = field_0_liqu_2*interpolation_coefficient[3](fa7, 0) + field_1_liqu_2*interpolation_coefficient[3](fa7, 1) + field_2_liqu_2*interpolation_coefficient[3](fa7, 2) + field_3_liqu_2*interpolation_coefficient[3](fa7, 3);
394 T_2v = field_0_vap_2*interpolation_coefficient[2](fa7, 0) + field_1_vap_2*interpolation_coefficient[2](fa7, 1) + field_2_vap_2*interpolation_coefficient[2](fa7, 2) + field_3_vap_2*interpolation_coefficient[2](fa7, 3);
395 }
396 else
397 {
398 T_2v = 0.;
399 T_2l = 0.;
400 }
401 }
402
403
404 if (!no_jump)
405 {
406 if (number_of_interpolation_points == 1)
407 {
408 const double Ti = (T_1l * ldal + T_1v * ldav) / (ldal + ldav);
409
410 temperature_interp(fa7) = Ti;
411 flux_normal_interp(fa7) = ldav * (Ti - T_1v) / dist_1;
412 }
413 else if (number_of_interpolation_points == 2)
414 {
415 const double Ti = (ldal*T_1l/dist_1 + ldav*T_1v/dist_1 + ldal*T_2l/dist_2 + ldav*T_2v/dist_2 + ldal*(T_1l - T_2l)/(dist_2 - dist_1) - ldav*(T_2v - T_1v)/(dist_2 - dist_1))/(ldal/dist_1 + ldav/dist_1 + ldal/dist_2 + ldav/dist_2);
416
417 temperature_interp(fa7) = Ti;
418 flux_normal_interp(fa7) = - ldav * ((T_1v - Ti)/dist_1 + (T_2v - Ti)/dist_2 - (T_2v - T_1v)/(dist_2 - dist_1));
419 }
420 else
421 {
422 Cerr << "Nombre de points d'interpolation non reconnu." << finl;
424 }
425 }
426 else
427 {
428 if (number_of_interpolation_points == 1)
429 {
430 const double Ti = .5*(T_1l + T_1v);
431
432 temperature_interp(fa7) = Ti;
433 flux_normal_interp(fa7) = 2./(1./ldav + 1./ldal) * (Ti - T_1v) / dist_1;
434 }
435 else
436 {
437 Cerr << "Nombre de points d'interpolation non reconnu pour le cas 'no jump'." << finl;
439 }
440 }
441 }
442}
443
const Domaine_IJK & get_domaine() const
const IJK_Interfaces & get_interfaces() const
Int3 get_ijk(int n) const
bool check_agreement_diph_pure_cellules_initialement_pures() const
const Cut_cell_FT_Disc & get_cut_cell_disc() const
Definition Cut_field.h:78
bool check_agreement_tableau_pure_cellules_diphasiques(bool next_time) const
_TYPE_ & from_signed_independent_index(int signed_independent_index)
bool check_agreement_diph_pure_cellules_finalement_pures() const
TRUSTTabFT_cut_cell< _TYPE_ > diph_v_
Definition Cut_field.h:50
bool within_ghost(int i, int j, int k, int negative_ghost_size, int positive_ghost_size) const
int convert_ijk_cell_to_packed(const FixedVector< int, 3 > ijk) const
Converts the ijk index of an element to a cell index.
int get_number_of_interpolation_points() const
const Maillage_FT_IJK & maillage_ft_ijk() const
double get_distance_interpolation_1() const
const FixedVector< IntTabFT, 4 > & get_signed_independent_index_next() const
const Maillage_FT_IJK & old_maillage_ft_ijk() const
double get_distance_interpolation_2() const
const FixedVector< DoubleTabFT, 4 > & get_coefficient_next() const
const FixedVector< DoubleTabFT, 4 > & get_coefficient_old() const
const FixedVector< IntTabFT, 4 > & get_signed_independent_index_old() const
void echange_espace_virtuel(int ghost)
Exchange data over "ghost" number of cells.
const IJK_Field_double & get_surface_interface_next() const
static int devient_diphasique(double old_indicatrice, double next_indicatrice)
const IJK_Field_double & I() const
static int devient_pure(double old_indicatrice, double next_indicatrice)
const IJK_Field_double & In() const
const IJK_Field_double & get_surface_interface_old() const
const Maillage_FT_IJK & old_maillage_ft_ijk() const
const Maillage_FT_IJK & maillage_ft_ijk() const
static int est_pure(double indicatrice)
const DoubleTabFT_cut_cell_scalar & get_surface_efficace_interface() const
static Vecteur3 get_position_interpolation_normal_interf(const Vecteur3 &position_on_interf, const Vecteur3 &normal_on_interf, const double dist)
: class Intersections_Elem_Facettes
const ArrOfInt & index_elem() const
Renvoie un tableau de taille domaine.
const Intersections_Elem_Facettes_Data & data_intersection(int index) const
Renvoie les donnees de l'intersection stockee a l'indice "index" dans le tableau "data" ( 0 <= index ...
int nb_facettes() const
renvoie le nombre de facettes (reelles et virtuelles) (egal a facettes().
virtual const DoubleTab & get_update_normale_facettes() const
Calcule la grandeur demandee, stocke le resultat dans un tableau interne a la classe et renvoie le re...
const Intersections_Elem_Facettes & intersections_elem_facettes() const
virtual const ArrOfDouble & get_update_surface_facettes() const
Calcule la grandeur demandee, stocke le resultat dans un tableau interne a la classe et renvoie le re...
Vecteur3 coords_fa7(int fa7) const
: class Maillage_FT_IJK
const Domaine_IJK & get_domaine() const
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455
const Cut_cell_FT_Disc & get_cut_cell_disc() const
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Definition TRUSTTab.tpp:469