20#ifndef _FINITE_ELEMENT_1S_23_BTA_H_
21#define _FINITE_ELEMENT_1S_23_BTA_H_
23#include "mbsimFlexibleBody/discretization_interface.h"
24#include "fmatvec/fmatvec.h"
26namespace MBSimFlexibleBody {
56 const fmatvec::SymMat&
getM()
const override {
return M; }
57 const fmatvec::Vec&
geth()
const override {
return h; }
58 const fmatvec::SqrMat&
getdhdq()
const override {
return Dhq; }
59 const fmatvec::SqrMat&
getdhdu()
const override {
return Dhqp; }
63 void computeM(
const fmatvec::Vec& qG)
override;
64 void computeh(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
65 void computedhdz(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
70 virtual fmatvec::Vec3 getPosition(
const fmatvec::Vec& qElement,
double s);
71 virtual fmatvec::SqrMat3 getOrientation(
const fmatvec::Vec& qElement,
double s);
72 virtual fmatvec::Vec3 getVelocity (
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
73 virtual fmatvec::Vec3 getAngularVelocity(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
74 virtual fmatvec::Mat getJacobianOfMotion(
const fmatvec::Vec& qElement,
double s) {
return JGeneralized(qElement,s); }
78 void setMaterialDamping(
double);
79 void setLehrDamping(
double);
80 void setTorsionalDamping(
double dTorsional_) { dTorsional=dTorsional_; }
88 fmatvec::Vec3
getTangent(
const fmatvec::Vec& q,
double s);
90 fmatvec::Vector<fmatvec::Fixed<6>,
double> getPositions(
const fmatvec::Vec& qElement,
double s);
92 fmatvec::Vector<fmatvec::Fixed<6>,
double> getVelocities(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
116 fmatvec::Mat
JGeneralized(
const fmatvec::Vec& q,
double s);
163 fmatvec::SqrMat
Dhq, Dhqp;
176 inline double Sec(
double alpha) {
return 1.0/cos(alpha); }
177 inline double Power(
double base,
int exponent) {
return pow(base,exponent); }
discretization interface for flexible systems
Definition: discretization_interface.h:36
finite element for bending torsional axis
Definition: 1s_23_bta.h:36
const fmatvec::SqrMat & getdhdu() const override
Definition: 1s_23_bta.h:59
double computeKineticEnergy(const fmatvec::Vec &q, const fmatvec::Vec &u) override
compute kinetic energy
Definition: 1s_23_bta.cc:318
void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute Jacobian for implicit integration
Definition: 1s_23_bta.cc:119
double EIyy
Young's modulus multiplied with geometrical moment of inertia.
Definition: 1s_23_bta.h:132
double GIt
shear modulus multiplied with geometrical moment of inertia
Definition: 1s_23_bta.h:142
fmatvec::Vec3 getTangent(const fmatvec::Vec &q, double s)
compute tangent
Definition: 1s_23_bta.cc:151
fmatvec::SymMat M
global system description
Definition: 1s_23_bta.h:157
fmatvec::Vec g
gravitation
Definition: 1s_23_bta.h:147
int getuSize() const override
Definition: 1s_23_bta.h:61
double computeGravitationalEnergy(const fmatvec::Vec &q) override
compute gravitational energy
Definition: 1s_23_bta.cc:322
double l0h2
beam length powers
Definition: 1s_23_bta.h:173
const fmatvec::SymMat & getM() const override
Definition: 1s_23_bta.h:56
void computeM(const fmatvec::Vec &qG) override
compute mass matrix
Definition: 1s_23_bta.cc:35
double Arho
cross sectional area multiplied with density
Definition: 1s_23_bta.h:127
const fmatvec::Vec & geth() const override
Definition: 1s_23_bta.h:57
double Itrho
geometrical moment of inertia multiplied with density
Definition: 1s_23_bta.h:137
fmatvec::SqrMat Dhq
matrices for implicit integration
Definition: 1s_23_bta.h:163
double depsilon
prolongational and torsional damping
Definition: 1s_23_bta.h:152
fmatvec::Mat JGeneralized(const fmatvec::Vec &q, double s)
compute global state
Definition: 1s_23_bta.cc:234
double l0
length of finite element
Definition: 1s_23_bta.h:122
void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute smooth right hand side
Definition: 1s_23_bta.cc:86
int getqSize() const override
Definition: 1s_23_bta.h:60
fmatvec::SqrMat Damp
internal damping matrix
Definition: 1s_23_bta.h:168
double computeElasticEnergy(const fmatvec::Vec &q) override
compute elastic energy
Definition: 1s_23_bta.cc:326
const fmatvec::SqrMat & getdhdq() const override
Definition: 1s_23_bta.h:58
~FiniteElement1s23BTA() override=default
destructor
FiniteElement1s23BTA(double l0, double Arho, double EIyy, double EIzz, double Itrho, double GIt, const fmatvec::Vec &g)
constructor
Definition: 1s_23_bta.cc:30