FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Bar-element net with a stiffness-augmented mass matrix (Windows only)
+ Collaboration diagram for Bar-element net with a stiffness-augmented mass matrix (Windows only):

A NetStructureTest with a different equation of motion. The explicit per-element forces are replaced by one sparse linear solve. Each taut element adds a stiffness term to the mass matrix. The solver then finds all node accelerations at once.

Author
Karl-Johan Reite
Review issues:
0031 — The Windows-only NetStructureTest family (NetStructureTest, NetStructureABAQUS, NetStructureConstrained) has no test coverage
Warning
Windows builds only. The sources are compiled only when WIN32 is defined (src/net/CMakeLists.txt, CONSTRAINT_STRUCTURE_SRC), and the type string Net/NetStructureConstrained is registered only under #ifdef WIN32 (src/fhsim_marine_elements.cpp). A Linux build has no such SimObject.
No automated tests. No test in tests/ builds or runs this class (see MARE-0031). This page was written from the source code. No simulation results were used to check it.

Units are SI: m, s, kg, N, Pa.

Example configuration excerpt

<Lib
LibName = "marine_elements"
SimObject = "Net/NetStructureConstrained"
Name = "NET"
XmlFile = "NetStructureTestInput.xml"
NodesInputForce = "Top"
NodesOutputPosAndVel = "Top,Bottom"
/>
Note
The simulation must include an Environment. FinalSetup requires one. OdeFcn calls GetParticleVelocity for each element, but it never uses the result.

Input Ports

These are the same as for NetStructureTest.

Name Width Description
<tag>Force 3 External force in N on the node mapped to <tag>. There is one port per tag in NodesInputForce. It is added to the right-hand side of the solve.
colorLimits 2 Registered but never read.

Output Ports

The constructor is inherited, so the ports are the same as for NetStructureTest. This class's OdeFcn never calls the element force routine, so several outputs are never updated:

Name Width Description
<tag>Force 3 Echo in N of the <tag>Force input port, as in NetStructureTest (including the overlapping buffer).
<tag>Pos 3 Position in m of the node mapped to <tag>.
<tag>Vel 3 Velocity in m/s of the node mapped to <tag>.
CurrentVelocity 3 The environment's particle velocity at the first node in m/s, as in NetStructureTest. It is not used by this class's dynamics.
appendixForce 3 Always 0. This class never calls the element force routine, and the members are zero-initialised.
cableForce 3 Always 0. This class never calls the element force routine, and the members are zero-initialised.
dragForce 3 Always 0. This class never calls the element force routine, and the members are zero-initialised.
meanProjectedVelocity 1 Always 0. The per-element value is initialised to 0 and never updated.
projectedArea 1 Always 0. The per-element value is initialised to 0 and never updated.
meanDragDeduction 1 Mean drag-reduction factor as computed in FinalSetup (see NetStructureTest). It does not affect this class's dynamics.

Configuration parameters

The constructor is inherited, so the parameters are exactly those of NetStructureTest. These are BinaryFile, XmlFile, ABAQUSFile (with ModelMeshLength), NodesInputForce, NodesOutputPosAndVel, and in visualisation builds LineVisualization and ColorBy (required there). The net-file format and the element attributes are also the same. See NetStructureTest for names, widths and defaults.

Of the element attributes, only these affect this class's dynamics:

The drag coefficients, the weight in water and the element damping are not used.

Initial conditions

These are the same as for NetStructureTest.

Name Width Description
Pos_<i> 3 Position of node i in m. For nodes on an element, a NaN entry is replaced by 0.
Vel_<i> 3 Velocity of node i in m/s. For nodes on an element, a NaN entry is replaced by 0.

Behaviour notes

OdeFcn works on each element from node a to node b in turn. It uses l = |x_b − x_a|, the unit vector c = (x_b − x_a)/l, and the fixed β = 100. Only an element with l > L0 (a taut element) contributes:

The node masses go on the diagonal of the system matrix. The external input forces are added to the right-hand side. The accelerations come from an incomplete-LU (Eigen::IncompleteLUT) solve.

The position derivative is the velocity. The Euler_i/Heun_i correction of NetStructureTest is not applied.

No drag, weight, buoyancy, appendix force or element damping is applied. The current of CurrentVelocity has no effect.