FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Disk of sorts
+ Collaboration diagram for Disk of sorts:
Review issues:

0327 — HasJacobians of NetStructure and Disk depends on the contact state of the last OdeFcn call

0364 — A net's attached spheres and disks see only the net's lumped wake, not its private field

A simple disk.

Its drag splits the disk velocity relative to the water, v, along the disk axis n (the direction of the Force input; z when the force is zero): v_n = (n·v)n, v_t = v - v_n, and F = -½ρ C_n A_n |v_n| v_n - ½ρ C_t A_t |v_t| v_t, with C_n = 1.2 on the face area (the annulus π(D² − d²)/4 outside the cable, ENV-0103) and C_t = 0.005 on the edge area (environment::disk_hydro::DragForce, MARE-0098).

With CastWake set the disk casts a lumped wake for the other objects (environment::wake::BodyWake and environment::disk_hydro::DiskCaster, ADR 0006, MARE-0127): at each rebuild, in PreOdeFcn, its drag at the current-only free stream U (no waves) gives the momentum deficit M = F·ê_U/(½ρ|U|²), its frontal area normal to ê_U is π(D² − d²)/4·|n·ê_U| + D·T·√(1 − (n·ê_U)²) (face annulus outside the cable plus edge silhouette, D = DiskD, T = DiskT, d = D the cable diameter; ENV-0103), and the source sits at the rear face, (T/2)|n·ê_U| + (D/2)√(1 − (n·ê_U)²) downstream of the centre. The disk reads its own flow without its own field. The lumped wake starts as a step at the rear face (x_start = 0): another SimObject that crosses the rear-face plane sees a jump in its inflow, which can collapse the step size or fail the Newton iteration of an implicit integrator such as BDF (MARE-0152). Without CastWake nothing changes.

Its buoyancy is that of a thin disk's circle segment below the wave surface over its centre, over the disk's vertical half-extent (D/2)√(1 − n_z²) + (T/2)|n_z| (owner ruling R66; exact for a vertical disk, an approximation when tilted or flat), and in waves it takes the Froude-Krylov force Rho V_wet a_w (owner ruling R67). Along its axis n its inertia carries the added mass of a circular disc, m_a = (1/3) Rho DiskD³ (Ca = 2/π on (4/3)π(D/2)³, DNV-RP-C205 (2021) Table A-2; not checked here), of its wet fraction f: M = m I + f m_a n nᵀ, and in waves it takes the matching excitation f m_a (n·a_w) n (owner ruling R104). None across the axis (the edge-on added mass of a thin disk is small).

Below the seabed (the environment's sea depth) the disk keeps its weight and buoyancy, the soil adds g ρ_s V upwards (ρ_s the bathymetry's seabed density, V = πD²T/4; 0 on a flat seafloor, owner ruling R72, MARE-0219), and the friction τ D T |v_rel| v acts against the disk velocity (τ the seabed's). The soil force does not grow with the penetration, so a disk on a soil denser than itself is pushed up to the seabed and chatters there, and one on a flat seafloor sinks through it.

Example configuration excerpt

<Lib
LibName = "marine_elements"
SimObject = "Net/Disk"
Name = "Disk"
Rho = "1025"
DiskD = "1"
DiskT = "0.1"
DiskMass = "10"
D = "0.01"
DiskMesh = "fhDisk.mesh"
DiskMaterial = "firebrick2"
/>

Input Ports

Name Width Description
Force 3 ...

Output Ports

Name Width Description
Position 3 Position of the disk.
Velocity 3 Velocity of the disk.

Configuration parameters

Name Width Description
Rho 1 Water density [kg/m³], for the drag and the buoyancy (Default: 1025).
DiskD 1 Diameter of the disk [m] (Default: 1).
DiskT 1 Thickness of the disk [m] (Default: 0.1).
DiskMass 1 Mass of the disk [kg] (Default: 10).
D 1 Diameter of the cable through the disk [m], which reduces both drag areas (Default: 0.01).
DiskMesh 1 Visualisation builds only. The mesh file the disk is drawn with, scaled by DiskD, DiskD and DiskT along its axes (Default: fhDisk.mesh).
DiskMaterial 1 Visualisation builds only. Material of the drawn disk (Default: firebrick2).
CastWake 1 Register and build the lumped wake; the other wake parameters (Wake*, ExternalWakeUpdate) are listed in fhsim_environment's doc/user/wake-parameters.md. (Default: false)
WakeGroup 1 With CastWake: the name of a fhsim_environment WakeGroup SimObject (3.1.0) to cast one wake with, instead of a wake of its own; the group's wake parameters apply (fhsim_environment doc/user/wakes.md, "Wake groups"). (Default: empty, none)

Initial conditions

Name Width Description
Position 3 Position of the disk (Default: "0,0,0").
Velocity 3 Velocity of the disk (Default: "0,0,0").

Full example file

<Contents>
<OBJECTS>
<Lib
LibName="environment"
SimObject="Environment"
Name="Env"
Waves.Model="Component"
Waves.NumWaves="0"
Bathymetry.Depth="500"
Current.Model = "Constant"
Current.Vector = "1,0,0"
/>
<Lib
LibName = "marine_elements"
SimObject = "Net/Disk"
Name = "Disk"
Rho = "1025"
DiskD = "1"
DiskT = "0.1"
DiskMass = "10"
D = "0.01"
DiskMesh = "fhDisk.mesh"
DiskMaterial = "firebrick2"
/>
</OBJECTS>
<INTERCONNECTIONS>
<Connection
Disk.Force = "0,0,0"
/>
</INTERCONNECTIONS>
<INITIALIZATION>
<InitialCondition
Disk.Position = "0,0,0"
Disk.Velocity = "0,0,0"
/>
</INITIALIZATION>
<SIMULATION>
<Timing TStart="0" TEnd="40"/>
<Integrator Method="RK45_i" NumCores="1" LogStates="1" UseRSSNorm="0">
<StepControl StepMax="0.1" StepMin="1E-060" AbsTol="0.001" RelTol="0.001"/>
</Integrator>
<!-- TODO migrate_v3: FileOutput="objects:states" -> configure via <OBSERVERS> section -->
</SIMULATION>
</Contents>

This SimObject is referred to as Net/Disk