MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 > Class Template Reference

#include <constltp_impl.h>

Inheritance diagram for DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >:
Collaboration diagram for DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >:

Public Member Functions

 DoubleLinearElasticConstitutiveLaw (const TplDriveCaller< Vec3 > *pDC, const Vec3 &PStress, doublereal dStiff, doublereal dUppLimStrain, doublereal dLowLimStrain, doublereal dSecondStiff)
 
virtual ~DoubleLinearElasticConstitutiveLaw (void)
 
virtual ConstitutiveLaw< Vec3,
Mat3x3 > * 
pCopy (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void Update (const Vec3 &Eps, const Vec3 &=Zero3)
 
- Public Member Functions inherited from ElasticConstitutiveLaw< Vec3, Mat3x3 >
 ElasticConstitutiveLaw (const TplDriveCaller< Vec3 > *pDC, const Vec3 &PStress)
 
virtual ~ElasticConstitutiveLaw (void)
 
ConstLawType::Type GetConstLawType (void) const
 
void SetValue (DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
- Public Member Functions inherited from ConstitutiveLaw< Vec3, Mat3x3 >
 ConstitutiveLaw (void)
 
virtual ~ConstitutiveLaw (void)
 
virtual void AfterConvergence (const Vec3 &Eps, const Vec3 &EpsPrime=mb_zero< Vec3 >())
 
virtual const Vec3GetEpsilon (void) const
 
virtual const Vec3GetEpsilonPrime (void) const
 
virtual const Vec3GetF (void) const
 
virtual const Mat3x3GetFDE (void) const
 
virtual const Mat3x3GetFDEPrime (void) const
 
virtual unsigned int iGetNumDof (void) const
 
virtual std::ostream & DescribeDof (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeDof (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual std::ostream & DescribeEq (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeEq (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from SimulationEntity
 SimulationEntity (void)
 
virtual ~SimulationEntity (void)
 
virtual bool bIsValidIndex (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void Update (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void DerivativesUpdate (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from TplDriveOwner< Vec3 >
 TplDriveOwner (const TplDriveCaller< Vec3 > *pDC=0)
 
virtual ~TplDriveOwner (void)
 
void Set (const TplDriveCaller< Vec3 > *pDC)
 
TplDriveCaller< Vec3 > * pGetDriveCaller (void) const
 
Vec3 Get (const doublereal &dVar) const
 
Vec3 Get (void) const
 
virtual bool bIsDifferentiable (void) const
 
virtual Vec3 GetP (void) const
 

Private Attributes

doublereal dStiffness
 
doublereal dUpperLimitStrain
 
doublereal dLowerLimitStrain
 
doublereal dSecondStiffness
 

Additional Inherited Members

- Public Types inherited from ConstitutiveLaw< Vec3, Mat3x3 >
typedef ConstitutiveLaw< Vec3,
Mat3x3 >::ErrNotAvailable 
Err
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Protected Member Functions inherited from ElasticConstitutiveLaw< Vec3, Mat3x3 >
virtual std::ostream & Restart_int (std::ostream &out) const
 
- Protected Attributes inherited from ElasticConstitutiveLaw< Vec3, Mat3x3 >
Vec3 PreStress
 
- Protected Attributes inherited from ConstitutiveLaw< Vec3, Mat3x3 >
Vec3 Epsilon
 
Vec3 EpsilonPrime
 
Vec3 F
 
Mat3x3 FDE
 
Mat3x3 FDEPrime
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from TplDriveOwner< Vec3 >
TplDriveCaller< Vec3 > * pTplDriveCaller
 

Detailed Description

template<>
class DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >

Definition at line 874 of file constltp_impl.h.

Constructor & Destructor Documentation

DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >::DoubleLinearElasticConstitutiveLaw ( const TplDriveCaller< Vec3 > *  pDC,
const Vec3 PStress,
doublereal  dStiff,
doublereal  dUppLimStrain,
doublereal  dLowLimStrain,
doublereal  dSecondStiff 
)
inline

Definition at line 883 of file constltp_impl.h.

References ConstitutiveLaw< T, Tder >::FDE, Mat3x3DEye_Manip::Manipulate(), and Mat3x3DEye.

889  : ElasticConstitutiveLaw3D(pDC, PStress),
890  dStiffness(dStiff),
891  dUpperLimitStrain(dUppLimStrain),
892  dLowerLimitStrain(dLowLimStrain),
893  dSecondStiffness(dSecondStiff) {
895  };
const Mat3x3DEye_Manip Mat3x3DEye
Definition: matvec3.cc:637
ElasticConstitutiveLaw< Vec3, Mat3x3 > ElasticConstitutiveLaw3D
void Manipulate(Mat3x3 &m, const doublereal d) const
Definition: matvec3.h:1463

Here is the call graph for this function:

Definition at line 897 of file constltp_impl.h.

References NO_OP.

897  {
898  NO_OP;
899  };
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

virtual ConstitutiveLaw<Vec3, Mat3x3>* DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >::pCopy ( void  ) const
inlinevirtual

Implements ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 901 of file constltp_impl.h.

References DoubleLinearElasticConstitutiveLaw< T, Tder >::pCopy(), TplDriveOwner< T >::pGetDriveCaller(), ElasticConstitutiveLaw< T, Tder >::PreStress, and SAFENEWWITHCONSTRUCTOR.

Here is the call graph for this function:

virtual std::ostream& DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >::Restart ( std::ostream &  out) const
inlinevirtual

Reimplemented from ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 917 of file constltp_impl.h.

References ElasticConstitutiveLaw< T, Tder >::Restart_int().

917  {
918  out << "double linear elastic, "
919  << dStiffness << ", "
920  << dUpperLimitStrain << ", "
921  << dLowerLimitStrain << ", "
922  << dSecondStiffness;
923  return Restart_int(out);
924  };
virtual std::ostream & Restart_int(std::ostream &out) const

Here is the call graph for this function:

virtual void DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >::Update ( const Vec3 Eps,
const Vec3 = Zero3 
)
inlinevirtual

Implements ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 926 of file constltp_impl.h.

References Vec3::dGet(), ConstitutiveLaw< T, Tder >::Epsilon, ConstitutiveLaw< T, Tder >::F, ConstitutiveLaw< T, Tder >::FDE, TplDriveOwner< T >::Get(), and ElasticConstitutiveLaw< T, Tder >::PreStress.

926  {
927  Epsilon = Eps;
928 
929  Vec3 PreStrain = Get();
930  Vec3 CurrStrain = Epsilon-PreStrain;
931  doublereal dCurrStrain = CurrStrain.dGet(3);
932 
933  if (dCurrStrain <= dUpperLimitStrain && dCurrStrain >= dLowerLimitStrain) {
934  FDE.Put(3, 3, dStiffness);
935  F = PreStress+CurrStrain*dStiffness;
936  } else {
937  FDE.Put(3, 3, dSecondStiffness);
938 
939  if (dCurrStrain > dUpperLimitStrain) {
940  F = PreStress + Vec3(CurrStrain.dGet(1)*dStiffness,
941  CurrStrain.dGet(2)*dStiffness,
943  + (dCurrStrain - dUpperLimitStrain)*dSecondStiffness);
944  } else /* if (dCurrStrain < dLowerLimitStrain) */ {
945  F = PreStress + Vec3(CurrStrain.dGet(1)*dStiffness,
946  CurrStrain.dGet(2)*dStiffness,
948  + (dCurrStrain - dLowerLimitStrain)*dSecondStiffness);
949  }
950  }
951  };
Definition: matvec3.h:98
const doublereal & dGet(unsigned short int iRow) const
Definition: matvec3.h:285
void Put(unsigned short int iRow, unsigned short int iCol, const doublereal &dCoef)
Definition: matvec3.h:758
double doublereal
Definition: colamd.c:52
Vec3 Get(void) const
Definition: tpldrive.h:113

Here is the call graph for this function:

Member Data Documentation

doublereal DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >::dLowerLimitStrain
private

Definition at line 879 of file constltp_impl.h.

Definition at line 880 of file constltp_impl.h.

Definition at line 877 of file constltp_impl.h.

doublereal DoubleLinearElasticConstitutiveLaw< Vec3, Mat3x3 >::dUpperLimitStrain
private

Definition at line 878 of file constltp_impl.h.


The documentation for this class was generated from the following file: