16#include <ALE_MetricsUpdater.h>
17#include <Domaine_ALE.h>
19#include <Domaine_VF.h>
20#include <Domaine_VEF.h>
21#include <Domaine_EF.h>
22#include <Domaine_Poly_base.h>
23#include <Domaine_Cl_VEF.h>
24#include <Elem_VEF_base.h>
25#include <Elem_EF_base.h>
27#include <CL_Types_include.h>
28#include <Probleme_base.h>
47 DoubleTab& xv = le_dom_VF.
xv();
58 update_PolyMAC(pb, dom);
61 Cerr <<
"ALE_MetricsUpdater: Discretization not recognized by ALE!" << finl;
88 IntVect fait(nb_faces_tot);
93 for (
int n_bord = 0; n_bord < le_dom_VEF.
nb_front_Cl(); n_bord++)
101 for (
int num_face = 0; num_face < nfin; num_face++)
103 int face = le_bord.
num_face(num_face);
108 fait(faassociee) = 1;
109 for (
int k = 0; k < dimension; k++)
110 normales(faassociee, k) = normales(face, k);
120 for (
int num_eq = 0; num_eq < nb_eqn; num_eq++)
122 Domaine_Cl_VEF& la_zcl_VEF = ref_cast(Domaine_Cl_VEF,
128 update_face_surfaces_from_normal_vectors(dom);
137 Domaine_EF& le_dom_ef = ref_cast(Domaine_EF, pb.
domaine_dis());
140 const Elem_EF_base& type_elem = le_dom_ef.
type_elem();
142 for (
int num_face = 0; num_face < nb_faces_tot; num_face++)
155 Domaine_Poly_base& le_dom_poly = ref_cast(Domaine_Poly_base, pb.
domaine_dis());
159 update_face_surfaces_from_normal_vectors(dom);
164void ALE_MetricsUpdater::update_face_surfaces_from_normal_vectors(
Domaine_ALE& dom)
170 DoubleVect fs(nf_tot);
171 for (
int i = 0; i < nf_tot; i++)
174 for (
int k = 0; k < dimension; k++)
void update(Domaine_dis_base &le_domaine_dis, Probleme_base &pb, Domaine_ALE &dom)
classe Cond_lim Classe generique servant a representer n'importe quelle classe
void creer_mes_domaines_frontieres(const Domaine_VF &domaine_vf)
void calculer_centres_gravite(DoubleTab_t &xp) const
Calcule les centres de gravites des elements du domaine.
virtual void calculer_volumes(DoubleVect_t &volumes, DoubleVect_t &inv_volumes) const
Calcule les volumes des elements du domaine.
DoubleTab_t & les_sommets()
void update_coord_dom_extrait_surface()
Equation_base & getEquation()
virtual void remplir_volumes_entrelaces_Cl(const Domaine_VEF &)
appele par completer() : remplissage de type_elem_Cl_ et volumes_entrelaces_Cl_
void remplir_normales_facettes_Cl(const Domaine_VEF &)
appele par completer() : remplissage de normales_facettes_Cl_ et vecteur_face_caette_Cl_
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
void calculer_volumes_sommets(const Domaine_Cl_dis_base &zcl)
const Elem_EF_base & type_elem() const
void calculer_volumes_entrelaces()
virtual void calculer_Bij(DoubleTab &bij_)
virtual void calculer_volumes_entrelaces()
IntVect & rang_elem_non_std()
void calculer_volumes_entrelaces()
const Elem_VEF_base & type_elem() const
DoubleVect & volumes_entrelaces()
int nb_faces_tot() const
renvoie le nombre total de faces.
virtual double face_normales(int face, int comp) const
double xv(int num_face, int k) const
double volumes(int i) const
int face_sommets(int i, int j) const
renvoie le numero du ieme sommet de la face num_face.
int elem_faces(int i, int j) const
renvoie le numero de le ieme face de la maille num_elem la facon dont ces faces sont numerotees est
double xp(int num_elem, int k) const
void calculer_face_surfaces(const DoubleVect &surfaces)
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
double inverse_volumes(int i) const
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
virtual void normale(int, DoubleTab &, const IntTab &, const IntTab &, const IntTab &, const Domaine &) const =0
virtual void creer_face_normales(DoubleTab &, const IntTab &, const IntTab &, const IntTab &, const Domaine &) const =0
virtual void creer_facette_normales(const Domaine_VEF &, const IntVect &) const =0
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
static void Calculer_centres_gravite(DoubleTab_t &xv, Type_Face type_face_, const DoubleTab_t &coord, const IntTab_t &sommet)
int num_face(const int) const
classe Periodique Cette classe represente une condition aux limites periodique.
int face_associee(int i) const
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual int nombre_d_equations() const =0
virtual const Equation_base & equation(int) const =0
const Domaine_dis_base & domaine_dis() const
Renvoie le domaine discretise associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
_SIZE_ dimension_tot(int) const override