16#ifndef Maillage_FT_Disc_included
17#define Maillage_FT_Disc_included
19#include <Ensemble_Lagrange_base.h>
20#include <TRUSTTabFT.h>
21#include <Descripteur_FT.h>
22#include <Intersections_Elem_Facettes_Data.h>
23#include <TRUSTTabs_forward.h>
26#include <TRUST_Deriv.h>
33class Maillage_Echange;
79 const DoubleTab&
sommets()
const;
123 const DoubleVect& indicatrice_precedente)
const;
125 virtual void transporter(
const DoubleTab& deplacement);
139 void ecrire_plot(
const Nom& nom,
double temps,
int niveau_requete)
const;
180 double x1,
double y1,
double z1,
181 int& element_suivant,
185 const IntTab& face_voisins,
186 int skip_facettes=0);
189 double x1,
double y1,
double z1,
192 const int num_sommet,
195 const IntTab& face_voisins,
196 ArrOfInt& sommets_envoyes,
197 ArrOfInt& element_virtuel_arrivee,
198 ArrOfInt& face_virtuelle_arrivee,
199 DoubleTab& deplacement_restant,
200 int skip_facettes=0);
242 const DoubleTabFT& tab_cos_theta, ArrOfBit& drapeau_angle_in_range)
const;
264 double& a,
double& b,
double& c,
double& d)
const;
267 const ArrOfInt& liste_pe,
271 const ArrOfInt& request_sommets_num);
274 const ArrOfInt& liste_elem_virtuel_arrivee,
275 const ArrOfInt& liste_face_virtuelle_arrivee,
276 const DoubleTab& deplacement,
277 ArrOfInt& liste_nouveaux_sommets,
278 DoubleTab& deplacement_restant,
int skip_facettes=0);
283 const ArrOfInt& liste_pe,
284 const ArrOfInt& facettes_send_pe_list,
285 const ArrOfInt& facettes_recv_pe_list);
289 int num_element_sur_PE);
292 const ArrOfInt& liste_elem_arrivee,
293 ArrOfInt& facettes_recues_numfacettes,
294 ArrOfInt& facettes_recues_numelement);
297 const ArrOfInt& element_num_owner,
298 const ArrOfInt& numeros_distants,
299 const ArrOfInt& pe_distant,
300 ArrOfInt& numeros_locaux)
const;
302 const ArrOfInt& element_num_owner,
303 const int numero_distant,
304 const int pe_distant,
305 int& numero_local)
const;
308 const DoubleTab& deplacement_initial,
309 ArrOfInt& liste_sommets_sortis,
310 ArrOfInt& numero_face_sortie,
int skip_facettes=0);
313 virtual int check_mesh(
int error_is_fatal = 1,
int skip_facette_owner = 0,
int skip_facettes = 0)
const;
Empty class used as a base for all the arrays.
: class Desc_Structure_FT
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
: class Intersections_Elem_Facettes
ArrOfDoubleFT courbure_sommets_
ArrOfDoubleFT surface_facettes_
DoubleTabFT normale_facettes_
: class Maillage_FT_Disc Cette classe decrit un maillage:
int calcul_courbure_iterations_
void creer_tableau_elements(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau aux sommets du maillage Meme principe que Domaine::creer_tableau_elements()
IntTabFT liste_facette_supprimees_et_voisines_
Transport_Interfaces_FT_Disc & equation_transport()
void buffer_envoyer_facette_PE(int num_facette, int PE, int num_element_sur_PE)
void transporter_simple(const DoubleTab &deplacement)
virtual void creer_facettes_virtuelles(const ArrOfInt &liste_facettes, const ArrOfInt &liste_pe, const ArrOfInt &facettes_send_pe_list, const ArrOfInt &facettes_recv_pe_list)
Creation de facettes virtuelles sur le pe specifie.
DoubleTab gravity_center_fa7_
void nettoyer_noeuds_virtuels_et_frontieres()
virtual Entree & lire_param_maillage(Entree &is)
Cette fonction permet de lire les parametres pour le maillage des interfaces.
friend class Sauvegarde_Reprise_Maillage_FT
void mesh_tag_increase() const
int get_mesh_tag() const
return mesh_state_tag_
void set_is_solid_particle(const bool is_solid_particle)
void set_nb_facette_supprimees(int nb)
void preparer_tableau_avant_transport(ArrOfDouble &tableau, const Desc_Structure_FT &descripteur) const
Prepare un tableau de donnees aux sommets ou aux facettes pour conserver les valeurs apres transport.
virtual void calculer_costheta_minmax(DoubleTab &costheta) const
Pour chaque sommet du maillage, s'il est sur un bord, on calcule costheta min et max (hysteresis) cor...
const ArrOfInt & sommet_num_owner() const
pour postraitement, renvoie le numero des sommets sur le PE proprietaire des sommets
int methode_calcul_courbure_contact_line_
int nb_sommets() const
renvoie le nombre de sommets (reels et virtuels) (egal a sommets().
const DoubleTab & sommets() const
renvoie le tableau des sommets (reels et virtuels) dimension(0) = nombre de sommets,
friend class Remailleur_Collision_FT_Collision_Seq
Sortie & printSom(int som, Sortie &os) const
void corriger_proprietaires_facettes()
Sans changer les sommets existants ni la numerotation des facettes, on change le proprietaire des fac...
void associer_equation_transport(const Equation_base &equation) override
on remplit refequation_transport_, schema_comm_domaine_ desc_sommets_.comm_group_ et desc_facettes_....
void update_tableau_apres_transport(ArrOfDouble &tableau, int nb_elements, const Desc_Structure_FT &descripteur) const
Voir preparer_tableau_avant_transport.
int nb_facette_supprimees_
void supprimer_facettes(const ArrOfInt &liste_facettes)
Supprime les facettes dont les indices locaux sont donnes en parametre.
const ArrOfInt & drapeaux_sommets() const
Pour postraitement uniquement : la signification precise des drapeaux est de la cuisine interne a la ...
ArrOfIntFT sommet_PE_owner_
Desc_Structure_FT desc_facettes_
void pre_lissage_courbure(ArrOfDouble &store_courbure_sommets, const int niter) const
virtual const ArrOfDouble & get_surface_facettes() const
virtual double compute_surface_and_normale_element(const int elem, const bool normalize, double surface, double normal[3]) const
OWN_PTR(Maillage_FT_Disc_Data_Cache) mesh_data_cache_
void creer_sommets_virtuels(const ArrOfInt &liste_sommets, const ArrOfInt &liste_pe, const Schema_Comm &comm)
Envoi des sommets dont le numero est donne dans liste_sommets au processeur dont le numero est donne ...
virtual int check_sommets(int error_is_fatal=1) const
int set_niveau_plot(int niv)
int nb_facettes() const
renvoie le nombre de facettes (reelles et virtuelles) (egal a facettes().
ArrOfIntFT sommet_face_bord_
int sommet_ligne_contact(int i) const
double correction_contact_courbure_coeff_
ArrOfIntFT facette_num_owner_
int facettes_voisines(int fa70, int fa71, int &iarete0, int &iarete1) const
Cette methode teste si les facettes sont voisines : Des facettes sont voisines si :
int calculer_voisinage_facettes(IntTab &fa7Voisines, const Intersections_Elem_Facettes *ief=nullptr) const
void calcul_courbure_sommets(ArrOfDouble &courbure, const int call_number) const
Calcul de la courbure discrete du maillage aux sommets.
void correction_costheta(const double c, const int s0, const int facette, double ps) const
virtual void nettoyer_maillage()
Retire toutes les facettes virtuelles, toutes les facettes invalides (sommet0 == sommet1) et tous les...
void echanger_facettes(const ArrOfInt &liste_facettes, const ArrOfInt &liste_elem_arrivee, ArrOfInt &facettes_recues_numfacettes, ArrOfInt &facettes_recues_numelement)
Echange des facettes dont les numeros sont fournis dans "liste_facettes" : Pour chaque facette a ajou...
Desc_Structure_FT desc_sommets_
void associer_domaine_dis_parcours(const Domaine_dis_base &domaine_dis, const Parcours_interface &parcours)
friend class Marching_Cubes
const Maillage_FT_Disc & operator=(const Maillage_FT_Disc &)
L'operateur = est interdit !
static int deplacer_un_point(double &x, double &y, double &z, double x1, double y1, double z1, int &element_suivant, int &face_suivante, const Parcours_interface &parcours, const Domaine_VF &domaine_vf, const IntTab &face_voisins, int skip_facettes=0)
int sauvegarder(Sortie &) const override
Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger.
int facette_virtuelle(int i) const
Renvoie 0 si la facette m'appartient, 1 sinon.
void calculer_coord_noeuds(const IntTab &def_noeud, const DoubleTab &soms, IntTab &renum)
const Equation_base & equation_associee() const override
double temps() const
return temps_physique_ (temps_physique_ ne sert a rien en interne.
void maillage_modifie(Statut_Maillage nouveau_statut)
Cette methode change le statut du maillage et invalide le cache de valeurs calculees (surface,...
const Desc_Structure_FT & desc_sommets() const
renvoie le descripteur des sommets (espace_distant/virtuel)
void completer_maillage()
Complete les structures de donnees du maillage.
int nb_facettes_totale() const
virtual int check_mesh(int error_is_fatal=1, int skip_facette_owner=0, int skip_facettes=0) const
ArrOfIntFT sommet_num_owner_
virtual void ajouter_maillage(const Maillage_FT_Disc &maillage_tmp, int skip_facettes=0)
double calcul_normale_3D(int num_facette, double norme[3]) const
double changer_temps(double t)
return temps_physique_ = t
void creer_sommets_virtuels_numowner(const ArrOfInt &request_sommets_pe, const ArrOfInt &request_sommets_num)
Cree chez moi les sommets virtuels specifies par le couple (pe,num) si le sommet n'existe pas encore.
int copier_sommet_interne(int som)
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...
void construire_noeuds(IntTab &def_noeud, const DoubleTab &soms)
const ArrOfInt & som_init_util() const
return som_init_util_
virtual double compute_normale_element(const int elem, const bool normalize, ArrOfDouble &normale) const
Schema_Comm schema_comm_domaine_
void convertir_numero_distant_local(const Desc_Structure_FT &descripteur, const ArrOfInt &element_num_owner, const ArrOfInt &numeros_distants, const ArrOfInt &pe_distant, ArrOfInt &numeros_locaux) const
Conversion des couples (numeros_distants, pe) en numeros_locaux.
void compute_gravity_center_fa7()
const Desc_Structure_FT & desc_facettes() const
renvoie le descripteur des facettes (espace_distant/virtuel)
ArrOfIntFT drapeaux_sommets_
Maillage_FT_Disc_Data_Cache & mesh_data_cache() const
renvoie une ref non const au cache de valeurs calculees sur le maillage (courbure,...
friend class Remaillage_FT_IJK
void facette_PE_owner(ArrOfInt &facette_pe) const
pour postraitement, remplit le tableau en parametre avec le numero du PE proprietaire de chaque facet...
int calcule_equation_plan_areteFa7(int fa7, int iarete, double &a, double &b, double &c, double &d) const
Intersections_Elem_Facettes intersections_elem_facettes_
void parcourir_maillage()
Remplit la structure intersections_elem_facettes_.
const IntTabFT & get_liste_facette_supprimees_et_voisines() const
const Schema_Comm & get_schema_comm_FT() const
int sommet_virtuel(int i) const
const ArrOfInt & sommet_PE_owner() const
pour postraitement, renvoie le numero du PE proprietaire des sommets
virtual void recopie(const Maillage_FT_Disc &maillage_source, Statut_Maillage niveau_copie)
Recopie une partie du maillage source dans *this.
Maillage_FT_Disc()
constructeur par defaut.
virtual void deplacer_sommets(const ArrOfInt &liste_sommets_initiale, const DoubleTab &deplacement_initial, ArrOfInt &liste_sommets_sortis, ArrOfInt &numero_face_sortie, int skip_facettes=0)
Applique un vecteur deplacement aux noeuds dont le numero est dans "liste_noeud", puis echange les es...
void calcul_indicatrice(DoubleVect &indicatrice, const DoubleVect &indicatrice_precedente) const
Calcul de la fonction indicatrice (on suppose que "indicatrice" a la structure d'un tableau de valeur...
ArrOfIntFT som_init_util_
virtual void transporter(const DoubleTab &deplacement)
Deplace les sommets de l'interface d'un vecteur "deplacement" fourni, Change eventuellement les somme...
friend class Post_Processing_Hydrodynamic_Forces
void ecrire_plot(const Nom &nom, double temps, int niveau_requete) const
const Intersections_Elem_Facettes & intersections_elem_facettes() const
friend class Remaillage_FT
friend class Parcours_interface
virtual const DoubleTab & get_normale_facettes() const
OBS_PTR(Parcours_interface) refparcours_interface_
void nettoyer_elements_virtuels()
Retire toutes les facettes virtuelles et tous les sommets qui ne sont pas utilises.
void calcul_surface_normale(ArrOfDouble &surface, DoubleTab &normale) const
Calcul de la surface et de la normale aux facettes du maillage.
const DoubleTab & get_gravity_center_fa7() const
int copier_sommet(int som)
fonction qui cree un nouveau sommet par copie d'une existant utilise dans Remailleur_Collision_FT_Col...
void echanger_sommets_PE(const ArrOfInt &liste_sommets, const ArrOfInt &liste_elem_virtuel_arrivee, const ArrOfInt &liste_face_virtuelle_arrivee, const DoubleTab &deplacement, ArrOfInt &liste_nouveaux_sommets, DoubleTab &deplacement_restant, int skip_facettes=0)
Realise l'ensemble des echanges de noeuds specifies dans liste_sommets, liste_elem_virtuel_arrivee et...
static int deplacer_un_sommet(double &x, double &y, double &z, double x1, double y1, double z1, int &element, int &face_bord, const int num_sommet, const Parcours_interface &parcours, const Domaine_VF &domaine_vf, const IntTab &face_voisins, ArrOfInt &sommets_envoyes, ArrOfInt &element_virtuel_arrivee, ArrOfInt &face_virtuelle_arrivee, DoubleTab &deplacement_restant, int skip_facettes=0)
void set_liste_facette_supprimees_et_voisines(IntTabFT tab)
int reprendre(Entree &) override
Reprise d'un Objet_U sur un flot d'entree Methode a surcharger.
int nb_facettes_reelles() 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...
void nettoyer_phase(const Nom &nom_eq, const int phase)
enum_methode_calcul_courbure_contact_line_
virtual const ArrOfDouble & get_update_courbure_sommets() const
Calcule la grandeur demandee, stocke le resultat dans un tableau interne a la classe et renvoie le re...
friend class Topologie_Maillage_FT
void reset()
vide toutes les structures du maillage, le statut passe a RESET.
void creer_tableau_sommets(Array_base &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) const
creation d'un tableau aux sommets du maillage Meme principe que Domaine::creer_tableau_sommets()
const ArrOfInt & sommet_face_bord() const
pour postraitement, renvoie sommet_face_bord_
Sortie & printFa7(int fa7, int affsom, Sortie &os) const
OBS_PTR(Domaine_dis_base) refdomaine_dis_
static double angle_bidim_axi()
renvoie l'angle solide qui sert a calculer les surfaces et les volumes en bidim_axi
int nb_facettes_reelle_totale() const
OBS_PTR(Transport_Interfaces_FT_Disc) refequation_transport_
const IntTab & facettes() const
renvoie le tableau des facettes (reelles et virtuelles) dimension(0) = nombre de facettes,
Vecteur3 coords_fa7(int fa7) const
const int & get_nb_facette_supprimees() const
const bool & get_is_solid_particle() const
const ArrOfInt & sommet_elem() const
pour postraitement, renvoie sommet_elem_
void remplir_structure(const DoubleTab &soms)
double calculer_costheta_objectif(const int som, const int facette, const int call, const double c, const DoubleTabFT &tab_cos_theta, ArrOfBit &drapeau_angle_in_range) const
class Nom Une chaine de caractere pour nommer les objets de TRUST
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
: class Remaillage_FT Cette classe implemente les procedures de remaillage des interfaces pour le Fro...
Classe de base des flux de sortie.
: class Topologie_Maillage_FT Cette classe implemente les procedures de remaillage des interfaces pou...