20#ifndef _FINITE_ELEMENT_1S_33_RCM_H_
21#define _FINITE_ELEMENT_1S_33_RCM_H_
23#include "mbsimFlexibleBody/discretization_interface.h"
24#include "mbsimFlexibleBody/pointer.h"
25#include "mbsimFlexibleBody/flexible_body/fe/1s_33_rcm/weight33RCM.h"
26#include "fmatvec/fmatvec.h"
28namespace MBSimFlexibleBody {
54 FiniteElement1s33RCM(
double l0_,
double rho_,
double A_,
double E_,
double G_,
double I1_,
double I2_,
double I0_,
const fmatvec::Vec& g_, RevCardanPtr ag_);
57 const fmatvec::SymMat&
getM()
const override;
58 const fmatvec::Vec&
geth()
const override;
59 const fmatvec::SqrMat&
getdhdq()
const override;
60 const fmatvec::SqrMat&
getdhdu()
const override;
64 void computeM(
const fmatvec::Vec& qG)
override;
65 void computeh(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
66 void computedhdz(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
71 virtual fmatvec::Vec3 getPosition(
const fmatvec::Vec& qElement,
double s);
72 virtual fmatvec::SqrMat3 getOrientation(
const fmatvec::Vec& qElement,
double s);
73 virtual fmatvec::Vec3 getVelocity(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
74 virtual fmatvec::Vec3 getAngularVelocity(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
75 virtual fmatvec::Mat computeJacobianOfMotion(
const fmatvec::Vec& qG,
double s) {
return computeJXqG(qG,s); }
79 void setGauss(
int nGauss);
80 void setCurlRadius(
double R1,
double R2);
81 void setMaterialDamping(
double epstD_,
double k0D_);
82 void setLehrDamping(
double epstL,
double k0L);
86 fmatvec::Vector<fmatvec::Fixed<6>,
double> getPositions(
const fmatvec::Vec& qElement,
double s);
88 fmatvec::Vector<fmatvec::Fixed<6>,
double> getVelocities(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
95 fmatvec::Mat
computeJXqG(
const fmatvec::Vec& qG,
double x);
102 fmatvec::Vec
computeData(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt);
202 fmatvec::RowVec depstil, dk0;
235 inline void FiniteElement1s33RCM::setGauss(
int nGauss) {
wt->setGauss(nGauss); }
236 inline double FiniteElement1s33RCM::getl0()
const {
return l0; }
discretization interface for flexible systems
Definition: discretization_interface.h:36
finite element for spatial beam using Redundant Coordinate Method (RCM)
Definition: 1s_33_rcm.h:39
double A
cross sectional area
Definition: 1s_33_rcm.h:125
double rho
density
Definition: 1s_33_rcm.h:120
fmatvec::Vec g
gravitation
Definition: 1s_33_rcm.h:145
double x_Old
last Lagrangian coordinate in state calculation
Definition: 1s_33_rcm.h:186
double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute kinetic energy
Definition: 1s_33_rcm.cc:236
void computeM(const fmatvec::Vec &qG) override
compute mass matrix
Definition: 1s_33_rcm.cc:64
double l0
length of finite element
Definition: 1s_33_rcm.h:115
void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute Jacobian for implicit integration
Definition: 1s_33_rcm.cc:204
double computeElasticEnergy(const fmatvec::Vec &qG) override
compute elastic energy
Definition: 1s_33_rcm.cc:263
double tol_comp
tolerance for comparison of state with old state
Definition: 1s_33_rcm.h:196
FiniteElement1s33RCM(double l0_, double rho_, double A_, double E_, double G_, double I1_, double I2_, double I0_, const fmatvec::Vec &g_, RevCardanPtr ag_)
constructor
Definition: 1s_33_rcm.cc:32
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: 1s_33_rcm.cc:276
fmatvec::SymMat MI
internal system description
Definition: 1s_33_rcm.h:171
Weight33RCMPtr wt
weight-function-object
Definition: 1s_33_rcm.h:217
void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute smooth right hand side
Definition: 1s_33_rcm.cc:93
fmatvec::Vec computeData(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute interesting data
Definition: 1s_33_rcm.cc:386
double epstD
prolongational and torsional damping
Definition: 1s_33_rcm.h:155
fmatvec::Mat drS
delta matrices
Definition: 1s_33_rcm.h:201
const fmatvec::Vec & geth() const override
Definition: 1s_33_rcm.h:238
fmatvec::SqrMat Damp
internal damping matrix
Definition: 1s_33_rcm.h:176
void computedrS()
compute delta matrix for CP with respect to translation
Definition: 1s_33_rcm.cc:410
void computedk0()
compute delta matrix for torsion
Definition: 1s_33_rcm.cc:421
double G
shear modulus
Definition: 1s_33_rcm.h:135
fmatvec::Vec qG_Old
global and local state of the last time step
Definition: 1s_33_rcm.h:191
const fmatvec::SqrMat & getdhdu() const override
Definition: 1s_33_rcm.h:240
const fmatvec::SqrMat & getdhdq() const override
Definition: 1s_33_rcm.h:239
double k10
predefined bending
Definition: 1s_33_rcm.h:150
int getuSize() const override
Definition: 1s_33_rcm.h:242
double l0h2
beam length powers
Definition: 1s_33_rcm.h:181
const fmatvec::SymMat & getM() const override
Definition: 1s_33_rcm.h:237
double computeGravitationalEnergy(const fmatvec::Vec &qG) override
compute gravitational energy
Definition: 1s_33_rcm.cc:253
double E
Young's modulus.
Definition: 1s_33_rcm.h:130
double I1
geometrical moment of inertia
Definition: 1s_33_rcm.h:140
RevCardanPtr ag
reversed Cardan-object
Definition: 1s_33_rcm.h:207
Trafo33RCMPtr tf
trafo-object
Definition: 1s_33_rcm.h:212
int getqSize() const override
Definition: 1s_33_rcm.h:241
double computePhysicalStrain(const fmatvec::Vec &qG, const fmatvec::Vec &qGt)
compute the physical strain as defined in Schindler2010, p. 25, eq. (2.52)
Definition: 1s_33_rcm.cc:403
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: 1s_33_rcm.h:166
void computedepstil()
compute delta matrix for elongation
Definition: 1s_33_rcm.cc:417
fmatvec::SymMat M
global system description
Definition: 1s_33_rcm.h:160