TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Maillage_FT_IJK.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 Maillage_FT_IJK_included
17#define Maillage_FT_IJK_included
18
19#include <Objet_U.h>
20#include <Maillage_FT_Disc.h>
21#include <Linear_algebra_tools.h>
22#include <Domaine_IJK.h>
23#include <TRUSTTab.h>
24#include <FT_Field.h>
25#include <Operator_FT_Disc.h>
27
29
30/*! @brief : class Maillage_FT_IJK
31 *
32 */
34{
35
36 Declare_instanciable(Maillage_FT_IJK) ;
37
38public:
41 void initialize(const Domaine_IJK&, const Domaine_dis_base&, const Parcours_interface&, const bool use_tryggvason_interfacial_source=false);
42 const ArrOfInt& compo_connexe_facettes() const
43 {
45 };
51 {
53 };
58
60 {
61 Surfactant_facettes_.update_gradient_laplacien_FT(*this);
62 };
63 DoubleTab update_sigma_and_interfacial_source_term_sommet(const Domaine_IJK& splitting, bool compute_interfacial_source, bool use_tryggvason_formulation, const double sigma_const = -1.);
64 void set_Surfactant_facettes(ArrOfDouble Surfactant_field);
65 void set_Surfactant_facettes_sommets(ArrOfDouble Surfactant_field);
66// Surcharge de Maillage_FT_Disc:
67 void supprimer_facettes(const ArrOfInt& liste_facettes);
68
69
70 void nettoyer_maillage() override;
74 void parcourir_maillage();
75 void transporter(const DoubleTab& deplacement) override;
76 void deplacer_sommets(const ArrOfInt& liste_sommets_initiale,
77 const DoubleTab& deplacement_initial,
78 ArrOfInt& liste_sommets_sortis,
79 ArrOfInt& numero_face_sortie, int skip_facettes=0) override;
80// Surcharge de maillage_ft_disc pour conserver les composantes connexes.
81 void recopie(const Maillage_FT_Disc& source_mesh, Statut_Maillage niveau_copie) override;
82
83// Surcharge de Maillage_FT_Disc :
84// surcharge: initialise les composantes connexes et appelle la methode ajouter_maillage_IJK.
85 void ajouter_maillage(const Maillage_FT_Disc& maillage_tmp,int skip_facettes=0) override;
86 void echanger_facettes(const ArrOfInt& liste_facettes,
87 const ArrOfInt& liste_elem_arrivee,
88 ArrOfInt& facettes_recues_numfacettes,
89 ArrOfInt& facettes_recues_numelement);
90// ajout et gestion du tableau des compo_connexes a partir du tableau compo_connex du maillage source
91 void ajouter_maillage_IJK(const Maillage_FT_IJK& added_mesh);
92
93 void lire_maillage_ft_dans_lata(const char *filename_with_path, int tstep,
94 const char *geometryname);
95
96 void set_ijk_cell_index(int num_sommet, Int3 ijk)
97 {
98 const Domaine_IJK& s = ref_domaine_.valeur();
99 sommet_elem_[num_sommet] = s.convert_ijk_cell_to_packed(ijk[0],ijk[1],ijk[2]);
100 }
101 void set_barycentrage(bool bary)
102 {
104 }
105 Int3 get_ijk_cell_index(int num_sommet) const
106 {
107 const Domaine_IJK& s = ref_domaine_.valeur();
108 int index = sommet_elem_[num_sommet];
109 return s.convert_packed_to_ijk_cell(index);
110 }
111
113// Surcharges de Maillage_FT_Disc :
114 int check_sommets(int error_is_fatal = 1) const override;
115 int check_mesh(int error_is_fatal = 1, int skip_facette_owner = 0, int skip_facettes = 0) const override;
116
117 void calculer_compo_connexe_sommets(ArrOfIntFT& compo_connexe_sommets) const;
118
119 void recopie_force_compo(const Maillage_FT_IJK& source_mesh, const int icompo);
120// Methode qui modifie l'attribut compo_connexe_facettes_
121 void set_composante_connexe(const int i_facette, const int icompo)
122 {
123 compo_connexe_facettes_[i_facette] = icompo;
124 };
125
126 double minimum_longueur_arrete() const;
127 int nb_facettes_sans_duplicata() const;
128
129 const Domaine_IJK& get_domaine() const { return ref_domaine_.valeur(); }
130
131protected:
132 // Surcharge de Maillage_FT_Disc :
135 void calculer_costheta_minmax(DoubleTab& costheta) const override;
136
138 {
139 Cerr << "Maillage_FT_IJK& operator=" << finl;
141 return *this;
142 } // Interdit !
143 void creer_facettes_virtuelles(const ArrOfInt& liste_facettes,
144 const ArrOfInt& liste_pe,
145 const ArrOfInt& facettes_send_pe_list,
146 const ArrOfInt& facettes_recv_pe_list) override;
147
148 OBS_PTR(Domaine_IJK) ref_domaine_;
149
150// Taille du domaine IJK sur chaque proc:
154// Tableaux des processeurs voisins :
159
160 // Pour chaque facette d'interface, numero de la composante connexe (numero de la bulle)
162
164
165};
166#endif /* Maillage_FT_IJK_included */
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Definition Domaine_IJK.h:47
int convert_ijk_cell_to_packed(const FixedVector< int, 3 > ijk) const
Converts the ijk index of an element to a cell index.
FixedVector< int, 3 > convert_packed_to_ijk_cell(int index) const
Convert the local index of an element to a vector with IJK indices.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Maillage_FT_Disc()
constructeur par defaut.
friend class Parcours_interface
: class Maillage_FT_IJK
void set_barycentrage(bool bary)
ArrOfInt liste_processeurs_voisins_faces_
void calculer_costheta_minmax(DoubleTab &costheta) const override
Pour chaque sommet du maillage, s'il est sur un bord, on calcule costheta min et max (hysteresis) cor...
void deplacer_sommets(const ArrOfInt &liste_sommets_initiale, const DoubleTab &deplacement_initial, ArrOfInt &liste_sommets_sortis, ArrOfInt &numero_face_sortie, int skip_facettes=0) override
Applique un vecteur deplacement aux noeuds dont le numero est dans "liste_noeud", puis echange les es...
bool use_tryggvason_interfacial_source_
int check_mesh(int error_is_fatal=1, int skip_facette_owner=0, int skip_facettes=0) const override
int nb_facettes_sans_duplicata() const
void lire_maillage_ft_dans_lata(const char *filename_with_path, int tstep, const char *geometryname)
const ArrOfInt & compo_connexe_facettes() const
void ajouter_maillage(const Maillage_FT_Disc &maillage_tmp, int skip_facettes=0) override
FT_Field & Surfactant_facettes_non_const()
const Domaine_IJK & get_domaine() const
DoubleTab update_sigma_and_interfacial_source_term_sommet(const Domaine_IJK &splitting, bool compute_interfacial_source, bool use_tryggvason_formulation, const double sigma_const=-1.)
void set_Surfactant_facettes(ArrOfDouble Surfactant_field)
Int3 get_ijk_cell_index(int num_sommet) const
const FT_Field & Surfactant_facettes() const
ArrOfIntFT compo_connexe_facettes_
void creer_facettes_virtuelles(const ArrOfInt &liste_facettes, const ArrOfInt &liste_pe, const ArrOfInt &facettes_send_pe_list, const ArrOfInt &facettes_recv_pe_list) override
Creation de facettes virtuelles sur le pe specifie.
FT_Field Surfactant_facettes_
void transporter(const DoubleTab &deplacement) override
Deplace les sommets de l'interface d'un vecteur "deplacement" fourni, Change eventuellement les somme...
const Maillage_FT_IJK & operator=(const Maillage_FT_IJK &)
void nettoyer_maillage() override
Retire toutes les facettes virtuelles, toutes les facettes invalides (sommet0 == sommet1) et tous les...
ArrOfInt & compo_connexe_facettes_non_const()
void initialize_processor_neighbourhood()
int check_sommets(int error_is_fatal=1) const override
void recopie_force_compo(const Maillage_FT_IJK &source_mesh, const int icompo)
DoubleTab indexation_facettes_avant_transport_
void corriger_proprietaires_facettes()
void update_surfactant_apres_transport()
ArrOfInt liste_processeurs_voisins_coins_
void recopie(const Maillage_FT_Disc &source_mesh, Statut_Maillage niveau_copie) override
Recopie une partie du maillage source dans *this.
Maillage_FT_IJK(const Maillage_FT_IJK &)=default
void update_gradient_laplacien_Surfactant()
void ajouter_maillage_IJK(const Maillage_FT_IJK &added_mesh)
ArrOfInt voisinage_processeur_
OBS_PTR(Domaine_IJK) ref_domaine_
ArrOfInt liste_processeurs_voisins_aretes_
void set_Surfactant_facettes_sommets(ArrOfDouble Surfactant_field)
void supprimer_facettes(const ArrOfInt &liste_facettes)
double minimum_longueur_arrete() const
void calculer_compo_connexe_sommets(ArrOfIntFT &compo_connexe_sommets) const
void initialize(const Domaine_IJK &, const Domaine_dis_base &, const Parcours_interface &, const bool use_tryggvason_interfacial_source=false)
void echanger_facettes(const ArrOfInt &liste_facettes, const ArrOfInt &liste_elem_arrivee, ArrOfInt &facettes_recues_numfacettes, ArrOfInt &facettes_recues_numelement)
void set_composante_connexe(const int i_facette, const int icompo)
void sauv_facette_indexation_avant_transport()
void set_ijk_cell_index(int num_sommet, Int3 ijk)
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Definition Process.cpp:455