16#ifndef Remaillage_FT_included
17#define Remaillage_FT_included
19#include <TRUSTTabFT_forward.h>
30#define DEBUG_CONSERV_VOLUME 0
66 const DoubleTab& position_initiale,
67 ArrOfDouble& varVolume)
const;
70 ArrOfDouble& var_volume,
71 const int nb_iterations)
const;
75 ArrOfDouble& dvolume)
const;
85#if DEBUG_CONSERV_VOLUME
87 double calculer_somme_dvolume(
const Maillage_FT_Disc&,
const ArrOfDouble&)
const;
96 ArrOfDouble& var_volume,
97 const double facteur_barycentrage_tangent,
98 const double coeff_lissage,
99 const int nb_iter_barycentrage,
100 const int nb_iter_lissage,
101 const int max_nb_iter_correction_volume,
102 const double seuil_dvolume)
const;
105 const double relaxation_direction_tangente,
106 const double relaxation_direction_normale,
107 ArrOfDouble& var_volume_impose,
108 ArrOfDouble& var_volume_obtenu)
const;
111 DoubleTab& barycentres)
const;
115 int calculer_correction_deplacement(DoubleTab& deplacement,
const ArrOfDouble& varVolume,
const DoubleTab& deplacement_varVolume,
const ArrOfDouble& norme2_deplacement_varVolume)
const;
117 DoubleTab& differentielle_volume)
const;
128 int inserer_tab_aretes(
int& nb_tab_aretes,IntTab& tab_aretes,DoubleTab& tab_criteres,
int pe0,
int numOwner0,
int pe1,
int numOwner1,
int face_bord1,
int peRequete,
int fa7_peR,
int iarete_fa7_peR)
const;
129 int chercher_arete_tab(
int tmp,
const ArrOfInt& tab_index,
const IntTab& tab_aretes,
int pe0,
int numOwner0,
int pe1,
int numOwner1)
const;
135 double qualiteTriangle(
const FTd_vecteur3& som0,
const FTd_vecteur3& som1,
const FTd_vecteur3& som2,
double& aire)
const;
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
: class Maillage_FT_Disc Cette classe decrit un maillage:
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Helper class to factorize the readOn method of Objet_U classes.
int calculer_correction_deplacement(DoubleTab &deplacement, const ArrOfDouble &varVolume, const DoubleTab &deplacement_varVolume, const ArrOfDouble &norme2_deplacement_varVolume) const
Cette fonction calcule une correction sur un deplacement liee a une variation de volume imposee Utile...
int supprimer_facettes_bord(Maillage_FT_Disc &maillage) const
Cette fonction marque a supprimer les facettes ayant leurs 3 sommets de bord Marquer a supprimer = co...
int diviser_grandes_aretes(Maillage_FT_Disc &maillage) const
Cette fonction divise les grandes aretes en 2.
int nb_iter_barycentrage_
int sauvegarder(Sortie &) const override
Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger.
int chercher_arete_tab(int tmp, const ArrOfInt &tab_index, const IntTab &tab_aretes, int pe0, int numOwner0, int pe1, int numOwner1) const
int lissage_courbure_iterations_old_
int lissage_courbure_iterations_systematique_
int get_nb_iter_bary_volume_seul()
double regulariser_maillage(Maillage_FT_Disc &maillage, ArrOfDouble &var_volume, const double facteur_barycentrage_tangent, const double coeff_lissage, const int nb_iter_barycentrage, const int nb_iter_lissage, const int max_nb_iter_correction_volume, const double seuil_dvolume) const
Algorithme general de lissage du maillage.
int traite_decollement(Maillage_FT_Disc &maillage, const DoubleTab &deplacement) const
Cette fonction permet de gerer le decollement de l'interface de la paroi Si un sommet de bord n'a pas...
int supprimer_facettes_nulles(Maillage_FT_Disc &maillage) const
Cette fonction "supprime" les facettes de surface nulle : Elle les reduit a 1 sommet (le sommet 0,...
void barycentrer_lisser_systematique(double temps, Maillage_FT_Disc &maillage)
applique barycentrage, lissage et correction de volume.
int a_remailler(double temps, const Maillage_FT_Disc &maillage) const
int nb_iter_bary_volume_seul_
virtual double calculer_longueurIdeale2_arete(const Maillage_FT_Disc &maillage, int som0, double x, double y, double z) const
Cette fonction calcule le carre de la longueur ideale d'une arete Dans un premier,...
void set_param(Param &p) const override
Methode appelee par readOn.
double calculer_variation_volume_facette_3D(int fa7, const Maillage_FT_Disc &maillage, const DoubleTab &position_initiale) const
int traite_adherence(Maillage_FT_Disc &maillage) const
Cette fonction permet de gerer l'adherence de l'interface a la paroi Si une facette possede 3 sommets...
double redistribuer_sommets(Maillage_FT_Disc &maillage, const double relaxation_direction_tangente, const double relaxation_direction_normale, ArrOfDouble &var_volume_impose, ArrOfDouble &var_volume_obtenu) const
Deplace les sommets du maillage pour les redistribuer de facon homogene.
int lissage_courbure_iterations_si_remaillage_
int inserer_tab_aretes(int &nb_tab_aretes, IntTab &tab_aretes, DoubleTab &tab_criteres, int pe0, int numOwner0, int pe1, int numOwner1, int face_bord1, int peRequete, int fa7_peR, int iarete_fa7_peR) const
int permuter_aretes(Maillage_FT_Disc &maillage) const
Cette fonction effectue des permutations d'aretes afin d'ameliorer la qualite du maillage.
OBS_PTR(Domaine_VF) refdomaine_VF_
void associer_domaine(const Domaine_dis_base &domaine_dis)
Cette fonction stocke le domaine_dis dans refdomaine_dis_.
int marquer_aretes(Maillage_FT_Disc &maillage, IntTab &tab_aretesMarquees, ArrOfInt &tab_somD, DoubleTab &tab_deplacement_somD, int drap) const
void remaillage_local_interface(double temps, Maillage_FT_Disc &maillage)
Verifie les criteres de remaillage locaux (longueur des aretes) et effectue les remaillages locaux si...
double calculer_variation_volume(const Maillage_FT_Disc &maillage, const DoubleTab &position_initiale, ArrOfDouble &varVolume) const
Cette fonction calcule le volume de phase 0 engendre par chaque sommet lors du deplacement de l'inter...
int nettoyer_maillage(Maillage_FT_Disc &maillage) const
Cette fonction nettoie le maillage : Elle supprime les facettes reduites a 1 sommet.
double calculer_variation_volume_facette_2D(int fa7, const Maillage_FT_Disc &maillage, const DoubleTab &position_initiale) const
Cette fonction calcule la difference de volume au niveau d'une facette par rapport a une position ini...
double lissage_courbure_coeff_
double facteur_longueur_ideale_
double calculer_volume_sommets_supprimes(const Maillage_FT_Disc &maillage, const ArrOfInt &tab_somSupp, ArrOfDouble &varVolume) const
Cette fonction calcule la variation de volume liee a la suppression de sommets.
int supprimer_doublons_facettes(Maillage_FT_Disc &maillage) const
Cette fonction marque a supprimer les facettes en double.
void set_is_solid_particle(const bool is_solid_particle)
int tester_a_remailler(const Maillage_FT_Disc &maillage) const
double qualiteTriangle(const FTd_vecteur3 &som0, const FTd_vecteur3 &som1, const FTd_vecteur3 &som2, double &aire) const
Cette methode calcule, pour un triangle donne, sa qualite : celle-ci est comprise dans ]0,...
double seuil_dvolume_residuel_
int reprendre(Entree &) override
Reprise d'un Objet_U sur un flot d'entree Methode a surcharger.
void lisser_dvolume(const Maillage_FT_Disc &maillage, ArrOfDouble &var_volume, const int nb_iterations) const
Regularise le champ scalaire "var_volume" defini aux sommets du "maillage".
int a_lisser(double temps) const
void corriger_volume_(Maillage_FT_Disc &maillage, ArrOfDouble &var_volume, const int nb_iter_corrections_vol)
double relax_barycentrage_
double temps_dernier_remaillage_
virtual void regulariser_courbure(Maillage_FT_Disc &maillage, const double coeff, ArrOfDouble &dvolume) const
Regularise le maillage en deplacant les sommets pour reduire les gradients de courbure.
void corriger_volume(Maillage_FT_Disc &maillage, ArrOfDouble &var_volume)
deplacement des sommets se sorte a produire la variation de volume prescrite a chaque sommet.
double temps_dernier_lissage_
int calculer_barycentre_facettes_voisines(const Maillage_FT_Disc &maillage, DoubleTab &barycentres) const
Cette fonction calcule pour chaque sommet le barycentre de l'ensemble des facettes voisines du sommet...
int calculer_connectivites_sommetFacettes(const Maillage_FT_Disc &maillage, ArrOfInt &fa7VoisinesSom_index, IntTab &fa7VoisinesSom_data) const
Cette fonction calcule les connectivites sommet ->facettes voisines Les facettes voisines des sommets...
double valeur_longueur_fixe_
int supprimer_petites_aretes(Maillage_FT_Disc &maillage, ArrOfDouble &varVolume) const
A l'aide de "marquer_aretes", on determine les aretes trop petites du maillage.
void barycentrer_lisser_apres_remaillage(Maillage_FT_Disc &maillage, ArrOfDouble &var_volume)
idem mais avec le nombre d'iterations de lissage si remaillage
int calculer_differentielle_volume(const Maillage_FT_Disc &maillage, DoubleTab &differentielle_volume) const
Calcul de la differentielle du volume de phase 0 par rapport au deplacement de chaque sommet de l'int...
double surface_interface_
const bool & get_is_solid_particle() const