16#ifndef Domaine_ALE_included
17#define Domaine_ALE_included
19#include <ALE_MetricsUpdater.h>
20#include <ALE_BeamCoupling.h>
21#include <ALE_ProjectionManager.h>
22#include <ALE_CheckpointManager.h>
24#include <Champ_front_base.h>
25#include <TRUSTLists.h>
26#include <Champ_P1NC.h>
27#include <Structural_dynamic_mesh_model.h>
56 Declare_instanciable_sans_constructeur(
Domaine_ALE);
61 void clear()
override;
63 inline const double&
get_dt()
const;
64 void set_dt(
double& dt)
override;
66 inline const DoubleTab&
vitesse()
const;
122 double, DoubleTab&)
const override;
161 DoubleTab&
getBeamVelocity (
const int&,
const double& tps,
const double& dt);
172 const double& z,
const DoubleTab& u,
173 const DoubleTab& R)
const;
175 const double& z,
const int& comp,
176 const DoubleTab& u)
const;
197 DoubleTab&, DoubleTab&, DoubleTab&, DoubleTab&);
286 void compute_vertex_velocities(
double temps,
const Probleme_base&);
287 void remplir_vitesse_bord(
const Probleme_base&,
double temps, DoubleTab& vit_bords);
288 void update_vertex_coordinates(
double dt);
293 void laplacien (
const Probleme_base&,
const DoubleTab& vit_bords);
297 const DoubleTab& vit_bords);
298 void structural_dynamics (
const Probleme_base&,
const DoubleTab& vit_bords,
double temps);
305 void check_external_vertex_velocity_compatibility(
const DoubleTab&)
const;
310 DoubleVect laplacian_rhs_;
316 IntVect external_vertex_id_for_ale_vertex_;
317 bool lagrangian_velocity_imposed_ =
false;
318 Nom external_velocity_field_name_;
319 Nom external_pb_name_;
324 DoubleVect volumes_old_;
325 DoubleVect volumes_entrelaces_old_;
326 DoubleTab volumes_sommets_thilde_old_;
327 DoubleTab coord_old_;
351{
return volumes_entrelaces_old_; }
354{
return volumes_old_; }
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Champ_front_base Classe de base pour la hierarchie des champs aux frontieres.
const int & getBeamNbModes(const int &) const
DoubleTab interpolationOnThe3DSurface(const int &, const double &x, const double &y, const double &z, const DoubleTab &u, const DoubleTab &R) const
void update_coord_dom_extrait_surface()
const DoubleTab & getMeshTransformationGradient() const
const DoubleTab & getMeshPosition() const
const DoubleVect & old_volumes_entrelaces() const override
const int & getBeamNbBeam() const
void reading_vit_bords_ALE(Entree &is)
int getMeshMotionModel() const
void reading_projection_ALE_boundary(Entree &is)
Champs_compris & get_champs_compris()
void reading_beam_model(Entree &is)
bool extrait_surf_dom_deformable_
const int & getBeamNbPlanes(const int &) const
void updateMetrics(Domaine_dis_base &, Probleme_base &)
void set_extrait_surf_dom_deformable(bool)
void initialiser(double temps, Domaine_dis_base &, Probleme_base &) override
void create_field(OWN_PTR(Champ_Inc_base)&, const std::string &, int, const Motcle &, const Probleme_base &) const
void update_after_post(double temps) override
const DoubleTab & getBeamRotation(const int &, const int &) const
const DoubleTab & getMeshStress() const
void apply_old_to_new_volume_scaling(DoubleTab &, const Domaine_dis_base &) const override
void validateTimeStep() override
const IntTab & les_elems_extrait_surf_reference() const
OWN_PTR(Champ_Inc_base) ALEMeshStructuralForces_
void update_post_fields(double temps, double dt)
const double & get_dt() const
void reading_solver_moving_mesh_ALE(Entree &is)
OWN_PTR(Champ_Inc_base) ALEMeshStructuralPressure_
int save_additional_state(Sortie &, const Probleme_base &) const override
const DoubleVect & getMeshPbVonMises() const
int get_nb_bords_ALE() const
YAML_data make_yaml(const std::string &, int, const Probleme_base &) const
void resumptionCoords(DoubleTab &)
const DoubleTab & getMeshDisplacement() const
Structural_dynamic_mesh_model str_mesh_model
std::vector< YAML_data > data_a_sauvegarder(const Probleme_base &) const override
const Champ_base & get_champ(const Motcle &) const override
ALE_CheckpointManager checkpoint_manager_
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base)&ref_champ) const override
void set_dt(double &dt) override
double interpolationPhiOnThe3DSurface(const int &, const double &x, const double &y, const double &z, const int &comp, const DoubleTab &u) const
const DoubleTab & vitesse() const
const int & getBeamLongitudinalAxis(const int &) const
IntTab les_elems_extrait_surf_reference_
ALE_ProjectionManager projection_manager_
void mettre_a_jour(double temps, Domaine_dis_base &, Probleme_base &) override
void update_ALE_projection(double, Nom &, Champ_front_ALE_projection &, int)
OWN_PTR(Champ_Inc_base) ALEMeshTotalDisplacement_
const int & getMeshStressNbComp() const
void associer_vitesse_lagrangienne(const Nom &nom_pb, const Nom &nom_champ)
void reading_structural_dynamic_mesh_model(Entree &is)
void reading_ALE_Neumann_BC_for_grid_problem(Entree &is)
OBS_PTR(Equation_base) eq
const DoubleTab & getMeshPbForceFace() const
const int & getMeshTransformationGradientNbComp() const
int Coupling_ICoCo_method
const DoubleTab & getBeamDisplacement(const int &, const int &) const
const DoubleVect & old_volumes() const override
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
Equation_base & getEquation()
const DoubleTab & getMeshVelocity() const
TRUST_Vector< OWN_PTR(Champ_front_base)> les_champs_front
OWN_PTR(Champ_Inc_base) ALEMeshVelocity_
const Nom & getBeamName(const int &) const
DoubleTab & vitesse_faces()
void set_les_elems_extrait_surf_reference(const IntTab &)
const Bords & get_bords_ALE() const
bool is_resumption() const
Nom generate_field_tag(const Champ_Inc_base &, const Probleme_base &) const
ALE_MetricsUpdater metrics_updater_
void computeFluidForceOnBeam(const int &)
const int & getMeshReferenceConfigurationNbComp() const
void clear() override
Reset the Domaine completely except for its name.
DoubleTab & getBeamVelocity(const int &, const double &tps, const double &dt)
DoubleTab ALE_mesh_velocity
void ajouter_correctif_volumique(const DoubleTab &, const DoubleTab &, double, DoubleTab &) const override
bool extrait_surf_dom_deformable() const
void resumptionStructuralDynamicsMesh(double, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &)
int restore_additional_state(Entree &, Probleme_base &) override
void creer_champ(const Motcle &, const Probleme_base &) override
bool getUpdateTheGrid() override
const DoubleTab & getMeshReferenceConfiguration() const
const int & getBeamBendingDirection(const int &, const int &) const
ALE_BeamCoupling beam_coupling_
DoubleTab & calculer_vitesse_faces(DoubleTab &, int, int, IntTab &)
void setUpdateTheGrid(bool) override
OWN_PTR(Champ_Inc_base) ALEMeshStructuralVonMises_
const DoubleTab & getMeshAcceleration() const
double computeDtBeam(Domaine_dis_base &, const int &)
const DoubleVect & getMeshPbPressure() const
Champs_compris champs_compris_
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
void creer_champ(const Motcle &motlu) override
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....
Classe Matrice_Morse_Sym Represente une matrice M (creuse) symetrique stockee au format Morse.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
class SolveurSys Un SolveurSys represente n'importe qu'elle classe
Classe de base des flux de sortie.
classe YAML_data : collection of all needed information for data to save/restore in order to write th...