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
19namespace MBSimFlexibleBody {
20
22 public:
23 Contour1sNeutralCosserat(const std::string &name_);
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;
80
81 MBSim::Frame *R;
82
83 };
84
85} /* namespace MBSimFlexibleBody */
86#endif
Definition: 1s_neutral_cosserat.h:21
double nodeOffset
offset between translationa and rotational nodes
Definition: 1s_neutral_cosserat.h:73
fmatvec::VecInt transNodes
index of the translational Nodes
Definition: 1s_neutral_cosserat.h:63
fmatvec::VecInt rotNodes
index of the rotational Nodes
Definition: 1s_neutral_cosserat.h:68
Definition: contour_1s_neutral_factory.h:20
double uMin
starting parameter of the contour descriptions
Definition: contour_1s_neutral_factory.h:41
double uMax
ending parameter of the contour description
Definition: contour_1s_neutral_factory.h:46
Definition: nurbs_angle_1s.h:16
Definition: nurbs_dotangle_1s.h:15
Definition: nurbs_position_1s.h:15
Definition: nurbs_velocity_1s.h:15