16#ifndef Structural_dynamic_mesh_model_included
17#define Structural_dynamic_mesh_model_included
19#include <Interprete_geometrique_base.h>
25#pragma diag_suppress 68
27#include <MGIS/Behaviour/Behaviour.hxx>
28#include <MGIS/Behaviour/BehaviourDataView.hxx>
29#include <MGIS/Behaviour/Integrate.hxx>
31#pragma diag_warning 68
41enum class StressMeasureKind { cauchy, pk1, pk2, conjugate };
48enum class TangentOperatorKind { none, dCauchydF, dPk2dE, dPk1dF };
104 void computeInternalForces(
double& volume,
double& xlong,
double& cSound,
double& Pressure,
double& VonMises) ;
105 void setGlobalFields(
const int elnodes[4],
const double Pressure,
const double VonMises) ;
106 double computeCriticalDt(
const double volume,
const double xlong,
const double cSound,
const double dtMin,
double& scaleMass) ;
107 void computeForceFaces(
const int nb_faces,
const int nb_som_face,
const IntTab& face_sommets) ;
109 void resumptionMesh(
double, DoubleTab&, DoubleTab&, DoubleTab&, DoubleTab&, DoubleTab&, DoubleTab&, DoubleTab&);
114 DoubleTab&,
const int ,
const int ,
const int ,
115 const IntTab& ,
const int ,
const int ,
const IntTab& ,
const Domaine_ALE&) ;
188 std::map<std::string,std::vector<double>>
matp_ ;
201 const double *
const evar,
203 const double *
const gradientOrStrain0,
204 const double *
const gradientOrStrain1,
274 void setB0_(
const DoubleTab& B) ;
286 mgis::behaviour::Hypothesis hypothesis_;
288 bool loaded_ =
false;
290 DoubleTab mfrontEvars_ ;
345 matp_.insert(std::pair<std::string, std::vector<double>>(name, val)) ;
395 Cerr <<
"implicit iterations with structural grid problem: save beginning-of-step variables" << finl ;
410 Cerr <<
"implicit iterations with structural grid problem: reset variables to beginning-of-step" << finl ;
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
bool skipStressComputation
const DoubleTab & getMeshPbForceFace() const
mgis::behaviour::BehaviourDataView mgisBehaviourData_
void setConfigurationResetDt(const double &dt)
int iCoCoImplicitIteration
void setMfrontLibraryPath(const std::string &l)
const DoubleTab & getMeshVelocity() const
void setMfrontHypothesis(const std::string &h)
void setB0_(const DoubleTab &B)
void setMassElem(const double &elmass)
void applyDtCoefficient()
bool doConfigurationReset
std::map< std::string, std::vector< double > > matp_
void resetVariablestoBeginning_of_step()
void triangleSurfLength_(double &aire, double &xlong, const double Det)
void load_behaviour_(StressMeasureKind smk, TangentOperatorKind tok)
void setInertialDamping(const double &D)
double dtSafetyCoefficient_
void initDynamicMeshProblem(const double temps, const int nsom, const int nelem, const int nface, const MD_Vector &md, const MD_Vector &mde, const MD_Vector &mdf)
void setDensity(const double &rho)
void initMfrontBehaviour()
DoubleVect nodalScaleMass
const DoubleTab & getMeshDisplacement() const
void setGridDtMin(const double &dt)
double getDampingCoefficient()
std::vector< double > s0MaterialProperties_
Entree & interpreter_(Entree &) override
void setLocalFields(const int elnodes[4], const int elem)
double configurationResetDt
const int & getMeshTransformationGradientNbComp() const
const DoubleTab & getMeshPosition() const
void setMaxAddedMassRatio(const double &r)
const int & getMeshStressNbComp() const
void computeForceFaces(const int nb_faces, const int nb_som_face, const IntTab &face_sommets)
void resumptionMesh(double, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &, DoubleTab &)
bool acceleratedSolutionEnabled
const DoubleTab & getMeshTransformationGradient() const
void integrate_behaviour_(double *const stress, double *const ivar, const double *const evar, double *const stiff, const double *const gradientOrStrain0, const double *const gradientOrStrain1, double *const vsound)
const int & getMeshReferenceConfigurationNbComp() const
void tetrahedronVolLength_(double &vol, double &xlong, const double Det)
const DoubleVect & getMeshPbVonMises() const
DoubleVect meshPbVonMises_
DoubleVect meshPbPressure_
void solveDynamicMeshProblem(const double, const DoubleTab &, const IntVect &, DoubleTab &, const int, const int, const int, const IntTab &, const int, const int, const IntTab &, const Domaine_ALE &)
const DoubleVect & getMeshPbPressure() const
static constexpr int stiffnessMatrixMinSize_
void setMfrontModelName(const std::string &f)
double computeCriticalDt(const double volume, const double xlong, const double cSound, const double dtMin, double &scaleMass)
void setGlobalFields(const int elnodes[4], const double Pressure, const double VonMises)
const DoubleTab & getMeshReferenceConfiguration() const
void saveBeginning_of_stepVariables()
void computeInternalForces(double &volume, double &xlong, double &cSound, double &Pressure, double &VonMises)
const DoubleTab & getMeshAcceleration() const
std::vector< double > s1MaterialProperties_
mgis::behaviour::Behaviour mgisBehaviour_
const DoubleTab & getMeshStress() const
void addMaterialProperty(const std::string name, const std::vector< double > val)
void setDtSafetyCoefficient(const double &c)
Structural_dynamic_mesh_model()
DoubleTab meshPbForceFace_
void checkElemOrientation(int elnodes[4], const int elem)