|
FhSim
3.1.0
Marine systems simulation
|
Class containing a winch object developed for Rolls Royce Deck Machinery.
Collaboration diagram for Rigid body cable:Cable model with bending/torsional stiffness and winch-functionality. The cable is discretized as "6 degrees of freedom" rigid cylinders which are connected with axial and angular constraints. For high bending stiffness the cable will work as a truss/beam.
The constraints are regularized with a compliant variation of the Baumgarte method. In effect the cylinders can be thought of as connected with axial and angular springs like a traditional spring-mass-damper model, but without some of the numerical instability problems associated with high stiffness cables.
The behavior of the springs are defined with three parameters; \(\alpha\), \(\beta\) and \(\epsilon\). \(\beta\) controls the rate at which the constraint seeks towards equilibrium, \(\alpha\) is the damping factor, and \(\epsilon\) is the constraint compliance.
The effective spring stiffness is a combination of \(\beta\), \(\epsilon\), and the mathematical formulation of the constraint function.
For the axial spring the effective restoring force is: \( F = \beta^2/\epsilon*dL \) where \(dL\) is the distance between two successive cylinder endpoints.
For the angular spring the effective restoring moment is: \(M = \beta^2/\epsilon*sin(\theta/2)\) where theta is the difference in orientation angle between two successive cylinders. Note that the bending and the torsional stiffness can be set independently.
\(\alpha\) less than \(\beta\) means the system is underdamped, \(\alpha\) equal to \(\beta\) means critical damping, and \(\alpha\) larger than Beta means overdamped. The effective damping scales with \(\alpha/\epsilon\)
A fairly robust technique for adjusting the parameters when using an explicit integration scheme is as follows:
Choose a time step \(dt\) small enough to resolve the main macroscopic dynamics of the cable. The exact meaning of this is not precisely defined, but the important part is that the axial wave propagation speed which is responsible for the main numerical problems in spring-mass cable modeling need -not- be accounted for.
Set BetaN to \(1/dt\) or smaller, and then EpsilonN to the value which gives the desired global stiffness. A formula for determining effective Youngs-modulus is: \(E = \beta^2*L/(\epsilon*N*A)\), where \(L\) is the total cable length, \(N\) is the number of discrete cylinders in the cable, and \(A\) is the material cross-sectional area. For bending and torsional stiffness the expression is the same except \(A\) is replaced with \(2*I\) and \(2*J\) respectively.
Higher axial loads gives higher propagation rate of transversal waves. A smaller EpsilonM-value will suppress numerical instabilities from this cause. If the simulation crashes, reduce EpsilonM. As long as the BetaM-value is adjusted simultaneously, the total bending stiffness can be kept the same. If however BetaM becomes to small, the rate at which the cable 'self-aligns' will become too small, and the cable will tend to 'keep its shape'. In this case one may either accept this slightly non-physical consequence, keep the bending stiffness higher than the actual physical value, or reduce the time step and/or the element count.
The cable model is equipped with virtual winch functionality which makes it possible to retract/extend the cable from the end points. The cable is manipulated by the retracted length and retraction speed at the end points A and B. The retracted length us used to change the cable length, while the retracted speed is used to satisfy the dynamics of the internal cable equations at the end points. The current extended length of the cable is \( L_{cable} = L_{total} - L_{retracted_A} - L_{retracted_B}\)
This page documents the interface the library is built with (MARE-0025). The Baumgarte parameters \(\alpha\), \(\beta\) and \(\epsilon\) above are not parameters of it: they are derived from the material data and updateFreq in the constructor, with \(\beta_N = 1/\mathrm{updateFreq}\), \(\beta_M = \beta_T = 1/(\mathrm{updateFreq}\cdot\mathrm{stabilityFactor})\), \(\alpha = \mathrm{damping}\cdot\beta\), \(\epsilon_N = \beta_N^2 L/(2 E N A)\), \(\epsilon_M = \beta_M^2 L/(2 E N I)\), \(\epsilon_T = \beta_T^2 L/(2 G N J)\) for \(I = 7 \pi D^4/5184\) and \(J = 2I\) (the factor 2 in \(\epsilon_N\) is the 2024 change that gives the correct static tension; it is marked "should be further checked" in the source).
| Name | Width | Description |
|---|---|---|
| PositionA | 3 | position of end-connection point A |
| PositionB | 3 | position of end-connection point B |
| VelocityA | 3 | velocity of end-connection point A |
| VelocityB | 3 | velocity of end-connection point B |
| RetractedLengthA | 1 | length of cable retracted on side A |
| RetractedLengthB | 1 | length of cable retracted on side B |
| RetractedSpeedA | 1 | retraction rate of cable retracted on side A |
| RetractedSpeedB | 1 | retraction rate of cable retracted on side B |
| Name | Width | Description |
|---|---|---|
| ForceA | 3 | Reaction force on side A |
| ForceB | 3 | Reaction force on side B |
| Name | Width | Description |
|---|---|---|
| cableLength | 1 | total length of the cable [m] |
| numElements | 1 | number of rigid elements in the cable [#] |
| diameter | 1 | diameter of the cable [m] |
| cableWeight | 1 | weight of the cable [kg/m] |
| E-modulus | 1 | Young's modulus of the cable material [Pa] |
| G-modulus | 1 | shear modulus of the cable material [Pa] (Default: E-modulus / 2.6) |
| damping | 1 | structural damping of the cable [-] (Default: 1) |
| updateFreq | 1 | update frequency that sets the Baumgarte time constants; keep it at or below 1/dt [Hz] |
| stabilityFactor | 1 | ratio of the axial to the bending and torsional update frequency [-] (Default: 1.1) |
| isKelpRope | 1 | Sugar kelp rope: adds the biomass weight to each element (Default: false) |
| biomassPerMeterNewton | 1 | weight of the kelp biomass per metre of rope [N/m] (Default: 98.1) |
| Scale | 1 | scale of the visualization (Default: 1) |
The environment is taken from the shared resource Environment; a model without one is a setup error.
An earlier interface, compiled only if RBCABLE_CLASSIC_INTERFACE is defined, which no build of this library does (MARE-0025), names the parameters Length, numElements, AlphaN, BetaN, EpsilonN, AlphaM, BetaM, EpsilonM, AlphaT, BetaT, EpsilonT, Weight and Radius (and isKelpRope, biomassPerMeterNewton), the input ports posA, posB, velA, velB, retractedLengthA, retractedLengthB, retractedSpeedA and retractedSpeedB, and the output ports forceA and forceB. The tuning guidance above is written for it. An input file that uses these names does not run on this library.