mbsimflexiblebody  4.0.0
MBSim Flexible Body Module
MBSimFlexibleBody::FiniteElement1s33RCM Class Reference

finite element for spatial beam using Redundant Coordinate Method (RCM) More...

#include <1s_33_rcm.h>

Inheritance diagram for MBSimFlexibleBody::FiniteElement1s33RCM:
[legend]

Public Member Functions

 FiniteElement1s33RCM (double l0_, double rho_, double A_, double E_, double G_, double I1_, double I2_, double I0_, const fmatvec::Vec &g_, RevCardanPtr ag_)
 constructor More...
 
const fmatvec::SymMat & getM () const override
 
const fmatvec::Vec & geth () const override
 
const fmatvec::SqrMat & getdhdq () const override
 
const fmatvec::SqrMat & getdhdu () const override
 
int getqSize () const override
 
int getuSize () const override
 
void computeM (const fmatvec::Vec &qG) override
 compute mass matrix More...
 
void computeh (const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
 compute smooth right hand side More...
 
void computedhdz (const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
 compute Jacobian for implicit integration More...
 
double computeKineticEnergy (const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
 compute kinetic energy More...
 
double computeGravitationalEnergy (const fmatvec::Vec &qG) override
 compute gravitational energy More...
 
double computeElasticEnergy (const fmatvec::Vec &qG) override
 compute elastic energy More...
 
virtual fmatvec::Vec3 getPosition (const fmatvec::Vec &qElement, double s)
 
virtual fmatvec::SqrMat3 getOrientation (const fmatvec::Vec &qElement, double s)
 
virtual fmatvec::Vec3 getVelocity (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s)
 
virtual fmatvec::Vec3 getAngularVelocity (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s)
 
virtual fmatvec::Mat computeJacobianOfMotion (const fmatvec::Vec &qG, double s)
 
void setGauss (int nGauss)
 
void setCurlRadius (double R1, double R2)
 
void setMaterialDamping (double epstD_, double k0D_)
 
void setLehrDamping (double epstL, double k0L)
 
double getl0 () const
 
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getPositions (const fmatvec::Vec &qElement, double s)
 
fmatvec::Vector< fmatvec::Fixed< 6 >, double > getVelocities (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s)
 
fmatvec::Mat computeJXqG (const fmatvec::Vec &qG, double x)
 compute JACOBIAN of contact description in global coordinates More...
 
fmatvec::Vec computeData (const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
 compute interesting data More...
 
double computePhysicalStrain (const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
 compute the physical strain as defined in Schindler2010, p. 25, eq. (2.52) More...
 
- Public Member Functions inherited from MBSimFlexibleBody::DiscretizationInterface
 DiscretizationInterface ()=default
 constructor
 
virtual ~DiscretizationInterface ()=default
 destructor
 
virtual const fmatvec::SymMat & getM () const =0
 
virtual const fmatvec::Vec & geth () const =0
 
virtual const fmatvec::SqrMat & getdhdq () const =0
 
virtual const fmatvec::SqrMat & getdhdu () const =0
 
virtual int getqSize () const =0
 
virtual int getuSize () const =0
 
virtual void computeM (const fmatvec::Vec &q)=0
 compute mass matrix More...
 
virtual void computeh (const fmatvec::Vec &q, const fmatvec::Vec &u)=0
 compute smooth right hand side More...
 
virtual void computedhdz (const fmatvec::Vec &q, const fmatvec::Vec &u)=0
 compute Jacobian for implicit integration More...
 
virtual double computeKineticEnergy (const fmatvec::Vec &q, const fmatvec::Vec &u)=0
 compute kinetic energy More...
 
virtual double computeGravitationalEnergy (const fmatvec::Vec &q)=0
 compute gravitational energy More...
 
virtual double computeElasticEnergy (const fmatvec::Vec &q)=0
 compute elastic energy More...
 

Private Member Functions

void computedrS ()
 compute delta matrix for CP with respect to translation
 
void computedepstil ()
 compute delta matrix for elongation
 
void computedk0 ()
 compute delta matrix for torsion
 

Private Attributes

double l0
 length of finite element
 
double rho
 density
 
double A
 cross sectional area
 
double E
 Young's modulus.
 
double G
 shear modulus
 
double I1
 geometrical moment of inertia
 
double I2
 
double I0
 
fmatvec::Vec g
 gravitation
 
double k10
 predefined bending
 
double k20
 
double epstD
 prolongational and torsional damping
 
double k0D
 
fmatvec::SymMat M
 global system description
 
fmatvec::Vec h
 
fmatvec::SqrMat dhdq
 matrices for implicit integration
 
fmatvec::SqrMat dhdu
 
fmatvec::SymMat MI
 internal system description
 
fmatvec::SqrMat Damp
 internal damping matrix
 
double l0h2
 beam length powers
 
double l0h3
 
double x_Old
 last Lagrangian coordinate in state calculation
 
fmatvec::Vec qG_Old
 global and local state of the last time step
 
fmatvec::Vec qGt_Old
 
double tol_comp
 tolerance for comparison of state with old state
 
fmatvec::Mat drS
 delta matrices
 
fmatvec::Mat drSH
 
fmatvec::RowVec depstil
 
fmatvec::RowVec dk0
 
RevCardanPtr ag
 reversed Cardan-object
 
Trafo33RCMPtr tf
 trafo-object
 
Weight33RCMPtr wt
 weight-function-object
 

Detailed Description

finite element for spatial beam using Redundant Coordinate Method (RCM)

Author
Thorsten Schindler
Date
2009-04-17 initial commit kernel_dev (Thorsten Schindler)
2009-07-27 implicit integration (Thorsten Schindler)
Todo:

transform computeState to Position / Velocity / Orientation / AngularVelocity

JacobianOfMotion

computeM

Constructor & Destructor Documentation

◆ FiniteElement1s33RCM()

MBSimFlexibleBody::FiniteElement1s33RCM::FiniteElement1s33RCM ( double  l0_,
double  rho_,
double  A_,
double  E_,
double  G_,
double  I1_,
double  I2_,
double  I0_,
const fmatvec::Vec &  g_,
RevCardanPtr  ag_ 
)

constructor

Parameters
lengthof finite element
density
cross-sectionalarea
Young'smodulus
shearmodulus
firstarea moment of inertia
secondarea moment of inertia
torsionalmoment of inertia
accelerationof gravity
cardanobject

Member Function Documentation

◆ computeData()

Vec MBSimFlexibleBody::FiniteElement1s33RCM::computeData ( const fmatvec::Vec &  qG,
const fmatvec::Vec &  qGt 
)

compute interesting data

Parameters
globalcoordinates
globalvelocities

◆ computedhdz()

void MBSimFlexibleBody::FiniteElement1s33RCM::computedhdz ( const fmatvec::Vec &  q,
const fmatvec::Vec &  u 
)
overridevirtual

compute Jacobian for implicit integration

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeElasticEnergy()

double MBSimFlexibleBody::FiniteElement1s33RCM::computeElasticEnergy ( const fmatvec::Vec &  q)
overridevirtual

compute elastic energy

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeGravitationalEnergy()

double MBSimFlexibleBody::FiniteElement1s33RCM::computeGravitationalEnergy ( const fmatvec::Vec &  q)
overridevirtual

compute gravitational energy

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeh()

void MBSimFlexibleBody::FiniteElement1s33RCM::computeh ( const fmatvec::Vec &  q,
const fmatvec::Vec &  u 
)
overridevirtual

compute smooth right hand side

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeJXqG()

Mat MBSimFlexibleBody::FiniteElement1s33RCM::computeJXqG ( const fmatvec::Vec &  qG,
double  x 
)

compute JACOBIAN of contact description in global coordinates

Parameters
globalcoordinates
LAGRANGIANparameter

◆ computeKineticEnergy()

double MBSimFlexibleBody::FiniteElement1s33RCM::computeKineticEnergy ( const fmatvec::Vec &  q,
const fmatvec::Vec &  u 
)
overridevirtual

compute kinetic energy

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeM()

void MBSimFlexibleBody::FiniteElement1s33RCM::computeM ( const fmatvec::Vec &  q)
overridevirtual

compute mass matrix

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computePhysicalStrain()

double MBSimFlexibleBody::FiniteElement1s33RCM::computePhysicalStrain ( const fmatvec::Vec &  qG,
const fmatvec::Vec &  qGt 
)

compute the physical strain as defined in Schindler2010, p. 25, eq. (2.52)

Parameters
globalcoordinates
globalvelocities

◆ getdhdq()

const fmatvec::SqrMat & MBSimFlexibleBody::FiniteElement1s33RCM::getdhdq ( ) const
inlineoverridevirtual
Returns
Jacobian of implicit integration regarding position

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getdhdu()

const fmatvec::SqrMat & MBSimFlexibleBody::FiniteElement1s33RCM::getdhdu ( ) const
inlineoverridevirtual
Returns
Jacobian of implicit integration regarding velocity

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ geth()

const fmatvec::Vec & MBSimFlexibleBody::FiniteElement1s33RCM::geth ( ) const
inlineoverridevirtual
Returns
smooth right hand side of discretization

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getM()

const fmatvec::SymMat & MBSimFlexibleBody::FiniteElement1s33RCM::getM ( ) const
inlineoverridevirtual
Returns
mass matrix of discretization

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getqSize()

int MBSimFlexibleBody::FiniteElement1s33RCM::getqSize ( ) const
inlineoverridevirtual
Returns
dimension of positions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getuSize()

int MBSimFlexibleBody::FiniteElement1s33RCM::getuSize ( ) const
inlineoverridevirtual
Returns
dimension of velocities

Implements MBSimFlexibleBody::DiscretizationInterface.


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