FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Net structure object

Class containing a net object.

+ Collaboration diagram for Net structure object:
Author
Karl-Johan Reite
Review issues:

0027 — Three follow-ups left by the scalar-templated panel force core

0110 — Default load law misses lift at high solidity and the angle dependence of Rudi, Løland and Zhan (A6 disabled tests)

0122 — Sundials BDF with the default linear solver collapses the step in any transient (wake blend, load ramp)

0131 — Default law: replace the two-harmonic angle form with three harmonics, refitted to MF2022, Rudi, Løland and Zhan

0211 — The net file reader is quadratic in the number of panels: every attribute read resolves its path from the root

0319 — NetStructure's cable drag Jacobian uses the water density, not the element's air/water blend

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

0328 — NetStructure and NetStructureWithConstraints leak their elements and constraint solver at teardown

0329 — The BottomContact port test does not exercise the M_y and M_z moment terms

A lumped-mass net made of triangular net panels (NetElement3N) and two-node cable elements (NetCableElement) that share global nodes. Each node carries a position and a velocity state. The net is read from a separate net definition file, which is refined into smaller elements before the simulation starts (see the General tag below). Forces on the nodes come from the panels (twine tension, hydrodynamic load, weight in water, damping), the cables (tension, drag, weight in water, attached spheres and disks), seafloor contact on the original (unrefined) nodes, and the external force input ports.

Panel hydrodynamics

The hydrodynamic load on each panel is one evaluation of a panel load law (fhsim_environment/hydrodynamics/PanelLoadLaw.h, chosen by HydroModel), shared equally between the panel's three nodes. The law sees the panel's deformed area and normal, its twine diameter, its solidity, its bar directions and bar and knot data, and the water velocity relative to the panel, the mean of its node velocities. The water velocity is the waked current at the panel centroid (GetWakedCurrent with the net's wake query; see Wake casting) plus the wave particle velocity averaged over the panel's nodes (owner ruling R62), both through NetFlowInteraction, always handed to the law as the free stream: it never contains the panel's own induction, which the default law adds itself. The solidity is the structure's, by SolidityModel (fhsim_environment/hydrodynamics/NetSolidity.h); the law never computes it. See doc/user/net_hydrodynamics_methods.md for the laws.

For flow in the panel plane every harmonic of KF2012 Eq. 14 vanishes at an inflow angle of 90 degrees, so the screen laws (LocalThroughFlow, ScreenKF2012, ScreenMF2022) carry only TwineCrossFlow's twine friction there (MARE-0111). Only TwineCrossFlow also gives cross-flow drag on the bars.

Wake casting

With CastWake the net casts its wake (src/net/NetFlowInteraction.h: fhsim_environment's BodyWake over its PanelSourceSet, the net's panels through src/net/NetWakePanels.h; plan §B1, §B4, §B6, ADR 0002, ADR 0006). It keeps two fields. The private field, a GriddedWake or, when WakeEvaluation is Direct, a direct sum over the panels, holds one elementary source per panel and is sampled only by the net's own panels and cable elements; it is not registered. With WakeEvaluation None there is no private field: the panels do not shade each other. The lumped field, one source made from the net's total panel force and frontal extent, is registered in the environment under the SimObject name, and every other object sees only it. In FinalSetup the net registers the lumped field; both stay empty until the first rebuild, and nothing samples the flow in FinalSetup. Rebuilds run in PreOdeFcn only, at the start of a major step, so OdeFcn stays const and every stage of a step sees the same fields.

Each rebuild marches the panels in flow order: it samples the private field of the panels upstream at each centroid, evaluates that panel's load law at the resulting inflow (the ambient current and the other objects' lumped wakes, without waves) and adds the panel's momentum deficit, with the panel's solidity, as an elementary source. The private field lies in a frame aligned with the area-weighted mean relative flow, with its origin at the area-weighted mean of the panel centroids, that translates with the source velocity u_s, the area-weighted mean of the panel velocities from the node velocities low-pass filtered with WakeFilterTime. It covers the structure and reaches WakeLength, or one panel diameter, beyond the rear panel. The lumped source then takes the momentum deficit M = F·ê_U/(½ρ|U|²) of the sum F of the panel forces of that build (lift and the cable elements left out), the frontal area W·H of the panels' nodes across the flow, widened when M/(W·H) exceeds 0.96 so that M is kept (logged), and sits at the centre of the rear face, where its wake starts. Both fields are blended in from the previous ones over WakeBlendTime (smoothstep, C1 in time). The builder's resolution warning goes to the FhSim log, and so does one line per rebuild (with the lumped source), freeze, re-arm and skipped rebuild.

WakeUpdate sets the schedule. Freeze builds at WakeBuildTime, rebuilds up to WakeIterations more times WakeIterInterval apart while the structure deforms, until the change between two rebuilds, the larger of the largest change of the velocity ratio R = 1 - d of the private field at any panel centroid and the relative change |ΔM|/M of the lumped source, is below WakeTolerance (owner ruling R121), and then holds the wakes; a round that runs out of iterations is logged "without converging". The lumped M depends on the wakes upstream (R87), which reach one row of a farm further per rebuild, so an N-row farm needs WakeIterations ≥ N (the default 4 covers up to four rows, owner ruling R130). It re-arms, with a log line, when the filtered source velocity, or the filtered ambient current at the structure (a moored cage under a turning or tidal current), drifts from its value at the freeze by more than WakeRearmTolerance times the mean relative flow speed at the freeze (MARE-0136). Periodic rebuilds every WakePeriod, relaxing each panel's momentum deficit and the lumped M by WakeRelaxation. Off builds once. A rebuild never starts while the previous blend runs (lead ruling R22): it waits, and the wait is logged. Between rebuilds the wakes move at the source velocity of the last rebuild, so under a manoeuvre a panel can move into its own frozen wake once its velocity has changed by more than about x_start per rebuild interval; use Periodic with a short WakePeriod for manoeuvres. For a free panel thrown upstream at 1 m/s in a 0.5 m/s current and slowed by drag, the states differ from CastWake off by 2.3 % at WakePeriod 1 s, 1.5 % at 0.25 s and not at all at 0.05 s (NetStructure_WakeManoeuvre*_in.xml; MARE-0116).

A panel's own inflow is the waked current at its centroid with the net's wake query (GetWakedCurrent with the net's BodyWake::Query(), held per step, see below) plus the node-averaged wave particle velocity (R62): the other objects' lumped wakes and the net's private field, which includes the wake of the panels upstream and never the panel's own, since the kernel starts x_start downstream of the source; the net's own lumped field is skipped. The cable elements read the flow with the same query. Other SimObjects that query the flow see the lumped wake only, so a separate SimObject inside the net's volume sees no internal wake (owner answer QF8), and GetWakeDeficit shows the lumped wakes. The lumped wake starts as a step at the rear face (x_start = 0, owner answer QF7): the deficit is zero upstream of the rear-face plane and the full lumped deficit (about 0.29 at C_T 0.5) on it, so a separate SimObject that crosses that plane (a sinker tube, a bottom ring, a bridle node) sees a jump in its inflow, a state-dependent discontinuity in its OdeFcn that can collapse the step size or fail the Newton iteration of an implicit integrator such as BDF (MARE-0152). The analytical Jacobian holds no wake term: the wakes are frozen with respect to the states, and their spatial gradient at a panel is left out, as the current's is. With the default ExternalWakeUpdate Step the other objects' wakes and the net's own private field are composed once per integrator step, in PreOdeFcn after the net's own rebuild, at the step's start centroids and midpoints, and held for every RK stage and Jacobian evaluation of the step (fhsim_environment's environment::wake::ExternalWakes, owner decision R46, owner ruling R135), so the right-hand side holds no wake gradient within a step either; the ambient current and the waves stay live. During a rebuild blend the held samples take the blend weight of each evaluation's time, so the right-hand side stays C1 in time through the blend (owner ruling R136). A clamped current (a depth profile beyond its layers, OUT_OF_RANGE_INACCURATE) is used as it is, and where a current field fails the sum of the others is kept (owner ruling R122). The caster checks the current lookups every step, also while its wakes are frozen: while one fails it casts no lumped wake, logged once; once no blend runs it publishes an empty lumped field and the private field of that partial current, both at once without a blend and not counted (it cannot end a Freeze round), and builds nothing more until the lookup recovers, when a rebuild is due at once in every WakeUpdate mode (MARE-0336, MARE-0339).

In waves the wave particle velocity is evaluated once per node and averaged over a panel's three nodes (a cable element's two) on top of the current and the wakes at its centroid (midpoint), owner ruling R62, MARE-0210. The wave field is not linear in position, so this differs from the value at the centroid where a panel spans a noticeable part of a wave length (about 10 % for a 5 cm panel in a 0.3 m wave, by (kh)²); it costs a wave evaluation per node instead of per panel and cable (2100-panel cage in a 50-component sea, 0.1 s RK45: the waves added 0.33 s instead of 0.59 s).

Example configuration excerpt

<Lib
LibName = "marine_elements"
SimObject = "Net/NetStructure"
Name = "Net"
File = "Morenot520Simple.xml"
UseTagForExternalNodes = "true"
NodesInputForce = "PWing1, SWing1"
NodesOutputPosAndVel = "PWing1, SWing1"
/>
Note
The simulation must include an Environment, e.g. Environment found in fhsim_environment, and a SeafloorForces shared resource must be available.

Example net definition file

The SimObject takes a parameter File (or BinaryFile) that names the net definition file, looked up relative to the directory of the main input file (fhsim_marine_elements_issue_0120). NetElements and CableElements hold one child element per element, named El1, El2, ... in sequence. Node numbers are zero-based.

<Net>
<General
MaxNumPanels = "100"
MaxNumCables = "100"
MaxNumNodes = "100"
MinElementLength = "1"
MaxElementLengthFactor = "100"
MaxStepLength = "0.01"
MaxTension = "1e6"
MinLength = "0.001"
MassFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
/>
<ExternalNodeMap
PWing1 = "0"
SWing1 = "1"
/>
<NetElements>
<El1
Conn = "0,1,2"
PosAMesh = "0, 0"
PosBMesh = "20, 0"
PosCMesh = "0, 20"
BarD = "0.004"
BarL = "0.05"
BarE = "2e8"
BarRho = "1100"
/>
</NetElements>
<CableElements>
<El1
Conn = "0,1"
D = "0.01"
L = "1.4"
E = "1e8"
Rho = "3000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
/>
</CableElements>
</Net>

Naming of the external node ports

The ExternalNodeMap tag of the net definition file gives each accessible node a tag, as <tag> = "<node number>". The main-file parameters NodesInputForce and NodesOutputPosAndVel pick the tags that get ports. With UseTagForExternalNodes = "true" (the default) a port is named after the tag, for example PWing1Force. With UseTagForExternalNodes = "false" it is named after the zero-based node number instead, for example ExternalForce8. Both forms are listed below; only one is registered. In the node-number form, two selected tags that name the same node (as PWing1 to PWing4 all name node 8 in Morenot520Simple.xml) give two ports with the same name.

Input Ports

Name Width Description
<tag>Force 3 External force [N] added to the node of each tag in NodesInputForce. Registered when UseTagForExternalNodes is true.
ExternalForce<node> 3 As \<tag\>Force, named by node number. Registered when UseTagForExternalNodes is false.

Output Ports

Name Width Description
<tag>Force 3 The value of the matching \<tag\>Force input port [N], passed through. Registered when UseTagForExternalNodes is true.
ExternalForce<node> 3 As \<tag\>Force, named by node number. Registered when UseTagForExternalNodes is false.
<tag>Pos 3 Position [m] of the node of each tag in NodesOutputPosAndVel. Registered when UseTagForExternalNodes is true.
ExternalPos<node> 3 As \<tag\>Pos, named by node number. Registered when UseTagForExternalNodes is false.
<tag>Vel 3 Velocity [m/s] of the node of each tag in NodesOutputPosAndVel. Registered when UseTagForExternalNodes is true.
ExternalVel<node> 3 As \<tag\>Vel, named by node number. Registered when UseTagForExternalNodes is false.
BottomContact 6 Sum over the original nodes of the seafloor force on the net (components 0 to 2, N, NED) and of its moment about the NED origin (components 3 to 5, N m), at the last evaluation of the equations of motion (MARE-0064), low-pass filtered with the time constant BottomContactTimeConstant at each accepted step (MARE-0355). Zero while no node touches the seafloor and before the first accepted step.
VelNorm 1 Sum of the absolute values of all velocity state components of all nodes [m/s].
StrainEnergy 1 Sum over the cable elements of \(EA(l - L_0)^2 / (2 L_0)\) [J], with the full (unreduced) axial stiffness, counting compression as well as tension. Panels do not contribute.

Configuration parameters in the main input file

Name Width Description
File 1 Name of the net definition file (XML), looked up relative to the directory of the main input file, with the working directory as fallback. An absolute path is used as given with fhsim 3.3.2 or later (FHSIM-0038); older fhsim fails it. Exactly one of File, BinaryFile and NetSpec is required.
BinaryFile 1 Name of a protobuf net definition file (src/net/protobuf/net.proto), looked up relative to the directory of the main input file; an absolute path is used as given (fhsim_marine_elements_issue_0360). Needs a library built with _USE_PROTOBUF. The binary reader does not read net panels, and it defaults a cable's TangentialFrictionCoeff to 0.01 where the XML reader uses 0.03.
NetSpec 1 Name of an XML net specification (doc/user/net-specification.md), the format fhsim_trawlwriter reads, instead of a net file: the net is meshed in process into the <Net> text fhsim_trawlwriter writes to a net file (%.4G rounding included) and read from it, so the run is the one with that file as File. Looked up as BinaryFile: an absolute path as given, a relative one in the directory of the main input file. The node lists default to the specification's Connect and Output; no file is written. Exactly one of File, BinaryFile and NetSpec is required (fhsim_marine_elements 5.0.0).
UseTagForExternalNodes 1 Names the external node ports by tag (true) or by node number (false). See above (Default: true).
NodesInputForce n Comma-separated tags from ExternalNodeMap that get a force input port (Default: none; with NetSpec the specification's Connect nodes).
NodesOutputPosAndVel n Comma-separated tags from ExternalNodeMap that get position and velocity output ports (Default: none; with NetSpec the specification's Connect and Output nodes).
NumThreads 1 Threads of the net's panel and cable loops in OdeFcn (owner ruling R63, MARE-0212). 1 is the serial loop. N > 1: the panels and the cables are split into N chunks by index, each summed into its own node-force buffer, and the buffers are added in chunk order, so a run is deterministic for a fixed N and differs from the serial one by rounding. 0 takes OpenMP's default (OMP_NUM_THREADS, else the number of cores). FhSim's NumCores spreads different SimObjects over threads, so keep NumThreads times the busy NumCores threads within the free cores: with more threads than free cores OpenMP's spin-waiting makes the run slower. Measured 2026-09-28 (WSL2, 32 cores shared with other jobs at a load of 10-17, RK45 1 ms): 1000 panels, 0.2 s: 0.65 s serial, 0.41 s on 2 threads, 0.37 s on 4, 0.64 s on 8; 10 000 panels, 0.4 s: about 8 s serial, 3-4 s on 2 and 4 threads, 9 s on 8. Negative is a setup error (Default: 1).
BottomContactTimeConstant 1 Time constant of the first-order filter on the BottomContact output [s]; 0 is no filter (Default: 0.01).
AddedDragPerMPS 1 Read, then overwritten with 0 by the net definition file's settings before it is used, so it has no effect. Meant as a linear drag [N s/m] shared among the panels (Default: 0).
NetDampingRatio 1 Damping ratio of the panels. Each panel's damping coefficient is 2 * NetDampingRatio * sqrt(m), where m is the twine mass plus the mass of the displaced water (Default: 1).
HydroModel 1 Panel load law: LocalThroughFlow, ScreenKF2012, ScreenMF2022 or TwineCrossFlow. An unknown name is a setup error, and so is any law on a panel whose mesh coordinates are collinear, which has no bar directions (MARE-0139). ScreenMF2022 warns at setup for a solidity outside its fit range 0.18 to 0.36: each distinct Fixed value, or the smallest and largest MeshOpening value at the initial state (Default: LocalThroughFlow).
HydroA3 1 LocalThroughFlow and ScreenKF2012: third drag harmonic a3 of KF2012 Eq. 14 (Default: 0.07 for LocalThroughFlow, 0 for ScreenKF2012). Above 0.25 is a setup error: the drag would turn negative at grazing angles, as on cage side panels at 75-90 deg or trawl panels along the tow (MARE-0137); so is below -0.125, where C_D is no longer largest at normal incidence, or a value that is not finite (MARE-0208).
HydroB4 1 LocalThroughFlow and ScreenKF2012: fourth lift harmonic b4 of KF2012 Eq. 14 (Default: 0.10 for LocalThroughFlow, 0 for ScreenKF2012). b4 outside -0.5 to 0.5, or not finite, is a setup error: the lift would change sign near 0 or 90 deg (MARE-0137, MARE-0208).
HydroInduction 1 ScreenKF2012: apply the MF2022 induction factor (Default: false).
Rho 1 Water density [kg/m³], for the panel loads and the panels' weight in water and added mass, and for the cable elements' weight in water, added mass and drag (Default: 1025).
Nu 1 Kinematic viscosity of water [m²/s], for the panel Reynolds number (Default: 1.19e-6).
SolidityModel 1 How the panel solidity is defined: MeshOpening, \(S_n = K t / (L_0 \sin\varphi \cos\varphi)\) with \(\varphi\) the mesh half opening angle of the deformed panel, so it follows the deformation; or Fixed, the net file's per-element Sn, else Solidity. An unknown name is a setup error (Default: MeshOpening).
Solidity 1 SolidityModel Fixed: the solidity of every panel without an Sn attribute [-]. A panel with neither, or a value outside (0, 1), is a setup error. A solidity above the load law's upper limit (0.5 for the screen laws) is clamped, and the clamp is logged once per run (Default: none).
KnotFactor 1 SolidityModel MeshOpening: the knot factor K, the ratio of the true solidity to the twine-only 2t/s. A K from MF2022 Table 2 converts as K = K_MF2022 (1 − t/(2s)). Must be positive (a non-positive K is a setup error) (Default: 1.0).
Ct_nominal 1 TwineCrossFlow: tangential drag coefficient of the bars, multiplied by π [-] (Default: 0.01).
CnKnots_nominal 1 TwineCrossFlow: drag coefficient of the knots [-]. Multiplied by the knot cross-section area \(\pi d_k^2/4\) (Default: 0.4).
knotDiameterRatio 1 Knot diameter as a multiple of the twine diameter BarD [-]. For TwineCrossFlow the knot diameter enters the knot drag and shortens the twine length that takes normal drag. For every law, on a panel with bar data, it also shortens the twine length of the in-plane twine friction (MARE-0111) (Default: 2).
CastWake 1 Cast the net's wake into the environment; see Wake casting above. The other wake parameters of a source set (Wake* with WakeEvaluation, WakeLength, WakeGrid and WakeXStartFactor, ExternalWakeUpdate) are listed in fhsim_environment's doc/user/wake-parameters.md. (Default: false)
LineVisualization 1 Visualisation builds only. Draws each cable element as a line, green when shorter than its unstretched length and red otherwise, instead of drawing panels and cables (Default: false).
NumMeshPerLine 1 Visualisation builds only, when LineVisualization is false. Number of meshes per drawn twine line on the panels (Default: 1).

Parameters in the General tag of the net definition file

The refinement splits the element edge with the largest length factor (the edge length multiplied by the element's RefineFactor) in two, and repeats. It goes on while all of the node, panel and cable counts are below MaxNumNodes, MaxNumPanels and MaxNumCables, or while the largest length factor exceeds MaxElementLengthFactor. It always stops when the edge to split is shorter than 2 MinElementLength. Quadrangular panels are first split into two triangles. The cable parameters here are defaults for every cable element.

Name Width Description
MaxNumPanels 1 Panel count limit for the refinement (Default: 100).
MaxNumCables 1 Cable element count limit for the refinement (Default: 100).
MaxNumNodes 1 Node count limit for the refinement (Default: 100).
MinElementLength 1 Refinement stops when the edge to split is shorter than twice this length [m] (Default: 1).
MaxElementLengthFactor 1 Refinement goes on past the count limits while an edge length times its RefineFactor exceeds this value [m] (Default: 100).
MaxStepLength 1 Default MaxStep of the cable elements [s] (Default: 0.01).
MaxTension 1 Default MaxTension of the cable elements [N] (Default: 100e4).
MeanTension 1 Default MeanTension of the cable elements [N] (Default: 0).
MinLength 1 Default MinLength of the cable elements [m] (Default: 0.001).
StepSafetyFactor 1 Default StepSafetyFactor of the cable elements (Default: 50).
AdaptationPeriod 1 Default AdaptationPeriod of the cable elements [s] (Default: 0).
MassFactor 1 When above 1, all node accelerations are divided by this factor, to allow longer time steps. Values of 1 or less have no effect (Default: 1).
MaxVelocity 1 When above 0, each component of each node's position derivative is limited to this value [m/s]. The analytical Jacobian is used only when MaxVelocity is 0, MassFactor is 1 or less, no cable element has spheres or disks and no node is in seafloor contact (NetStructure::HasJacobians) (Default: 0).
Scale 1 Scales the net: multiplies the panel mesh coordinates (PosAMesh...PosDMesh) and each cable element's D and L. BarD and BarL are not scaled (Default: 1).
FoldingPointRefinement 1 When nonzero, replaces the refinement above with folding-point refinement: each cable element is split into NoOfFoldingPoints + 1 equal parts and panels are not refined. The net fails at start-up if it has panels and a cable with folding points. When exactly 1, unset initial conditions of the new nodes are interpolated along the original cable (Default: 0).
TwineColour 4 Visualisation builds only. Default RGBA colour of the panel twines (Default: "1,1,1,1").

Parameters in the ExternalNodeMap tag of the net definition file

The tag is required, and every attribute in it is read.

Name Width Description
<tag> 1 Zero-based global node number that the tag names. Several tags may name the same node. The tags are used by NodesInputForce and NodesOutputPosAndVel (Default: none).

Parameters in each El<n> child of the NetElements tag of the net definition file

A panel is a triangle or a quadrangle in the net's mesh coordinates \((u\,v)\): the position of a corner counted in mesh bars along the two twine directions (Priour). The number of mesh bars in a triangle equals the mesh-coordinate determinant of its corners.

Name Width Description
Name 1 Name of the panel. Only checked to be non-empty (Default: "El\<n\>").
Conn 3 or 4 Zero-based global node numbers of the corners A, B, C (and D). Required.
PosAMesh 2 Mesh coordinates \((u,v)\) of corner A [mesh bars]. Required.
PosBMesh 2 Mesh coordinates of corner B [mesh bars]. Required.
PosCMesh 2 Mesh coordinates of corner C [mesh bars]. Required.
PosDMesh 2 Mesh coordinates of corner D [mesh bars]. Required when Conn has 4 nodes.
BarD 1 Twine diameter [m]. Sets the twine cross-section, the twine drag and the knot diameter. Required.
BarL 1 Unstretched mesh bar length [m]. Required.
BarE 1 Young's modulus of the twine [Pa]. The twine axial stiffness is BarE times the twine cross-section area. Required.
BarRho 1 Density of the twine material [kg/m³], for the panel mass and its weight in water. Required.
RefineFactor 1 Multiplies the panel's edge lengths in the refinement criterion. Larger values refine the panel more (Default: 1).
Sn 1 SolidityModel Fixed: the panel's solidity [-], overriding the Solidity parameter; the panels refined from it inherit it. Ignored by MeshOpening (Default: none).
TwineColour 4 Visualisation builds only. RGBA colour of the panel's twines (Default: the General tag's TwineColour).

Parameters in each El<n> child of the CableElements tag of the net definition file

The cable elements use reduced ("dynamic") axial stiffness: the stiffness is scaled by \(\min(1\,\ 2\pi^2 L_0^2 (\rho + \rho_w) / (\Delta t_{max}^2 E))\)\, where \(\Delta t_{max}\) is MaxStep\, so that the element can be integrated with steps up to MaxStep.

Name Width Description
Conn 2 Zero-based global node numbers of end A and end B. Required.
Name 1 Name of the cable element, used to name its visual objects. Must be non-empty (Default: "Net_\<id\>_Cable_El\<n\>").
D 1 Diameter of the cable [m]. Required.
L 1 Unstretched length of the cable element [m]. Required.
E 1 Young's modulus of the cable [Pa]. Required.
Rho 1 Density of the cable material [kg/m³]. Required.
RefineFactor 1 Multiplies L in the refinement criterion (Default: 1).
MaxTension 1 Upper limit of the cable tension [N] (Default: the General tag's MaxTension).
MaxStep 1 Longest time step the reduced cable stiffness is chosen for [s]. Must be above 0 (Default: the General tag's MaxStepLength).
MeanTension 1 Tension [N] added in proportion to the stiffness reduction, as (1 - stiffness factor) * MeanTension; the start value of the filter when AdaptationPeriod is nonzero. Must be 0 or more (Default: the General tag's MeanTension).
MinLength 1 Lower limit of the unstretched length [m] when the element length is updated. Must be above 0 (Default: the General tag's MinLength).
StepSafetyFactor 1 Read and checked to be above 0, but not used by the stiffness calculation (Default: the General tag's StepSafetyFactor).
AdaptationPeriod 1 When nonzero, the mean tension starts at MeanTension and follows the element's tension with the time constant AdaptationPeriod [s], so that under a constant load it reaches the load and the strain that of the full stiffness; advanced once per integrator step, in PreOdeFcn from the step's start state, and held for every evaluation of the step (owner rulings R64, MARE-0358). The difference it follows is bounded at a tenth of MaxTension. Must be 0 or more (Default: the General tag's AdaptationPeriod).
NoOfFoldingPoints 1 Number of folding points. With FoldingPointRefinement the element is split into this many plus one equal parts; otherwise not used (Default: 0).
TangentialFrictionCoeff 1 Tangential (skin friction) drag coefficient of the cable [-] (Default: 0.03).
NormalDragCoeff 1 Normal drag coefficient of the cable [-] (Default: 1.2).
Material 1 Visualisation builds only. Material name for drawing the cable (Default: "Trawl/Wire2").
DrawScale 1 Visualisation builds only. Drawn diameter as a multiple of D (Default: 1.0).
NumFaces 1 Visualisation builds only. Number of faces around the drawn cable (Default: 5).
NumSpheres 1 Number of spheres attached to the element (Default: 0).
SphereD NumSpheres Diameter of each sphere [m]. Adds drag (coefficient 0.3), mass and buoyancy. Required, empty when NumSpheres is 0.
SphereMass NumSpheres Mass of each sphere [kg]. Required, empty when NumSpheres is 0.
SpherePos NumSpheres Position of each sphere along the element, from 0 to 1. It is measured from end A: end A carries the fraction 1 − SpherePos of the sphere's mass, weight and drag and end B the fraction SpherePos, and the sphere is drawn at that point. Required, empty when NumSpheres is 0.
SphereMesh NumSpheres Material name for drawing each sphere (the mesh is always fhSphere.mesh). A short list repeats its last entry. Required, may be empty.
NumDisks 1 Number of disks attached to the element, oriented normal to the cable. Required.
DiskD NumDisks Diameter of each disk [m]. Required, empty when NumDisks is 0.
DiskThickness NumDisks Thickness of each disk [m]. Required, empty when NumDisks is 0.
DiskMass NumDisks Mass of each disk [kg]. Required, empty when NumDisks is 0.
DiskPos NumDisks Position of each disk along the element, from 0 to 1, measured from end A as for SpherePos. Required, empty when NumDisks is 0.
DiskMesh NumDisks Material name for drawing each disk (the mesh is always fhDisk.mesh). A short list repeats its last entry. Required, may be empty.
AddedWeightInWater 1 Extra weight in water of the element [N], split equally between the ends. It also adds AddedWeightInWater / 9.81 to the node mass. Required.

Each disk adds mass\, weight in water and drag\, split between the ends as DiskPos says. With \(v_t\) and \(v_n\) the parts of the element's mean velocity relative to the water along and across the element\, \(D\) and \(T\) the disk diameter and thickness and \(d\) the element diameter\, the drag is form drag on the parts of the disk outside the element: \(-\frac{1}{2}\rho C_n \frac{\pi}{4}(D^2 - d^2) |v_t| v_t\) on the annulus (face-on) plus \(-\frac{1}{2}\rho C_n (D - d) T |v_n| v_n\) on the edge (edge-on)\, both with \(C_n\) = 1.2\, in NetCableElement::AddHydroForcesAppendices.

Initial conditions

There are two states per node after refinement, numbered from 1: state Pos_k belongs to zero-based node k - 1. Unset values are set to 0 (see FoldingPointRefinement for the exception). The z axis points down.

Name Width Description
Pos_1...Pos_<N> 3 Position of each node [m].
Vel_1...Vel_<N> 3 Velocity of each node [m/s].

Full example file

<Contents>
<OBJECTS>
<Lib
LibName="environment"
SimObject="Environment"
Name="Env"
Waves.Model="Component"
Waves.NumWaves="0"
Bathymetry.Depth="190"
Current.Model = "Constant"
Current.Vector = "1,0,0"
/>
<Lib LibName = "marine_elements"
SimObject = "Net/NetStructure"
Name = "Net"
File = "Morenot520Simple.xml"
NodesInputForce = "PWing1, PWing2, PWing8, SWing1, SWing2, SWing8"
NodesOutputPosAndVel = "PWing1, PWing2, PWing8, SWing1, SWing2, SWing8"
Scale = "1"
/>
</OBJECTS>
<INTERCONNECTIONS>
<Connection
Net.PWing1Force = "0,0,0"
Net.SWing1Force = "0,0,0"
Net.PWing2Force = "0,0,0"
Net.SWing2Force = "0,0,0"
Net.PWing8Force = "0,0,0"
Net.SWing8Force = "0,0,0"
/>
</INTERCONNECTIONS>
<INITIALIZATION>
<InitialCondition
/>
</INITIALIZATION>
<SIMULATION>
<Timing TStart="0" TEnd="300"/>
<Integrator Method="RK45_i" LogStates="0" UseRSSNorm="0" FinalStatesFile="states.txt">
<StepControl StepMax="0.03" StepMin="1E-060" AbsTol="0.001" RelTol="0.001"/>
</Integrator>
</SIMULATION>
</Contents>

Net structure definition file

<Net>
<General
MinElementLength = "2.225E-308"
MaxNumNodes = "2147483647"
MaxNumPanels = "0"
MaxNumCables = "2147483647"
MaxElementLengthFactor = "1.798E+308"
MaxStepLength = "0.001"
AdaptationPeriod = "0"
StepSafetyFactor = "50"
MaxTension = "1E+005"
MeanTension = "0"
MinLength = "0.1"
MassFactor = "2"
MaxVelocity = "0"
TwineColour = "0.1, 0.3, 0.2, 0.5"
/>
<ExternalNodeMap
PWing1 = "8"
PWing2 = "8"
PWing3 = "8"
PWing4 = "8"
PWing5 = "31"
PWing6 = "31"
PWing7 = "42"
PWing8 = "42"
PHeadlineSide = "11"
PHeadlineC = "6"
PFishlineSide = "40"
PFishlineC = "23"
PCodend = "17"
SWing1 = "10"
SWing2 = "10"
SWing3 = "10"
SWing4 = "10"
SWing5 = "39"
SWing6 = "39"
SWing7 = "45"
SWing8 = "45"
SHeadlineSide = "14"
SHeadlineC = "6"
SFishlineSide = "43"
SFishlineC = "23"
SCodend = "17"
/>
<NetElements>
<El1
PosAMesh = "54.8, 30.05"
PosBMesh = "42.43, 42.43"
PosCMesh = "0, 0"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "24,0,17"
/>
<El2
PosAMesh = "42.43, 42.43"
PosBMesh = "30.05, 54.8"
PosCMesh = "0, 0"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "0,32,17"
/>
<El3
PosAMesh = "188.4, 122.7"
PosBMesh = "155.6, 155.6"
PosCMesh = "42.43, 42.43"
PosDMesh = "63.64, 21.21"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "25,1,0,24"
/>
<El4
PosAMesh = "155.6, 155.6"
PosBMesh = "122.7, 188.4"
PosCMesh = "21.21, 63.64"
PosDMesh = "42.43, 42.43"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "1,33,32,0"
/>
<El5
PosAMesh = "204, 127.6"
PosBMesh = "165.8, 165.8"
PosCMesh = "155.6, 155.6"
PosDMesh = "188.4, 122.7"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "26,2,1,25"
/>
<El6
PosAMesh = "165.8, 165.8"
PosBMesh = "127.6, 204"
PosCMesh = "122.7, 188.4"
PosDMesh = "155.6, 155.6"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "2,34,33,1"
/>
<El7
PosAMesh = "251.7, 142.8"
PosBMesh = "197.3, 197.3"
PosCMesh = "165.8, 165.8"
PosDMesh = "204.4, 127.3"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "27,3,2,26"
/>
<El8
PosAMesh = "197.3, 197.3"
PosBMesh = "142.8, 251.7"
PosCMesh = "127.3, 204.4"
PosDMesh = "165.8, 165.8"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "3,35,34,2"
/>
<El9
PosAMesh = "346.8, 174.3"
PosBMesh = "260.6, 260.6"
PosCMesh = "197.3, 197.3"
PosDMesh = "252.1, 142.5"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "28,4,3,27"
/>
<El10
PosAMesh = "260.6, 260.6"
PosBMesh = "174.3, 346.8"
PosCMesh = "142.5, 252.1"
PosDMesh = "197.3, 197.3"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "4,36,35,3"
/>
<El11
PosAMesh = "394.6, 189.5"
PosBMesh = "292, 292"
PosCMesh = "260.6, 260.6"
PosDMesh = "347.2, 173.9"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "29,5,4,28"
/>
<El12
PosAMesh = "292, 292"
PosBMesh = "189.5, 394.6"
PosCMesh = "173.9, 347.2"
PosDMesh = "260.6, 260.6"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "5,37,36,4"
/>
<El13
PosAMesh = "451.5, 201.2"
PosBMesh = "336.9, 315.7"
PosCMesh = "394.9, 189.2"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "30,11,29"
/>
<El14
PosAMesh = "336.9, 315.7"
PosBMesh = "326.3, 326.3"
PosCMesh = "292, 292"
PosDMesh = "394.9, 189.2"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "11,6,5,29"
/>
<El15
PosAMesh = "326.3, 326.3"
PosBMesh = "315.7, 336.9"
PosCMesh = "189.2, 394.9"
PosDMesh = "292, 292"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "6,14,37,5"
/>
<El16
PosAMesh = "315.7, 336.9"
PosBMesh = "201.2, 451.5"
PosCMesh = "189.2, 394.9"
BarD = "0.003"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "14,38,37"
/>
<El17
PosAMesh = "485.8, 207.2"
PosBMesh = "402, 291"
PosCMesh = "331.3, 321.4"
PosDMesh = "445.5, 207.2"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "31,12,11,30"
/>
<El18
PosAMesh = "402, 291"
PosBMesh = "485.8, 207.2"
PosCMesh = "445.5, 207.2"
PosDMesh = "331.3, 321.4"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "15,39,38,14"
/>
<El19
PosAMesh = "519.7, 207.2"
PosBMesh = "461.4, 265.5"
PosCMesh = "402, 291"
PosDMesh = "485.8, 207.2"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "7,13,12,31"
/>
<El20
PosAMesh = "461.4, 265.5"
PosBMesh = "519.7, 207.2"
PosCMesh = "485.8, 207.2"
PosDMesh = "402, 291"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "16,9,39,15"
/>
<El21
PosAMesh = "625.8, 207.2"
PosBMesh = "461.4, 265.5"
PosCMesh = "519.7, 207.2"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "8,13,7"
/>
<El22
PosAMesh = "625.8, 207.2"
PosBMesh = "519.7, 207.2"
PosCMesh = "461.4, 265.5"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "10,9,16"
/>
<El23
PosAMesh = "42.43, 42.43"
PosBMesh = "54.8, 30.05"
PosCMesh = "0, 0"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "18,24,17"
/>
<El24
PosAMesh = "30.05, 54.8"
PosBMesh = "42.43, 42.43"
PosCMesh = "0, 0"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "32,18,17"
/>
<El25
PosAMesh = "155.6, 155.6"
PosBMesh = "188.4, 122.7"
PosCMesh = "63.64, 21.21"
PosDMesh = "42.43, 42.43"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "19,25,24,18"
/>
<El26
PosAMesh = "122.7, 188.4"
PosBMesh = "155.6, 155.6"
PosCMesh = "42.43, 42.43"
PosDMesh = "21.21, 63.64"
BarD = "0.008"
BarE = "2E+008"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.2, 0.4, 0.2, 0.5"
Conn = "33,19,18,32"
/>
<El27
PosAMesh = "165.8, 165.8"
PosBMesh = "204, 127.6"
PosCMesh = "188.4, 122.7"
PosDMesh = "155.6, 155.6"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "20,26,25,19"
/>
<El28
PosAMesh = "127.6, 204"
PosBMesh = "165.8, 165.8"
PosCMesh = "155.6, 155.6"
PosDMesh = "122.7, 188.4"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "34,20,19,33"
/>
<El29
PosAMesh = "197.3, 197.3"
PosBMesh = "246.8, 147.8"
PosCMesh = "204.4, 127.3"
PosDMesh = "165.8, 165.8"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "21,27,26,20"
/>
<El30
PosAMesh = "147.8, 246.8"
PosBMesh = "197.3, 197.3"
PosCMesh = "165.8, 165.8"
PosDMesh = "127.3, 204.4"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "35,21,20,34"
/>
<El31
PosAMesh = "260.6, 260.6"
PosBMesh = "331.3, 189.9"
PosCMesh = "247.1, 147.4"
PosDMesh = "197.3, 197.3"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "22,28,27,21"
/>
<El32
PosAMesh = "189.9, 331.3"
PosBMesh = "260.6, 260.6"
PosCMesh = "197.3, 197.3"
PosDMesh = "147.4, 247.1"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "36,22,21,35"
/>
<El33
PosAMesh = "300.9, 283.2"
PosBMesh = "374.1, 210"
PosCMesh = "331.6, 189.5"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "40,29,28"
/>
<El34
PosAMesh = "292, 292"
PosBMesh = "300.9, 283.2"
PosCMesh = "331.6, 189.5"
PosDMesh = "260.6, 260.6"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "23,40,28,22"
/>
<El35
PosAMesh = "283.2, 300.9"
PosBMesh = "292, 292"
PosCMesh = "260.6, 260.6"
PosDMesh = "189.5, 331.6"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "43,23,22,36"
/>
<El36
PosAMesh = "210, 374.1"
PosBMesh = "283.2, 300.9"
PosCMesh = "189.5, 331.6"
BarD = "0.004"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "37,43,36"
/>
<El37
PosAMesh = "406.9, 245.7"
PosBMesh = "441.9, 210.7"
PosCMesh = "373.4, 210.7"
PosDMesh = "299.5, 284.6"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "41,30,29,40"
/>
<El38
PosAMesh = "441.9, 210.7"
PosBMesh = "406.9, 245.7"
PosCMesh = "299.5, 284.6"
PosDMesh = "373.4, 210.7"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "38,44,43,37"
/>
<El39
PosAMesh = "449, 245.4"
PosBMesh = "483.7, 210.7"
PosCMesh = "441.9, 210.7"
PosDMesh = "406.9, 245.7"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "42,31,30,41"
/>
<El40
PosAMesh = "483.7, 210.7"
PosBMesh = "449, 245.4"
PosCMesh = "406.9, 245.7"
PosDMesh = "441.9, 210.7"
BarD = "0.007"
BarE = "1E+009"
BarL = "0.0775"
BarRho = "1100"
RefineFactor = "1"
TwineColour = "0.1, 0.3, 0.2, 0.5"
Conn = "39,45,44,38"
/>
</NetElements>
<CableElements>
<El1
D = "0.026"
E = "2.8E+010"
L = "12.4"
Material = "net/wire"
DrawScale = "3"
Conn = "13, 8"
Rho = "2200"
NumSpheres = "2"
SphereD = "0.4, 0.4"
SphereMass = "3.351, 3.351"
SpherePos = "0.4, 0.7"
SphereMesh = "net/floater, net/floater, net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El2
D = "0.026"
E = "2.8E+010"
L = "12.4"
Material = "net/wire"
DrawScale = "3"
Conn = "16, 10"
Rho = "2200"
NumSpheres = "2"
SphereD = "0.4, 0.4"
SphereMass = "3.351, 3.351"
SpherePos = "0.4, 0.7"
SphereMesh = "net/floater, net/floater, net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El3
D = "0.026"
E = "2.8E+010"
L = "5"
Material = "net/wire"
DrawScale = "3"
Conn = "12, 13"
Rho = "2200"
NumSpheres = "2"
SphereD = "0.4, 0.4"
SphereMass = "3.351, 3.351"
SpherePos = "0.25, 0.5"
SphereMesh = "net/floater, net/floater, net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El4
D = "0.026"
E = "2.8E+010"
L = "5"
Material = "net/wire"
DrawScale = "3"
Conn = "15, 16"
Rho = "2200"
NumSpheres = "2"
SphereD = "0.4, 0.4"
SphereMass = "3.351, 3.351"
SpherePos = "0.25, 0.5"
SphereMesh = "net/floater, net/floater, net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El5
D = "0.026"
E = "2.8E+010"
L = "5.9"
Material = "net/wire"
DrawScale = "3"
Conn = "11, 12"
Rho = "2200"
NumSpheres = "2"
SphereD = "0.4, 0.4"
SphereMass = "3.351, 3.351"
SpherePos = "0.25, 0.5"
SphereMesh = "net/floater, net/floater, net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El6
D = "0.026"
E = "2.8E+010"
L = "5.9"
Material = "net/wire"
DrawScale = "3"
Conn = "14, 15"
Rho = "2200"
NumSpheres = "2"
SphereD = "0.4, 0.4"
SphereMass = "3.351, 3.351"
SpherePos = "0.25, 0.5"
SphereMesh = "net/floater, net/floater, net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El7
D = "0.026"
E = "2.8E+010"
L = "1.15"
Material = "net/wire"
DrawScale = "3"
Conn = "11, 6"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El8
D = "0.026"
E = "2.8E+010"
L = "1.15"
Material = "net/wire"
DrawScale = "3"
Conn = "14, 6"
Rho = "2200"
NumSpheres = "1"
SphereD = "0.4"
SphereMass = "3.351"
SpherePos = "0"
SphereMesh = "net/floater"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El9
D = "0.026"
E = "2.8E+010"
L = "11.4"
Material = "net/wire"
DrawScale = "3"
Conn = "9, 10"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El10
D = "0.026"
E = "2.8E+010"
L = "11.4"
Material = "net/wire"
DrawScale = "3"
Conn = "7, 8"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El11
D = "0.026"
E = "2.8E+010"
L = "3.6"
Material = "net/wire"
DrawScale = "3"
Conn = "39, 9"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El12
D = "0.026"
E = "2.8E+010"
L = "3.6"
Material = "net/wire"
DrawScale = "3"
Conn = "31, 7"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El13
D = "0.026"
E = "2.8E+010"
L = "4.1"
Material = "net/wire"
DrawScale = "3"
Conn = "38, 39"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El14
D = "0.026"
E = "2.8E+010"
L = "4.1"
Material = "net/wire"
DrawScale = "3"
Conn = "30, 31"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El15
D = "0.026"
E = "2.8E+010"
L = "7.1"
Material = "net/wire"
DrawScale = "3"
Conn = "37, 38"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El16
D = "0.026"
E = "2.8E+010"
L = "7.1"
Material = "net/wire"
DrawScale = "3"
Conn = "29, 30"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El17
D = "0.026"
E = "2.8E+010"
L = "6.6"
Material = "net/wire"
DrawScale = "3"
Conn = "36, 37"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El18
D = "0.026"
E = "2.8E+010"
L = "6.6"
Material = "net/wire"
DrawScale = "3"
Conn = "28, 29"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El19
D = "0.026"
E = "2.8E+010"
L = "13.4"
Material = "net/wire"
DrawScale = "3"
Conn = "35, 36"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El20
D = "0.026"
E = "2.8E+010"
L = "13.4"
Material = "net/wire"
DrawScale = "3"
Conn = "27, 28"
Rho = "2200"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El21
D = "0.026"
E = "1E+009"
L = "6.6"
Material = "net/wire"
DrawScale = "3"
Conn = "34, 35"
Rho = "1100"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El22
D = "0.026"
E = "1E+009"
L = "6.6"
Material = "net/wire"
DrawScale = "3"
Conn = "26, 27"
Rho = "1100"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El23
D = "0.026"
E = "1E+009"
L = "11"
Material = "net/wire"
DrawScale = "3"
Conn = "33, 34"
Rho = "1100"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El24
D = "0.026"
E = "1E+009"
L = "11"
Material = "net/wire"
DrawScale = "3"
Conn = "25, 26"
Rho = "1100"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El25
D = "0.016"
E = "1E+011"
L = "4.75"
Material = "net/wire"
DrawScale = "3"
Conn = "41, 42"
Rho = "6000"
NumSpheres = "4"
SphereD = "0.5, 0.5, 0.5, 0.5"
SphereMass = "261.8, 261.8, 261.8, 261.8"
SpherePos = "0.125, 0.3125, 0.5, 0.6875"
SphereMesh = "net/rusty, net/rusty, net/rusty, net/rusty, net/rusty"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El26
D = "0.016"
E = "1E+011"
L = "4.75"
Material = "net/wire"
DrawScale = "3"
Conn = "44, 45"
Rho = "6000"
NumSpheres = "4"
SphereD = "0.5, 0.5, 0.5, 0.5"
SphereMass = "261.8, 261.8, 261.8, 261.8"
SpherePos = "0.125, 0.3125, 0.5, 0.6875"
SphereMesh = "net/rusty, net/rusty, net/rusty, net/rusty, net/rusty"
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El27
D = "0.016"
E = "1E+011"
L = "9.8"
Material = "net/wire"
DrawScale = "3"
Conn = "40, 41"
Rho = "6000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "10"
DiskD = "0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3"
DiskThickness = "0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1"
DiskMass = "21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21"
DiskPos = "0.05, 0.14, 0.23, 0.32, 0.41, 0.5, 0.59, 0.68, 0.77, 0.86"
DiskMesh = "net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber"
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El28
D = "0.016"
E = "1E+011"
L = "9.8"
Material = "net/wire"
DrawScale = "3"
Conn = "43, 44"
Rho = "6000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "10"
DiskD = "0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3"
DiskThickness = "0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1"
DiskMass = "21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21, 21.21"
DiskPos = "0.05, 0.14, 0.23, 0.32, 0.41, 0.5, 0.59, 0.68, 0.77, 0.86"
DiskMesh = "net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber, net/rubber"
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El29
D = "0.016"
E = "1E+011"
L = "1"
Material = "net/wire"
DrawScale = "3"
Conn = "40, 23"
Rho = "6000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "3"
DiskD = "0.3, 0.3, 0.3"
DiskThickness = "0.1, 0.1, 0.1"
DiskMass = "21.21, 21.21, 21.21"
DiskPos = "0.2, 0.52, 0.84"
DiskMesh = "net/rubber, net/rubber, net/rubber, net/rubber"
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El30
D = "0.016"
E = "1E+011"
L = "1"
Material = "net/wire"
DrawScale = "3"
Conn = "43, 23"
Rho = "6000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "2"
DiskD = "0.3, 0.3"
DiskThickness = "0.1, 0.1"
DiskMass = "21.21, 21.21"
DiskPos = "0.16, 0.48"
DiskMesh = "net/rubber, net/rubber, net/rubber"
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El31
D = "0.016"
E = "1E+011"
L = "3.2"
Material = "net/wire"
DrawScale = "3"
Conn = "31, 42"
Rho = "6000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
<El32
D = "0.016"
E = "1E+011"
L = "3.2"
Material = "net/wire"
DrawScale = "3"
Conn = "39, 45"
Rho = "6000"
NumSpheres = "0"
SphereD = ""
SphereMass = ""
SpherePos = ""
SphereMesh = ""
NumDisks = "0"
DiskD = ""
DiskThickness = ""
DiskMass = ""
DiskPos = ""
DiskMesh = ""
AddedWeightInWater = "0"
RefineFactor = "1"
/>
</CableElements>
</Net>

This SimObject is referred to as Net/NetStructure