template<class T, class Tder, ConstLawType::Type Typ>
struct NLSFViscoElasticCLR< T, Tder, Typ >
Definition at line 311 of file constltp_nlsf.cc.
template<class T , class Tder , ConstLawType::Type Typ> 
 
Implements ConstitutiveLawRead< T, Tder >.
Definition at line 313 of file constltp_nlsf.cc.
References ConstLawType::ELASTIC, MBDynParser::Get(), IncludeParser::GetLineData(), GetPreStress(), HighParser::GetReal(), HighParser::IsKeyWord(), MBDYN_EXCEPT_ARGS, ParseScalarFunction(), SAFENEWWITHCONSTRUCTOR, ConstLawType::VISCOELASTIC, and ConstLawType::VISCOUS.
  321                 } 
else if (
typeid(T) == 
typeid(
Vec3)) {
 
  324                 } 
else if (
typeid(T) == 
typeid(
Vec6)) {
 
  328                         silent_cerr(
"Invalid dimensionality " 
  329                                 "for NLSF viscoelastic constitutive law " 
  336                 Tder FDE0(mb_zero<Tder>());
 
  337                 bool bElastic(
false);
 
  338                 std::vector<const DifferentiableScalarFunction *> FDEsc(dim);
 
  339                 for (
unsigned i = 0; i < dim; i++) {
 
  346                         bElastic = !IsNull<Tder>(FDE0);
 
  347                         for (
unsigned i = 0; i < dim; i++) {
 
  353                                                 silent_cerr(
"NLSFViscoElasticCLR: " 
  354                                                         "stiffness scalar function #" << i << 
" " 
  356                                                         "must be differentiable" << std::endl);
 
  365                 Tder FDEPrime0(mb_zero<Tder>());
 
  366                 bool bViscous(
false);
 
  367                 std::vector<const DifferentiableScalarFunction *> FDEPrimesc(dim);
 
  368                 for (
unsigned i = 0; i < dim; i++) {
 
  373                         if ((Typ & ConstLawType::ELASTIC) && HP.
IsKeyWord(
"proportional")) {
 
  376                                 FDEPrime0 = HP.
Get(FDEPrime0);
 
  379                         bViscous = !IsNull<Tder>(FDEPrime0);
 
  380                         for (
unsigned i = 0; i < dim; i++) {
 
  385                                         if (FDEPrimesc[i] == 0) {
 
  386                                                 silent_cerr(
"NLSFViscoElasticCLR: " 
  387                                                         "damping scalar function #" << i << 
" " 
  389                                                         "must be differentiable" << std::endl);
 
  398                 T PreStress(mb_zero<T>());
 
  402                 if (bElastic && bViscous) {
 
  404                 } 
else if (bElastic) {
 
  406                 } 
else if (bViscous) {
 
  418                                 FDEPrime0, FDEPrimesc));
 
#define MBDYN_EXCEPT_ARGS
virtual bool IsKeyWord(const char *sKeyWord)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
void GetPreStress(MBDynParser &HP, T &PreStress)
virtual doublereal Get(const doublereal &d)
virtual HighParser::ErrOut GetLineData(void) const 
const BasicScalarFunction *const ParseScalarFunction(MBDynParser &HP, DataManager *const pDM)
virtual doublereal GetReal(const doublereal &dDefval=0.0)