MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
NLPViscoElasticConstitutiveLaw< doublereal, doublereal > Class Template Reference
Inheritance diagram for NLPViscoElasticConstitutiveLaw< doublereal, doublereal >:
Collaboration diagram for NLPViscoElasticConstitutiveLaw< doublereal, doublereal >:

Public Member Functions

 NLPViscoElasticConstitutiveLaw (const TplDriveCaller< doublereal > *pDC, const doublereal &PStress, const ConstLawType::Type &cltype, const doublereal &fde0, const std::vector< const DifferentiableScalarFunction * > &fdesc, const doublereal &fdeprime0, const std::vector< const DifferentiableScalarFunction * > &fdeprimesc)
 
virtual ~NLPViscoElasticConstitutiveLaw (void)
 
ConstLawType::Type GetConstLawType (void) const
 
virtual ConstitutiveLaw
< doublereal, doublereal > * 
pCopy (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void Update (const doublereal &Eps, const doublereal &EpsPrime=0.)
 
- Public Member Functions inherited from ElasticConstitutiveLaw< doublereal, doublereal >
 ElasticConstitutiveLaw (const TplDriveCaller< doublereal > *pDC, const doublereal &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< doublereal, doublereal >
 ConstitutiveLaw (void)
 
virtual ~ConstitutiveLaw (void)
 
virtual void AfterConvergence (const doublereal &Eps, const doublereal &EpsPrime=mb_zero< doublereal >())
 
virtual const doublerealGetEpsilon (void) const
 
virtual const doublerealGetEpsilonPrime (void) const
 
virtual const doublerealGetF (void) const
 
virtual const doublerealGetFDE (void) const
 
virtual const doublerealGetFDEPrime (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< doublereal >
 TplDriveOwner (const TplDriveCaller< doublereal > *pDC=0)
 
virtual ~TplDriveOwner (void)
 
void Set (const TplDriveCaller< doublereal > *pDC)
 
TplDriveCaller< doublereal > * pGetDriveCaller (void) const
 
doublereal Get (const doublereal &dVar) const
 
doublereal Get (void) const
 
virtual bool bIsDifferentiable (void) const
 
virtual doublereal GetP (void) const
 

Private Attributes

ConstLawType::Type CLType
 
doublereal FDE0
 
doublereal FDEPrime0
 
std::vector< const
DifferentiableScalarFunction * > 
FDEsc
 
std::vector< const
DifferentiableScalarFunction * > 
FDEPrimesc
 

Additional Inherited Members

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

Detailed Description

template<>
class NLPViscoElasticConstitutiveLaw< doublereal, doublereal >

Definition at line 184 of file constltp_nlp.cc.

Constructor & Destructor Documentation

NLPViscoElasticConstitutiveLaw< doublereal, doublereal >::NLPViscoElasticConstitutiveLaw ( const TplDriveCaller< doublereal > *  pDC,
const doublereal PStress,
const ConstLawType::Type cltype,
const doublereal fde0,
const std::vector< const DifferentiableScalarFunction * > &  fdesc,
const doublereal fdeprime0,
const std::vector< const DifferentiableScalarFunction * > &  fdeprimesc 
)
inline

Definition at line 210 of file constltp_nlp.cc.

References NO_OP.

210  {
211  NO_OP;
212  };
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

ConstLawType::Type NLPViscoElasticConstitutiveLaw< doublereal, doublereal >::GetConstLawType ( void  ) const
inlinevirtual
virtual ConstitutiveLaw<doublereal, doublereal>* NLPViscoElasticConstitutiveLaw< doublereal, doublereal >::pCopy ( void  ) const
inlinevirtual

Implements ConstitutiveLaw< doublereal, doublereal >.

Definition at line 218 of file constltp_nlp.cc.

References NLPViscoElasticConstitutiveLaw< T, Tder >::CLType, NLPViscoElasticConstitutiveLaw< T, Tder >::FDE0, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEPrime0, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEPrimesc, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEsc, NLPViscoElasticConstitutiveLaw< T, Tder >::pCopy(), and SAFENEWWITHCONSTRUCTOR.

218  {
220 
222  SAFENEWWITHCONSTRUCTOR(pCL, cl,
226  return pCL;
227  };
std::vector< const DifferentiableScalarFunction * > FDEPrimesc
std::vector< const DifferentiableScalarFunction * > FDEsc
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
virtual ConstitutiveLaw< doublereal, doublereal > * pCopy(void) const

Here is the call graph for this function:

virtual std::ostream& NLPViscoElasticConstitutiveLaw< doublereal, doublereal >::Restart ( std::ostream &  out) const
inlinevirtual

Reimplemented from ConstitutiveLaw< doublereal, doublereal >.

Definition at line 229 of file constltp_nlp.cc.

References NLPViscoElasticConstitutiveLaw< T, Tder >::FDE0, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEPrime0, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEPrimesc, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEsc, MBDYN_EXCEPT_ARGS, and ElasticConstitutiveLaw< T, Tder >::Restart_int().

229  {
230  silent_cerr("NLPViscoElasticConstitutiveLaw: Restart not implemented"
231  << std::endl);
233 
234 #if 0 /* ScalarFunction restart not implemented yet */
235  out << "nlp viscoelastic, ",
236  FDE0.Write(out, ", ");
237 
238  for (unsigned i = 0; i < FDEsc.size(); i++) {
239  out << ", ";
240  if (FDEsc[i]) {
241  FDEsc[i]->Restart(out);
242 
243  } else {
244  out << "null";
245  }
246  }
247 
248  out << ", ", FDEPrime0.Write(out, ", ");
249 
250  for (unsigned i = 0; i < FDEPrimesc.size(); i++) {
251  out << ", ";
252  if (FDEsc[i]) {
253  FDEPrimesc[i]->Restart(out);
254 
255  } else {
256  out << "null";
257  }
258  }
259 
261 #endif
262  };
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
virtual std::ostream & Restart_int(std::ostream &out) const
std::vector< const DifferentiableScalarFunction * > FDEPrimesc
std::vector< const DifferentiableScalarFunction * > FDEsc

Here is the call graph for this function:

virtual void NLPViscoElasticConstitutiveLaw< doublereal, doublereal >::Update ( const doublereal Eps,
const doublereal EpsPrime = 0. 
)
inlinevirtual

Implements ConstitutiveLaw< doublereal, doublereal >.

Definition at line 264 of file constltp_nlp.cc.

References NLPViscoElasticConstitutiveLaw< T, Tder >::CLType, ConstLawType::ELASTIC, NLPViscoElasticConstitutiveLaw< T, Tder >::FDE0, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEPrime0, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEPrimesc, NLPViscoElasticConstitutiveLaw< T, Tder >::FDEsc, TplDriveOwner< T >::Get(), and ConstLawType::VISCOUS.

264  {
267 
270  doublereal dEpsPrime = EpsPrime;
271 
276  }
280  }
281 
282  /*
283  * each diagonal coefficient is:
284  *
285  * f = (f0' + f'(eps))*eps + (f0'' + f''(eps))*epsPrime
286  *
287  * so the Jacobian matrix contributions are
288  *
289  * f/eps = f0' + f' + f'/eps * eps + f''/eps * epsPrime
290  * f/epsPrime = f''
291  */
292 
293  doublereal f = 0.;
294  doublereal fde = 0.;
295 
296  if ((CLType & ConstLawType::ELASTIC) && FDEsc[0]) {
297  doublereal df1 = (*FDEsc[0])(dEps);
298  doublereal df1DE = FDEsc[0]->ComputeDiff(dEps);
299  f += df1*dEps;
300  fde += df1 + df1DE*dEps;
301  }
302 
303  if ((CLType & ConstLawType::VISCOUS) && FDEPrimesc[0]) {
304  doublereal df2 = (*FDEPrimesc[0])(dEps);
305  doublereal df2DE = FDEPrimesc[0]->ComputeDiff(dEps);
306  f += df2*dEpsPrime;
307  fde += df2DE*dEpsPrime;
309  }
310 
313  };
std::vector< const DifferentiableScalarFunction * > FDEPrimesc
std::vector< const DifferentiableScalarFunction * > FDEsc
double doublereal
Definition: colamd.c:52
T Get(void) const
Definition: tpldrive.h:113

Here is the call graph for this function:

Member Data Documentation

Definition at line 188 of file constltp_nlp.cc.

Definition at line 189 of file constltp_nlp.cc.


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