20#include <CIntegratorOptions.h>
21#include "CEnvironment.h"
22#include "sfh/constants.h"
24#ifdef FH_VISUALIZATION
25#include "sfh/ogre/C3DLine.h"
42 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
44 CRFShell(std::string sSimObjectName, ISimObjectCreator* pCreator);
45 virtual void FinalSetup(
const double dT,
const double*
const adX, ISimObjectCreator*
const pCreator);
48#ifdef FH_VISUALIZATION
50 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
53 virtual void RenderUpdate(
const double dT,
const double*
const adX);
56 void DrawBody(Ogre::SceneNode* renderNode, Ogre::SceneManager* sceneMgr);
68 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot,
const bool bIsMajorTimeStep);
70 virtual int HHTAlpha(
const double dT,
const double*
const adX,
const double TS,
const double TI,
const double Alpha,
const int SubTS);
71 virtual void FEPlot(
const double dT,
const double*
const adX);
77 int* m_TopConnectNode;
78 ISignalPort** m_TopInPos;
79 ISignalPort** m_TopInVel;
81 int* m_BotConnectNode;
82 ISignalPort** m_BotInForce;
83 ISignalPort* m_BotInForceM;
87 virtual const double*
VolumeCL(
const double dT,
const double*
const adX);
88 virtual const double* DragCOE(
const double dT,
const double*
const adX);
89 virtual const double* StressMX(
const double dT,
const double*
const adX);
91 double* m_TopOutForce;
92 virtual const double* TopOutForce(
const double dT,
const double*
const adX,
int iTop);
95 virtual const double* BotOutPos(
const double dT,
const double*
const adX,
int iBot);
96 virtual const double* BotOutVel(
const double dT,
const double*
const adX,
int iBot);
97 double m_BotOutPosM[3];
98 double m_BotOutVelM[3];
99 virtual const double* BotOutPosM(
const double dT,
const double*
const adX);
100 virtual const double* BotOutVelM(
const double dT,
const double*
const adX);
103 virtual const double* OutLayerDir(
const double dT,
const double*
const adX,
int iLay);
104 virtual const double*
OutLayerFloVel(
const double dT,
const double*
const adX,
int iLay);
105 virtual const double*
OutLayerEleVel(
const double dT,
const double*
const adX,
int iLay);
106 virtual const double*
OutLayerRelVel(
const double dT,
const double*
const adX,
int iLay);
147 Eigen::Matrix<double,3,3>
m_D;
159 Eigen::Matrix<double,3,1>*
m_N;
160 Eigen::Matrix<double,3,6>*
m_B;
161 Eigen::Matrix<double,6,3>*
m_Bt;
162 Eigen::Matrix<double,6,6>*
m_K;
163 Eigen::Matrix<double,6,6>*
m_PK;
164 Eigen::Matrix<double,3,1>*
m_Strain;
165 Eigen::Matrix<double,3,1>*
m_Stress;
170 Eigen::Matrix<double,3,3>*
m_RG2L;
171 Eigen::Matrix<double,3,3>*
m_RL2G;
172 Eigen::Matrix<double,3,1>*
m_OL;
173 Eigen::Matrix<double,3,3>
m_PD;
174 Eigen::Matrix<double,3,6>*
m_PB;
233 ISignalPort* m_ContactPoint;
234 ISignalPort** m_ContactEdge;
235 double m_ContactForce[3];
236 virtual const double* OutContactForce(
const double dT,
const double*
const adX);
243#ifdef FH_VISUALIZATION
245 vector<Ogre::SceneNode*> m_RenderNodes;
246 Ogre::SceneManager* m_SceneMgr;
247 vector<Ogre::ManualObject*> m_Manual;
251 C3DLine* m_3DLineTri;
Definition: CEnvironment.h:10
double m_Solidity
Drag coefficients in normal [0] and tangential [1] directions.
Definition: CRFShell.h:216
double m_ContactStiff
Morison mass coefficients.
Definition: CRFShell.h:231
double m_Poissons
Elastic modulus of the membrane elements [N/m^2].
Definition: CRFShell.h:120
double * m_NodeB2
Node damping matrix.
Definition: CRFShell.h:138
double m_InitialPos[3]
Number of meshes on each layer [0], number of layers [1] and number of bottom node [2] (0 or 1)
Definition: CRFShell.h:220
double m_Yield
Poisson's ratio of the membrane elements [#].
Definition: CRFShell.h:121
int * m_TI
Boolean. True if bending stiffness is considered.
Definition: CRFShell.h:133
double * m_NodeB
Node mass matrix (relative).
Definition: CRFShell.h:137
double m_Damp[2]
Buoyancy-gravity [N].
Definition: CRFShell.h:113
Eigen::Matrix< double, 3, 1 > * m_Stress
Strain matrix of the triangles.
Definition: CRFShell.h:148
double m_MStrain[6]
Mass of the structure [kg].
Definition: CRFShell.h:125
virtual void OdeFcn(const double dT, const double *const adX, double *const adXDot, const bool bIsMajorTimeStep)
virtual const double * OutLayerFloVel(const double dT, const double *const adX, int iLay)
Output layer direction.
double m_Youngs
Density of the membrane elements [kg/m^3].
Definition: CRFShell.h:119
double * m_OutLayerRelVel
Output element velocity.
Definition: CRFShell.h:227
double m_AddM
Restoring pressure.
Definition: CRFShell.h:111
double * m_NodeMR
Node mass matrix.
Definition: CRFShell.h:136
double m_VolR[3]
Bending restriction. minus: no; plus: restricted to m_BendR*m_Yield;.
Definition: CRFShell.h:162
int * m_TPI
Index of the triangle nodes in Node matrix.
Definition: CRFShell.h:134
double m_CArea
Yield strength of the membrane elements [N/m^2].
Definition: CRFShell.h:122
double * m_NodeA_s
Node velocity matrix (substep).
Definition: CRFShell.h:192
double * m_NodeV0
Node position matrix (i+1).
Definition: CRFShell.h:182
Eigen::Matrix< double, 3, 3 > m_D
Initial time step.
Definition: CRFShell.h:130
double * m_NodeA0
Node velocity matrix (i+1).
Definition: CRFShell.h:184
double * m_VMSB
von Mises stress of the triangles.
Definition: CRFShell.h:150
Eigen::Matrix< double, 3, 1 > * m_Strain
Bending stiffness matrix of the triangles.
Definition: CRFShell.h:147
double m_Vol
Time derivative of outflow vertical velocity.
Definition: CRFShell.h:199
double m_BendR
Boundary condition. 0: free or simply supported; 1: clamped.
Definition: CRFShell.h:161
bool m_Bending
Material matrix.
Definition: CRFShell.h:132
double * m_NodeF_s
Node acceleration matrix (substep).
Definition: CRFShell.h:193
double m_EOpenA
Plot time step.
Definition: CRFShell.h:196
int m_Iteration
Output folder.
Definition: CRFShell.h:167
Eigen::Matrix< double, 3, 6 > * m_PB
Material matrix (bending).
Definition: CRFShell.h:157
Eigen::Matrix< double, 6, 3 > * m_Bt
Shape matrix of the triangles.
Definition: CRFShell.h:144
virtual const double * OutLayerEleVel(const double dT, const double *const adX, int iLay)
Output flow velocity.
virtual const double * OutLayerRelVel(const double dT, const double *const adX, int iLay)
Output element velocity.
double m_VolDot
Volume state.
Definition: CRFShell.h:200
Eigen::Matrix< double, 3, 1 > * m_OL
Rotation matrix of the triangles (original).
Definition: CRFShell.h:155
double m_Mass
Volume of a closed structure [m^3].
Definition: CRFShell.h:124
double m_Drag
Damping coefficient [#].
Definition: CRFShell.h:114
double * m_TC
Node damping matrix (quadratic).
Definition: CRFShell.h:139
double * m_NodeF0
Node acceleration matrix (i+1).
Definition: CRFShell.h:186
Eigen::Matrix< double, 6, 6 > * m_K
Transpose Shape matrix of the triangles.
Definition: CRFShell.h:145
virtual const double * VolumeCL(const double dT, const double *const adX)
Index of the bottom node.
double m_StrDamp[2]
Drag coefficient [#].
Definition: CRFShell.h:115
double * m_RAngle
von Mises stress of the triangles (bending).
Definition: CRFShell.h:151
double m_TS_s
Node incremental displacement matrix.
Definition: CRFShell.h:189
double m_Gamma
Beta parameter in the HHT-alpha time integration method.
Definition: CRFShell.h:179
Eigen::Matrix< double, 6, 1 > * m_FiNlgeom
Time step to update geometric nonlinearity.
Definition: CRFShell.h:205
double m_MStress[9]
Maximum and mean strain.
Definition: CRFShell.h:126
double * m_NodeP0
Gamma parameter in the HHT-alpha time integration method.
Definition: CRFShell.h:180
double * m_TArea
Initial local locations of the surrounding nodes (wl,wm,wn).
Definition: CRFShell.h:141
double m_TS
Relative tolerance to stop iteration.
Definition: CRFShell.h:186
double m_FlowReduce
Solidity for net.
Definition: CRFShell.h:217
double m_NetEK[2]
Time derivative of volume state.
Definition: CRFShell.h:202
CIntegratorOptions * m_Integrator
Output folder.
Definition: CRFShell.h:183
bool m_OutLayerData
Initial position.
Definition: CRFShell.h:222
double m_Thickness
Structural damping coefficients [1/(rad/s)]. Frequency dependent.
Definition: CRFShell.h:117
double * m_TPC
Initial local locations of the triangle nodes.
Definition: CRFShell.h:140
Eigen::Matrix< double, 3, 1 > * m_N
Initial area of the element.
Definition: CRFShell.h:142
int m_OutLayerNum
Output layer data or not.
Definition: CRFShell.h:223
double * m_B2G
Added Mass coefficient [#].
Definition: CRFShell.h:112
double * m_NodeD
Node force matrix (i+1).
Definition: CRFShell.h:188
double m_OmgDot
Outflow vertical velocity.
Definition: CRFShell.h:198
double * m_OutLayerDir
Output layer number.
Definition: CRFShell.h:224
double m_Omg[2]
Efficient openning area.
Definition: CRFShell.h:197
double * m_NodeF
Node force matrix (i).
Definition: CRFShell.h:187
int m_IStatePos
States.
Definition: CRFShell.h:93
double m_RelTol
Maximum number of iteration.
Definition: CRFShell.h:168
int m_TPlot
Node force matrix (substep).
Definition: CRFShell.h:194
int m_IC
Stress matrix of the triangles (bending).
Definition: CRFShell.h:158
int m_Triangles
Number of nodes [#].
Definition: CRFShell.h:101
double * m_NodeA
Node acceleration matrix (i).
Definition: CRFShell.h:185
int m_TNlgeom
Equivilent net stiffness.
Definition: CRFShell.h:204
double * m_OutLayerFloVel
Output layer direction.
Definition: CRFShell.h:225
int m_IStateVel
Index of the global position in the state vector.
Definition: CRFShell.h:94
Eigen::Matrix< double, 3, 3 > * m_RL2G
Rotation matrix of the triangles (original).
Definition: CRFShell.h:154
int m_BotNode
A pointer to the input force (bottom).
Definition: CRFShell.h:74
int m_BC
Initial condition. 0: no; 1: yes.
Definition: CRFShell.h:159
int m_MeshNum[3]
Caculate volume or not.
Definition: CRFShell.h:219
double m_Volume[8]
Cross area of a closed structure [m^2].
Definition: CRFShell.h:123
double m_MorisonCM[2]
Output relative velocity.
Definition: CRFShell.h:229
double m_Dim[4]
NED location [m].
Definition: CRFShell.h:105
std::string m_OutFolder
Maximum iterations.
Definition: CRFShell.h:164
Eigen::Matrix< double, 3, 6 > * m_B
Normal matrix of the triangles.
Definition: CRFShell.h:143
double m_Alpha
Integration time step.
Definition: CRFShell.h:177
Eigen::Matrix< double, 6, 6 > * m_PK
Membrane stiffness matrix of the triangles.
Definition: CRFShell.h:146
int m_Nodes
Pointer to DeepSeaGravityWaves -> CEnvironment.
Definition: CRFShell.h:100
CEnvironment * m_Environment
Index of the volume in the state vector.
Definition: CRFShell.h:98
ISignalPort * m_pInForce_B
Input ports.
Definition: CRFShell.h:65
double * m_VMS
Stress matrix of the triangles.
Definition: CRFShell.h:149
bool m_CalVolume
Flow reduction factor.
Definition: CRFShell.h:218
int m_ItM
Volume restriction. minus: no; plus: reduced iteration when m_Vol<m_VolR*m_Volume[0];.
Definition: CRFShell.h:163
double m_dPress[10]
Filling percentage.
Definition: CRFShell.h:108
double m_DragCoeff[2]
Equivilent net stiffness.
Definition: CRFShell.h:215
double * m_NodeM
Index of the triangles and nodes in the patch surrounding a triangle (0/1,b,c,d,l,...
Definition: CRFShell.h:135
double * m_NodeV_s
Node position matrix (substep).
Definition: CRFShell.h:191
double m_MeshSize
Number of triangles [#].
Definition: CRFShell.h:102
int m_TopConnectNum
A pointer to the input force (bottom).
Definition: CRFShell.h:66
double m_Filling[2]
Shape.
Definition: CRFShell.h:107
double * m_NodeP
Node position matrix (i).
Definition: CRFShell.h:181
double * m_OutLayerEleVel
Output flow velocity.
Definition: CRFShell.h:226
Eigen::Matrix< double, 6, 1 > * m_FoNlgeom
Initial in-plane forces.
Definition: CRFShell.h:206
Eigen::Matrix< double, 3, 3 > * m_RG2L
Radius angle of the triangles.
Definition: CRFShell.h:153
double * m_NodeV
Node velocity matrix (i).
Definition: CRFShell.h:183
int m_IStateVol
Index of the global velocity in the state vector.
Definition: CRFShell.h:95
double m_rPress[2]
Drainage pressure.
Definition: CRFShell.h:109
double m_Density
Thickness of the membrane elements [m].
Definition: CRFShell.h:118
string m_Shape
NED dimension [m].
Definition: CRFShell.h:106
double m_Indt
Maximum and mean stress.
Definition: CRFShell.h:128
double m_Beta
Alpha parameter in the HHT-alpha time integration method.
Definition: CRFShell.h:178
Eigen::Matrix< double, 3, 3 > m_PD
Location of the triangles (original).
Definition: CRFShell.h:156
double m_Loc[3]
Mesh size [m].
Definition: CRFShell.h:104
double * m_NodeP_s
Integration substep.
Definition: CRFShell.h:190
Includes.
Definition: CConstantStrainTriangle.h:22