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

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

#include <1s_21_rcm.h>

Inheritance diagram for MBSimFlexibleBody::FiniteElement1s21RCM:
[legend]

Public Member Functions

 FiniteElement1s21RCM (double l0_, double Arho_, double EA_, double EI_, const fmatvec::Vec &g_)
 constructor More...
 
 ~FiniteElement1s21RCM () override=default
 
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 &qElement) override
 compute mass matrix More...
 
void computeh (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement) override
 compute smooth right hand side More...
 
void computedhdz (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement) override
 compute Jacobian for implicit integration More...
 
double computeKineticEnergy (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement) override
 compute kinetic energy More...
 
double computeGravitationalEnergy (const fmatvec::Vec &qElement) override
 compute gravitational energy More...
 
virtual double computePhysicalStrain (const fmatvec::Vec &qElement)
 
double computeElasticEnergy (const fmatvec::Vec &qElement) 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 getJacobianOfMotion (const fmatvec::Vec &qElement, double s)
 
fmatvec::Vec computeAdditionalElementData (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement)
 
void setCurlRadius (double R)
 
void setMaterialDamping (double depsilons)
 
void setLehrDamping (double D)
 
fmatvec::Vec3 getPositions (const fmatvec::Vec &qElement, double s)
 
fmatvec::Vec3 getVelocities (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s)
 
fmatvec::Mat JGeneralizedInternal (const fmatvec::Vec &qElement, double s)
 return the JACOBIAN of translation and rotation with respect to generalised internal coordinates More...
 
fmatvec::Mat JGeneralized (const fmatvec::Vec &qElement, double s)
 return the JACOBIAN of translation and rotation with respect to generalised global coordinates More...
 
fmatvec::Mat JpGeneralized (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, double s, double sp)
 return the derivative of the JACOBIAN of translation and rotation with respect to generalised global coordinates More...
 
fmatvec::Vec ElementData (fmatvec::Vec qElement, fmatvec::Vec qpElement)
 return some additional element data 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...
 

Protected Attributes

double l0
 length, line-density, longitudinal and bending stiffness
 
double Arho
 
double EA
 
double EI
 
double wss0
 predefined bending curvature
 
double depsilon
 longitudinal damping
 
fmatvec::Vec g
 gravitation
 
fmatvec::SymMat M
 mass matrix
 
fmatvec::Vec h
 right hand side
 
fmatvec::SqrMat Dhq
 derivative of right hand side with respect to positions and velocities
 
fmatvec::SqrMat Dhqp
 
fmatvec::SqrMat Damp
 damping matrix
 
fmatvec::Vec qLocal
 internal position and velocities as well as smooth right hand side
 
fmatvec::Vec qpLocal
 
fmatvec::Vec hIntermediate
 
fmatvec::SymMat MLocal
 local mass matrix
 
fmatvec::SqrMat Jeg
 transformation global -> internal coordinates coordinates and its derivative
 
fmatvec::SqrMat Jegp
 
fmatvec::Vec qElement_Old
 global and local state of the last time step
 
fmatvec::Vec qpElement_Old
 
double tol_comp
 tolerance for comparison of state with old state
 

Private Member Functions

void BuildqLocal (const fmatvec::Vec &qGlobal, fmatvec::Vec &qLocal)
 calculates the local beam coordinates More...
 
void BuildJacobi (const fmatvec::Vec &qLocal, fmatvec::SqrMat &Jeg)
 calculates the JACOBIAN of transformation More...
 
void BuildJacobi (const fmatvec::Vec &qLocal, const fmatvec::Vec &qpIntern, fmatvec::SqrMat &Jeg, fmatvec::SqrMat &Jegp)
 calculates the JACOBIAN of transformation and its time derivative More...
 
fmatvec::Vec3 evalLocalPositions (const fmatvec::Vec &qLocal, double s)
 calculates Cartesian position More...
 
fmatvec::Vec3 evalLocalVelocities (const fmatvec::Vec &qLocal, const fmatvec::Vec &qpLocal, double s)
 calculates Cartesian velocity More...
 
fmatvec::Mat hFullJacobi (const fmatvec::Vec &qElement, const fmatvec::Vec &qpElement, const fmatvec::Vec &qLocal, const fmatvec::Vec &qpLocal, const fmatvec::SqrMat &Jeg, const fmatvec::SqrMat &Jegp, const fmatvec::SymMat &MLocal, const fmatvec::Vec &hIntermediate)
 calculates JACOBIAN of implicit integration More...
 
 FiniteElement1s21RCM ()=default
 constructor is declared private
 

Private Attributes

double l0h2
 powers of the beam length
 
double l0h3
 
double l0h4
 
double l0h5
 
double l0h7
 
double l0h8
 

Detailed Description

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

Author
Roland Zander
Thorsten Schindler
Date
2009-03-23 initial for kernel_dev
2009-07-27 implicit integration (Thorsten Schindler)
2010-03-07 renamed ElementData to computeAdditionalElementData and wired to class (Roland Zander)
Todo:

transform computeState to Position / Velocity / Orientation / AngularVelocity

JacobianMinimalRepresentation

model based on Zander, R.; Ulbrich, H.: Reference-free mixed FE-MBS approach for beam structures with constraints, Journal of Nonlinear Dynamics, Kluwer Academic Publishers, 2005 Zander, R.; Ulbrich, H.: Impacts on beam structures: Interaction of wave propagationand global dynamics, IUTAM Symposium on Multiscale Problems in Multibody System Contacts Stuttgart, Germany, 2006 Zander, R.; Ulbrich, H.: Free plain motion of flexible beams in MBS - A comparison of models, III European Conference on Computational Mechanics Lisbon, Portugal, 2006

Constructor & Destructor Documentation

◆ FiniteElement1s21RCM()

MBSimFlexibleBody::FiniteElement1s21RCM::FiniteElement1s21RCM ( double  l0_,
double  Arho_,
double  EA_,
double  EI_,
const fmatvec::Vec &  g_ 
)

constructor

Parameters
undeformedlenght of element
line-densityof beam
longitudinalstiffness
bendingstiffness
vectorof gravitational acceleration

◆ ~FiniteElement1s21RCM()

MBSimFlexibleBody::FiniteElement1s21RCM::~FiniteElement1s21RCM ( )
overridedefault

\destructor

Member Function Documentation

◆ BuildJacobi() [1/2]

void MBSimFlexibleBody::FiniteElement1s21RCM::BuildJacobi ( const fmatvec::Vec &  qLocal,
const fmatvec::Vec &  qpIntern,
fmatvec::SqrMat &  Jeg,
fmatvec::SqrMat &  Jegp 
)
private

calculates the JACOBIAN of transformation and its time derivative

Parameters
localbeam positions
localbeam velocities
JACOBIANof transformation
timederivative of JACOBIAN of transformation

◆ BuildJacobi() [2/2]

void MBSimFlexibleBody::FiniteElement1s21RCM::BuildJacobi ( const fmatvec::Vec &  qLocal,
fmatvec::SqrMat &  Jeg 
)
private

calculates the JACOBIAN of transformation

Parameters
localbeam coordinates
JACOBIANot transformation

◆ BuildqLocal()

void MBSimFlexibleBody::FiniteElement1s21RCM::BuildqLocal ( const fmatvec::Vec &  qGlobal,
fmatvec::Vec &  qLocal 
)
private

calculates the local beam coordinates

Parameters
globalcoordinates
localcoordinates

◆ computeAdditionalElementData()

Vec MBSimFlexibleBody::FiniteElement1s21RCM::computeAdditionalElementData ( const fmatvec::Vec &  qElement,
const fmatvec::Vec &  qpElement 
)

compute additional informations for element

◆ computedhdz()

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

compute Jacobian for implicit integration

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeElasticEnergy()

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

compute elastic energy

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeGravitationalEnergy()

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

compute gravitational energy

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeh()

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

compute smooth right hand side

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeKineticEnergy()

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

compute kinetic energy

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeM()

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

compute mass matrix

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ ElementData()

fmatvec::Vec MBSimFlexibleBody::FiniteElement1s21RCM::ElementData ( fmatvec::Vec  qElement,
fmatvec::Vec  qpElement 
)

return some additional element data

Parameters
globalpositions
globalvelocities
Returns
elongation, elongational velocity, cog position, cog velocity, bending angle sum, bending velocity sum

◆ evalLocalPositions()

Vec3 MBSimFlexibleBody::FiniteElement1s21RCM::evalLocalPositions ( const fmatvec::Vec &  qLocal,
double  s 
)
private

calculates Cartesian position

Parameters
localpositions
contourpoint
Returns
Cartesian position

◆ evalLocalVelocities()

Vec3 MBSimFlexibleBody::FiniteElement1s21RCM::evalLocalVelocities ( const fmatvec::Vec &  qLocal,
const fmatvec::Vec &  qpLocal,
double  s 
)
private

calculates Cartesian velocity

Parameters
localpositions
localvelocities
contourpoint
Returns
Cartesian velocity

◆ getdhdq()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getdhdu()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ geth()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getM()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getqSize()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getuSize()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ hFullJacobi()

Mat MBSimFlexibleBody::FiniteElement1s21RCM::hFullJacobi ( const fmatvec::Vec &  qElement,
const fmatvec::Vec &  qpElement,
const fmatvec::Vec &  qLocal,
const fmatvec::Vec &  qpLocal,
const fmatvec::SqrMat &  Jeg,
const fmatvec::SqrMat &  Jegp,
const fmatvec::SymMat &  MLocal,
const fmatvec::Vec &  hIntermediate 
)
private

calculates JACOBIAN of implicit integration

Parameters
globalpositions
globalvelocities
localpositions
localvelocities
JACOBIANof transformation
derivativeof JACOBIAN of transformation
localmass matrix
localright hand side
Returns
JACOBIAN for implicit integration

◆ JGeneralized()

Mat MBSimFlexibleBody::FiniteElement1s21RCM::JGeneralized ( const fmatvec::Vec &  qElement,
double  s 
)

return the JACOBIAN of translation and rotation with respect to generalised global coordinates

Parameters
generalisedcoordinates
contourpoint
Returns
JACOBIAN of translation and rotation with respect to generalised global coordinates

◆ JGeneralizedInternal()

Mat MBSimFlexibleBody::FiniteElement1s21RCM::JGeneralizedInternal ( const fmatvec::Vec &  qElement,
double  s 
)

return the JACOBIAN of translation and rotation with respect to generalised internal coordinates

Parameters
generalisedcoordinates
contourpoint
Returns
JACOBIAN of translation and rotation with respect to generalised internal coordinates

◆ JpGeneralized()

Mat MBSimFlexibleBody::FiniteElement1s21RCM::JpGeneralized ( const fmatvec::Vec &  qElement,
const fmatvec::Vec &  qpElement,
double  s,
double  sp 
)

return the derivative of the JACOBIAN of translation and rotation with respect to generalised global coordinates

Parameters
generalisedcoordinates
generalisedvelocities
contourpoint
contourpoint derivative
Returns
derivative of JACOBIAN of translation and rotation with respect to generalised global coordinates

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