|
FhSim
3.1.0
Marine systems simulation
|
One side of a trawl rig: warp, trawl door, clump weight and two bridles, solved as constrained 6-DOF rigid bodies.
Collaboration diagram for Trawl cable:The SimObject models one side of a trawl, from the winch to the net wing:
TrawlDoorMass is split 70 % to the plate and 30 % to the weight.Each cable section is split into rigid cylinders with position, velocity, angular velocity and quaternion states. Neighbouring cylinders are held together by compliant, Baumgarte-type regularised constraints, with axial, bending and torsional stiffness taken from the section's material parameters. The winch point and the two bridle end points are ball joints to external positions given by input ports. The output ports report the reaction forces at those joints.
Forces from the environment use the Environment shared resource (current, sea depth and bathymetry): gravity, buoyancy, Reynolds-number-dependent normal and tangential drag on the cable elements, lift and drag on the trawl door, drag on the clump weight, and seabed contact. The water density is fixed at 1025 kg/m³. The model has no added mass. Positions use the FhSim global frame with z positive downwards: gravity acts along +z in the force model.
Shared solver. A TrawlCable without a TrawlCable parameter owns a constraint solver and registers it as the shared resource <Name>ITrawlCable. A TrawlCable that names another one in its TrawlCable parameter adds its bodies to that solver instead, and so does every MooringCable. All bodies in one solver are integrated together by the owner's OdeFcn. The parameters NumCpuCore, StartCpuCore and StartTimeCollision are read only by the owner.
Collision. With UseCollision on, the warp, both bridles, the door plate and the clump weight are added to the shared collision manager. The top warp is never added. The manager only tests these bodies against the segments of a MooringCable in the same solver, so the NormalForce* and ContactPosition* outputs stay zero when there is no MooringCable. The order of the <Lib> elements does not matter.
Integrator. With integrator method Euler_i the solver runs its symplectic step with the integrator step length. No other method gets this treatment. See MARE-0003.
Reproducibility. With NumCpuCore above 1 the solver's threads share the work in an order that depends on scheduling, so two runs of the same input give different results. The differences start at round-off and grow; in the smoke fixture they reach about 13 % of a column's range after one simulated second. This is accepted by design (MARE-0075). With the default of one thread, repeated runs have given byte-identical results.
| Name | Width | Description |
|---|---|---|
| WinchPosition | 3 | Position of the winch point [m]. The first element of the top warp (or of the warp when there is no top warp) is ball-jointed to it. Also used to set the initial conditions. |
| WinchVelocity | 3 | Velocity of the winch point [m/s]. |
| TopBridleEndPosition | 3 | Position of the free end of the top bridle [m], typically a net wing node. |
| TopBridleEndVelocity | 3 | Velocity of the free end of the top bridle [m/s]. |
| BottomBridleEndPosition | 3 | Position of the free end of the bottom bridle [m]. The clump weight hangs from this end. |
| BottomBridleEndVelocity | 3 | Velocity of the free end of the bottom bridle [m/s]. |
| Name | Width | Description |
|---|---|---|
| WinchForce | 3 | Force from the cable on the winch point [N], which is the reaction force of the winch ball joint. |
| TopBridleEndForce | 3 | Force from the top bridle on its end point [N]. |
| BottomBridleEndForce | 3 | Force from the bottom bridle on its end point [N]. |
| TrawlDoorPosition | 3 | Position of the centre of the trawl door plate [m]. |
| NormalForceWarp | 1 | Magnitude of the summed contact normal force between the warp and a MooringCable [N]. |
| NormalForceTopBridle | 1 | Magnitude of the summed contact normal force between the top bridle and a MooringCable [N]. |
| NormalForceBottomBridle | 1 | Magnitude of the summed contact normal force between the bottom bridle and a MooringCable [N]. |
| NormalForceTrawlDoor | 1 | Sum of the magnitudes of the contact normal forces on the trawl door plate [N]. |
| NormalForceClumpWeight | 1 | Sum of the magnitudes of the contact normal forces on the clump weight [N]. 0 when there is no clump weight (ClumpWeightMass = 0). |
| ContactPositionWarp | 2 | Approximate location of the last contact found in the step, or 0 and 0 when there is no contact. Element 0 is the distance along the warp from the winch end [m], top warp length included. Element 1 is the distance along the MooringCable from its end A [m]. Both are approximate: the position within the contacting element is measured from the element centre, not from its start, so each value is about half an element length short. Element 1 also counts each earlier mooring section as (n − 1) element lengths for its n elements, one element length short per section. |
| ContactPositionTopBridle | 2 | As ContactPositionWarp, for the top bridle. Element 0 is measured from the door end [m]. |
| ContactPositionBottomBridle | 2 | As ContactPositionWarp, for the bottom bridle. Element 0 is measured from the door end [m]. |
Parameters without a default are required. The material defaults assume a steel wire rope of nominal diameter d made of 7 strands of diameter d/3.
Solver and numerics:
| Name | Width | Description |
|---|---|---|
| PortOrStarboard | 1 | Port gives the port-side geometry. Any other value gives starboard. The choice mirrors the door's connection points and its initial orientation. Required. |
| RegulatorFrequencyCoefficient | 1 | Frequency coefficient β of the regularised joint constraints [1/s]. The axial constraint gain is EA/(L β²), where L is the element length. Higher values give stiffer and faster-responding joints but need a shorter integrator step. Required. |
| CollisionFrequencyCoefficient | 1 | Frequency coefficient of the collision manager [1/s]. Each element's contact stiffness is scaled by (RegulatorFrequencyCoefficient/CollisionFrequencyCoefficient)². When a solver is shared, the owner's value sets the collision manager's frequency (Default: RegulatorFrequencyCoefficient). |
| StructuralDampingCoefficient | 1 | Relative damping of the joint constraints: the damping gain is this value times β. The source comment says 1 is critical damping. Used for all sections (Default: 1). |
| TrawlCable | 1 | Name of another TrawlCable whose solver, joint constraints, collision manager and environment forces this one joins. If it is given, this object owns no solver and does not read NumCpuCore, StartCpuCore or StartTimeCollision (Default: absent, so this object owns a solver). |
| NumCpuCore | 1 | Number of threads in the constraint solver's core-bound thread pool, one per CPU core. A value below 1 is a setup error, a value above the number of hardware threads is reduced to it, and 1 runs the solver on the calling thread. With more than one thread the results are not reproducible from run to run (see MARE-0075). Owner only (Default: 1). |
| StartCpuCore | 1 | Index of the CPU core the first pool thread is bound to, the others take the next cores. A negative value is a setup error, and a pool that reaches past the last hardware thread logs a warning. Owner only (Default: 0). |
| StartTimeCollision | 1 | Simulation time before which no contacts are computed [s]. Owner only (Default: 0). |
| UseCollision | 1 | Boolean. Adds the warp, bridles, door plate and clump weight to the collision manager (Default: true). |
| CableFrictionCoefficient | 1 | Friction coefficient of the contacts on the warp, bridles, door plate and clump weight. Used only when UseCollision is on (Default: 0.8). |
| HQrender | 1 | Boolean. Visualisation only: draws each element as a capsule mesh (Default: true). |
Warp, top warp, trawl door and clump weight:
| Name | Width | Description |
|---|---|---|
| WarpNumElements | 1 | Number of rigid elements in the warp. Required. |
| WarpLength | 1 | Length of the warp [m], from the top warp (or winch) to the door. Required. |
| WarpDiameter | 1 | Nominal diameter d of the warp [m]. Used for drag, inertia, contact radius and the default cross-section values. The top warp uses it too. Required. |
| WarpTensileCrossSectionArea | 1 | Load-bearing cross-section area A [m²]. Used in the axial stiffness EA (Default: 7πd²/36). |
| WarpTensileCrossSectionSecondAreaMoment | 1 | Second area moment I of the load-bearing material [m⁴]. Used in the bending stiffness EI (Default: 7πd⁴/5184). |
| WarpTensileCrossSectionTorsionalAreaMoment | 1 | Torsional area moment J [m⁴]. Used in the torsional stiffness GJ (Default: 2 × WarpTensileCrossSectionSecondAreaMoment). |
| WarpYoungsModulus | 1 | Young's modulus E of the load-bearing material [Pa] (Default: 2e11). |
| WarpShearModulus | 1 | Shear modulus G of the load-bearing material [Pa] (Default: WarpYoungsModulus/2.6). |
| WarpDisplacementCrossSectionArea | 1 | Cross-section area that displaces water [m²]. Gives the buoyancy (Default: 0.9πd²/4). |
| WarpCableWeight | 1 | Mass per unit length [kg/m]. Gives element mass, inertia and gravity (Default: WarpTensileCrossSectionArea × 7900). |
| TensionStabilityFactorWarp | 1 or 2 | Numerical stabiliser for heavy loads. The first value divides the bending and torsion frequency coefficient. The second value multiplies the bending and torsion stiffness. With one value, both factors take that value. Typically 1 or more (Default: 1). |
| TopWarpNumElements | 1 | Number of rigid elements in the top warp. 0 means no top warp (Default: 0). |
| TopWarpLength | 1 | Length of the top warp [m]. Required when TopWarpNumElements > 0 and read only then. The top warp uses all of the warp's diameter and material values. |
| TensionStabilityFactorTopWarp | 1 or 2 | As TensionStabilityFactorWarp, for the top warp. Read even when there is no top warp (Default: 1). |
| TrawlDoorMass | 1 | Total mass of the trawl door [kg]. 70 % goes to the plate and 30 % to the door weight. The displaced volume is TrawlDoorMass/7900 m³. Required. |
| TrawlDoorArea | 1 | Plate area A of the trawl door [m²]. Used for lift and drag. It also sets the plate size: length √(A/2.5), width √(2.5A), thickness 0.05√A. Required. |
| ClumpWeightMass | 1 | Mass of the clump weight on the bottom bridle end [kg]. The clump weight is a steel (7900 kg/m³) capsule whose length is 6 times its radius. Its rotational inertia is that of a solid cylinder of the capsule's radius and length. With 0 there is no clump weight (Default: 0). |
Top bridle and bottom bridle. These have the same material parameters as the warp, with the prefix TopBridle or BottomBridle. The defaults use that bridle's own diameter unless stated otherwise:
| Name | Width | Description |
|---|---|---|
| TopBridleLength | 1 | Length of the top bridle [m]. Required. |
| TopBridleDiameter | 1 | Nominal diameter of the top bridle [m] (Default: WarpDiameter). |
| TopBridleNumElements | 1 | Number of rigid elements in the top bridle (Default: int(TopBridleLength/WarpLength × WarpNumElements)). |
| TopBridleTensileCrossSectionArea | 1 | As WarpTensileCrossSectionArea [m²]. |
| TopBridleTensileCrossSectionSecondAreaMoment | 1 | As WarpTensileCrossSectionSecondAreaMoment [m⁴]. |
| TopBridleTensileCrossSectionTorsionalAreaMoment | 1 | As WarpTensileCrossSectionTorsionalAreaMoment [m⁴]. |
| TopBridleYoungsModulus | 1 | As WarpYoungsModulus [Pa] (Default: 2e11). |
| TopBridleShearModulus | 1 | As WarpShearModulus [Pa] (Default: TopBridleYoungsModulus/2.6). |
| TopBridleDisplacementCrossSectionArea | 1 | As WarpDisplacementCrossSectionArea [m²]. |
| TopBridleCableWeight | 1 | As WarpCableWeight [kg/m] (Default: TopBridleTensileCrossSectionArea × 7900). |
| TensionStabilityFactorTopBridle | 1 or 2 | As TensionStabilityFactorWarp (Default: the warp's first factor, for both values). |
| BottomBridleLength | 1 | Length of the bottom bridle [m] (Default: 1.125 × TopBridleLength). |
| BottomBridleDiameter | 1 | Nominal diameter of the bottom bridle [m] (Default: TopBridleDiameter). |
| BottomBridleNumElements | 1 | Number of rigid elements in the bottom bridle (Default: int(TopBridleNumElements × BottomBridleLength/TopBridleLength)). |
| BottomBridleTensileCrossSectionArea | 1 | As WarpTensileCrossSectionArea [m²] (Default: 7πd²/36 with d = BottomBridleDiameter). |
| BottomBridleTensileCrossSectionSecondAreaMoment | 1 | As WarpTensileCrossSectionSecondAreaMoment [m⁴]. |
| BottomBridleTensileCrossSectionTorsionalAreaMoment | 1 | As WarpTensileCrossSectionTorsionalAreaMoment [m⁴]. |
| BottomBridleYoungsModulus | 1 | As WarpYoungsModulus [Pa] (Default: 2e11). |
| BottomBridleShearModulus | 1 | As WarpShearModulus [Pa] (Default: BottomBridleYoungsModulus/2.6). |
| BottomBridleDisplacementCrossSectionArea | 1 | As WarpDisplacementCrossSectionArea [m²]. |
| BottomBridleCableWeight | 1 | As WarpCableWeight [kg/m] (Default: BottomBridleTensileCrossSectionArea × 7900). |
| TensionStabilityFactorBottomBridle | 1 or 2 | As TensionStabilityFactorWarp (Default: the warp's first factor, for both values). |
Every rigid body has four states. The cable elements are numbered from 0 at the winch end (warp and top warp) or at the door end (bridles).
| Name | Width | Description |
|---|---|---|
| TopWarpPos<i>, WarpPos<i>, TopBridlePos<i>, BottomBridlePos<i> | 3 | Position of the element centre [m]. The TopWarp states exist only when TopWarpNumElements > 0. |
| TopWarpVel<i>, WarpVel<i>, TopBridleVel<i>, BottomBridleVel<i> | 3 | Velocity of the element centre [m/s]. |
| TopWarpOmega<i>, WarpOmega<i>, TopBridleOmega<i>, BottomBridleOmega<i> | 3 | Angular velocity of the element [rad/s] (frame not determined from source). |
| TopWarpQuater<i>, WarpQuater<i>, TopBridleQuater<i>, BottomBridleQuater<i> | 4 | Orientation quaternion (w, x, y, z) of the element. |
| TrawlDoorPosition, TrawlDoorVelocity, TrawlDoorOmega, TrawlDoorQuater | 3/3/3/4 | The trawl door plate. |
| TrawlDoorWeightPosition, TrawlDoorWeightVelocity, TrawlDoorWeightOmega, TrawlDoorWeightQuater | 3/3/3/4 | The door weight body. |
| ClumpWeightPosition, ClumpWeightVelocity, ClumpWeightOmega, ClumpWeightQuater | 3/3/3/4 | The clump weight. Present only when ClumpWeightMass > 0. |
InitialConditionSetup overwrites all states once WinchPosition, TopBridleEndPosition and BottomBridleEndPosition have values. The door is placed toward the winch from the midpoint of the two bridle ends, at 0.97 × the shorter bridle length, and is turned by a fixed side-dependent angle. The warp (and top warp) and the two bridles are laid out as catenaries between their end points. The clump weight is placed just below the bottom bridle end. All velocities and angular velocities start at zero. Until the three positions are available, the force and door-position outputs are marked not ready.
This SimObject is referred to as TrawlCable