FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
NetStructureSpec.h
1
9
10#ifndef CNetStructureSpec_H
11#define CNetStructureSpec_H
12
13// Includes
14#include <string>
15#include "NetCableElementSpec.h"
16#include "NetElementDef.h"
17#include <fhsim/InputReader.h>
18#include <fhsim/ISimObjectLogger.h>
19
22{
23 double maxCableTension;
24 double maxStepLength;
25 double meanCableTension;
26 double minCableLength;
27 double stepSafetyFactor;
28 double adaptationPeriod;
29 double massFactor;
30 double maxVelocity;
31 double addedDragPerMPS;
32};
33
34
35//Class definition
37{
38public:
40 NetStructureSpec(ISimObjectLogger *logger);
43
44 virtual void FromFile(std::string fileName, std::string filePath);
45 void FromBinaryFile(std::string fileName, std::string filePath);
46 int CreateExternalNodeMap(std::vector<std::string> VsInputNodes, VSPairStrInt& VsNodes);
47 int GetNumNodesCalc(){return m_numNodesCalc;}
48 int GetNumNodesOriginal(){return m_numNodesOriginal;}
49 std::vector<const NetElementDef*> GetNetPanels(){return m_VSPanelData;}
50 std::vector<const NetCableElementSpec*> GetCableElements(){return m_VCableElements;}
51 SAdaptationSpec_t GetAdaptationSpec() {return m_SAdaptationSpec;}
52
53 bool GetCatsRefinementMode();
54 void PrintInfo();
55
56protected:
57 virtual void ReadInputFile(std::string fileName, std::string filePath, ISimObjectLogger* logger);
58 virtual void ReadBinaryInputFile(std::string fileName, std::string filePath, ISimObjectLogger* logger);
59 void FindNodesToDivide(int nodesToDivide[2], double *length, double *lengthFactor);
60 void RefineMesh();
61 void RefineMesh2();
62
63 void CheckNodeNumber(int nodeNumber, ISimObjectLogger *const logger, std::string nodeDescription = "");
64 void CheckNodes(ISimObjectLogger *logger);
65 unsigned short AddCalcNode(int aiNodes[2]);
66 unsigned short DivideCableElement(int CableNum );
67
68 // Calculation variables
73
74 std::vector<const NetElementDef*> m_VSPanelData;
75 std::vector<const NetCableElementSpec*> m_VCableElements;
76
77 // Variables for controlling the calculation mesh refinement.
84 double m_scale;
85
86 std::string m_netName;
87 VSPairStrInt m_VsNodesAvailable;
88
90
91 static int s_iID;
92 int m_iD;
93 ISimObjectLogger* m_logger;
94};
95
96
97#endif
98
Definition NetStructureSpec.h:37
int m_numNodesCalc
The number of nodes of the net after refinement.
Definition NetStructureSpec.h:72
double m_maxSideLengthFactor
The maximum element side length factor.
Definition NetStructureSpec.h:79
int m_numNodesOriginal
The number of original nodes of the net.
Definition NetStructureSpec.h:71
std::vector< const NetCableElementSpec * > m_VCableElements
A vector of structs containing the cable data read from the input file.
Definition NetStructureSpec.h:75
int m_numCablesCalc
The number of elements the cable is divided into.
Definition NetStructureSpec.h:70
VSPairStrInt m_VsNodesAvailable
The tag names and indices of the available external nodes.
Definition NetStructureSpec.h:87
int m_maxNumPanels
The maximum number of net panels used for the calculations.
Definition NetStructureSpec.h:82
SAdaptationSpec_t m_SAdaptationSpec
A struct containing adaptations for faster integration of the net structure.
Definition NetStructureSpec.h:89
int m_foldingPointRefinement
refinement by folding points on each cable (Cats mode)
Definition NetStructureSpec.h:78
virtual ~NetStructureSpec()
The destructor deletes dynamically allocated memory.
int m_maxNumCables
The maximum number of cable elements used for the calculations.
Definition NetStructureSpec.h:83
int m_numPanelsCalc
The number of elements the net is divided into.
Definition NetStructureSpec.h:69
double m_minSideLength
The side length limit for the elements to be further subdivided.
Definition NetStructureSpec.h:80
NetStructureSpec(ISimObjectLogger *logger)
The constructor sets the pointer to the output object and the parser object.
double m_scale
The scale of the trawl net in relation to the specifications.
Definition NetStructureSpec.h:84
int m_maxNumNodes
The maximum number of nodes used for net calculations.
Definition NetStructureSpec.h:81
std::vector< const NetElementDef * > m_VSPanelData
A vector of structs containing the section data read from the input file.
Definition NetStructureSpec.h:74
std::string m_netName
The identification name of the net.
Definition NetStructureSpec.h:86
Class containing the specification for a net object.
Definition NetStructureSpec.h:22