20#ifndef _FINITE_ELEMENT_1S_33_COSSERAT_ROTATION_H_
21#define _FINITE_ELEMENT_1S_33_COSSERAT_ROTATION_H_
23#include "mbsimFlexibleBody/discretization_interface.h"
24#include "mbsimFlexibleBody/pointer.h"
25#include "fmatvec/fmatvec.h"
27namespace MBSimFlexibleBody {
67 const fmatvec::SymMat&
getM()
const override;
68 const fmatvec::Vec&
geth()
const override {
return h; }
69 const fmatvec::SqrMat&
getdhdq()
const override {
return dhdq; }
70 const fmatvec::SqrMat&
getdhdu()
const override {
return dhdu; }
74 void computeM(
const fmatvec::Vec& qG)
override;
75 void computeh(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
76 void computedhdz(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
81 virtual fmatvec::Vec3 getPosition(
const fmatvec::Vec& qElement,
double s);
82 virtual fmatvec::SqrMat3 getOrientation(
const fmatvec::Vec& qElement,
double s);
83 virtual fmatvec::Vec3 getVelocity(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
84 virtual fmatvec::Vec3 getAngularVelocity(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
85 virtual fmatvec::Mat computeJacobianOfMotion(
const fmatvec::Vec& qG,
double s) {
return computeJXqG(qG,s); }
88 void setCurlRadius(
double R1,
double R2);
89 double getl0()
const {
return l0; }
96 fmatvec::Mat
computeJXqG(
const fmatvec::Vec& qG,
double x);
discretization interface for flexible systems
Definition: discretization_interface.h:36
finite element for spatial beam using Cosserat model : rotation element for bending and torsion
Definition: 1s_33_cosserat_rotation.h:46
double computeGravitationalEnergy(const fmatvec::Vec &qG) override
compute gravitational energy
Definition: 1s_33_cosserat_rotation.cc:119
~FiniteElement1s33CosseratRotation() override
destructor
fmatvec::Vec h
global system description
Definition: 1s_33_cosserat_rotation.h:129
const fmatvec::SymMat & getM() const override
Definition: 1s_33_cosserat_rotation.cc:103
const fmatvec::SqrMat & getdhdq() const override
Definition: 1s_33_cosserat_rotation.h:69
int getqSize() const override
Definition: 1s_33_cosserat_rotation.h:71
double k10
predefined bending k10: precurvature in t-b-plane k20: precurvature in t-n-plane
Definition: 1s_33_cosserat_rotation.h:124
double l0
length of finite element
Definition: 1s_33_cosserat_rotation.h:102
double G
shear modulus
Definition: 1s_33_cosserat_rotation.h:112
int getuSize() const override
Definition: 1s_33_cosserat_rotation.h:72
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: 1s_33_cosserat_rotation.cc:139
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: 1s_33_cosserat_rotation.h:139
double E
Young's modulus.
Definition: 1s_33_cosserat_rotation.h:107
void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute Jacobian for implicit integration
Definition: 1s_33_cosserat_rotation.cc:111
void computeM(const fmatvec::Vec &qG) override
compute mass matrix
Definition: 1s_33_cosserat_rotation.cc:107
const fmatvec::SqrMat & getdhdu() const override
Definition: 1s_33_cosserat_rotation.h:70
void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute smooth right hand side
Definition: 1s_33_cosserat_rotation.cc:41
CardanPtr ag
Cardan-object.
Definition: 1s_33_cosserat_rotation.h:144
double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute kinetic energy
Definition: 1s_33_cosserat_rotation.cc:115
double I1
geometrical moment of inertia
Definition: 1s_33_cosserat_rotation.h:117
const fmatvec::Vec & geth() const override
Definition: 1s_33_cosserat_rotation.h:68
fmatvec::Vec X
state at Lagrangian coordinate
Definition: 1s_33_cosserat_rotation.h:134
double computeElasticEnergy(const fmatvec::Vec &qG) override
compute elastic energy
Definition: 1s_33_cosserat_rotation.cc:88