mbsimflexiblebody 4.0.0 MBSim Flexible Body Module

angles.h
1 /* Copyright (C) 2004-2015 MBSim Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 *
17 * Contact: thorsten.schindler@mytum.de
18 */
19
20 #ifndef ANGLES_H_
21 #define ANGLES_H_
22
23 #include <mbsim/functions/function.h>
24
25 namespace MBSimFlexibleBody {
26
35 class Angles : public MBSim::Function<fmatvec::RotMat3(fmatvec::VecV, double)> {
36 public:
40 Angles();
44 ~Angles() override;
45
46 /* INTERFACE OF ROTATION */
47 fmatvec::RotMat3 operator()(const fmatvec::VecV &q, const double &t) override;
48 /***************************************************/
49
50 /* INTERFACE */
54 virtual fmatvec::Vec3 computet(const fmatvec::Vec& q) const = 0;
55
60 virtual fmatvec::Vec3 computen(const fmatvec::Vec& q) const = 0;
61
66 virtual fmatvec::Vec3 computeb(const fmatvec::Vec& q) const = 0;
67
72 virtual fmatvec::Vec computentil(const fmatvec::Vec& q) const = 0;
73
78 virtual fmatvec::Vec computebtil(const fmatvec::Vec& q) const = 0;
79
84 virtual fmatvec::SqrMat computetq(const fmatvec::Vec& q) const = 0;
85
90 virtual fmatvec::SqrMat computenq(const fmatvec::Vec& q) const = 0;
91
96 virtual fmatvec::SqrMat computebq(const fmatvec::Vec& q) const = 0;
97
102 virtual fmatvec::SqrMat computentilq(const fmatvec::Vec& q) const = 0;
103
108 virtual fmatvec::SqrMat computebtilq(const fmatvec::Vec& q) const = 0;
109
114 virtual fmatvec::Mat computetq2(const fmatvec::Vec& q) const = 0;
115
120 virtual fmatvec::Mat computenq2(const fmatvec::Vec& q) const = 0;
121
126 virtual fmatvec::Mat computebq2(const fmatvec::Vec& q) const = 0;
127
132 virtual fmatvec::Mat computentilq2(const fmatvec::Vec& q) const = 0;
133
138 virtual fmatvec::Mat computebtilq2(const fmatvec::Vec& q) const = 0;
139 /********************************************************/
140
141 /* NODAL FUNCTIONS */
147 fmatvec::Vec computett(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
148
154 fmatvec::Vec computent(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
155
161 fmatvec::Vec computebt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
162
168 fmatvec::Vec computentilt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
169
175 fmatvec::Vec computebtilt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
176
182 fmatvec::SqrMat computetqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
183
189 fmatvec::SqrMat computenqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
190
196 fmatvec::SqrMat computebqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
197
203 fmatvec::SqrMat computentilqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
204
210 fmatvec::SqrMat computebtilqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
211
217 virtual fmatvec::Vec computeOmega(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
218
223 virtual fmatvec::SqrMat computeT(const fmatvec::Vec& q) const; // JacobianOfRotation = G
224 /********************************************************/
225 };
226
227 }
228
229 #endif /*ANGLES_H_*/
230
MBSimFlexibleBody::Angles::computen
virtual fmatvec::Vec3 computen(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computeT
virtual fmatvec::SqrMat computeT(const fmatvec::Vec &q) const
Definition: angles.cc:134
MBSimFlexibleBody::Angles::computetq
virtual fmatvec::SqrMat computetq(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::Angles
Angles()
constructor
MBSimFlexibleBody::Angles::computentilt
fmatvec::Vec computentilt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:57
MBSimFlexibleBody::Angles::computebtilt
fmatvec::Vec computebtilt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:63
MBSimFlexibleBody::Angles::computent
fmatvec::Vec computent(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:45
MBSimFlexibleBody::Angles::computenq2
virtual fmatvec::Mat computenq2(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles
node class for angle parametrisation
Definition: angles.h:35
MBSimFlexibleBody::Angles::computebtilq2
virtual fmatvec::Mat computebtilq2(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computentilq
virtual fmatvec::SqrMat computentilq(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::~Angles
~Angles() override
destructor
MBSimFlexibleBody::Angles::computetq2
virtual fmatvec::Mat computetq2(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computenqt
fmatvec::SqrMat computenqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:79
MBSimFlexibleBody::Angles::computebtil
virtual fmatvec::Vec computebtil(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computebtilq
virtual fmatvec::SqrMat computebtilq(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computebt
fmatvec::Vec computebt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:51
MBSimFlexibleBody::Angles::computentilqt
fmatvec::SqrMat computentilqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:99
MBSimFlexibleBody::Angles::computett
fmatvec::Vec computett(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:39
MBSimFlexibleBody::Angles::computebtilqt
fmatvec::SqrMat computebtilqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:109
MBSimFlexibleBody::Angles::computeb
virtual fmatvec::Vec3 computeb(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computentilq2
virtual fmatvec::Mat computentilq2(const fmatvec::Vec &q) const =0
MBSim::Function
MBSimFlexibleBody::Angles::computetqt
fmatvec::SqrMat computetqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:69
MBSimFlexibleBody::Angles::computentil
virtual fmatvec::Vec computentil(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computet
virtual fmatvec::Vec3 computet(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computebq
virtual fmatvec::SqrMat computebq(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computebqt
fmatvec::SqrMat computebqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:89
MBSimFlexibleBody::Angles::computeOmega
virtual fmatvec::Vec computeOmega(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:119
MBSimFlexibleBody::Angles::computebq2
virtual fmatvec::Mat computebq2(const fmatvec::Vec &q) const =0
MBSimFlexibleBody::Angles::computenq
virtual fmatvec::SqrMat computenq(const fmatvec::Vec &q) const =0