FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
NetStructureWithConstraints Class Reference
+ Inheritance diagram for NetStructureWithConstraints:
+ Collaboration diagram for NetStructureWithConstraints:

Classes

struct  states
 

Public Member Functions

 NetStructureWithConstraints (std::string simObjectName, ISimObjectCreator *creator)
 The constructor sets the pointer to the output object and the parser object.
 
virtual ~NetStructureWithConstraints ()
 The destructor deletes dynamically allocated memory.
 
virtual void OdeFcn (const double dT, const double *const adX, double *const adXDot) const
 
virtual void InitialConditionSetup (const double dT, const double *const adCurrentIC, double *const adUpdatedIC, ISimObjectCreator *const creator)
 
virtual void FinalSetup (const double dT, const double *const adX, ISimObjectCreator *const creator)
 
void PreOdeFcn (double T, const double *X, IStateUpdater *updater) override
 Rebuilds the cast wake when due (with CastWake) and takes the wakes at the panel centroids and cable midpoints for the step (NetFlowInteraction::PreOdeFcn, environment::wake::BodyWake::Update).
 
const double *const outExternalNodeForce (const double dT, const double *const adX, int extNode)
 
virtual const double *const NodePos (const double dT, const double *const adX, int extNode)
 
virtual const double *const NodeVel (const double dT, const double *const adX, int extNode)
 
virtual const double *const BottomContact (const double dT, const double *const adX)
 
void SetAddedDragPerMPS (double AddedDragPerMPS)
 
virtual const double *const NodeForce (const double dT, const double *const adX, int extNode) const
 

Protected Member Functions

virtual void CalcStateDerivatives (const double *const adX, double *const adXDot) const
 
virtual void AddExternalForces (const double dT, const double *const adX) const
 
virtual void AddNetForces (const double dT, const double *const adX) const
 
virtual void AddCableForces (const double dT, const double *const adX) const
 
void AddNetAndCableForcesInParallel (double T, const double *X) const
 The panel and cable loops on m_numThreads threads, deterministic for a fixed count (owner ruling R63).
 
void AddNetForceRange (double T, const double *X, int begin, int end, double *nodeForce) const
 Adds the forces of panels [begin, end) to nodeForce.
 
void AddCableForceRange (double T, const double *X, int begin, int end, double *nodeForce, bool waterFollowsElement=false) const
 
void CableHydrodynamicForce (double T, const double *X, double force[3]) const
 The sum of the cables' hydrodynamic forces on the nodes, N (MARE-0141); for the wake caster's log.
 
void FlowAt (double T, int point, const double pos[3], double vel[3]) const
 The water velocity at a panel centroid (point = panel) or a cable midpoint (point = number of panels + cable) at pos.
 
void UpdateNodeWaveVelocities (double T, const double *X, int firstNode, int endNode) const
 Sets m_nodeWaveVelocity at nodes [firstNode, endNode) of state X (R62).
 
virtual double AddNodeBottomForce (const double *const adX, int node, double diam, double adForceInOut[3]) const
 
virtual void AddBottomForces (const double *const adX) const
 
virtual void AddInputPorts (ISimObjectCreator *creator)
 
virtual void CreateNetPanels (std::vector< const NetElementDef * > VNetElementDefs, ISimObjectCreator *creator)
 
virtual void CreateNetCables (std::vector< const NetCableElementSpec * > VCableElements, ISimObjectCreator *creator)
 
virtual void CreateDataStructures ()
 
virtual void CreateOutputPorts (ISimObjectCreator *creator)
 
VSPairStrInt CreateExternalNodeMap (std::string tag, int *piUsed, NetStructureSpec &NetSpec, ISimObjectCreator *creator)
 
void ValidateConstraintInput (ISimObjectCreator *creator) const
 
void PRINTALLNODEFORCES (std::string spec, double dT)
 
void SetExternalPos (const double dT, const double *const adX) const
 
void SetExternalVel (const double dT, const double *const adX) const
 
const double * NodePositionState (const double *X, int node) const
 
const double * NodeVelocityState (const double *X, int node) const
 The velocity of a calculation node, 3 states in X (as NodePositionState()).
 
bool NodeHasOwnStates (int node) const
 True unless a rigid element drives the node.
 
const states & DrivingElement (int node) const
 The state indices of the rigid element that drives the node.
 

Protected Attributes

std::vector< double > m_nodeWaveVelocity
 The wave particle velocity at each node of the state being evaluated (R62), 3 per node.
 
ISignalPort ** m_InTopConstraintsPos
 Interface member variables.
 
ISignalPort ** m_InTopConstraintsVel
 
int * m_iStatePos
 
int * m_iStateVel
 
double * m_NodeExternalForces
 
double * m_NodeConstraintsPos
 
double * m_NodeConstraintsVel
 
int m_numNodesInputForce
 Node counts.
 
int m_numNodesOutputPosAndVel
 
int m_numPanelsCalc
 
int m_numCablesCalc
 
int m_numNodesOriginal
 
int m_numNodesCalc
 
int m_numNodeOutputs
 
double * m_NodeInternalForces
 
int(* m_hasPosAndVelStates )[2]
 
int m_NumNodesInputPosAndVel
 
int m_NumNodesOutputForce
 
VSPairStrInt m_VsNodesInputPosAndVel
 
VSPairStrInt m_VsNodesOutputForce
 
NetBottomContactFilter m_BottomContactFilter
 Environment.
 
double m_bottomContact [6]
 
environment::EnvironmentProvider * m_environment
 
environment::SeafloorForcesInterface * m_seafloor
 
net_panel_setup::PanelHydrodynamics m_panelHydrodynamics
 Panel hydrodynamics (MARE-0095)
 
net_solidity::SolidityModel m_solidityModel = net_solidity::kDefaultSolidityModel
 
std::unique_ptr< NetFlowInteraction > m_flow
 The wakes cast and received and the water velocity at the panels and cables (MARE-0333); from the constructor.
 
ISimObjectLogger * m_logger = nullptr
 The FhSim log, kept from FinalSetup for the clamp lines.
 
hydrodynamics::PanelClampLog m_clampLog
 Which clamps of the load law the panels have hit; reported once each in PreOdeFcn (MARE-0140).
 
std::vector< NetCableElementWithConstraints * > m_VpCableElements
 Element properties.
 
std::vector< NetElement3NWithConstraints * > m_VpNetElements
 
float * m_inertia
 
int * m_netConn
 
int ** m_aaiCableConn
 
SAdaptationSpec_t m_SAdaptations
 
bool m_foldingPointRefinementUsed
 
VSPairStrInt m_VsNodesOutputPosAndVel
 Nodes reachable directly through input or output ports.
 
VSPairStrInt m_VsNodesInputForce
 
bool m_useTagForExternalNodes
 
double * m_nodeForce
 
double m_meanTensionTime = std::numeric_limits<double>::quiet_NaN()
 The time of the last per-step mean-tension update of the cable elements (owner ruling R64), s; NaN before the first.
 
bool m_CageWakeEffectsActive
 
CoRiBoDynamics::ConstraintSolver * m_constraintSolver
 
std::vector< states > m_stateVector
 
CoRiBoDynamics::JointConstraint * m_jointConstr
 
double m_topPosition1 [3]
 
double m_topVelocity1 [3]
 
double m_topOrientation1 [4]
 
double m_topangularVel1 [3]
 
double m_topPosition2 [3]
 
double m_topVelocity2 [3]
 
double m_topOrientation2 [4]
 
double m_topangularVel2 [3]
 
double m_YoungsModulus
 
double m_solverFrequencyCoefficient
 Frequency coefficient of the constraint solver [1/s].
 
int m_numThreads = 1
 Threads of the panel and cable loops (NumThreads, R63).
 
std::vector< double > m_threadNodeForces
 One node-force buffer per chunk of the parallel loops, set in FinalSetup.
 
int m_numConstraintsElements
 
double m_depthOfConstraintsCable
 

Friends

template<class >
class NetWakePanels
 Wake casting (MARE-0114)
 

Member Function Documentation

◆ AddCableForceRange()

void NetStructureWithConstraints::AddCableForceRange ( double  T,
const double *  X,
int  begin,
int  end,
double *  nodeForce,
bool  waterFollowsElement = false 
) const
protected

Adds the forces of cable elements [begin, end) to nodeForce. Adds the cable elements begin to end to nodeForce. With waterFollowsElement the water velocity at each element is the element's own (the drag vanishes): the reference of CableHydrodynamicForce.

◆ NodePositionState()

const double * NetStructureWithConstraints::NodePositionState ( const double *  X,
int  node 
) const
inlineprotected

The position of a calculation node, 3 states in X.

A node driven by a rigid element takes its position and velocity from that element's position and velocity states, as SetExternalPos and SetExternalVel give them to OdeFcn; its own Pos_/Vel_ states are frozen at their initial values and never read here.

Friends And Related Symbol Documentation

◆ NetWakePanels

template<class >
friend class NetWakePanels
friend

The net as its wake caster sees it (NetWakePanels.h).

Member Data Documentation

◆ m_panelHydrodynamics

net_panel_setup::PanelHydrodynamics NetStructureWithConstraints::m_panelHydrodynamics
protected

The law and fluid of every panel.


The documentation for this class was generated from the following file: