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

#include <constltp_impl.h>

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

Public Member Functions

 DoubleLinearViscoElasticConstitutiveLaw (const TplDriveCaller< Vec3 > *pDC, const Vec3 &PStress, doublereal dStiff, doublereal dUppLimStrain, doublereal dLowLimStrain, doublereal dSecondStiff, doublereal dStiffPrime, doublereal dSecondStiffPrime)
 
virtual ~DoubleLinearViscoElasticConstitutiveLaw (void)
 
ConstLawType::Type GetConstLawType (void) const
 
virtual ConstitutiveLaw< Vec3,
Mat3x3 > * 
pCopy (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void Update (const Vec3 &Eps, const Vec3 &EpsPrime=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
 
doublereal dStiffnessPrime
 
doublereal dSecondStiffnessPrime
 

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 DoubleLinearViscoElasticConstitutiveLaw< Vec3, Mat3x3 >

Definition at line 1927 of file constltp_impl.h.

Constructor & Destructor Documentation

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

Definition at line 1938 of file constltp_impl.h.

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

1946  : ElasticConstitutiveLaw3D(pDC, PStress),
1947  dStiffness(dStiff),
1948  dUpperLimitStrain(dUppLimStrain),
1949  dLowerLimitStrain(dLowLimStrain),
1950  dSecondStiffness(dSecondStiff),
1951  dStiffnessPrime(dStiffPrime),
1952  dSecondStiffnessPrime(dSecondStiffPrime)
1953  {
1956  };
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 1958 of file constltp_impl.h.

References NO_OP.

1958  {
1959  NO_OP;
1960  };
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

ConstLawType::Type DoubleLinearViscoElasticConstitutiveLaw< Vec3, Mat3x3 >::GetConstLawType ( void  ) const
inlinevirtual

Implements ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 1962 of file constltp_impl.h.

References ConstLawType::VISCOELASTIC.

1962  {
1964  };
virtual ConstitutiveLaw<Vec3, Mat3x3>* DoubleLinearViscoElasticConstitutiveLaw< Vec3, Mat3x3 >::pCopy ( void  ) const
inlinevirtual

Implements ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 1966 of file constltp_impl.h.

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

1966  {
1968 
1971  cl,
1972  cl(pGetDriveCaller()->pCopy(),
1973  PreStress,
1974  dStiffness,
1980 
1981  return pCL;
1982  };
TplDriveCaller< Vec3 > * pGetDriveCaller(void) const
Definition: tpldrive.h:105
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
virtual ConstitutiveLaw< Vec3, Mat3x3 > * pCopy(void) const

Here is the call graph for this function:

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

Reimplemented from ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 1984 of file constltp_impl.h.

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

1984  {
1985  out << "double linear viscoelastic, "
1986  << dStiffness << ", "
1987  << dUpperLimitStrain << ", "
1988  << dLowerLimitStrain << ", "
1989  << dSecondStiffness << ", "
1990  << dStiffnessPrime << ", "
1991  << dSecondStiffnessPrime << ", ";
1992  return Restart_int(out);
1993  };
virtual std::ostream & Restart_int(std::ostream &out) const

Here is the call graph for this function:

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

Implements ConstitutiveLaw< Vec3, Mat3x3 >.

Definition at line 1995 of file constltp_impl.h.

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

1995  {
1996  Epsilon = Eps;
1997  EpsilonPrime = EpsPrime;
1998 
1999  Vec3 PreStrain = Get();
2000  Vec3 CurrStrain = Epsilon-PreStrain;
2001  doublereal dCurrStrain = CurrStrain.dGet(3);
2002 
2003  if (dCurrStrain <= dUpperLimitStrain && dCurrStrain >= dLowerLimitStrain) {
2004  FDE.Put(3, 3, dStiffness);
2005  FDEPrime.Put(3, 3, dStiffnessPrime);
2007  } else {
2008  FDE.Put(3, 3, dSecondStiffness);
2010 
2011  if (dCurrStrain > dUpperLimitStrain) {
2012  F = PreStress
2013  +Vec3(CurrStrain(1)*dStiffness + EpsilonPrime(1)*dStiffnessPrime,
2014  CurrStrain(2)*dStiffness + EpsilonPrime(2)*dStiffnessPrime,
2016  +(dCurrStrain-dUpperLimitStrain)*dSecondStiffness
2018  } else /* if (dCurrStrain < dLowerLimitStrain) */ {
2019  F = PreStress
2020  +Vec3(CurrStrain.dGet(1)*dStiffness + EpsilonPrime(1)*dStiffnessPrime,
2021  CurrStrain.dGet(2)*dStiffness + EpsilonPrime(2)*dStiffnessPrime,
2023  +(dCurrStrain-dLowerLimitStrain)*dSecondStiffness
2025  }
2026  }
2027  };
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

Definition at line 1932 of file constltp_impl.h.

Definition at line 1933 of file constltp_impl.h.

doublereal DoubleLinearViscoElasticConstitutiveLaw< Vec3, Mat3x3 >::dSecondStiffnessPrime
private

Definition at line 1935 of file constltp_impl.h.

Definition at line 1930 of file constltp_impl.h.

Definition at line 1934 of file constltp_impl.h.

Definition at line 1931 of file constltp_impl.h.


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