20#ifndef _FINITE_ELEMENT_1S_21_COSSERAT_ROTATION_H_
21#define _FINITE_ELEMENT_1S_21_COSSERAT_ROTATION_H_
23#include "mbsimFlexibleBody/discretization_interface.h"
24#include "mbsim/mbsim_event.h"
25#include "mbsimFlexibleBody/pointer.h"
26#include "fmatvec/fmatvec.h"
28namespace MBSimFlexibleBody {
69 const fmatvec::SymMat&
getM()
const override;
70 const fmatvec::Vec&
geth()
const override;
71 const fmatvec::SqrMat&
getdhdq()
const override;
72 const fmatvec::SqrMat&
getdhdu()
const override;
76 void computeM(
const fmatvec::Vec& qG)
override;
77 void computeh(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
78 void computedhdz(
const fmatvec::Vec& qG,
const fmatvec::Vec& qGt)
override;
83 virtual fmatvec::Vec3 getPosition(
const fmatvec::Vec& qElement,
double s);
84 virtual fmatvec::SqrMat3 getOrientation(
const fmatvec::Vec& qElement,
double s);
85 virtual fmatvec::Vec3 getVelocity (
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
86 virtual fmatvec::Vec3 getAngularVelocity(
const fmatvec::Vec& qElement,
const fmatvec::Vec& qpElement,
double s);
87 virtual fmatvec::Mat getJacobianOfMotion(
const fmatvec::Vec& qElement,
double s) {
return computeJXqG(qElement,s); }
90 void setCurlRadius(
double R1);
98 fmatvec::Mat
computeJXqG(
const fmatvec::Vec& qG,
double x);
159 inline double FiniteElement1s21CosseratRotation::getl0()
const {
return l0; }
discretization interface for flexible systems
Definition: discretization_interface.h:36
finite element for planar beam using Cosserat model : rotation element for bending and torsion
Definition: 1s_21_cosserat_rotation.h:48
double l0
length of finite element
Definition: 1s_21_cosserat_rotation.h:104
int getqSize() const override
Definition: 1s_21_cosserat_rotation.h:153
const fmatvec::SqrMat & getdhdu() const override
Definition: 1s_21_cosserat_rotation.h:152
fmatvec::Vec h
global system description
Definition: 1s_21_cosserat_rotation.h:131
~FiniteElement1s21CosseratRotation() override
destructor
double I1
geometrical moment of inertia
Definition: 1s_21_cosserat_rotation.h:119
int getuSize() const override
Definition: 1s_21_cosserat_rotation.h:154
void computedhdz(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute Jacobian for implicit integration
Definition: 1s_21_cosserat_rotation.h:156
void computeM(const fmatvec::Vec &qG) override
compute mass matrix
Definition: 1s_21_cosserat_rotation.h:155
fmatvec::Vec X
state at Lagrangian coordinate
Definition: 1s_21_cosserat_rotation.h:136
double computeKineticEnergy(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute kinetic energy
Definition: 1s_21_cosserat_rotation.h:157
double E
Young's modulus.
Definition: 1s_21_cosserat_rotation.h:109
const fmatvec::SqrMat & getdhdq() const override
Definition: 1s_21_cosserat_rotation.h:151
double G
shear modulus
Definition: 1s_21_cosserat_rotation.h:114
double computeElasticEnergy(const fmatvec::Vec &qG) override
compute elastic energy
Definition: 1s_21_cosserat_rotation.cc:47
double k10
predefined bending k10: precurvature in t-b-plane k20: precurvature in t-n-plane
Definition: 1s_21_cosserat_rotation.h:126
fmatvec::SqrMat dhdq
matrices for implicit integration
Definition: 1s_21_cosserat_rotation.h:141
const fmatvec::SymMat & getM() const override
Definition: 1s_21_cosserat_rotation.h:149
double computeGravitationalEnergy(const fmatvec::Vec &qG) override
compute gravitational energy
Definition: 1s_21_cosserat_rotation.h:158
fmatvec::Mat computeJXqG(const fmatvec::Vec &qG, double x)
compute JACOBIAN of contact description in global coordinates
Definition: 1s_21_cosserat_rotation.cc:68
void computeh(const fmatvec::Vec &qG, const fmatvec::Vec &qGt) override
compute smooth right hand side
Definition: 1s_21_cosserat_rotation.cc:39
const fmatvec::Vec & geth() const override
Definition: 1s_21_cosserat_rotation.h:150