69                 for (
unsigned ir = 1; ir <= 12; ir++) {
 
   74                 for (
unsigned ir = 1; ir <= 12; ir++) {
 
   76                         for (
unsigned ic = ir + 1; ic <= 12; ic++) {
 
  100                                         silent_cerr(
"Shell isotropic constitutive law: Young's modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  106                                         silent_cerr(
"Shell isotropic constitutive law: invalid Young's modulus " << dE << 
" at line " << HP.
GetLineData() << std::endl);
 
  112                                         silent_cerr(
"Shell isotropic constitutive law: Poisson's modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  117                                 if (dnu < 0. || dnu >= .5) {
 
  118                                         silent_cerr(
"Shell isotropic constitutive law: invalid Poisson's modulus " << dnu << 
" at line " << HP.
GetLineData() << std::endl);
 
  124                                         silent_cerr(
"Shell isotropic constitutive law: shear modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  130                                         silent_cerr(
"Shell isotropic constitutive law: invalid shear modulus " << dG << 
" at line " << HP.
GetLineData() << std::endl);
 
  136                                         silent_cerr(
"Shell isotropic constitutive law: thickness already provided at line " << HP.
GetLineData() << std::endl);
 
  142                                         silent_cerr(
"Shell isotropic constitutive law: invalid thickness " << dh << 
" at line " << HP.
GetLineData() << std::endl);
 
  148                                         silent_cerr(
"Shell isotropic constitutive law: as (?) already provided at line " << HP.
GetLineData() << std::endl);
 
  154                                         silent_cerr(
"Shell isotropic constitutive law: invalid as " << das << 
" at line " << HP.
GetLineData() << std::endl);
 
  160                                         silent_cerr(
"Shell isotropic constitutive law: at (?) already provided at line " << HP.
GetLineData() << std::endl);
 
  166                                         silent_cerr(
"Shell isotropic constitutive law: invalid at " << dat << 
" at line " << HP.
GetLineData() << std::endl);
 
  181                         silent_cerr(
"Shell isotropic constitutive law: incomplete material data (need at least two among Young's modulus, Poisson's modulus, shear modulus)" << std::endl);
 
  186                         if (std::abs(dE/(2.*(1 + dnu)) - dG) >
 
  187                                 std::numeric_limits<doublereal>::epsilon())
 
  189                                 silent_cerr(
"Shell isotropic constitutive law: inconsistent material data" << std::endl);
 
  194                                 dG = dE/(2.*(1 + dnu));
 
  196                         } 
else if (!bGot_E) {
 
  197                                 dE = 2.*(1 + dnu)*dG;
 
  199                         } 
else if (!bGot_nu) {
 
  200                                 dnu = dE/(2.*dG) - 1.;
 
  201                                 if (dnu <= 0. || dnu >= .5) {
 
  202                                         silent_cerr(
"Shell isotropic constitutive law: inconsistent material data (computed Poisson's modulus: " << dnu << 
")" << std::endl);
 
  209                         silent_cerr(
"Shell isotropic constitutive law: shell thickness missing" << std::endl);
 
  238         } 
else if (HP.
IsKeyWord(
"plane" "stress" "orthotropic")) {
 
  270                 bool bGot_E_l(
false);
 
  271                 bool bGot_E_t(
false);
 
  272                 bool bGot_nu_lt(
false);
 
  273                 bool bGot_nu_tl(
false);
 
  275                 bool bGot_Beta(
false);
 
  283                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: longitudinal Young's modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  289                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid longitudinal Young's modulus " << dE_l << 
" at line " << HP.
GetLineData() << std::endl);
 
  295                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: transverse Young's modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  301                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid transverse Young's modulus " << dE_t << 
" at line " << HP.
GetLineData() << std::endl);
 
  305                         } 
else if (HP.
IsKeyWord(
"nu_lt") || HP.
IsKeyWord(
"longitudinal" "transverse" "Poisson" "modulus")) {
 
  307                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: longitudinal transverse Poisson's modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  313                                 if (dnu_lt <= 0. || dnu_lt >= .5) {
 
  314                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid longitudinal transverse Poisson's modulus " << dnu_lt << 
" at line " << HP.
GetLineData() << std::endl);
 
  319                         } 
else if (HP.
IsKeyWord(
"nu_tl") || HP.
IsKeyWord(
"transverse" "longitudinal" "Poisson" "modulus")) {
 
  321                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: transverse longitudinal Poisson's modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  327                                 if (dnu_tl <= 0. || dnu_tl >= .5) {
 
  328                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid transverse longitudinal Poisson's modulus " << dnu_lt << 
" at line " << HP.
GetLineData() << std::endl);
 
  335                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: shear modulus already provided at line " << HP.
GetLineData() << std::endl);
 
  341                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid shear modulus " << dG << 
" at line " << HP.
GetLineData() << std::endl);
 
  347                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: fiber angle \"beta\" already provided at line " << HP.
GetLineData() << std::endl);
 
  354                                 silent_cerr(
"Shell plane stress orthotropic constitutive law: fiber angle \"beta\" not supported yet" << std::endl);
 
  359                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: thickness already provided at line " << HP.
GetLineData() << std::endl);
 
  365                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid thickness " << dh << 
" at line " << HP.
GetLineData() << std::endl);
 
  371                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: as (?) already provided at line " << HP.
GetLineData() << std::endl);
 
  377                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid as " << das << 
" at line " << HP.
GetLineData() << std::endl);
 
  383                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: at (?) already provided at line " << HP.
GetLineData() << std::endl);
 
  389                                         silent_cerr(
"Shell plane stress orthotropic constitutive law: invalid at " << dat << 
" at line " << HP.
GetLineData() << std::endl);
 
  399                                 silent_cerr(
"Shell plane stress orthotropic constitutive law: longitudinal Young's modulus missing at line " << HP.
GetLineData() << std::endl);
 
  404                                 silent_cerr(
"Shell plane stress orthotropic constitutive law: transverse Young's modulus missing at line " << HP.
GetLineData() << std::endl);
 
  408                 if (!bGot_nu_lt && !bGot_nu_tl) {
 
  409                                 silent_cerr(
"Shell plane stress orthotropic constitutive law: Poisson's modulus missing at line " << HP.
GetLineData() << std::endl);
 
  412                 } 
else if (bGot_nu_lt && bGot_nu_tl) {
 
  413                         if (std::abs(dnu_tl*dE_l - dnu_lt*dE_t) >
 
  414                                 std::numeric_limits<doublereal>::epsilon())
 
  416                                 silent_cerr(
"Shell plane stress orthotropic constitutive law: inconsistent material data" << std::endl);
 
  420                 } 
else if (bGot_nu_tl) {
 
  421                         dnu_lt = dnu_tl*dE_l/dE_t;
 
  425                                 silent_cerr(
"Shell plane stress orthotropic constitutive law: shear modulus missing at line " << HP.
GetLineData() << std::endl);
 
  429                 doublereal C = dh/(1. - dnu_lt*dnu_lt/dE_l*dE_t);
 
  431                 doublereal D = 1./12.*dh*dh*dh/(1. - dnu_lt*dnu_lt/dE_l*dE_t);
 
  435                 pD(1, 5) = C*dnu_lt*dE_t;
 
  441                 pD(5, 1) = C*dnu_lt*dE_t;
 
  447                 pD(7, 11) = D*dnu_lt*dE_t;
 
  453                 pD(11, 7) = D*dnu_lt*dE_t;
 
  460                 pD(8, 10) = -D*dnu_lt*dE_t;
 
  464                 pD(10, 8) = -D*dnu_lt*dE_t;
 
  474                 for (
unsigned ir = 1; ir <= 12; ir++) {
 
  475                         for (
unsigned ic = 1; ic <= 12; ic++) {
 
  483                 for (
unsigned ir = 1; ir <= 12; ir++) {
 
#define MBDYN_EXCEPT_ARGS
Shell(unsigned uLabel, const DofOwner *pDO, flag fOut)
virtual integer iGetSize(void) const 
int ReadShellConstLaw(MBDynParser &HP, Shell::fmh &pD, Shell::vh &PreStress)
virtual bool IsKeyWord(const char *sKeyWord)
#define ASSERT(expression)
virtual integer iGetNumCols(void) const 
virtual HighParser::ErrOut GetLineData(void) const 
virtual integer iGetNumRows(void) const 
virtual doublereal GetReal(const doublereal &dDefval=0.0)