1348 << f1 << std::endl <<
"(global frame): "
1354 Mat3x3 R2(pNode2->GetRCurr());
1366 << f2 << std::endl <<
"(global frame): "
1367 << pNode2->GetXCurr() + pNode2->GetRCurr()*f2 << std::endl);
1384 <<
": Beam2(" << uLabel <<
") does not support "
1385 "dynamic constitutive laws yet"
1399 Mat3x3 D11(MTmp.GetMat11());
1400 Mat3x3 D12(MTmp.GetMat12());
1401 Mat3x3 D21(MTmp.GetMat21());
1402 Mat3x3 D22(MTmp.GetMat22());
1405 "First point matrix D11: " << std::endl << D11 << std::endl
1406 <<
"First point matrix D12: " << std::endl << D12 << std::endl
1407 <<
"First point matrix D21: " << std::endl << D21 << std::endl
1408 <<
"First point matrix D22: " << std::endl << D22 << std::endl);
1415 if (HP.
IsKeyWord(
"piezoelectric" "actuator")) {
1418 "Piezoelectric actuator beam is expected"
1423 "piezo actuator " << uLabel
1424 <<
" has " << iNumElec
1425 <<
" electrodes" << std::endl);
1426 if (iNumElec <= 0) {
1427 silent_cerr(
"Beam2(" << uLabel <<
"): "
1428 "illegal number of electric nodes "
1437 for (
integer i = 0; i < iNumElec; i++) {
1441 PiezoMat[0].
Resize(iNumElec);
1442 PiezoMat[1].
Resize(iNumElec);
1445 HP.
GetMat6xN(PiezoMat[0], PiezoMat[1], iNumElec);
1449 << PiezoMat[0][0] << PiezoMat[1][0]);
1470 out <<
"beam2: " << uLabel
1472 <<
" ", f1.Write(out,
" ")
1473 <<
" " << pNode2->GetLabel()
1474 <<
" ", f2.Write(out,
" ")
1502 PiezoMat[0], PiezoMat[1],
1530 PiezoMat[0], PiezoMat[1],
1537 bool bIsErgonomy(
false);
1538 bool bIsRightHandSide(
true);
1540 if (HP.
IsKeyWord(
"inverse" "dynamics")) {
1542 silent_cerr(
"Beam2(" << uLabel <<
"): \"torque\" meaningless in this context "
1547 if (HP.
IsKeyWord(
"prescribed" "motion")) {
1548 silent_cerr(
"Beam2(" << uLabel <<
"): \"prescribed motion\" meaningless in this context "
1553 if (HP.
IsKeyWord(
"right" "hand" "side")) {
1562 silent_cerr(
"Beam2(" << uLabel <<
"): invalid constitutive law type (must be ELASTIC)" << std::endl);
1566 if (bIsRightHandSide) {
1567 silent_cerr(
"warning, Beam2(" << uLabel <<
") is both \"ergonomy\" and \"right hand side\"" << std::endl);
1576 if (bIsRightHandSide) {
1587 silent_cerr(
"semicolon expected at line "
flag fReadOutput(MBDynParser &HP, const T &t) const
virtual bool bInverseDynamics(void) const
Mat3x3 GetRotRel(const ReferenceFrame &rf)
#define MBDYN_EXCEPT_ARGS
#define DEBUGCOUTFNAME(fname)
virtual integer GetInt(integer iDefval=0)
virtual const Mat3x3 & GetRCurr(void) const
Mat3x3 GetRotAbs(const ReferenceFrame &rf)
virtual void GetMat6xN(Mat3xN &m1, Mat3xN &m2, integer iNumCols)
virtual const Tder & GetFDE(void) const
const Mat3x3 Eye3(1., 0., 0., 0., 1., 0., 0., 0., 1.)
void SetInverseDynamicsFlags(unsigned uIDF)
virtual bool GetYesNoOrBool(bool bDefval=false)
const ReferenceFrame AbsRefFrame(0, Vec3(0., 0., 0), Mat3x3(1., 0., 0., 0., 1., 0., 0., 0., 1.), Vec3(0., 0., 0), Vec3(0., 0., 0), EULER_123)
Vec3 GetPosRel(const ReferenceFrame &rf)
virtual ConstLawType::Type GetConstLawType(void) const =0
virtual bool IsKeyWord(const char *sKeyWord)
ConstitutiveLaw6D * GetConstLaw6D(ConstLawType::Type &clt)
Mat3x3 MulTM(const Mat3x3 &m) const
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
virtual const Vec3 & GetXCurr(void) const
void ReadOptionalBeamCustomOutput(DataManager *pDM, MBDynParser &HP, unsigned int uLabel, Beam::Type BT, unsigned &uFlags, OrientationDescription &od)
virtual unsigned int iGetNumDof(void) const
std::ostream & GetLogFile(void) const
#define SAFENEWARR(pnt, item, sz)
virtual HighParser::ErrOut GetLineData(void) const
unsigned int GetLabel(void) const
Node * ReadNode(MBDynParser &HP, Node::Type type) const
#define DEBUGLCOUT(level, msg)
bool bIsInverseDynamics(void) const