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

superelement for linear models from external preprocessing. More...

#include <superelement_linear_external.h>

Inheritance diagram for MBSimFlexibleBody::SuperElementLinearExternal:
[legend]

Public Member Functions

void init (MBSim::Element::InitStage stage, const MBSim::InitConfigSet &config)
 
void setM (const fmatvec::SymMat &M_)
 
void setK (const fmatvec::SqrMat &K_)
 
void setProportionalDamping (double alpha_, double beta_)
 
const fmatvec::SymMat & getM () const
 
const fmatvec::Vec & geth () const
 
const fmatvec::SqrMat & getdhdq () const
 
const fmatvec::SqrMat & getdhdu () const
 
int getqSize () const
 
int getuSize () const
 
void computeM (const fmatvec::Vec &qElement)
 compute mass matrix More...
 
void computeh (const fmatvec::Vec &qElement, const fmatvec::Vec &uElement)
 
void computedhdz (const fmatvec::Vec &qElement, const fmatvec::Vec &uElement)
 compute Jacobian for implicit integration More...
 
double computeKineticEnergy (const fmatvec::Vec &q, const fmatvec::Vec &u)
 compute kinetic energy More...
 
double computeGravitationalEnergy (const fmatvec::Vec &q)
 compute gravitational energy More...
 
double computeElasticEnergy (const fmatvec::Vec &q)
 compute elastic energy More...
 
fmatvec::Vec computeVelocity (const fmatvec::Vec &q, const fmatvec::Vec &u, const MBSim::ContourPointData &cp)
 
fmatvec::Vec computeAngularVelocity (const fmatvec::Vec &q, const fmatvec::Vec &u, const MBSim::ContourPointData &cp)
 
fmatvec::Vec computePosition (const fmatvec::Vec &q, const MBSim::ContourPointData &cp)
 
fmatvec::SqrMat computeOrientation (const fmatvec::Vec &q, const MBSim::ContourPointData &cp)
 
fmatvec::Mat computeJacobianOfMotion (const fmatvec::Vec &q, const MBSim::ContourPointData &cp)
 
MBSim::ContourPointData addInterface (fmatvec::Mat J_, fmatvec::Vec KrP_)
 
- 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

fmatvec::SymMat M
 
fmatvec::Vec h
 
fmatvec::SqrMat K
 
fmatvec::SqrMat D
 
double alpha
 
double beta
 
fmatvec::SqrMat Dhq
 
fmatvec::SqrMat Dhqp
 
std::vector< fmatvec::Mat > J
 
std::vector< fmatvec::Vec > KrP
 

Detailed Description

superelement for linear models from external preprocessing.

Author
Roland Zander
Date
2009-05-22 some references added (Thorsten Schindler)
2009-07-16 fixed proportional damping (Thorsten Schindler)
2009-07-23 implicit integration (Thorsten Schindler)

Member Function Documentation

◆ computedhdz()

void MBSimFlexibleBody::SuperElementLinearExternal::computedhdz ( const fmatvec::Vec &  q,
const fmatvec::Vec &  u 
)
inlinevirtual

compute Jacobian for implicit integration

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeElasticEnergy()

double MBSimFlexibleBody::SuperElementLinearExternal::computeElasticEnergy ( const fmatvec::Vec &  q)
inlinevirtual

compute elastic energy

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeGravitationalEnergy()

double MBSimFlexibleBody::SuperElementLinearExternal::computeGravitationalEnergy ( const fmatvec::Vec &  q)
inlinevirtual

compute gravitational energy

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeh()

void MBSimFlexibleBody::SuperElementLinearExternal::computeh ( const fmatvec::Vec &  qElement,
const fmatvec::Vec &  uElement 
)
inlinevirtual

update \(\vh= -(\vK \vq + \vD \vu)\), \(\vM\) is constant

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeKineticEnergy()

double MBSimFlexibleBody::SuperElementLinearExternal::computeKineticEnergy ( const fmatvec::Vec &  q,
const fmatvec::Vec &  u 
)
inlinevirtual

compute kinetic energy

Parameters
generalisedpositions
generalisedvelocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ computeM()

void MBSimFlexibleBody::SuperElementLinearExternal::computeM ( const fmatvec::Vec &  q)
inlinevirtual

compute mass matrix

Parameters
generalisedpositions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getdhdq()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getdhdu()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ geth()

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

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getM()

const fmatvec::SymMat & MBSimFlexibleBody::SuperElementLinearExternal::getM ( ) const
inlinevirtual
Returns
mass matrix of discretization

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getqSize()

int MBSimFlexibleBody::SuperElementLinearExternal::getqSize ( ) const
inlinevirtual
Returns
dimension of positions

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ getuSize()

int MBSimFlexibleBody::SuperElementLinearExternal::getuSize ( ) const
inlinevirtual
Returns
dimension of velocities

Implements MBSimFlexibleBody::DiscretizationInterface.

◆ setK()

void MBSimFlexibleBody::SuperElementLinearExternal::setK ( const fmatvec::SqrMat &  K_)

set constant stiffness matrix \(\vK\)

Parameters
Kstiffness matrix

◆ setM()

void MBSimFlexibleBody::SuperElementLinearExternal::setM ( const fmatvec::SymMat &  M_)

set constant mass matrix \(\vM\)

Parameters
Mmass matrix

◆ setProportionalDamping()

void MBSimFlexibleBody::SuperElementLinearExternal::setProportionalDamping ( double  alpha_,
double  beta_ 
)
inline

set coefficients \(\alpha\) and \(\beta\) for proportional damping: constant damping matrix \(\vD\) proportional to mass and stiffness

\[ \vD = \alpha * \vM + \beta*\vK \]

Parameters
alphaproportional coefficient for mass matrix
betaproportional coefficient for stiffness matrix

Member Data Documentation

◆ alpha

double MBSimFlexibleBody::SuperElementLinearExternal::alpha
protected

constant for damping matrix, see setProportionalDamping

◆ beta

double MBSimFlexibleBody::SuperElementLinearExternal::beta
protected

constant for damping matrix, see setProportionalDamping

◆ D

fmatvec::SqrMat MBSimFlexibleBody::SuperElementLinearExternal::D
protected

constant damping matrix \(\vD\), see setProportionalDamping()

◆ Dhq

fmatvec::SqrMat MBSimFlexibleBody::SuperElementLinearExternal::Dhq
protected

constant Jacobians for implicit integration

◆ h

fmatvec::Vec MBSimFlexibleBody::SuperElementLinearExternal::h
protected

right hand side

◆ J

std::vector<fmatvec::Mat> MBSimFlexibleBody::SuperElementLinearExternal::J
protected

container holding constant JACOBIAN-matrizes of all Frames and Contours

◆ K

fmatvec::SqrMat MBSimFlexibleBody::SuperElementLinearExternal::K
protected

constant stiffness matrix \(\vK\)

◆ KrP

std::vector<fmatvec::Vec> MBSimFlexibleBody::SuperElementLinearExternal::KrP
protected

container holding undeformed positions in body coordinate system of all Frames and Contours

◆ M

fmatvec::SymMat MBSimFlexibleBody::SuperElementLinearExternal::M
protected

constant mass matrix \(\vM\)


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