MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
ViscoElasticBeam Class Reference

#include <beam.h>

Inheritance diagram for ViscoElasticBeam:
Collaboration diagram for ViscoElasticBeam:

Public Member Functions

 ViscoElasticBeam (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, OrientationDescription ood, flag fOut)
 
 ViscoElasticBeam (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, doublereal dM_I, const Vec3 &s0_I, const Mat3x3 &j0_I, doublereal dMII, const Vec3 &s0II, const Mat3x3 &j0II, OrientationDescription ood, flag fOut)
 
virtual ~ViscoElasticBeam (void)
 
virtual Beam::Type GetBeamType (void) const
 
void SetValue (DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
 
virtual void AfterPredict (VectorHandler &, VectorHandler &)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual doublereal dGetPrivData (unsigned int i) const
 
- Public Member Functions inherited from Elem
 Elem (unsigned int uL, flag fOut)
 
virtual ~Elem (void)
 
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) const
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual int GetNumConnectedNodes (void) 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 HintParseHint (DataManager *pDM, const char *s) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
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 std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from Beam
 Beam (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, OrientationDescription ood, flag fOut)
 
 Beam (unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, doublereal dM_I, const Vec3 &s0_I, const Mat3x3 &j0_I, doublereal dMII, const Vec3 &s0II, const Mat3x3 &j0II, OrientationDescription ood, flag fOut)
 
virtual ~Beam (void)
 
virtual Elem::Type GetElemType (void) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
virtual bool bInverseDynamics (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual void SetInitialValue (VectorHandler &)
 
virtual VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual const StructNodepGetNode (unsigned int i) const
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- Public Member Functions inherited from ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
virtual doublereal dGetM (void) const
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
Vec3 GetB (void) const
 
Vec3 GetG (void) const
 
- Public Member Functions inherited from GravityOwner
 GravityOwner (void)
 
virtual ~GravityOwner (void)
 
void PutGravity (const Gravity *pG)
 
virtual bool bGetGravity (const Vec3 &X, Vec3 &Acc) const
 
- Public Member Functions inherited from InitialAssemblyElem
 InitialAssemblyElem (unsigned int uL, flag fOut)
 
virtual ~InitialAssemblyElem (void)
 
- Public Member Functions inherited from SubjectToInitialAssembly
 SubjectToInitialAssembly (void)
 
virtual ~SubjectToInitialAssembly (void)
 

Protected Member Functions

virtual void AssStiffnessMat (FullSubMatrixHandler &WMA, FullSubMatrixHandler &WMB, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void AssStiffnessVec (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
void Init (void)
 
- Protected Member Functions inherited from Beam
Vec3 InterpDeriv (const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
 
virtual void AddInternalForces (Vec6 &, unsigned int)
 
virtual void AssInertiaMat (FullSubMatrixHandler &, FullSubMatrixHandler &, doublereal, const VectorHandler &, const VectorHandler &)
 
virtual void AssInertiaVec (SubVectorHandler &, doublereal, const VectorHandler &, const VectorHandler &)
 
virtual void DsDxi (void)
 
virtual void Omega0 (void)
 
virtual std::ostream & Restart_ (std::ostream &out) const
 
void Init (void)
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetS_int (void) const
 
virtual Mat3x3 GetJ_int (void) const
 
virtual Vec3 GetB_int (void) const
 
virtual Vec3 GetG_int (void) const
 

Protected Attributes

Vec3 LPrime [NUMSEZ]
 
Vec3 gPrime [NUMSEZ]
 
Vec3 LPrimeRef [NUMSEZ]
 
Vec6 DefPrimeLocRef [NUMSEZ]
 
Mat6x6 ERef [NUMSEZ]
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from Beam
OrientationDescription od
 
const StructNodepNode [NUMNODES]
 
const Vec3 f [NUMNODES]
 
Vec3 fRef [NUMNODES]
 
const Mat3x3 RNode [NUMNODES]
 
Mat3x3 R [NUMSEZ]
 
Mat3x3 RRef [NUMSEZ]
 
Mat3x3 RPrev [NUMSEZ]
 
ConstitutiveLaw6DOwnerpD [NUMSEZ]
 
Mat6x6 DRef [NUMSEZ]
 
const bool bConsistentInertia
 
const doublereal dMass_I
 
const Vec3 S0_I
 
const Mat3x3 J0_I
 
const doublereal dMassII
 
const Vec3 S0II
 
const Mat3x3 J0II
 
Vec3 Omega [NUMSEZ]
 
Vec3 OmegaRef [NUMSEZ]
 
Vec6 Az [NUMSEZ]
 
Vec6 AzRef [NUMSEZ]
 
Vec6 AzLoc [NUMSEZ]
 
Vec6 DefLoc [NUMSEZ]
 
Vec6 DefLocRef [NUMSEZ]
 
Vec6 DefLocPrev [NUMSEZ]
 
Vec6 DefPrimeLoc [NUMSEZ]
 
Vec3 p [NUMSEZ]
 
Vec3 g [NUMSEZ]
 
Vec3 L0 [NUMSEZ]
 
Vec3 L [NUMSEZ]
 
Vec3 LRef [NUMSEZ]
 
doublereal dsdxi [NUMSEZ]
 
bool bFirstRes
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 

Additional Inherited Members

- Public Types inherited from Elem
enum  Type {
  UNKNOWN = -1, AIRPROPERTIES = 0, INDUCEDVELOCITY, AUTOMATICSTRUCTURAL,
  GRAVITY, BODY, JOINT, JOINT_REGULARIZATION,
  BEAM, PLATE, FORCE, INERTIA,
  ELECTRICBULK, ELECTRIC, THERMAL, HYDRAULIC,
  BULK, LOADABLE, DRIVEN, EXTERNAL,
  AEROMODAL, AERODYNAMIC, GENEL, SOCKETSTREAM_OUTPUT,
  RTAI_OUTPUT = SOCKETSTREAM_OUTPUT, LASTELEMTYPE
}
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 
- Public Types inherited from Beam
enum  Type {
  UNKNOWN = -1, ELASTIC = 0, VISCOELASTIC, PIEZOELECTRICELASTIC,
  PIEZOELECTRICVISCOELASTIC, LASTBEAMTYPE
}
 
enum  {
  OUTPUT_NONE = 0x000U, OUTPUT_EP_X = (ToBeOutput::OUTPUT_PRIVATE << 0), OUTPUT_EP_R = (ToBeOutput::OUTPUT_PRIVATE << 1), OUTPUT_EP_CONFIGURATION = (OUTPUT_EP_X | OUTPUT_EP_R),
  OUTPUT_EP_F = (ToBeOutput::OUTPUT_PRIVATE << 2), OUTPUT_EP_M = (ToBeOutput::OUTPUT_PRIVATE << 3), OUTPUT_EP_FORCES = (OUTPUT_EP_F | OUTPUT_EP_M ), OUTPUT_EP_NU = (ToBeOutput::OUTPUT_PRIVATE << 4),
  OUTPUT_EP_K = (ToBeOutput::OUTPUT_PRIVATE << 5), OUTPUT_EP_STRAINS = (OUTPUT_EP_NU | OUTPUT_EP_K), OUTPUT_EP_NUP = (ToBeOutput::OUTPUT_PRIVATE << 6), OUTPUT_EP_KP = (ToBeOutput::OUTPUT_PRIVATE << 7),
  OUTPUT_EP_STRAIN_RATES = (OUTPUT_EP_NUP | OUTPUT_EP_KP), OUTPUT_DEFAULT = (OUTPUT_EP_F | OUTPUT_EP_M), OUTPUT_EP_ALL = (ToBeOutput::OUTPUT_PRIVATE_MASK)
}
 
enum  Section { S_I = 0, SII = 1, NUMSEZ = 2 }
 
enum  NodeName { NODE1 = 0, NODE2 = 1, NODE3 = 2, NUMNODES = 3 }
 
enum  Deformations { STRAIN = 0, CURVAT = 1, NUMDEFORM = 2 }
 
- Static Protected Member Functions inherited from Beam
static unsigned int iGetPrivDataIdx_int (const char *s, ConstLawType::Type type)
 
static Vec3 InterpState (const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
 
- Static Protected Attributes inherited from Beam
static const unsigned int iNumPrivData
 

Detailed Description

Definition at line 449 of file beam.h.

Constructor & Destructor Documentation

ViscoElasticBeam::ViscoElasticBeam ( unsigned int  uL,
const StructNode pN1,
const StructNode pN2,
const StructNode pN3,
const Vec3 F1,
const Vec3 F2,
const Vec3 F3,
const Mat3x3 R1,
const Mat3x3 R2,
const Mat3x3 R3,
const Mat3x3 r_I,
const Mat3x3 rII,
const ConstitutiveLaw6D pD_I,
const ConstitutiveLaw6D pDII,
OrientationDescription  ood,
flag  fOut 
)

Definition at line 1310 of file beam.cc.

References Init().

1327 : Elem(uL, fOut),
1328 Beam(uL, pN1, pN2, pN3, F1, F2, F3, R1, R2, R3, r_I, rII, pD_I, pDII, ood, fOut)
1329 {
1330  Init();
1331 }
Beam(unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, OrientationDescription ood, flag fOut)
Definition: beam.cc:64
void Init(void)
Definition: beam.cc:1363
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41

Here is the call graph for this function:

ViscoElasticBeam::ViscoElasticBeam ( unsigned int  uL,
const StructNode pN1,
const StructNode pN2,
const StructNode pN3,
const Vec3 F1,
const Vec3 F2,
const Vec3 F3,
const Mat3x3 R1,
const Mat3x3 R2,
const Mat3x3 R3,
const Mat3x3 r_I,
const Mat3x3 rII,
const ConstitutiveLaw6D pD_I,
const ConstitutiveLaw6D pDII,
doublereal  dM_I,
const Vec3 s0_I,
const Mat3x3 j0_I,
doublereal  dMII,
const Vec3 s0II,
const Mat3x3 j0II,
OrientationDescription  ood,
flag  fOut 
)

Definition at line 1335 of file beam.cc.

References Init().

1355 : Elem(uL, fOut),
1356 Beam(uL, pN1, pN2, pN3, F1, F2, F3, R1, R2, R3, r_I, rII, pD_I, pDII,
1357  dM_I, s0_I, j0_I, dMII, s0II, j0II, ood, fOut)
1358 {
1359  Init();
1360 }
Beam(unsigned int uL, const StructNode *pN1, const StructNode *pN2, const StructNode *pN3, const Vec3 &F1, const Vec3 &F2, const Vec3 &F3, const Mat3x3 &R1, const Mat3x3 &R2, const Mat3x3 &R3, const Mat3x3 &r_I, const Mat3x3 &rII, const ConstitutiveLaw6D *pD_I, const ConstitutiveLaw6D *pDII, OrientationDescription ood, flag fOut)
Definition: beam.cc:64
void Init(void)
Definition: beam.cc:1363
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41

Here is the call graph for this function:

virtual ViscoElasticBeam::~ViscoElasticBeam ( void  )
inlinevirtual

Definition at line 526 of file beam.h.

References NO_OP.

526  {
527  NO_OP;
528  };
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

void ViscoElasticBeam::AfterConvergence ( const VectorHandler X,
const VectorHandler XP 
)
virtual

Reimplemented from Beam.

Definition at line 1384 of file beam.cc.

References ConstitutiveLawOwner< T, Tder >::AfterConvergence(), Beam::DefLoc, Beam::DefLocPrev, Beam::DefPrimeLoc, Beam::NUMSEZ, Beam::pD, Beam::R, and Beam::RPrev.

Referenced by AfterConvergence().

1386 {
1387  for (unsigned i = 0; i < NUMSEZ; i++) {
1388  RPrev[i] = R[i];
1389  DefLocPrev[i] = DefLoc[i];
1390  pD[i]->AfterConvergence(DefLoc[i], DefPrimeLoc[i]);
1391  }
1392 }
Vec6 DefLocPrev[NUMSEZ]
Definition: beam.h:182
ConstitutiveLaw6DOwner * pD[NUMSEZ]
Definition: beam.h:156
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
Mat3x3 RPrev[NUMSEZ]
Definition: beam.h:153
Mat3x3 R[NUMSEZ]
Definition: beam.h:151
void AfterConvergence(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:288
Vec6 DefLoc[NUMSEZ]
Definition: beam.h:180

Here is the call graph for this function:

void ViscoElasticBeam::AfterConvergence ( const VectorHandler X,
const VectorHandler XP,
const VectorHandler XPP 
)
virtual

Reimplemented from Beam.

Definition at line 1396 of file beam.cc.

References AfterConvergence().

1398 {
1399  AfterConvergence(X, XP);
1400 }
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
Definition: beam.cc:1384

Here is the call graph for this function:

void ViscoElasticBeam::AfterPredict ( VectorHandler ,
VectorHandler  
)
virtual

Reimplemented from Beam.

Reimplemented in PiezoActuatorVEBeam.

Definition at line 1657 of file beam.cc.

References Beam::AddInternalForces(), Beam::Az, Beam::AzLoc, Beam::AzRef, Beam::bFirstRes, Vec3::Cross(), grad::Cross(), Beam::DefLoc, Beam::DefLocPrev, Beam::DefLocRef, Beam::DefPrimeLoc, DefPrimeLocRef, Beam::DRef, ERef, Beam::f, Beam::g, ConstitutiveLawOwner< T, Tder >::GetF(), StructNode::GetgPRef(), StructNode::GetgRef(), StructNode::GetRRef(), StructDispNode::GetVCurr(), StructNode::GetWRef(), StructDispNode::GetXCurr(), gPrime, Beam::InterpDeriv(), Beam::InterpState(), Beam::L, Beam::L0, LPrime, LPrimeRef, Beam::LRef, CGR_Rot::MatG, CGR_Rot::MatR, MultRMRt(), MultRV(), Beam::NODE2, Beam::NUMNODES, Beam::NUMSEZ, Beam::Omega, Beam::OmegaRef, Beam::p, Beam::pD, Beam::pNode, Beam::R, Beam::RPrev, Beam::RRef, and ConstitutiveLawOwner< T, Tder >::Update().

Referenced by PiezoActuatorVEBeam::AfterPredict().

1659 {
1660  /* Calcola le deformazioni, aggiorna il legame costitutivo e crea la FDE */
1661 
1662  /* Recupera i dati dei nodi */
1663  Vec3 gNod[NUMNODES];
1664  Vec3 xTmp[NUMNODES];
1665 
1666  Vec3 gPrimeNod[NUMNODES];
1667  Vec3 xPrimeTmp[NUMNODES];
1668 
1669  for (unsigned int i = 0; i < NUMNODES; i++) {
1670  gNod[i] = pNode[i]->GetgRef();
1671  Vec3 fTmp = pNode[i]->GetRRef()*f[i];
1672  xTmp[i] = pNode[i]->GetXCurr() + fTmp;
1673  gPrimeNod[i] = pNode[i]->GetgPRef();
1674  xPrimeTmp[i] = pNode[i]->GetVCurr() + pNode[i]->GetWRef().Cross(fTmp);
1675  }
1676 
1677  Mat3x3 RDelta[NUMSEZ];
1678  Vec3 gGrad[NUMSEZ];
1679  Vec3 gPrimeGrad[NUMSEZ];
1680 
1681  /* Aggiorna le grandezze della trave nei punti di valutazione */
1682  for (unsigned int iSez = 0; iSez < NUMSEZ; iSez++) {
1683  /* Posizione */
1684  p[iSez] = InterpState(xTmp[NODE1],
1685  xTmp[NODE2],
1686  xTmp[NODE3], Beam::Section(iSez));
1687 
1688  /* Matrici di rotazione */
1689  g[iSez] = InterpState(gNod[NODE1],
1690  gNod[NODE2],
1691  gNod[NODE3], Beam::Section(iSez));
1692  RDelta[iSez] = Mat3x3(CGR_Rot::MatR, g[iSez]);
1693  R[iSez] = RRef[iSez] = RDelta[iSez]*RPrev[iSez];
1694 
1695  /* Velocita' angolare della sezione */
1696  gPrime[iSez] = InterpState(gPrimeNod[NODE1],
1697  gPrimeNod[NODE2],
1698  gPrimeNod[NODE3], Beam::Section(iSez));
1699  Omega[iSez] = OmegaRef[iSez] = Mat3x3(CGR_Rot::MatG, g[iSez])*gPrime[iSez];
1700 
1701  /* Derivate della posizione */
1702  L[iSez] = LRef[iSez] = InterpDeriv(xTmp[NODE1],
1703  xTmp[NODE2],
1704  xTmp[NODE3], Beam::Section(iSez));
1705 
1706  /* Derivate della velocita' */
1707  LPrime[iSez] = LPrimeRef[iSez]
1708  = InterpDeriv(xPrimeTmp[NODE1],
1709  xPrimeTmp[NODE2],
1710  xPrimeTmp[NODE3], Beam::Section(iSez));
1711 
1712  /* Derivate dei parametri di rotazione */
1713  gGrad[iSez] = InterpDeriv(gNod[NODE1],
1714  gNod[NODE2],
1715  gNod[NODE3], Beam::Section(iSez));
1716 
1717  /* Derivate delle derivate spaziali dei parametri di rotazione */
1718  gPrimeGrad[iSez] = InterpDeriv(gPrimeNod[NODE1],
1719  gPrimeNod[NODE2],
1720  gPrimeNod[NODE3], Beam::Section(iSez));
1721 
1722  /* Calcola le deformazioni nel sistema locale nei punti di valutazione */
1723  DefLoc[iSez] = DefLocRef[iSez]
1724  = Vec6(R[iSez].MulTV(L[iSez]) - L0[iSez],
1725  R[iSez].MulTV(Mat3x3(CGR_Rot::MatG, g[iSez])*gGrad[iSez]) + DefLocPrev[iSez].GetVec2());
1726 
1727  /* Calcola le velocita' di deformazione nel sistema locale nei punti di valutazione */
1728  DefPrimeLoc[iSez] = DefPrimeLocRef[iSez]
1729  = Vec6(R[iSez].MulTV(LPrime[iSez] + L[iSez].Cross(Omega[iSez])),
1730  R[iSez].MulTV(Mat3x3(CGR_Rot::MatG, g[iSez])*gPrimeGrad[iSez]
1731  + (Mat3x3(CGR_Rot::MatG, g[iSez])*gGrad[iSez]).Cross(Omega[iSez])));
1732 
1733  /* Calcola le azioni interne */
1734  pD[iSez]->Update(DefLoc[iSez], DefPrimeLoc[iSez]);
1735  AzLoc[iSez] = pD[iSez]->GetF();
1736 
1737  /* corregge le azioni interne locali (piezo, ecc) */
1738  AddInternalForces(AzLoc[iSez], iSez);
1739 
1740  /* Porta le azioni interne nel sistema globale */
1741  Az[iSez] = AzRef[iSez] = MultRV(AzLoc[iSez], R[iSez]);
1742 
1743  /* Aggiorna il legame costitutivo */
1744  DRef[iSez] = MultRMRt(pD[iSez]->GetFDE(), R[iSez]);
1745  ERef[iSez] = MultRMRt(pD[iSez]->GetFDEPrime(), R[iSez]);
1746  }
1747 
1748  bFirstRes = true;
1749 }
Mat3x3 MultRMRt(const Mat3x3 &m, const Mat3x3 &R)
Definition: matvec3.cc:1162
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
Vec3 MultRV(const Vec3 &v, const Mat3x3 &R)
Definition: matvec3.cc:1144
virtual const Mat3x3 & GetRRef(void) const
Definition: strnode.h:1006
Vec6 DefLocPrev[NUMSEZ]
Definition: beam.h:182
Definition: matvec3.h:98
const Vec3 f[NUMNODES]
Definition: beam.h:145
static Vec3 InterpState(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:429
Vec3 L[NUMSEZ]
Definition: beam.h:190
virtual void AddInternalForces(Vec6 &, unsigned int)
Definition: beam.h:227
Vec3 Omega[NUMSEZ]
Definition: beam.h:173
ConstitutiveLaw6DOwner * pD[NUMSEZ]
Definition: beam.h:156
virtual const Vec3 & GetWRef(void) const
Definition: strnode.h:1024
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
Vec6 DefPrimeLocRef[NUMSEZ]
Definition: beam.h:461
Mat3x3 RPrev[NUMSEZ]
Definition: beam.h:153
Vec6 DefLocRef[NUMSEZ]
Definition: beam.h:181
Vec6 AzLoc[NUMSEZ]
Definition: beam.h:179
Definition: matvec6.h:37
Vec3 LRef[NUMSEZ]
Definition: beam.h:192
Vec3 L0[NUMSEZ]
Definition: beam.h:189
Mat6x6 ERef[NUMSEZ]
Definition: beam.h:463
Vec3 OmegaRef[NUMSEZ]
Definition: beam.h:174
const MatG_Manip MatG
Definition: matvec3.cc:646
Mat3x3 R[NUMSEZ]
Definition: beam.h:151
Vec3 LPrime[NUMSEZ]
Definition: beam.h:453
Section
Definition: beam.h:136
Vec3 InterpDeriv(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:446
const MatR_Manip MatR
Definition: matvec3.cc:645
const StructNode * pNode[NUMNODES]
Definition: beam.h:142
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
Vec3 gPrime[NUMSEZ]
Definition: beam.h:454
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
bool bFirstRes
Definition: beam.h:197
Vec6 AzRef[NUMSEZ]
Definition: beam.h:178
Mat3x3 RRef[NUMSEZ]
Definition: beam.h:152
Vec3 g[NUMSEZ]
Definition: beam.h:188
const T & GetF(void) const
Definition: constltp.h:293
virtual const Vec3 & GetgRef(void) const
Definition: strnode.h:976
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
virtual const Vec3 & GetgPRef(void) const
Definition: strnode.h:988
Vec6 Az[NUMSEZ]
Definition: beam.h:177
void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:283
Vec3 LPrimeRef[NUMSEZ]
Definition: beam.h:456
Mat6x6 DRef[NUMSEZ]
Definition: beam.h:159
Vec3 p[NUMSEZ]
Definition: beam.h:187
Vec6 DefLoc[NUMSEZ]
Definition: beam.h:180

Here is the call graph for this function:

void ViscoElasticBeam::AssStiffnessMat ( FullSubMatrixHandler WMA,
FullSubMatrixHandler WMB,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
protectedvirtual

Reimplemented from Beam.

Reimplemented in PiezoActuatorVEBeam.

Definition at line 1404 of file beam.cc.

References FullSubMatrixHandler::Add(), Beam::Az, grad::Cross(), DEBUGCOUTFNAME, dN3, dN3P, Beam::DRef, Beam::dsdxi, ERef, Beam::f, StructNode::GetRCurr(), StructNode::GetWCurr(), StructDispNode::GetXCurr(), Beam::L, LPrime, MatCross, MatCrossCross, mb_deye< Mat3x3 >(), Beam::NUMNODES, Beam::NUMSEZ, Beam::Omega, Beam::p, Beam::pNode, FullSubMatrixHandler::Sub(), Mat6x6::SubMat12(), Mat6x6::SubMat22(), and Zero3x3.

Referenced by PiezoActuatorVEBeam::AssStiffnessMat().

1409 {
1410  DEBUGCOUTFNAME("ViscoElasticBeam::AssStiffnessMat");
1411 
1412  /* La matrice arriva gia' dimensionata e con gli indici di righe e colonne
1413  * a posto */
1414 
1415  /* offset nel riferimento globale */
1416  Vec3 fTmp[NUMNODES];
1417  for (unsigned int i = 0; i < NUMNODES; i++) {
1418  fTmp[i] = pNode[i]->GetRCurr()*f[i];
1419  }
1420 
1421  Mat6x6 AzTmp[NUMSEZ][NUMNODES];
1422  Mat6x6 AzPrimeTmp[NUMSEZ][NUMNODES];
1423 
1424  /* per ogni punto di valutazione: */
1425  for (unsigned int iSez = 0; iSez < NUMSEZ; iSez++) {
1426  for (unsigned int i = 0; i < NUMNODES; i++) {
1427  /* Delta - deformazioni */
1428  AzTmp[iSez][i] = AzPrimeTmp[iSez][i]
1429  = Mat6x6(mb_deye<Mat3x3>(dN3P[iSez][i]*dsdxi[iSez]),
1430  Zero3x3,
1431  Mat3x3(MatCross, L[iSez]*dN3[iSez][i] - fTmp[i]*(dN3P[iSez][i]*dsdxi[iSez])),
1432  mb_deye<Mat3x3>(dN3P[iSez][i]*dsdxi[iSez]));
1433  AzTmp[iSez][i] = DRef[iSez]*AzTmp[iSez][i]*dCoef;
1434  AzTmp[iSez][i] +=
1435  ERef[iSez]*Mat6x6(Mat3x3(MatCross, Omega[iSez]*(-dN3P[iSez][i]*dsdxi[iSez]*dCoef)),
1436  Zero3x3,
1437  (Mat3x3(MatCross, LPrime[iSez]) - Mat3x3(MatCrossCross, Omega[iSez], L[iSez]))*(dN3[iSez][i]*dCoef)
1438  + Mat3x3(MatCrossCross, Omega[iSez], fTmp[i]*(dN3P[iSez][i]*dsdxi[iSez]*dCoef))
1439  + Mat3x3(MatCross, fTmp[i].Cross(pNode[i]->GetWCurr()*(dN3P[iSez][i]*dsdxi[iSez]*dCoef))),
1440  Mat3x3(MatCross, Omega[iSez]*(-dN3P[iSez][i]*dsdxi[iSez]*dCoef)));
1441  AzPrimeTmp[iSez][i] = ERef[iSez]*AzPrimeTmp[iSez][i];
1442 
1443  /* Correggo per la rotazione da locale a globale */
1444  AzTmp[iSez][i].SubMat12(Mat3x3(MatCross, Az[iSez].GetVec1()*(dN3[iSez][i]*dCoef)));
1445  AzTmp[iSez][i].SubMat22(Mat3x3(MatCross, Az[iSez].GetVec2()*(dN3[iSez][i]*dCoef)));
1446  }
1447  } /* end ciclo sui punti di valutazione */
1448 
1449 
1450  Vec3 bTmp[2];
1451 
1452  /* ciclo sulle equazioni */
1453  for (unsigned int iSez = 0; iSez < NUMSEZ; iSez++) {
1454  bTmp[0] = p[iSez] - pNode[iSez]->GetXCurr();
1455  bTmp[1] = p[iSez] - pNode[iSez + 1]->GetXCurr();
1456 
1457  unsigned int iRow1 = iSez*6 + 1;
1458  unsigned int iRow2 = iRow1 + 6;
1459 
1460  for (unsigned int i = 0; i < NUMNODES; i++) {
1461  /* Equazione all'indietro: */
1462  WMA.Sub(iRow1, 6*i + 1, AzTmp[iSez][i].GetMat11());
1463  WMA.Sub(iRow1, 6*i + 4, AzTmp[iSez][i].GetMat12());
1464 
1465  WMA.Sub(iRow1 + 3, 6*i + 1,
1466  AzTmp[iSez][i].GetMat21()
1467  - Mat3x3(MatCross, Az[iSez].GetVec1()*(dCoef*dN3[iSez][i]))
1468  + bTmp[0].Cross(AzTmp[iSez][i].GetMat11()));
1469  WMA.Sub(iRow1 + 3, 6*i + 4,
1470  AzTmp[iSez][i].GetMat22()
1471  - Mat3x3(MatCrossCross, Az[iSez].GetVec1()*(-dCoef*dN3[iSez][i]), fTmp[i])
1472  + bTmp[0].Cross(AzTmp[iSez][i].GetMat12()));
1473 
1474  /* Equazione in avanti: */
1475  WMA.Add(iRow2, 6*i + 1, AzTmp[iSez][i].GetMat11());
1476  WMA.Add(iRow2, 6*i + 4, AzTmp[iSez][i].GetMat12());
1477 
1478  WMA.Add(iRow2 + 3, 6*i + 1,
1479  AzTmp[iSez][i].GetMat21()
1480  - Mat3x3(MatCross, Az[iSez].GetVec1()*(dCoef*dN3[iSez][i]))
1481  + bTmp[1].Cross(AzTmp[iSez][i].GetMat11()));
1482  WMA.Add(iRow2 + 3, 6*i + 4,
1483  AzTmp[iSez][i].GetMat22()
1484  + Mat3x3(MatCrossCross, Az[iSez].GetVec1()*(dCoef*dN3[iSez][i]), fTmp[i])
1485  + bTmp[1].Cross(AzTmp[iSez][i].GetMat12()));
1486 
1487 
1488  /* Equazione viscosa all'indietro: */
1489  WMB.Sub(iRow1, 6*i + 1, AzPrimeTmp[iSez][i].GetMat11());
1490  WMB.Sub(iRow1, 6*i + 4, AzPrimeTmp[iSez][i].GetMat12());
1491 
1492  WMB.Sub(iRow1 + 3, 6*i + 1,
1493  AzPrimeTmp[iSez][i].GetMat21()
1494  + bTmp[0].Cross(AzPrimeTmp[iSez][i].GetMat11()));
1495  WMB.Sub(iRow1 + 3, 6*i + 4,
1496  AzPrimeTmp[iSez][i].GetMat22()
1497  + bTmp[0].Cross(AzPrimeTmp[iSez][i].GetMat12()));
1498 
1499  /* Equazione viscosa in avanti: */
1500  WMB.Add(iRow2, 6*i + 1, AzPrimeTmp[iSez][i].GetMat11());
1501  WMB.Add(iRow2, 6*i + 4, AzPrimeTmp[iSez][i].GetMat12());
1502 
1503  WMB.Add(iRow2 + 3, 6*i + 1,
1504  AzPrimeTmp[iSez][i].GetMat21()
1505  + bTmp[1].Cross(AzPrimeTmp[iSez][i].GetMat11()));
1506  WMB.Add(iRow2 + 3, 6*i + 4,
1507  AzPrimeTmp[iSez][i].GetMat22()
1508  + bTmp[1].Cross(AzPrimeTmp[iSez][i].GetMat12()));
1509  }
1510 
1511  /* correzione alle equazioni */
1512  Mat3x3 FTmp(MatCross, Az[iSez].GetVec1()*dCoef);
1513  WMA.Sub(iRow1 + 3, 6*iSez + 1, FTmp);
1514  WMA.Add(iRow2 + 3, 6*iSez + 7, FTmp);
1515 
1516  } /* end ciclo sui punti di valutazione */
1517 };
Definition: matvec3.h:98
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
const Vec3 f[NUMNODES]
Definition: beam.h:145
const MatCross_Manip MatCross
Definition: matvec3.cc:639
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 L[NUMSEZ]
Definition: beam.h:190
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
Vec3 Omega[NUMSEZ]
Definition: beam.h:173
Mat3x3 mb_deye< Mat3x3 >(const doublereal d)
Definition: matvec3.h:1584
const Mat3x3 Zero3x3(0., 0., 0., 0., 0., 0., 0., 0., 0.)
Mat6x6 ERef[NUMSEZ]
Definition: beam.h:463
void SubMat12(const Mat3x3 &x)
Definition: matvec6.h:416
void SubMat22(const Mat3x3 &x)
Definition: matvec6.h:420
const doublereal dN3[2][3]
Definition: shapefnc.cc:157
Vec3 LPrime[NUMSEZ]
Definition: beam.h:453
const StructNode * pNode[NUMNODES]
Definition: beam.h:142
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const MatCrossCross_Manip MatCrossCross
Definition: matvec3.cc:640
void Sub(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:215
Vec6 Az[NUMSEZ]
Definition: beam.h:177
Mat6x6 DRef[NUMSEZ]
Definition: beam.h:159
const doublereal dN3P[2][3]
Definition: shapefnc.cc:162
Vec3 p[NUMSEZ]
Definition: beam.h:187
doublereal dsdxi[NUMSEZ]
Definition: beam.h:194

Here is the call graph for this function:

void ViscoElasticBeam::AssStiffnessVec ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
protectedvirtual

Reimplemented from Beam.

Reimplemented in PiezoActuatorVEBeam.

Definition at line 1522 of file beam.cc.

References VectorHandler::Add(), Beam::AddInternalForces(), Beam::Az, Beam::AzLoc, Beam::bFirstRes, Vec3::Cross(), grad::Cross(), DEBUGCOUTFNAME, Beam::DefLoc, Beam::DefLocRef, Beam::DefPrimeLoc, DefPrimeLocRef, Beam::f, Beam::g, ConstitutiveLawOwner< T, Tder >::GetF(), StructNode::GetgCurr(), StructNode::GetgPCurr(), StructNode::GetRCurr(), StructDispNode::GetVCurr(), StructNode::GetWCurr(), StructDispNode::GetXCurr(), gPrime, Beam::InterpDeriv(), Beam::InterpState(), Beam::L, Beam::L0, LPrime, CGR_Rot::MatG, CGR_Rot::MatR, MultRV(), Beam::NODE2, Beam::NUMNODES, Beam::NUMSEZ, Beam::Omega, Beam::OmegaRef, Beam::p, Beam::pD, Beam::pNode, Beam::R, Beam::RRef, Beam::S_I, Beam::SII, VectorHandler::Sub(), and ConstitutiveLawOwner< T, Tder >::Update().

Referenced by PiezoActuatorVEBeam::AssStiffnessVec().

1526 {
1527  DEBUGCOUTFNAME("ViscoElasticBeam::AssStiffnessVec");
1528 
1529  /* Riceve il vettore gia' dimensionato e con gli indici a posto
1530  * per scrivere il residuo delle equazioni di equilibrio dei tre nodi */
1531 
1532  /* Per la trattazione teorica, il riferimento e' il file ul-travi.tex
1533  * (ora e' superato) */
1534 
1535  if (bFirstRes) {
1536  bFirstRes = false; /* AfterPredict ha gia' calcolato tutto */
1537  } else {
1538  Vec3 gNod[NUMNODES];
1539  Vec3 xTmp[NUMNODES];
1540 
1541  Vec3 gPrimeNod[NUMNODES];
1542  Vec3 xPrimeTmp[NUMNODES];
1543 
1544  for (unsigned int i = 0; i < NUMNODES; i++) {
1545  gNod[i] = pNode[i]->GetgCurr();
1546  Vec3 fTmp = pNode[i]->GetRCurr()*f[i];
1547  xTmp[i] = pNode[i]->GetXCurr() + fTmp;
1548  gPrimeNod[i] = pNode[i]->GetgPCurr();
1549  xPrimeTmp[i] = pNode[i]->GetVCurr()+pNode[i]->GetWCurr().Cross(fTmp);
1550  }
1551 
1552  Mat3x3 RDelta[NUMSEZ];
1553  Vec3 gGrad[NUMSEZ];
1554  Vec3 gPrimeGrad[NUMSEZ];
1555 
1556  /* Aggiorna le grandezze della trave nei punti di valutazione */
1557  for (unsigned int iSez = 0; iSez < NUMSEZ; iSez++) {
1558 
1559  /* Posizione */
1560  p[iSez] = InterpState(xTmp[NODE1],
1561  xTmp[NODE2],
1562  xTmp[NODE3], Beam::Section(iSez));
1563 
1564  /* Matrici di rotazione */
1565  g[iSez] = InterpState(gNod[NODE1],
1566  gNod[NODE2],
1567  gNod[NODE3], Beam::Section(iSez));
1568  RDelta[iSez] = Mat3x3(CGR_Rot::MatR, g[iSez]);
1569  R[iSez] = RDelta[iSez]*RRef[iSez];
1570 
1571  /* Velocita' angolare della sezione */
1572  gPrime[iSez] = InterpState(gPrimeNod[NODE1],
1573  gPrimeNod[NODE2],
1574  gPrimeNod[NODE3], Beam::Section(iSez));
1575  Omega[iSez] = Mat3x3(CGR_Rot::MatG, g[iSez])*gPrime[iSez]
1576  + RDelta[iSez]*OmegaRef[iSez];
1577 
1578  /* Derivate della posizione */
1579  L[iSez] = InterpDeriv(xTmp[NODE1],
1580  xTmp[NODE2],
1581  xTmp[NODE3], Beam::Section(iSez));
1582 
1583  /* Derivate della velocita' */
1584  LPrime[iSez] = InterpDeriv(xPrimeTmp[NODE1],
1585  xPrimeTmp[NODE2],
1586  xPrimeTmp[NODE3], Beam::Section(iSez));
1587 
1588  /* Derivate dei parametri di rotazione */
1589  gGrad[iSez] = InterpDeriv(gNod[NODE1],
1590  gNod[NODE2],
1591  gNod[NODE3], Beam::Section(iSez));
1592 
1593  /* Derivate delle derivate spaziali dei parametri di rotazione */
1594  gPrimeGrad[iSez] = InterpDeriv(gPrimeNod[NODE1],
1595  gPrimeNod[NODE2],
1596  gPrimeNod[NODE3], Beam::Section(iSez));
1597 
1598  /* Calcola le deformazioni nel sistema locale nei punti di valutazione */
1599  DefLoc[iSez] = Vec6(R[iSez].MulTV(L[iSez]) - L0[iSez],
1600  R[iSez].MulTV(Mat3x3(CGR_Rot::MatG, g[iSez])*gGrad[iSez]) + DefLocRef[iSez].GetVec2());
1601 
1602  /* Calcola le velocita' di deformazione nel sistema locale nei punti di valutazione */
1603  DefPrimeLoc[iSez] = Vec6(R[iSez].MulTV(LPrime[iSez] + L[iSez].Cross(Omega[iSez])),
1604  R[iSez].MulTV(Mat3x3(CGR_Rot::MatG, g[iSez])*gPrimeGrad[iSez]
1605  + (Mat3x3(CGR_Rot::MatG, g[iSez])*gGrad[iSez]).Cross(Omega[iSez]))
1606  + DefPrimeLocRef[iSez].GetVec2());
1607 
1608  /* Calcola le azioni interne */
1609  pD[iSez]->Update(DefLoc[iSez], DefPrimeLoc[iSez]);
1610  AzLoc[iSez] = pD[iSez]->GetF();
1611 
1612  /* corregge le azioni interne locali (piezo, ecc) */
1613  AddInternalForces(AzLoc[iSez], iSez);
1614 
1615  /* Porta le azioni interne nel sistema globale */
1616  Az[iSez] = MultRV(AzLoc[iSez], R[iSez]);
1617  }
1618  }
1619 
1620  WorkVec.Add(1, Az[S_I].GetVec1());
1621  WorkVec.Add(4, (p[S_I] - pNode[NODE1]->GetXCurr()).Cross(Az[S_I].GetVec1())
1622  + Az[S_I].GetVec2());
1623  WorkVec.Add(7, Az[SII].GetVec1() - Az[S_I].GetVec1());
1624  WorkVec.Add(10, Az[SII].GetVec2() - Az[S_I].GetVec2()
1625  + (p[SII] - pNode[NODE2]->GetXCurr()).Cross(Az[SII].GetVec1())
1626  - (p[S_I] - pNode[NODE2]->GetXCurr()).Cross(Az[S_I].GetVec1()));
1627  WorkVec.Sub(13, Az[SII].GetVec1());
1628  WorkVec.Add(16, Az[SII].GetVec1().Cross(p[SII] - pNode[NODE3]->GetXCurr())
1629  - Az[SII].GetVec2());
1630 }
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
Vec3 MultRV(const Vec3 &v, const Mat3x3 &R)
Definition: matvec3.cc:1144
Definition: matvec3.h:98
#define DEBUGCOUTFNAME(fname)
Definition: myassert.h:256
const Vec3 f[NUMNODES]
Definition: beam.h:145
static Vec3 InterpState(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:429
virtual const Vec3 & GetgCurr(void) const
Definition: strnode.h:982
virtual const Mat3x3 & GetRCurr(void) const
Definition: strnode.h:1012
Vec3 L[NUMSEZ]
Definition: beam.h:190
virtual void AddInternalForces(Vec6 &, unsigned int)
Definition: beam.h:227
Vec3 Omega[NUMSEZ]
Definition: beam.h:173
ConstitutiveLaw6DOwner * pD[NUMSEZ]
Definition: beam.h:156
virtual void Sub(integer iRow, const Vec3 &v)
Definition: vh.cc:78
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
Vec6 DefPrimeLocRef[NUMSEZ]
Definition: beam.h:461
Vec6 DefLocRef[NUMSEZ]
Definition: beam.h:181
Vec6 AzLoc[NUMSEZ]
Definition: beam.h:179
Definition: matvec6.h:37
Vec3 L0[NUMSEZ]
Definition: beam.h:189
Vec3 OmegaRef[NUMSEZ]
Definition: beam.h:174
const MatG_Manip MatG
Definition: matvec3.cc:646
Mat3x3 R[NUMSEZ]
Definition: beam.h:151
Vec3 LPrime[NUMSEZ]
Definition: beam.h:453
virtual const Vec3 & GetWCurr(void) const
Definition: strnode.h:1030
Section
Definition: beam.h:136
Vec3 InterpDeriv(const Vec3 &v1, const Vec3 &v2, const Vec3 &v3, enum Section Sec)
Definition: beam.cc:446
const MatR_Manip MatR
Definition: matvec3.cc:645
const StructNode * pNode[NUMNODES]
Definition: beam.h:142
VectorExpression< VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >, 3 > Cross(const VectorExpression< VectorLhsExpr, 3 > &u, const VectorExpression< VectorRhsExpr, 3 > &v)
Definition: matvec.h:3248
Vec3 gPrime[NUMSEZ]
Definition: beam.h:454
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
virtual void Add(integer iRow, const Vec3 &v)
Definition: vh.cc:63
bool bFirstRes
Definition: beam.h:197
Mat3x3 RRef[NUMSEZ]
Definition: beam.h:152
Vec3 g[NUMSEZ]
Definition: beam.h:188
const T & GetF(void) const
Definition: constltp.h:293
virtual const Vec3 & GetgPCurr(void) const
Definition: strnode.h:994
virtual const Vec3 & GetVCurr(void) const
Definition: strnode.h:322
Vec6 Az[NUMSEZ]
Definition: beam.h:177
void Update(const T &Eps, const T &EpsPrime=mb_zero< T >())
Definition: constltp.h:283
Vec3 p[NUMSEZ]
Definition: beam.h:187
Vec6 DefLoc[NUMSEZ]
Definition: beam.h:180

Here is the call graph for this function:

doublereal ViscoElasticBeam::dGetPrivData ( unsigned int  i) const
virtual

Reimplemented from Beam.

Definition at line 1752 of file beam.cc.

References ASSERT, Beam::DefPrimeLoc, Vec6::dGet(), Beam::dGetPrivData(), Beam::iGetNumPrivData(), and Beam::iNumPrivData.

1753 {
1754  ASSERT(i > 0 && i <= iGetNumPrivData());
1755 
1756  int sez = (i - 1)/iNumPrivData;
1757  int idx = (i - 1)%iNumPrivData + 1;
1758 
1759  switch (idx) {
1760  case 22:
1761  case 23:
1762  case 24:
1763  case 25:
1764  case 26:
1765  case 27:
1766  return DefPrimeLoc[sez].dGet(idx - 21);
1767 
1768  default:
1769  return Beam::dGetPrivData(i);
1770  }
1771 }
virtual unsigned int iGetNumPrivData(void) const
Definition: beam.cc:263
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
static const unsigned int iNumPrivData
Definition: beam.h:100
virtual doublereal dGetPrivData(unsigned int i) const
Definition: beam.cc:381
#define ASSERT(expression)
Definition: colamd.c:977
const doublereal & dGet(unsigned short int i) const
Definition: matvec6.h:182

Here is the call graph for this function:

virtual Beam::Type ViscoElasticBeam::GetBeamType ( void  ) const
inlinevirtual

Reimplemented from Beam.

Reimplemented in PiezoActuatorVEBeam.

Definition at line 531 of file beam.h.

References Beam::VISCOELASTIC.

531  {
532  return Beam::VISCOELASTIC;
533  };
void ViscoElasticBeam::Init ( void  )
protected

Definition at line 1363 of file beam.cc.

References Beam::DefPrimeLoc, DefPrimeLocRef, ERef, gPrime, LPrime, LPrimeRef, MultRMRt(), Beam::Omega, Beam::Omega0(), Beam::OmegaRef, Beam::pD, Beam::RRef, Beam::S_I, Beam::SII, Zero3, and Zero6.

Referenced by ViscoElasticBeam().

1364 {
1365  gPrime[S_I] = gPrime[SII] = Zero3;
1366 
1367  LPrime[S_I] = LPrime[SII] = Zero3;
1369 
1372 
1373  /* Nota: DsDxi() viene chiamata dal costruttore di Beam */
1374  Beam::Omega0();
1375 
1376  OmegaRef[S_I] = Omega[S_I];
1377  OmegaRef[SII] = Omega[SII];
1378 
1379  const_cast<Mat6x6&>(ERef[S_I]) = MultRMRt(pD[S_I]->GetFDEPrime(), RRef[S_I]);
1380  const_cast<Mat6x6&>(ERef[SII]) = MultRMRt(pD[SII]->GetFDEPrime(), RRef[SII]);
1381 }
Mat3x3 MultRMRt(const Mat3x3 &m, const Mat3x3 &R)
Definition: matvec3.cc:1162
const Vec3 Zero3(0., 0., 0.)
Vec3 Omega[NUMSEZ]
Definition: beam.h:173
ConstitutiveLaw6DOwner * pD[NUMSEZ]
Definition: beam.h:156
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
Vec6 DefPrimeLocRef[NUMSEZ]
Definition: beam.h:461
Mat6x6 ERef[NUMSEZ]
Definition: beam.h:463
Vec3 OmegaRef[NUMSEZ]
Definition: beam.h:174
const Vec6 Zero6(0., 0., 0., 0., 0., 0.)
Vec3 LPrime[NUMSEZ]
Definition: beam.h:453
virtual void Omega0(void)
Definition: beam.cc:519
Vec3 gPrime[NUMSEZ]
Definition: beam.h:454
Mat3x3 RRef[NUMSEZ]
Definition: beam.h:152
Vec3 LPrimeRef[NUMSEZ]
Definition: beam.h:456

Here is the call graph for this function:

void ViscoElasticBeam::SetValue ( DataManager pDM,
VectorHandler X,
VectorHandler XP,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from Beam.

Reimplemented in PiezoActuatorVEBeam.

Definition at line 1635 of file beam.cc.

References ASSERT, Beam::bFirstRes, Beam::DefPrimeLoc, DefPrimeLocRef, ERef, LPrime, LPrimeRef, MultRMRt(), Beam::NUMSEZ, Beam::Omega, Beam::OmegaRef, Beam::pD, Beam::RRef, and Beam::SetValue().

Referenced by PiezoActuatorVEBeam::SetValue().

1638 {
1639  Beam::SetValue(pDM, X, XP, ph);
1640 
1641  /* Aggiorna le grandezze della trave nei punti di valutazione */
1642  for (unsigned int iSez = 0; iSez < NUMSEZ; iSez++) {
1643  OmegaRef[iSez] = Omega[iSez];
1644  LPrimeRef[iSez] = LPrime[iSez];
1645  DefPrimeLocRef[iSez] = DefPrimeLoc[iSez];
1646 
1647  /* Aggiorna il legame costitutivo di riferimento
1648  * (la deformazione e' gia' stata aggiornata dall'ultimo residuo) */
1649  ERef[iSez] = MultRMRt(pD[iSez]->GetFDEPrime(), RRef[iSez]);
1650  }
1651  ASSERT(bFirstRes == true);
1652 }
Mat3x3 MultRMRt(const Mat3x3 &m, const Mat3x3 &R)
Definition: matvec3.cc:1162
void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
Definition: beam.cc:966
Vec3 Omega[NUMSEZ]
Definition: beam.h:173
ConstitutiveLaw6DOwner * pD[NUMSEZ]
Definition: beam.h:156
Vec6 DefPrimeLoc[NUMSEZ]
Definition: beam.h:185
Vec6 DefPrimeLocRef[NUMSEZ]
Definition: beam.h:461
Mat6x6 ERef[NUMSEZ]
Definition: beam.h:463
Vec3 OmegaRef[NUMSEZ]
Definition: beam.h:174
Vec3 LPrime[NUMSEZ]
Definition: beam.h:453
#define ASSERT(expression)
Definition: colamd.c:977
bool bFirstRes
Definition: beam.h:197
Mat3x3 RRef[NUMSEZ]
Definition: beam.h:152
Vec3 LPrimeRef[NUMSEZ]
Definition: beam.h:456

Here is the call graph for this function:

Member Data Documentation

Vec6 ViscoElasticBeam::DefPrimeLocRef[NUMSEZ]
protected

Definition at line 461 of file beam.h.

Referenced by AfterPredict(), AssStiffnessVec(), Init(), and SetValue().

Mat6x6 ViscoElasticBeam::ERef[NUMSEZ]
protected

Definition at line 463 of file beam.h.

Referenced by AfterPredict(), AssStiffnessMat(), Init(), and SetValue().

Vec3 ViscoElasticBeam::gPrime[NUMSEZ]
protected

Definition at line 454 of file beam.h.

Referenced by AfterPredict(), AssStiffnessVec(), and Init().

Vec3 ViscoElasticBeam::LPrime[NUMSEZ]
protected

Definition at line 453 of file beam.h.

Referenced by AfterPredict(), AssStiffnessMat(), AssStiffnessVec(), Init(), and SetValue().

Vec3 ViscoElasticBeam::LPrimeRef[NUMSEZ]
protected

Definition at line 456 of file beam.h.

Referenced by AfterPredict(), Init(), and SetValue().


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