mbsimflexiblebody  4.0.0
MBSim Flexible Body Module
2s_13_mfr_mindlin.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 _FLEXIBLE_BODY_2S_13_MFR_MINDLIN_H_
21#define _FLEXIBLE_BODY_2S_13_MFR_MINDLIN_H_
22
23#include "mbsimFlexibleBody/flexible_body/2s_13.h"
24#include "mbsimFlexibleBody/flexible_body/fe/2s_13_mfr_mindlin.h"
25
26namespace MBSimFlexibleBody {
27
28 class NodeFrame;
29
40 public:
45 FlexibleBody2s13MFRMindlin(const std::string &name);
46
51
52 /* INHERITED INTERFACE OF FLEXIBLE BODY CONTINUUM */
53// using FlexibleBodyContinuum<fmatvec::Vec>::addFrame;
54 /***************************************************/
55
56 /* INHERITED INTERFACE OF OBJECTINTERFACE */
57 void updateM() override;
58 /***************************************************/
59
60 /* INHERITED INTERFACE OF FLEXIBLE BODY */
61 void BuildElements() override;
62 void GlobalVectorContribution(int CurrentElement, const fmatvec::Vec& locVec, fmatvec::Vec& gloVec) override;
63 void GlobalMatrixContribution(int CurrentElement, const fmatvec::Mat& locMat, fmatvec::Mat& gloMat) override;
64 void GlobalMatrixContribution(int CurrentElement, const fmatvec::SymMat& locMat, fmatvec::SymMat& gloMat) override;
65
66 fmatvec::Vec3 evalPosition() override;
67 fmatvec::SqrMat3 evalOrientation() override;
68
69 void updatePositions(Frame2s* frame) override;
70 void updateVelocities(Frame2s* frame) override;
71 void updateAccelerations(Frame2s* frame) override;
72 void updateJacobians(Frame2s* frame, int j=0) override;
73 void updateGyroscopicAccelerations(Frame2s* frame) override;
74
75 void updatePositions(int node) override;
76 void updateVelocities(int node) override;
77 void updateAccelerations(int node) override;
78 void updateJacobians(int node, int j=0) override;
79 void updateGyroscopicAccelerations(int node) override;
80
81 /* INHERITED INTERFACE OF OBJECT */
82 void init(InitStage stage, const MBSim::InitConfigSet &config) override;
83 /***************************************************/
84
85 /* INHERITED INTERFACE OF ELEMENT */
86 /***************************************************/
87
88 /* INHERITED INTERFACE OF FLEXIBLEBODY2s13 */
89 fmatvec::Vec transformCW(const fmatvec::Vec& WrPoint) override;
90 /***************************************************/
91
92 protected:
93 /* INHERITED INTERFACE OF FLEXIBLEBODY2s13 */
94 void initMatrices() override;
95 void updateAG() override;
96 /***************************************************/
97
102
107
111 fmatvec::Mat* N_compl;
112
116 fmatvec::SqrMat* N_ij[3][3];
117
121 fmatvec::RowVec* NR_ij[3][3];
122
126 fmatvec::Vec* R_compl;
127
131 fmatvec::SymMat* R_ij;
132 };
133
134}
135
136#endif /* _FLEXIBLE_BODY_2S_13_MFR_MINDLIN_H_ */
plate according to Reissner-Mindlin with moving frame of reference and small tilting assumption
Definition: 2s_13_mfr_mindlin.h:39
~FlexibleBody2s13MFRMindlin() override
destructor
Definition: 2s_13_mfr_mindlin.cc:45
fmatvec::Vec transformCW(const fmatvec::Vec &WrPoint) override
transform Cartesian to cylinder system
Definition: 2s_13_mfr_mindlin.cc:511
void computeStiffnessMatrix()
calculate constant stiffness matrix
Definition: 2s_13_mfr_mindlin.cc:567
FlexibleBody2s13MFRMindlin(const std::string &name)
constructor
Definition: 2s_13_mfr_mindlin.cc:35
void GlobalVectorContribution(int CurrentElement, const fmatvec::Vec &locVec, fmatvec::Vec &gloVec) override
insert 'local' information in global vectors
Definition: 2s_13_mfr_mindlin.cc:188
fmatvec::SymMat * R_ij
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: 2s_13_mfr_mindlin.h:131
fmatvec::Vec * R_compl
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: 2s_13_mfr_mindlin.h:126
fmatvec::RowVec * NR_ij[3][3]
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: 2s_13_mfr_mindlin.h:121
fmatvec::Mat * N_compl
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: 2s_13_mfr_mindlin.h:111
void GlobalMatrixContribution(int CurrentElement, const fmatvec::Mat &locMat, fmatvec::Mat &gloMat) override
insert 'local' information in global matrices
Definition: 2s_13_mfr_mindlin.cc:192
void updateAG() override
update the transformation matrices A and G
Definition: 2s_13_mfr_mindlin.cc:532
fmatvec::SqrMat * N_ij[3][3]
matrix for the computation of the mass-matrix (assembled part of the element matrix)
Definition: 2s_13_mfr_mindlin.h:116
void initMatrices() override
calculate the matrices for the first time
Definition: 2s_13_mfr_mindlin.cc:526
void BuildElements() override
references finite element coordinates to assembled coordinates
Definition: 2s_13_mfr_mindlin.cc:167
void computeConstantMassMatrixParts()
calculate constant parts of the mass matrix
Definition: 2s_13_mfr_mindlin.cc:631
plate according to Reissner-Mindlin with moving frame of reference
Definition: 2s_13.h:75
Definition: frame_2s.h:27
std::vector< Frame * > frame
std::string name