20 #ifndef _FIXED_NODAL_FRAME_H__
21 #define _FIXED_NODAL_FRAME_H__
23 #include "mbsim/frames/frame.h"
25 namespace MBSimFlexibleBody {
36 FixedNodalFrame(
const std::string &name,
const fmatvec::Vec3 &r,
const fmatvec::Mat3xV &Phi_,
const fmatvec::Mat3xV &Psi_,
const fmatvec::SqrMat3 &A=fmatvec::SqrMat3(fmatvec::EYE)) :
MBSim::Frame(name), R(0), RrRP(r), ARP(A), E(
fmatvec::Eye()), Phi(Phi_), Psi(Psi_), nq(0) { }
38 std::string getType()
const {
return "FixedNodalFrame"; }
40 virtual void init(InitStage stage);
42 int getNumberOfModeShapes()
const {
return nq; }
43 void setNumberOfModeShapes(
int nq_) { nq = nq_; }
49 void setRelativePosition(
const fmatvec::Vec3 &r) { RrRP = r; }
50 void setRelativeOrientation(
const fmatvec::SqrMat3 &A) { ARP = A; }
51 void setShapeMatrixOfTranslation(
const fmatvec::Mat3xV &Phi_) { Phi = Phi_; }
52 void setShapeMatrixOfRotation(
const fmatvec::Mat3xV &Psi_) { Psi = Psi_; }
56 void setGeometricStiffnessMatrixDueToForce(
const std::vector<fmatvec::SqrMatV> &K0F_) { K0F = K0F_; }
57 void setGeometricStiffnessMatrixDueToMoment(
const std::vector<fmatvec::SqrMatV> &K0M_) { K0M = K0M_; }
59 void setFrameOfReference(
MBSim::Frame *frame) { R = frame; }
61 const fmatvec::Vec3& getRelativePosition()
const {
return RrRP; }
62 const fmatvec::SqrMat3& getRelativeOrientation()
const {
return ARP; }
63 const MBSim::Frame* getFrameOfReference()
const {
return R; }
65 const fmatvec::Vec3& getGlobalRelativePosition(
bool check=
true)
const { assert((not check) or (not updPos));
return WrRP; }
66 const fmatvec::Mat3xV& getGlobalPhi(
bool check=
true)
const { assert((not check) or (not updPos));
return WPhi; }
67 const fmatvec::Mat3xV& getGlobalPsi(
bool check=
true)
const { assert((not check) or (not updPos));
return WPsi; }
69 const fmatvec::Vec3& evalGlobalRelativePosition();
70 const fmatvec::Mat3xV& evalGlobalPhi();
71 const fmatvec::Mat3xV& evalGlobalPsi();
72 void updatePositions();
73 void updateVelocities();
74 void updateAccelerations();
75 void updateJacobians(
int j=0);
76 void updateGyroscopicAccelerations();
80 virtual void initializeUsingXML(xercesc::DOMElement *element);
84 fmatvec::Vec3 RrRP, WrRP;
85 fmatvec::SqrMat3 ARP, APK, E;
86 fmatvec::Mat3xV WPhi, WPsi, Phi, Psi;
87 std::vector<fmatvec::SqrMatV> K0F, K0M;
90 std::vector<fmatvec::Matrix<fmatvec::General, fmatvec::Fixed<6>,
fmatvec::Var,
double> > sigmahen;
fixed nodal frame on flexible bodies
Definition: fixed_nodal_frame.h:31