TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
FT_Field.h
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#ifndef FT_Field_included
17#define FT_Field_included
18
19
20#include <TRUST_Ref.h>
21#include <TRUSTVect.h>
22#include <Domaine_IJK.h>
23//#include <Maillage_FT_IJK.h>
24#include <Operator_FT_Disc.h>
25#include <Descripteur_FT.h>
26#include <vector>
27#include <cmath>
28#include <algorithm>
29#include <numeric>
30#include <variant>
31#include <Process.h>
32using namespace std;
33
34/*! @brief : class FT_Field
35 */
36class Maillage_FT_IJK;
37
39{
40public:
41 double x, y;
42 static double tol;
43 Point2D() : x(0), y(0) {}
44 Point2D(double xVal, double yVal) : x(xVal), y(yVal) {}
45 Point2D(const Point2D& pt): x(pt.x) , y(pt.y) {}
46
47 void operator = (const Point2D& pt)
48 {
49 x = pt.x ;
50 y = pt.y ;
51 }
52 double get_x()const
53 {
54 return x;
55 }
56 double get_y()const
57 {
58 return y;
59 }
60 /* void set(double xVal, double yVal)
61 {
62 x = xVal;
63 y = yVal;
64 }*/
65 void print() const
66 {
67 std::cout << "Point2D(" << x << ", " << y << ")" << std::endl;
68 }
69 bool operator==(const Point2D& rhs)
70 {
71 return abs(x-rhs.x)<tol && abs(y-rhs.y)<tol;
72 }
73};
74
75
77{
78public:
79 static double tol;
80 double x, y, z;
81 Point3D(const Point3D& pt): x(pt.x) , y(pt.y), z(pt.z) {}
82 //Point3D(const Point3D pt): x(pt.x) , y(pt.y), z(pt.z) {}
83 Point3D() : x(0), y(0), z(0) {}
84 Point3D(double xVal, double yVal, double zVal) : x(xVal), y(yVal), z(zVal) {}
85
86 double norme()
87 {
88 return std::sqrt(x*x + y*y + z*z) ;
89 }
90 void operator = (const Point3D& pt)
91 {
92 x = pt.x ;
93 y = pt.y ;
94 z = pt.z ;
95 }
96
97 Point3D operator-(const Point3D& other) const
98 {
99 return Point3D(x - other.x, y - other.y, z - other.z);
100 }
101 Point3D operator+(const Point3D& other) const
102 {
103 return Point3D(x + other.x, y + other.y, z + other.z);
104 }
105 Point3D operator/(const double& other) const
106 {
107 return Point3D(x/other, y/other, z/other);
108 }
109 double get_x() const
110 {
111 return x;
112 }
113 double get_y() const
114 {
115 return y;
116 }
117 double get_z() const
118 {
119 return z;
120 }
121 void print() const
122 {
123 std::cout << "Point3D(" << x << ", " << y << ", " << z << ")" << std::endl;
124 }
125 // Comparison operator for sorting Point3D
126 bool operator==(const Point3D& rhs) const
127 {
128 return abs(x-rhs.x)<tol && abs(y-rhs.y)<tol && abs(z-rhs.z)<tol;
129 }
130 bool operator<(const Point3D& rhs) const
131 {
132 if (x != rhs.x) return x < rhs.x;
133 if (y != rhs.y) return y < rhs.y;
134 return z < rhs.z;
135 }
136};
137
138
139
141{
142public:
144 //triangle() : p1, p2, p3 {}
145 triangle(Point3D xVal, Point3D yVal, Point3D zVal) : p1(xVal), p2(yVal), p3(zVal) {}
146 /*void set(Point3D xVal, Point3D yVal, Point3D zVal)
147 {
148 p1 = xVal;
149 p2 = yVal;
150 p3 = zVal;
151 }*/
152 bool operator==(const triangle& rhs)
153 {
154 return p1 == rhs.p1 && p2 == rhs.p2 && p3 == rhs.p3;
155 }
156};
157
158class FT_Field : public Objet_U
159{
160 Declare_instanciable_sans_constructeur( FT_Field ) ;
161private:
162 int nb_sommet_change_ = 0;
163 DoubleTab sommet_bouge_ ;
164
165 //IntTab index_fa7_structure_ ;
166 //IntTab facette_par_structure_;
167 IntTab indice_global_to_local_final_;
168 // sommet_change contient les indices des sommets principaux
169 // et le nombre de fa7 initiales impliquees sur ce sommet
170 // et le nombre de fa7 finales impliquees sur ce sommet
171 DoubleTab triangle_initiaux_ ;
172 DoubleTab normale_facette_initiale_;
173 DoubleTab normale_facette_finale_;
174 DoubleTab triangle_finaux_ ;
175 DoubleTab Surfactant_facette_initiale_ ;
176 IntTab indice_facette_finaux_ ;
177 bool variable_intensive_=false;
178 bool disable_surfactant_=true;
179 double Taylor_test_ = 0.;
180 int disable_marangoni_source_term_ = 0;
181 int print_debug_surfactant_ = 0;
182 int only_remaillage_ = 0;
183 int patch_conservation_surfactant_locale_ = 0;
184 int patch_conservation_surfactant_globale_ = 0;
185 int check_triangle_duplicata_ = 0;
186 double Diff_coeff_surfactant_ = 0. ;
187 double Concentration_surfactant_init_ = 0. ;
188 double Surfactant_theoric_case_=0. ;
189
190
191 double mean_surfactant_ = 0.;
192 double mean_surface_ = 0.;
193 DoubleTab facettes_sommets_full_compo_;
194 DoubleTab liste_sommets_et_deplacements_;
195 IntTab compo_transmises_a_envoyer_;
196 ArrOfInt compo_connexe_sommets_;
197 ArrOfInt proc_numero_;
198 ArrOfInt proc_deja_echange_;
199 ArrOfInt sorted_index_;
200 int nb_compo_a_envoyer_max_ = 0;
201 int nb_proc_echange_=0;
202 int index_local_Ft_field_ = 0;
203
204public:
205 FT_Field();
206 void initialize(const Maillage_FT_IJK& mesh, const DoubleTab& centre_mass);
208 DoubleTab update_sigma_and_interfacial_source_term_sommet(const Maillage_FT_IJK& mesh, const Domaine_IJK& splitting, bool compute_interfacial_source, bool use_tryggvason_formulation);
209 void dimensionner_remaillage_FT_Field(Maillage_FT_IJK& mesh, const ArrOfIntFT& table_old_new);
210 void sauvegarder_triangle(const Maillage_FT_IJK& mesh, const int i, const int avant_apres_remaillage);
213 ArrOfDouble check_conservation(const Maillage_FT_IJK& mesh);
214 void correction_conservation_globale(const Maillage_FT_IJK& mesh, const ArrOfDouble& surfactant_avant_remaillage, const ArrOfDouble& surfactant_apres_remaillage);
215 ArrOfDouble FT_field_Array_;
220 double sigma0_;
221 double R_;
222 double T_;
224 ArrOfDouble sigma_sommets_;
225 ArrOfDouble sigma_facettes_;
227 void avancer_en_temps(const Maillage_FT_IJK& mesh, const double time_step);
233 void set_field_facettes(ArrOfDouble field);
234 void set_field_sommets(ArrOfDouble field);
235 void update_Field_sommets(const Maillage_FT_IJK& FTmesh, const ArrOfDouble& Field_facettes, ArrOfDouble& field_sommet);
236
237 void exchange_data(int pe_send_, /* processor to send data */
238 int pe_recv_ /* processor to received data */,
239 const Maillage_FT_IJK& mesh, const DoubleTab& liste_sommets_avant_deplacement, const DoubleTab& liste_sommets_apres_deplacement, const ArrOfInt& compo_connexe_sommets_deplace);
240
241 void champ_sommet_from_facettes(const ArrOfInt& compo_connexe_facettes, const Maillage_FT_IJK& mesh);
242
243 void exchange_compo_connexe(int pe_send_,int pe_recv_, const Maillage_FT_IJK& mesh);
245 void completer_compo_connexe_partielle(const Maillage_FT_IJK& mesh, const Domaine_IJK& splitting, const DoubleTab& liste_sommets_apres_deplacement, const DoubleTab& liste_sommets_avant_deplacement, const ArrOfInt& compo_connexe_sommets_deplace);
246
247 bool sauv_num_pe_echange(int pe);
248 bool is_compo_in_proc(const int compo_connexe, const int pe_send);
249 void calculer_volume_bulles(ArrOfDouble& volumes, DoubleTab& centre_gravite, const Maillage_FT_IJK& mesh) const;
250 // Equality operator for Point3D
251 /*bool operator==(const Point3D& lhs, const Point3D& rhs)
252 {
253 return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z;
254 }
255
256 // Comparison operator for sorting Point3D
257 bool operator<(const Point3D& lhs, const Point3D& rhs)
258 {
259 if (lhs.x != rhs.x) return lhs.x < rhs.x;
260 if (lhs.y != rhs.y) return lhs.y < rhs.y;
261 return lhs.z < rhs.z;
262 }*/
263
264 void sortAndTrackIndices(const std::vector<double>& arr, std::vector<size_t>& indices);
265 double det(const Point2D& a, const Point2D& b, const Point2D& c);
266 bool isPointInTriangle(const Point2D& pt, const Point2D& v1, const Point2D& v2, const Point2D& v3);
267 void Calculate_Facette_Intersection_Area(DoubleTab& Surface_fa7init, DoubleTab& Surface_fa7fin, DoubleTab& Surface_intersection, vector<Point3D> points_fa7_originale, vector<Point3D> points_fa7_finale, IntTab points_triangle_originaux, IntTab points_triangle_finaux, IntTab& normale_triangle_originaux, IntTab& normale_triangle_finaux);
268 bool lineIntersection(const Point2D& a, const Point2D& b, const Point2D& c, const Point2D& d, Point2D& intersection);
269 double polygonArea(const std::vector<Point2D>& vertices);
270 double intersectionArea(Point2D t1[3], Point2D t2[3]);
271 double norme(const Point3D& pt);
272 std::vector<Point3D> removeDuplicates(std::vector<Point3D>& points);
273 Point3D computeCentroid(const vector<Point3D>& points);
274 void computeCovarianceMatrix(const vector<Point3D>& points, const Point3D& centroid, double cov[3][3]);
275 void powerIteration(const double cov[3][3], double eigenVector[3], double& eigenValue);
276 Point2D projectPointToPlane(const Point3D& point, const Point3D& centroid, const array<double, 3>& eigenVector1, const array<double, 3>& eigenVector2);
277 int orientation_triangle(const Point3D& normale, const array<double, 3>& eigenVector1, const array<double, 3>& eigenVector2);
278 vector<pair<double, array<double, 3>>> Main_2D_plane_eigenvectors(vector<Point3D> points);
279 double triangleArea(const Point2D& p1, const Point2D& p2, const Point2D& p3);
280 Point3D crossProduct(const Point3D& u, const Point3D& v);
281 double scalarProduct(const Point3D& u, const Point3D& v);
282 double magnitude(const Point3D& v);
283 double triangleArea3D(const Point3D& A, const Point3D& B, const Point3D& C);
284 Point3D calculer_normale_apres_deplacement(const int fa, const int somfa7, const Vecteur3 pos_apres_dep);
285
286
287
289 {
290 FT_field_Array_.copy_array(copy.FT_field_Array_);
294 sigma_facettes_.copy_array(copy.sigma_facettes_);
296 copy.OpFTDisc_=OpFTDisc_;
297 copy.disable_surfactant_=disable_surfactant_;
298 };
299 void inject_array(const FT_Field& source, int nb_elements, int first_element_dest, int first_element_source)
300 {
301 FT_field_Array_.inject_array(source.FT_field_Array_, nb_elements, /* tous les elements de la source */
302 first_element_dest, /* indice destination */
303 first_element_source); /* indice source */
304 };
305 void resize_array(int index)
306 {
307 FT_field_Array_.resize_array(index);
308 }
309 void resize(int index)
310 {
311 FT_field_Array_.resize(index);
312 }
313 double& operator()(int index)
314 {
315 return FT_field_Array_(index);
316 }
317 double& operator[](int index)
318 {
319 return FT_field_Array_[index];
320 }
321
323
324 int size() const
325 {
326 return FT_field_Array_.size_array();
327 };
328 int size_array() const
329 {
330 return FT_field_Array_.size_array();
331 };
332
333 int size_sommets() const
334 {
335 return FT_field_Array_sommets_.size_array();
336 };
337
339 {
340 return only_remaillage_;
341 }
342
344 {
345 return OpFTDisc_;
346 };
347 ArrOfDouble get_FT_field_Array() const
348 {
349 return FT_field_Array_;
350 };
352 {
353 return disable_surfactant_;
354 };
356 {
357 return disable_marangoni_source_term_;
358 };
359
360 void set_disable_surfactant(bool disable_surfactant)
361 {
362 disable_surfactant_ = disable_surfactant;
363 };
364
366 {
367 return compo_connexe_sommets_;
368 };
370 {
371 return FT_field_Array_;
372 };
373 ArrOfDouble get_FT_field_Array_sommets() const
374 {
376 };
377 ArrOfDouble get_Grad_FT_field_Array(int dir) const
378 {
379 int nbsom = Grad_FT_field_Array_.dimension(0);
380 ArrOfDouble Grad_dir_FT_field_Array;
381 Grad_dir_FT_field_Array.resize(nbsom);
382 for (int som=0 ; som<nbsom ; som++)
383 {
384 Grad_dir_FT_field_Array(som)=Grad_FT_field_Array_(som, dir);
385 }
386 return Grad_dir_FT_field_Array;
387 };
388 ArrOfDouble get_sigma_facettes() const
389 {
390 return sigma_facettes_;
391 };
392 ArrOfDouble get_sigma_sommets() const
393 {
394 return sigma_sommets_;
395 };
400 ArrOfDouble get_interfacial_source_term_sommets(int dir) const
401 {
402 int nbsom = interfacial_source_term_sommet_.dimension(0);
403 ArrOfDouble Grad_dir;
404 Grad_dir.resize(nbsom);
405 for (int som=0 ; som<nbsom ; som++)
406 {
407 Grad_dir(som)=interfacial_source_term_sommet_(som, dir);
408 }
409 return Grad_dir;
410 };
411
413 {
414 int nbsom = interfacial_source_term_sommet_.dimension(0);
415 ArrOfDouble Grad_dir;
416 Grad_dir.resize(nbsom);
417 for (int som=0 ; som<nbsom ; som++)
418 {
419 Grad_dir(som)=interfacial_source_term_sommet_(som, dir);
420 }
421 return Grad_dir;
422 };
424 {
426 };
427 DoubleTab get_sommet_bouge() const
428 {
429 return sommet_bouge_;
430 };
432 {
433 return facettes_sommets_full_compo_;
434 };
436 {
437 return liste_sommets_et_deplacements_;
438 };
439 const ArrOfInt get_sorted_index()
440 {
441 return sorted_index_;
442 };
443
445 {
446 return triangle_finaux_.dimension(0);
447 }
449 {
450 return triangle_initiaux_.dimension(0);
451 }
453 {
454 normale_facette_initiale_.resize(0, 3, RESIZE_OPTIONS::NOCOPY_NOINIT);
455 normale_facette_finale_.resize(0, 3, RESIZE_OPTIONS::NOCOPY_NOINIT);
456 triangle_initiaux_.resize(0, 3, 3, RESIZE_OPTIONS::NOCOPY_NOINIT);
457 triangle_finaux_.resize(0, 3, 3, RESIZE_OPTIONS::NOCOPY_NOINIT);
458 Surfactant_facette_initiale_.resize(0, RESIZE_OPTIONS::NOCOPY_NOINIT);
459 indice_facette_finaux_.resize(0, RESIZE_OPTIONS::NOCOPY_NOINIT);
460 }
461
462 void set_tolerance_point_identique(double longueur_cara_fa7)
463 {
464 Point3D::tol = 1.e-3*longueur_cara_fa7;
465 Point2D::tol = 1.e-3*longueur_cara_fa7;
466 }
468 {
469 return Point3D::tol;
470 }
471
472};
473
474#endif /* FT_Field_included */
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Definition Domaine_IJK.h:47
void update_gradient_laplacien_FT(const Maillage_FT_IJK &mesh)
Definition FT_Field.cpp:191
void reinit_remeshing_table()
Definition FT_Field.h:452
ArrOfDouble get_FT_field_Array_non_const()
Definition FT_Field.h:369
ArrOfDouble get_Grad_FT_field_Array(int dir) const
Definition FT_Field.h:377
double intersectionArea(Point2D t1[3], Point2D t2[3])
Definition FT_Field.cpp:481
Point2D projectPointToPlane(const Point3D &point, const Point3D &centroid, const array< double, 3 > &eigenVector1, const array< double, 3 > &eigenVector2)
Definition FT_Field.cpp:681
void exchange_data(int pe_send_, int pe_recv_, const Maillage_FT_IJK &mesh, const DoubleTab &liste_sommets_avant_deplacement, const DoubleTab &liste_sommets_apres_deplacement, const ArrOfInt &compo_connexe_sommets_deplace)
Operator_FT_Disc OpFTDisc_
Definition FT_Field.h:219
void passer_variable_intensive(const Maillage_FT_IJK &mesh)
Definition FT_Field.cpp:261
void completer_compo_connexe_partielle(const Maillage_FT_IJK &mesh, const Domaine_IJK &splitting, const DoubleTab &liste_sommets_apres_deplacement, const DoubleTab &liste_sommets_avant_deplacement, const ArrOfInt &compo_connexe_sommets_deplace)
DoubleTab & get_liste_sommets_et_deplacements_non_const()
Definition FT_Field.h:435
double polygonArea(const std::vector< Point2D > &vertices)
Definition FT_Field.cpp:469
Point3D crossProduct(const Point3D &u, const Point3D &v)
Definition FT_Field.cpp:762
void copy_FT_Field(FT_Field copy)
Definition FT_Field.h:288
ArrOfDouble get_FT_field_Array_sommets() const
Definition FT_Field.h:373
void remailler_FT_Field(Maillage_FT_IJK &mesh)
Definition FT_Field.cpp:981
DoubleTab get_interfacial_source_term_sommets() const
Definition FT_Field.h:396
ArrOfDouble FT_field_Array_
Definition FT_Field.h:215
double norme(const Point3D &pt)
Definition FT_Field.cpp:553
void sortAndTrackIndices(const std::vector< double > &arr, std::vector< size_t > &indices)
Definition FT_Field.cpp:397
Operator_FT_Disc get_OpFTDisc() const
Definition FT_Field.h:343
void powerIteration(const double cov[3][3], double eigenVector[3], double &eigenValue)
Definition FT_Field.cpp:618
int orientation_triangle(const Point3D &normale, const array< double, 3 > &eigenVector1, const array< double, 3 > &eigenVector2)
Definition FT_Field.cpp:695
ArrOfDouble sigma_sommets_
Definition FT_Field.h:224
double & operator()(int index)
Definition FT_Field.h:313
ArrOfDouble FT_field_Array_sommets_
Definition FT_Field.h:216
DoubleTab update_sigma_and_interfacial_source_term_sommet(const Maillage_FT_IJK &mesh, const Domaine_IJK &splitting, bool compute_interfacial_source, bool use_tryggvason_formulation)
Definition FT_Field.cpp:196
void initialize(const Maillage_FT_IJK &mesh, const DoubleTab &centre_mass)
Definition FT_Field.cpp:35
int get_nb_triangle_finaux()
Definition FT_Field.h:444
const ArrOfInt get_sorted_index()
Definition FT_Field.h:439
int size_sommets() const
Definition FT_Field.h:333
int get_only_remaillage() const
Definition FT_Field.h:338
double det(const Point2D &a, const Point2D &b, const Point2D &c)
Definition FT_Field.cpp:420
ArrOfDouble check_conservation(const Maillage_FT_IJK &mesh)
double magnitude(const Point3D &v)
Definition FT_Field.cpp:777
void correction_conservation_globale(const Maillage_FT_IJK &mesh, const ArrOfDouble &surfactant_avant_remaillage, const ArrOfDouble &surfactant_apres_remaillage)
std::vector< Point3D > removeDuplicates(std::vector< Point3D > &points)
Definition FT_Field.cpp:558
void set_tolerance_point_identique(double longueur_cara_fa7)
Definition FT_Field.h:462
double & operator[](int index)
Definition FT_Field.h:317
ArrOfDouble get_sigma_sommets() const
Definition FT_Field.h:392
void exchange_compo_connexe(int pe_send_, int pe_recv_, const Maillage_FT_IJK &mesh)
ArrOfInt get_compo_connexe_sommets() const
Definition FT_Field.h:365
void Calculate_Facette_Intersection_Area(DoubleTab &Surface_fa7init, DoubleTab &Surface_fa7fin, DoubleTab &Surface_intersection, vector< Point3D > points_fa7_originale, vector< Point3D > points_fa7_finale, IntTab points_triangle_originaux, IntTab points_triangle_finaux, IntTab &normale_triangle_originaux, IntTab &normale_triangle_finaux)
Definition FT_Field.cpp:798
double Gamma_inf_
Definition FT_Field.h:223
void set_field_facettes(ArrOfDouble field)
void echange_espace_virtuel(const Maillage_FT_Disc &mesh)
Definition FT_Field.cpp:378
ArrOfDouble sigma_facettes_
Definition FT_Field.h:225
DoubleTab Grad_FT_field_Array_
Definition FT_Field.h:217
void preparer_tableau_avant_transport()
ArrOfDouble get_interfacial_source_term_sommets_non_const(int dir)
Definition FT_Field.h:412
void passer_variable_extensive(const Maillage_FT_IJK &mesh)
Definition FT_Field.cpp:279
void nettoyer_espace_virtuel_facette(const Maillage_FT_IJK &mesh)
Definition FT_Field.cpp:306
double sigma0_
Definition FT_Field.h:220
DoubleTab interfacial_source_term_sommet_
Definition FT_Field.h:226
vector< pair< double, array< double, 3 > > > Main_2D_plane_eigenvectors(vector< Point3D > points)
Definition FT_Field.cpp:707
void resize(int index)
Definition FT_Field.h:309
void computeCovarianceMatrix(const vector< Point3D > &points, const Point3D &centroid, double cov[3][3])
Definition FT_Field.cpp:589
bool isPointInTriangle(const Point2D &pt, const Point2D &v1, const Point2D &v2, const Point2D &v3)
Definition FT_Field.cpp:426
double R_
Definition FT_Field.h:221
void champ_sommet_from_facettes(const ArrOfInt &compo_connexe_facettes, const Maillage_FT_IJK &mesh)
void set_disable_surfactant(bool disable_surfactant)
Definition FT_Field.h:360
Point3D calculer_normale_apres_deplacement(const int fa, const int somfa7, const Vecteur3 pos_apres_dep)
Point3D computeCentroid(const vector< Point3D > &points)
Definition FT_Field.cpp:570
int size() const
Definition FT_Field.h:324
void update_Field_sommets(const Maillage_FT_IJK &FTmesh, const ArrOfDouble &Field_facettes, ArrOfDouble &field_sommet)
Definition FT_Field.cpp:327
void set_field_sommets(ArrOfDouble field)
ArrOfDouble get_Laplacian_FT_field_Array() const
Definition FT_Field.h:423
double scalarProduct(const Point3D &u, const Point3D &v)
Definition FT_Field.cpp:771
int size_array() const
Definition FT_Field.h:328
bool lineIntersection(const Point2D &a, const Point2D &b, const Point2D &c, const Point2D &d, Point2D &intersection)
Definition FT_Field.cpp:437
void update_tableau_apres_transport()
void sauvegarder_triangle(const Maillage_FT_IJK &mesh, const int i, const int avant_apres_remaillage)
Definition FT_Field.cpp:898
ArrOfDouble get_interfacial_source_term_sommets(int dir) const
Definition FT_Field.h:400
void update_FT_Field_local_from_full_compo(const Maillage_FT_IJK &mesh)
void calculer_volume_bulles(ArrOfDouble &volumes, DoubleTab &centre_gravite, const Maillage_FT_IJK &mesh) const
double triangleArea3D(const Point3D &A, const Point3D &B, const Point3D &C)
Definition FT_Field.cpp:783
double T_
Definition FT_Field.h:222
double triangleArea(const Point2D &p1, const Point2D &p2, const Point2D &p3)
Definition FT_Field.cpp:756
void echanger_triangles(Maillage_FT_IJK &mesh)
bool is_compo_in_proc(const int compo_connexe, const int pe_send)
bool sauv_num_pe_echange(int pe)
void resize_array(int index)
Definition FT_Field.h:305
int get_nb_triangle_initiaux()
Definition FT_Field.h:448
ArrOfDouble get_sigma_facettes() const
Definition FT_Field.h:388
ArrOfDouble get_FT_field_Array() const
Definition FT_Field.h:347
int get_disable_marangoni_source_term() const
Definition FT_Field.h:355
ArrOfDouble Laplacian_FT_field_Array_
Definition FT_Field.h:218
void dimensionner_remaillage_FT_Field(Maillage_FT_IJK &mesh, const ArrOfIntFT &table_old_new)
void inject_array(const FT_Field &source, int nb_elements, int first_element_dest, int first_element_source)
Definition FT_Field.h:299
DoubleTab get_sommet_bouge() const
Definition FT_Field.h:427
void avancer_en_temps(const Maillage_FT_IJK &mesh, const double time_step)
Definition FT_Field.cpp:161
bool get_disable_surfactant() const
Definition FT_Field.h:351
DoubleTab & get_facettes_sommets_full_compo_non_const()
Definition FT_Field.h:431
double get_tolerance_point_identique()
Definition FT_Field.h:467
: class Maillage_FT_Disc Cette classe decrit un maillage:
: class Maillage_FT_IJK
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
: class Operator_FT_Disc
double get_x() const
Definition FT_Field.h:52
bool operator==(const Point2D &rhs)
Definition FT_Field.h:69
Point2D()
Definition FT_Field.h:43
double x
Definition FT_Field.h:41
void print() const
Definition FT_Field.h:65
Point2D(const Point2D &pt)
Definition FT_Field.h:45
double y
Definition FT_Field.h:41
void operator=(const Point2D &pt)
Definition FT_Field.h:47
static double tol
Definition FT_Field.h:42
Point2D(double xVal, double yVal)
Definition FT_Field.h:44
double get_y() const
Definition FT_Field.h:56
void operator=(const Point3D &pt)
Definition FT_Field.h:90
Point3D operator-(const Point3D &other) const
Definition FT_Field.h:97
Point3D()
Definition FT_Field.h:83
double get_x() const
Definition FT_Field.h:109
bool operator==(const Point3D &rhs) const
Definition FT_Field.h:126
Point3D operator+(const Point3D &other) const
Definition FT_Field.h:101
void print() const
Definition FT_Field.h:121
Point3D(const Point3D &pt)
Definition FT_Field.h:81
Point3D operator/(const double &other) const
Definition FT_Field.h:105
bool operator<(const Point3D &rhs) const
Definition FT_Field.h:130
double z
Definition FT_Field.h:80
static double tol
Definition FT_Field.h:79
double get_z() const
Definition FT_Field.h:117
double y
Definition FT_Field.h:80
double x
Definition FT_Field.h:80
double norme()
Definition FT_Field.h:86
Point3D(double xVal, double yVal, double zVal)
Definition FT_Field.h:84
double get_y() const
Definition FT_Field.h:113
void resize(_SIZE_ new_size, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Definition TRUSTArray.h:156
Point3D p3
Definition FT_Field.h:143
Point3D p1
Definition FT_Field.h:143
triangle(Point3D xVal, Point3D yVal, Point3D zVal)
Definition FT_Field.h:145
Point3D p2
Definition FT_Field.h:143
bool operator==(const triangle &rhs)
Definition FT_Field.h:152