MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
shelleasans.cc File Reference
#include "mbconfig.h"
#include "constltp_impl.h"
#include "tpldrive_impl.h"
#include "shelleasans.h"
#include "mynewmem.h"
#include "shell.hc"
Include dependency graph for shelleasans.cc:

Go to the source code of this file.

Typedefs

typedef
LinearElasticGenericConstitutiveLaw
< Shell::vh, Shell::fmh
LEGCLShell
 

Functions

ElemReadShell4EASANS (DataManager *pDM, MBDynParser &HP, const DofOwner *pDO, unsigned int uLabel)
 

Typedef Documentation

Function Documentation

Elem* ReadShell4EASANS ( DataManager pDM,
MBDynParser HP,
const DofOwner pDO,
unsigned int  uLabel 
)

Definition at line 869 of file shelleasans.cc.

References Eye3, DataManager::fReadOutput(), WithLabel::GetLabel(), DataManager::GetLogFile(), HighParser::GetReal(), MBDynParser::GetRotRel(), HighParser::IsKeyWord(), MBDYN_EXCEPT_ARGS, Elem::PLATE, R, DataManager::ReadNode(), ReadShellConstLaw(), MyVectorHandler::Reset(), SAFENEWWITHCONSTRUCTOR, and Node::STRUCTURAL.

Referenced by DataManager::ReadOneElem().

873 {
874  const StructNode* pN[4];
875  Mat3x3 R[4];
876  for (unsigned i = 0; i < 4; i++) {
877  pN[i] = pDM->ReadNode<const StructNode, Node::STRUCTURAL>(HP);
878  ReferenceFrame RF(pN[i]);
879  if (HP.IsKeyWord("orientation")) {
880  R[i] = HP.GetRotRel(RF);
881  } else {
882  R[i] = Eye3;
883  }
884  }
885 
886  /* Prestress and prestrain */
887  Shell::vh PreStress(12);
888  PreStress.Reset();
889 
890 #ifdef USE_CL_IN_SHELL
892 
894 
895  Shell::fmh S(12, 12);
896  for (unsigned ir = 1; ir <= 12; ir++) {
897  for (unsigned ic = 1; ic <= 12; ic++) {
898  S(ir, ic) = HP.GetReal();
899  }
900  }
901 
902  pD[0] = 0;
903  SAFENEWWITHCONSTRUCTOR(pD[0], LEGCLShell, LEGCLShell(pTplDC, PreStress, S));
904 
905  for (unsigned i = 1; i < 4; i++) {
906  pD[i] = pD[0]->Copy();
907  }
908 #else // ! USE_CL_IN_SHELL
909  Shell::fmh pD(12, 12);
910 
911  if (ReadShellConstLaw(HP, pD, PreStress)) {
912  silent_cerr("Shell(" << uLabel << "): unable to read constitutive law" << std::endl);
914  }
915 #endif // ! USE_CL_IN_SHELL
916 
917  flag fOut = pDM->fReadOutput(HP, Elem::PLATE);
918 
919  Elem *pEl = 0;
921  Shell4EASANS(uLabel, pDO,
922  pN[0], pN[1], pN[2], pN[3],
923  R[0], R[1], R[2], R[3],
924 #ifdef USE_CL_IN_SHELL
925 #else // ! USE_CL_IN_SHELL
926  pD, PreStress,
927 #endif // ! USE_CL_IN_SHELL
928  fOut));
929 
930  std::ostream& out = pDM->GetLogFile();
931  out << "shell4: " << uLabel
932  << " " << pN[0]->GetLabel()
933  << " " << pN[1]->GetLabel()
934  << " " << pN[2]->GetLabel()
935  << " " << pN[3]->GetLabel()
936  << std::endl;
937 
938  return pEl;
939 }
flag fReadOutput(MBDynParser &HP, const T &t) const
Definition: dataman.h:1064
Mat3x3 GetRotRel(const ReferenceFrame &rf)
Definition: mbpar.cc:1795
long int flag
Definition: mbdyn.h:43
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
LinearElasticGenericConstitutiveLaw< Shell::vh, Shell::fmh > LEGCLShell
Definition: shelleasans.cc:866
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
int ReadShellConstLaw(MBDynParser &HP, Shell::fmh &pD, Shell::vh &PreStress)
Definition: shell.cc:62
virtual bool IsKeyWord(const char *sKeyWord)
Definition: parser.cc:910
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
Definition: elem.h:75
std::ostream & GetLogFile(void) const
Definition: dataman.h:326
unsigned int GetLabel(void) const
Definition: withlab.cc:62
Node * ReadNode(MBDynParser &HP, Node::Type type) const
Definition: dataman3.cc:2309
Mat3x3 R
virtual doublereal GetReal(const doublereal &dDefval=0.0)
Definition: parser.cc:1056

Here is the call graph for this function: