166#include "SimObject.h"
167#include "CNetCableElement.h"
168#include "CNetElementDef.h"
169#include "CNormalForceCalc.h"
170#include "IBasicBottom.h"
171#include "CNetBottomContactFilter.h"
172#include "CInputReader.h"
173#include "ICurrentVel.h"
174#include "SimObject.h"
176#ifdef FH_VISUALIZATION
177#include <sfh/ogre/NMeshGenerators.h>
188 virtual void OdeFcn(
const double dT,
const double *
const adX,
double *
const adXDot,
const bool bIsMajorTimeStep);
189 virtual void InitialConditionSetup(
const double dT,
const double *
const adCurrentIC,
double *
const adUpdatedIC, ISimObjectCreator *
const pCreator);
190 virtual void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator *
const pCreator);
191#ifdef FH_VISUALIZATION
193 virtual void RenderInit(Ogre::Root *
const pOgreRoot, ISimObjectCreator *
const pCreator);
195 virtual void RenderUpdate(
const double dT,
const double *
const adX);
198 void SetAddedDragPerMPS(
double AddedDragPerMPS);
199 virtual const double * NumExternalPos(
const double dT,
const double *
const adX);
200 virtual const double * NodePos(
const double dT,
const double *
const adX,
int iExtNode);
201 virtual const double * NodeVel(
const double dT,
const double *
const adX,
int iExtNode);
202 virtual const double * BottomContact(
const double dT,
const double *
const adX);
204 virtual void CalcStateDerivatives(
const double *
const adX,
double *
const adXDot);
205 virtual void AddExternalForces(
const double dT,
const double *
const adX);
206 virtual void DeleteAllNodeForces();
207 virtual void ReadInputFile(ISimObjectCreator *pCreator);
208 virtual void AddNetForces(
const double dT,
const double *
const adX);
209 virtual void AddCableForces(
const double dT,
const double *
const adX);
210 void FindNodesToDivide(
int iNodesToDivide[2],
double *dLength,
double *dLengthFactor);
212 void CheckNodeNumber(
int iNodeNumber, ISimObjectCreator *
const pCreator, std::string sNodeDescription =
"");
213 void CheckNodes(ISimObjectCreator *pCreator);
214 unsigned short AddCalcNode(
int aiNodes[2]);
215 virtual double AddNodeBottomForce(
const double *
const adX,
int iNode,
double dDiam,
double adForceInOut[3]);
216 virtual void AddBottomForces(
const double *
const adX);
217 virtual void AddInputPorts(ISimObjectCreator *pCreator);
219 sfh::timers::StopWatch m_OdeTimer;
249 double m_adBottomContact[6];
266 int **m_aaiCableConn;
279 int m_iNumNodeOutputs;
284 bool m_bUseTagForExternalNodes;
285 int CreateExternalNodeMap(VSPairStrInt& VsNodes, std::string sTag, ISimObjectCreator* pCreator);
286 void CreateNetPanels( ISimObjectCreator* pCreator);
287 void CreateNetCables( ISimObjectCreator* pCreator);
288 void CreateDataStructures();
289 void CreateOutputPorts(ISimObjectCreator* pCreator);
294 double* adNodesDistMesh;
297 double* adMeshBarLength_unstretched;
298 double* adKnotDiameter;
299 double* adKnotMomStiff_contact;
301 double* adTwineDragNormal;
302 double* adTwineDiameter;
303 double* adElementWaterVel;
304 double* adDampingCoeff;
305 double* adElementNodeWeight;
307 void PRINTALLNODEFORCES(std::string spec,
double dT);
Class containing a cable element object, allowing for disks and spheres to be connected.
Definition: CNetCableElement.h:32
Definition: CNetStructureArray.h:182
double m_dNumExternalPos
The index of the output port with position of the starboard wing external nodes.
Definition: CNetStructureArray.h:232
double m_dMaxCableTension
The maximum tension of the cable elements.
Definition: CNetStructureArray.h:273
double * m_adInertia
The inertia of the nodes.
Definition: CNetStructureArray.h:258
int * m_aIStateVel
An array of indices to the node velocity states.
Definition: CNetStructureArray.h:236
std::vector< CNetElementDef > m_VSPanelData
A vector of structs containing the section data read from the input file.
Definition: CNetStructureArray.h:246
double m_dMaxSideLengthFactor
The maximum element side length factor.
Definition: CNetStructureArray.h:251
double m_dMinSideLength
The side length limit for the elements to be further subdivided.
Definition: CNetStructureArray.h:252
int m_iNumPanelsGlobal
The number of global sections of the net.
Definition: CNetStructureArray.h:240
double m_dFluidRho
The density of the surrounding fluid.
Definition: CNetStructureArray.h:245
int m_iNumNodesOriginal
The number of original nodes of the net.
Definition: CNetStructureArray.h:243
double m_dMaxVelocity
The maximum velocity component of each node.
Definition: CNetStructureArray.h:276
int m_iNumNodeInputsUsed
The number of used external force inputs.
Definition: CNetStructureArray.h:222
double m_dMinCableLength
The minimum length of the cable elements.
Definition: CNetStructureArray.h:271
VSPairStrInt m_VsNodesInput
The tag names and indices of the external nodes to be used as input.
Definition: CNetStructureArray.h:281
double m_dStepSafetyFactor
The safety factor when calculating the adapted stiffness of the elements.
Definition: CNetStructureArray.h:270
double m_dMaxStepLength
The maximum step length for the simulation.
Definition: CNetStructureArray.h:268
double m_dMaxAcceleration
The maximum acceleration component of each node.
Definition: CNetStructureArray.h:275
int m_iMaxNumCables
The maximum number of cable elements used for the calculations.
Definition: CNetStructureArray.h:255
long * m_aiExternalNodes
The index of the starboard nodes corresponding to the elements of the enum TrawlSpec::ENetExternalNod...
Definition: CNetStructureArray.h:226
CNetCableElement ** m_apCableElements
An array holding the cable elements.
Definition: CNetStructureArray.h:257
int m_iNumCablesGlobal
The number of global cable elements.
Definition: CNetStructureArray.h:242
int m_iNumPanelsCalc
The number of elements the net is divided into.
Definition: CNetStructureArray.h:239
double m_dMeanCableTension
The expected average tension of the cable elements.
Definition: CNetStructureArray.h:272
VSPairStrInt m_VsNodesOutput
The tag names and indices of the external nodes to be used as output.
Definition: CNetStructureArray.h:280
ICurrentVel ** m_ppCurrentVel
The object giving the current velocity.
Definition: CNetStructureArray.h:262
double * m_adNodeForce
The force on the global nodes.
Definition: CNetStructureArray.h:259
int m_iMaxNumPanels
The maximum number of net panels used for the calculations.
Definition: CNetStructureArray.h:254
int m_iMaxNumNodes
The maximum number of nodes used for net calculations.
Definition: CNetStructureArray.h:253
int m_iNumNodeOutputsUsed
The number of used external position outputs.
Definition: CNetStructureArray.h:223
double m_dScale
The scale of the trawl net in relation to the specifications.
Definition: CNetStructureArray.h:256
VSPairStrInt m_VsNodesAvailable
The tag names and indices of the available external nodes.
Definition: CNetStructureArray.h:282
int * m_aIExternalConn
The index of the external nodes on the starboard wing.
Definition: CNetStructureArray.h:225
std::string m_sNetName
The identification name of the net.
Definition: CNetStructureArray.h:260
int * m_aIStatePos
An array of indices to the node position states.
Definition: CNetStructureArray.h:235
double m_dAdaptationPeriod
The adaptation period for the mean tension in cables and net elements.
Definition: CNetStructureArray.h:269
double m_dMassFactor
A factor to multiply the mass of each node with, slowing down the eigenfrequencies of the system.
Definition: CNetStructureArray.h:274
int m_iNumCablesCalc
The number of elements the cable is divided into.
Definition: CNetStructureArray.h:241
ISignalPort ** m_apInExternalForces
The external forces input port.
Definition: CNetStructureArray.h:229
std::vector< CNetCableElement * > m_VCableElements
A vector of structs containing the cable data read from the input file.
Definition: CNetStructureArray.h:247
double m_dAddedDragPerMPS
The added linear drag per meter per second speed.
Definition: CNetStructureArray.h:277
CNetStructureArray(std::string sSimObjectName, ISimObjectCreator *pCreator)
The constructor sets the pointer to the output object and the parser object.
int m_iNumNodesCalc
The number of nodes of the net after refinement.
Definition: CNetStructureArray.h:244
virtual ~CNetStructureArray()
The destructor deletes dynamically allocated memory.
Interface for calculating the bottom force on various objects.
Definition: IBasicBottom.h:23
Definition: ICurrentVel.h:12