mbsimflexiblebody 4.0.0 MBSim Flexible Body Module

1s_neutral_cosserat.h
1 /*
2 * neutral_contour_1s_cosserat.h
3 *
4 * Created on: 25.10.2013
5 * Author: zwang
6 */
7
8 #ifndef CONTOUR_1S_NEUTRAL_COSSERAT_H_
9 #define CONTOUR_1S_NEUTRAL_COSSERAT_H_
10
11 #include <mbsimFlexibleBody/flexible_body/1s_cosserat.h>
12 #include "mbsimFlexibleBody/pointer.h"
13 #include <mbsimFlexibleBody/contours/contour_1s_neutral_factory.h>
14 #include "ncc/nurbs_velocity_1s.h"
15 #include "ncc/nurbs_position_1s.h"
16 #include "ncc/nurbs_angle_1s.h"
17 #include "ncc/nurbs_dotangle_1s.h"
18
19 namespace MBSimFlexibleBody {
20
21 class Contour1sNeutralCosserat : public MBSimFlexibleBody::Contour1sNeutralFactory {
22 public:
23 Contour1sNeutralCosserat(const std::string &name_);
24 ~Contour1sNeutralCosserat() override;
25 void init(InitStage stage, const MBSim::InitConfigSet &config) override;
26 virtual NeutralNurbsPosition1s* createNeutralPosition();
27 virtual NeutralNurbsVelocity1s* createNeutralVelocity();
28 virtual NeutralNurbsAngle1s* createNeutralAngle();
29 virtual NeutralNurbsDotangle1s* createNeutralDotangle();
30
31 fmatvec::Vec3 evalPosition(const fmatvec::Vec2 &zeta) override;
32 fmatvec::Vec3 evalWs(const fmatvec::Vec2 &zeta) override;
33 fmatvec::Vec3 evalWt(const fmatvec::Vec2 &zeta) override;
34 fmatvec::Vec3 evalWu(const fmatvec::Vec2 &zeta) override { return evalWs(zeta); }
35 fmatvec::Vec3 evalWv(const fmatvec::Vec2 &zeta) override { return evalWt(zeta); }
36
37 void updatePositions(MBSim::Frame *frame) override;
38 void updateVelocities(MBSim::Frame *frame) override;
39 void updateJacobians(MBSim::Frame *frame, int j=0) override;
40
41 MBSim::ContactKinematics * findContactPairingWith(const std::type_info &type0, const std::type_info &type1) override;
42
43 void setTransNodes(const fmatvec::VecInt & transNodes_);
44 void setRotNodes(const fmatvec::VecInt & rotNodes_);
45 void setNodeOffest(const double nodeOffset_);
46
47 double getuMax() const {
48 return uMax;
49 }
50
51 double getuMin() const {
52 return uMin;
53 }
54
55 void setFrameOfReference(MBSim::Frame *frame) { R = frame; }
56
57 void resetUpToDate() override;
58
59 protected:
63 fmatvec::VecInt transNodes;
64
68 fmatvec::VecInt rotNodes;
69
73 double nodeOffset;
74
75 CardanPtr ANGLE;
76 NeutralNurbsPosition1s* NP;
77 NeutralNurbsVelocity1s* NV;
78 NeutralNurbsAngle1s* NA;
79 NeutralNurbsDotangle1s* NDA;
80
81 MBSim::Frame *R;
82
83 };
84
85 } /* namespace MBSimFlexibleBody */
86 #endif
MBSimFlexibleBody::NeutralNurbsVelocity1s
Definition: nurbs_velocity_1s.h:15
MBSimFlexibleBody::Contour1sNeutralCosserat::rotNodes
fmatvec::VecInt rotNodes
index of the rotational Nodes
Definition: 1s_neutral_cosserat.h:68
MBSimFlexibleBody::Contour1sNeutralFactory::uMin
double uMin
starting parameter of the contour descriptions
Definition: contour_1s_neutral_factory.h:41
MBSimFlexibleBody::Contour1sNeutralCosserat::nodeOffset
double nodeOffset
offset between translationa and rotational nodes
Definition: 1s_neutral_cosserat.h:73
MBSimFlexibleBody::NeutralNurbsPosition1s
Definition: nurbs_position_1s.h:15
MBSimFlexibleBody::Contour1sNeutralCosserat::transNodes
fmatvec::VecInt transNodes
index of the translational Nodes
Definition: 1s_neutral_cosserat.h:63
MBSimFlexibleBody::NeutralNurbsAngle1s
Definition: nurbs_angle_1s.h:16
MBSim::Element::InitStage
InitStage
MBSimFlexibleBody::NeutralNurbsDotangle1s
Definition: nurbs_dotangle_1s.h:15
MBSim::Frame
MBSimFlexibleBody::Contour1sNeutralCosserat
Definition: 1s_neutral_cosserat.h:21
MBSimFlexibleBody::Contour1sNeutralFactory
Definition: contour_1s_neutral_factory.h:20
MBSim::ContactKinematics
MBSimFlexibleBody::Contour1sNeutralFactory::uMax
double uMax
ending parameter of the contour description
Definition: contour_1s_neutral_factory.h:46