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

Public Member Functions

 ToTrawlDoor (std::string simObjectName, ISimObjectCreator *creator)
 The constructor sets the pointer to the output object and the parser object.
 
const double * OutRoll (const double dT, const double *const adX)
 Output port returning the roll angle of the trawl door.
 
const double * OutPitch (const double dT, const double *const adX)
 
const double * OutAngleOfAttack (const double dT, const double *const adX)
 
const double * OutHydroLoad (const double dT, const double *const adX)
 Output port returning the hydrodynamic load on the door: NED force then NED moment about the door origin.
 
const double * OutSeabedLoad (const double dT, const double *const adX)
 Output port returning the seabed load on the door: NED force then NED moment about the door origin.
 
- Public Member Functions inherited from TrawlDoorBase
 TrawlDoorBase (std::string simObjectName, ISimObjectCreator *creator)
 The constructor sets the pointer to the output object and the parser object.
 
virtual void OdeFcn (const double dT, const double *const adX, double *const adXDot) const override
 Calculates the state derivatives.
 
void PreOdeFcn (double T, const double *X) override
 Rebuilds the door's wake when due (CastWake) and takes the other objects' wakes at the door.
 
bool HasJacobians () const override
 
void OdeJacobian (double T, const double *X, double *J, int nStates) override
 
int GetJacobianSparsity (int nStates, int *rowPtr, int *colIdx) override
 

Protected Member Functions

void FinalSetup (const double dT, const double *const adX, ISimObjectCreator *const creator)
 Resolves the SeafloorForces resource after the base class has resolved the environment.
 
void AddBottomForces (const hydro_body::FlowFrame &frame, hydro_body::Wrench &wrench) const override
 Adds the seabed load of the evaluator to the trawl door, in the body frame.
 
environment::seabed::ContactLoad< double > SeabedLoadOf (const hydro_body::FlowFrame &frame) const
 The seabed load of the door in the pose and with the velocity of frame: NED, moment about the door origin.
 
bool HasJacobians () const override
 
- Protected Member Functions inherited from TrawlDoorBase
void HydroForceAt (const double *X, const double relVel_n[3], double force_n[3]) const
 plate_door::SteadyLoad at the velocity relVel_n relative to the water (NED) and the attitude and rates of the global state X; the force in NED.
 
void OutOfBoundRotationalDamping (const hydro_body::FlowFrame &frame, double damping[3]) const
 The derivative of the out-of-bound rotational damping moments against the angular rate, at frame.
 
hydro_body::Wrench SumLoads (double T, const double *X, const hydro_body::FlowFrame &frame, plate_door::Inflow &inflow) const
 
virtual void AddExternalForces (double T, const double *X, const hydro_body::FlowFrame &frame, hydro_body::Wrench &wrench) const
 Adds the warp and bridle forces of the input ports at their fastening points.
 
void AddInternalForces (double T, const hydro_body::FlowFrame &frame, hydro_body::Wrench &wrench) const
 Adds gravity at COG and the buoyancy of the wet part of the plate (R66, FISH-0092).
 
hydro_body::Wrench WaterLoad (double T, const double *X, const hydro_body::FlowFrame &frame) const
 
plate_door::Inflow AddHydroForces (const hydro_body::FlowFrame &frame, hydro_body::Wrench &wrench) const
 
virtual void AddInflowDependentForces (double T, const double *X, const plate_door::Inflow &inflow, hydro_body::Wrench &wrench) const
 Adds forces that depend on the plate-door inflow of this state. The base door has none.
 
void AddDampingForces (const hydro_body::FlowFrame &frame, hydro_body::Wrench &wrench) const
 Adds the linear damping, a numerical stabiliser on the door's own velocity and rates (R75, FISH-0091).
 
virtual void AddOwnDerivatives (double T, const double *X, const plate_door::Inflow &inflow, double *XDot) const
 Writes the derivatives of a subclass's own states, after the 13 of m_body. The base door has none.
 
virtual void CalcOutput (const double dT, const double *const adX)
 
void CalcOutputCommon (const double dT, const double *const adX) const
 
void FinalSetup (const double dT, const double *const adX, ISimObjectCreator *const creator)
 
const double * OutPos1 (const double dT, const double *const adX)
 
const double * OutPos3 (const double dT, const double *const adX)
 
const double * OutPos2 (const double dT, const double *const adX)
 
const double * OutVel1 (const double dT, const double *const adX)
 
const double * OutVel3 (const double dT, const double *const adX)
 
const double * OutVel2 (const double dT, const double *const adX)
 

Protected Attributes

ISimObjectCreator * m_creator = nullptr
 
environment::SeafloorForcesInterface * m_seafloorForces = nullptr
 The shared "SeafloorForces", from FinalSetup.
 
double m_shoeWidth
 Width of the shoe [m], from ShoeWidth.
 
double m_outHydroLoad [6] = {0, 0, 0, 0, 0, 0}
 Output port HydroLoad.
 
double m_outSeabedLoad [6] = {0, 0, 0, 0, 0, 0}
 Output port SeabedLoad.
 
double m_roll
 
double m_pitch
 
- Protected Attributes inherited from TrawlDoorBase
bool m_isPort
 Is this a port trawl door?
 
double m_cOG [3]
 The trawl door center of gravity.
 
double m_area
 The trawldoor area.
 
double m_height
 
double m_length
 
double m_aR
 
double m_curvature
 
double m_mass
 The mass of the object.
 
double m_mdCornerPos_body [4][3]
 
double m_rhoDoor
 The density of the trawl door material.
 
plate_door::Door m_law
 The door's constants for the plate-door law (Area, AR, Rho, IsPort, MaxLiftCoeff, DragCoeffAtMaxLift).
 
double m_warpPos_d [3]
 
double m_lBPos_d [3]
 
double m_uBPos_d [3]
 
double m_rhoWater
 The density of the surrounding fluid.
 
double m_force_warp [3]
 A pointer to the Warp force.
 
double m_force_LB [3]
 A pointer to the force.
 
double m_force_UB [3]
 A pointer to the input force.
 
ICommonComputation * m_commonCalc
 Calculations necessary for more than one output port.
 
environment::EnvironmentProvider * m_environment = nullptr
 m_flow's Environment, from FinalSetup.
 
DoorCaster m_caster
 The door for its wake; declared before m_flow, which keeps a pointer to it.
 
environment::wake::BodyFlowInteraction m_flow
 The wake the door casts and receives.
 
ISignalPort * m_inWarp_F
 The cable length input port.
 
ISignalPort * m_inLB_F
 The cable length input port.
 
ISignalPort * m_inUB_F
 The cable length input port.
 
double m_outPos1 [3]
 
double m_outPos3 [3]
 
double m_outPos2 [3]
 
double m_outVel1 [3]
 
double m_outVel3 [3]
 
double m_outVel2 [3]
 
HydroBody m_body
 The states Pos, Quater, LocalVel and Omega, the inertia (R70) and the derivatives.
 
unsigned long m_IStatePos
 
unsigned long m_IStateQuater
 
unsigned long m_IStateLocalVel
 
unsigned long m_IStateOmega
 
unsigned long m_IStateHydroForce
 
double m_outAlpha
 
plate_door::Inflow m_lastInflow {}
 The inflow of the last OdeFcn, for the render only (the billboard label); never read by the dynamics.
 

Member Function Documentation

◆ AddBottomForces()

void ToTrawlDoor::AddBottomForces ( const hydro_body::FlowFrame &  frame,
hydro_body::Wrench &  wrench 
) const
overrideprotectedvirtual

Reimplemented from TrawlDoorBase.

◆ HasJacobians()

bool ToTrawlDoor::HasJacobians ( ) const
inlineoverrideprotected

Bottom contact forces are not covered by the base-class analytical Jacobian; fall back to numerical finite differences for this class and its subclasses.

Member Data Documentation

◆ m_creator

ISimObjectCreator* ToTrawlDoor::m_creator = nullptr
protected

Kept on purpose, only to report a port read before FinalSetup (FISH-0051, FISH-0130). fhsim's ISimObjectCreator.h says not to store the pointer, because it is one cursor that fhsim moves from SimObject to SimObject. It stays valid here because the assembled model owns both the organizer and the door. Its messages carry the name of the SimObject the cursor points at, which may be the reader, so each message names this door explicitly with GetName().


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