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

Classes

class  DoorCaster
 

Public Member Functions

 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.
 
Jacobian support for implicit integration

Partial analytical Jacobian. Covered:

  • the kinematics, complete (BodyKinematics6Dof): pos_dot against the quaternion and localVel, the quaternion's derivative against the quaternion (with the norm correction) and omega
  • localVel linear damping diagonal
  • omega linear damping diagonal, plus the out-of-bound rotational hydrodynamic damping of the plate-door law (plate_door::RateDampingDerivative) at the current alpha and beta
  • the Coriolis-centripetal terms of rigid_body::OmegaTermsWrench (R100, R107), the water velocity held fixed The remaining hydrodynamic force derivatives, gravity orientation and bottom contact are omitted. Subclasses that add bottom contact (e.g. ToTrawlDoor) must override HasJacobians() to return false.
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 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 AddBottomForces (const hydro_body::FlowFrame &frame, hydro_body::Wrench &wrench) const
 Adds the bottom contact. The base door has none.
 
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

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()

virtual void TrawlDoorBase::AddBottomForces ( const hydro_body::FlowFrame &  frame,
hydro_body::Wrench &  wrench 
) const
inlineprotectedvirtual

Reimplemented in ToTrawlDoor.

◆ AddExternalForces()

virtual void TrawlDoorBase::AddExternalForces ( double  T,
const double *  X,
const hydro_body::FlowFrame &  frame,
hydro_body::Wrench &  wrench 
) const
protectedvirtual

Reimplemented in TrawlDoorWarpControl.

◆ AddInflowDependentForces()

virtual void TrawlDoorBase::AddInflowDependentForces ( double  T,
const double *  X,
const plate_door::Inflow &  inflow,
hydro_body::Wrench &  wrench 
) const
inlineprotectedvirtual

Reimplemented in TrawlDoorAddedFoil.

◆ AddOwnDerivatives()

virtual void TrawlDoorBase::AddOwnDerivatives ( double  T,
const double *  X,
const plate_door::Inflow &  inflow,
double *  XDot 
) const
inlineprotectedvirtual

Reimplemented in TrawlDoorAddedFoil.

◆ SumLoads()

hydro_body::Wrench TrawlDoorBase::SumLoads ( double  T,
const double *  X,
const hydro_body::FlowFrame &  frame,
plate_door::Inflow &  inflow 
) const
protected

The loads of one derivative evaluation at time T and global state X, with the flow frame frame of that state, summed in this order (the order fixes the rounding): AddExternalForces, AddInternalForces, AddHydroForces, AddInflowDependentForces, AddDampingForces, AddBottomForces.

Parameters
[out]inflowThe plate-door inflow of the state (plate_door::InflowOf of the relative velocity).

◆ WaterLoad()

hydro_body::Wrench TrawlDoorBase::WaterLoad ( double  T,
const double *  X,
const hydro_body::FlowFrame &  frame 
) const
protected

Adds plate_door::SteadyLoad at the relative velocity and the rates of frame; returns its inflow. The load of the water on the door: the plate-door law (AddHydroForces) plus the loads that depend on its inflow (AddInflowDependentForces), body frame; the gravity, buoyancy, cable, damping and seabed loads are not in it.

Member Data Documentation

◆ m_outAlpha

double TrawlDoorBase::m_outAlpha
protected

Angle of attack recomputed from the sampled (dT, adX) in OutAngleOfAttack, so that the AngleOfAttack output port is a function of its arguments. See FISH-0029.


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