20 #ifndef _FIXED_NODAL_FRAME_H__
21 #define _FIXED_NODAL_FRAME_H__
23 #include "mbsim/frame.h"
24 #include "mbsimFlexibleBody/utils/taylor.h"
26 namespace MBSimFlexibleBody {
37 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),
const FixedNodalFrame *refFrame=0) :
Frame(name), R(refFrame), RrRP(r), ARP(A), E(
fmatvec::Eye()), Phi(Phi_), Psi(Psi_), nq(0) { }
39 std::string getType()
const {
return "FixedNodalFrame"; }
41 virtual void init(InitStage stage);
43 int getNumberOfModeShapes()
const {
return nq; }
44 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 setPhi(
const fmatvec::Mat3xV &Phi_) { Phi = Phi_; }
52 void setPsi(
const fmatvec::Mat3xV &Psi_) { Psi = Psi_; }
53 void setK0F(
const std::vector<fmatvec::SqrMatV> &K0F_) { K0F = K0F_; }
54 void setK0M(
const std::vector<fmatvec::SqrMatV> &K0M_) { K0M = K0M_; }
59 void setFrameOfReference(
const std::string &frame) { saved_frameOfReference = frame; }
61 void setPhi(
const Taylor<fmatvec::Mat3xV,std::vector<fmatvec::SqrMatV> > &Phi_) { Phi = Phi_.getM0(); K0F = Phi_.getM1(); }
62 void setPsi(
const Taylor<fmatvec::Mat3xV,std::vector<fmatvec::SqrMatV> > &Psi_) { Psi = Psi_.getM0(); K0M = Psi_.getM1(); }
65 void setJacobianOfDeformation(
const fmatvec::MatV &J,
int j=0) { WJD[j] = J; }
66 fmatvec::MatV& getJacobianOfDeformation(
int j=0) {
return WJD[j]; }
67 const fmatvec::MatV& getJacobianOfDeformation(
int j=0)
const {
return WJD[j]; }
68 const fmatvec::Vec3& getRelativePosition()
const {
return RrRP; }
69 const fmatvec::SqrMat3& getRelativeOrientation()
const {
return ARP; }
70 const Frame* getFrameOfReference()
const {
return R; }
71 const fmatvec::Vec3& getWrRP()
const {
return WrRP; }
73 void updateRelativePosition();
74 void updateRelativeOrientation();
75 void updatePosition();
76 void updateOrientation();
77 void updateVelocity();
78 void updateAngularVelocity();
79 void updateStateDependentVariables();
80 void updateJacobians(
int j=0);
81 void updateStateDerivativeDependentVariables(
const fmatvec::Vec &ud);
83 virtual void plot(
double t,
double dt = 1);
85 virtual void initializeUsingXML(xercesc::DOMElement *element);
86 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *element);
90 fmatvec::Vec3 RrRP, WrRP;
91 fmatvec::SqrMat3 ARP, APK, E;
92 fmatvec::Mat3xV WPhi, WPsi, Phi, Psi;
93 std::vector<fmatvec::SqrMatV> K0F, K0M;
96 std::vector<fmatvec::Matrix<fmatvec::General, fmatvec::Fixed<6>,
fmatvec::Var,
double> > sigmahen;
100 std::string saved_frameOfReference;
fixed nodal frame on flexible bodies
Definition: fixed_nodal_frame.h:32
Frame(const std::string &name="dummy")