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_; }
class Champ_base This class is the base of the fields hierarchy.
class Champ_front_base Base class for the hierarchy of boundary fields.
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_
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
void creer_champ(const Motcle &motlu) override
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Class defining operators and methods for all reading operation in an input flow (file,...
class Equation_base The role of an equation is the calculation of one or more fields....
Matrice_Morse_Sym class - Represents a sparse symmetric matrix M stored in Morse format.
A character string (Nom) in uppercase.
class Nom: a character string for naming TRUST objects.
An array of character strings (VECT(Nom)).
class Probleme_base It is a Probleme_U that is not a coupling.
class SolveurSys A SolveurSys represents any class
Base class for output streams.
YAML_data class: collection of all needed information for data to save/restore in order to write the ...