You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/_include/added_mass.rst
+53-23Lines changed: 53 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,8 @@ shown in the manipulation of the governing equation below:
19
19
(M+A)\ddot{X_i} &= \Sigma F(t,\omega) \\
20
20
M_{adjusted}\ddot{X_i} &= \Sigma F(t,\omega)
21
21
22
-
where capital :math:`M` is the mass matrix, :math:`A` is the added mass, and subscript :math:`i` represents the timestep being solved for.
22
+
where :math:`F_{am} = -A\ddot{X_i}` is the added mass component of the radiation force that is pulled out of the force summation for manipulation,
23
+
:math:`M` is the mass matrix, :math:`A` is the single frequency or infinite frequency added mass, and subscript :math:`i` represents the timestep being solved for.
23
24
In this case, the adjusted body mass matrix is defined as the sum of the translational mass (:math:`m`), inertia tensor (:math:`I`), and the added mass matrix:
24
25
25
26
.. math::
@@ -28,8 +29,8 @@ In this case, the adjusted body mass matrix is defined as the sum of the transla
@@ -53,24 +54,25 @@ There is a 1-1 mapping between the body's inertia tensor and rotational added ma
53
54
These added mass coefficients are entirely lumped with the body's inertia.
54
55
Additionally, the surge-surge (1,1), sway-sway (2,2), heave-heave (3,3) added mass coefficients correspond to the translational mass of the body, but must be treated identically.
55
56
56
-
WEC-Sim implements this added mass treatment using both a modified added mass matrix and a modified body mass matrix:
57
+
WEC-Sim implements this added mass treatment by adding a change in mass matrix ($$dM$$) to both sides of the equation, creating both a modified added mass matrix and a modified body mass matrix:
We should see that :math:`A_{4,5} + A_{5,4} = A_{4,6} + A_{6,4} = A_{5,6} + A_{6,5} = 0`, but there may be numerical differences in the added mass coefficients which are preserved.
103
+
The inertia tensor is symmetric, so we should see that :math:`A_{4,5} - A_{5,4} = A_{4,6} - A_{6,4} = A_{5,6} - A_{6,5} = 0`. There may be numerical differences in the added mass coefficients which are preserved.
102
104
103
105
Though the components of added mass and body mass are manipulated in WEC-Sim, the total system is unchanged.
104
106
This manipulation does not affect the governing equations of motion, only the implementation.
@@ -108,26 +110,54 @@ Advanced users may change this weighting factor in the ``wecSimInuptFile`` to cr
108
110
To see its effects, set ``body(iB).adjMassFactor = 0`` and see if simulations become unstable.
109
111
110
112
This manipulation does not move all added mass components.
111
-
WEC-Sim still contains an algebraic loop due to the acceleration dependence of the remaining added mass force from :math:`A_{adjusted}`, and components of the Morison Element force.
112
-
WEC-Sim solves the algebraic loop using a `Simulink Transport Delay <https://www.mathworks.com/help/simulink/slref/transportdelay.html>`_ with a very small time delay (``1e-8``).
113
-
This blocks extrapolates the previous acceleration by ``1e-8`` seconds, which results in a known acceleration for the added mass force.
114
-
The small extraplation solves the algebraic loop but prevents large errors that arise when extrapolating the acceleration over an entire time step.
113
+
WEC-Sim still contains an algebraic loop due to the dependence of the remaining added mass force :math:`A_{adjusted}\ddot{X_i}`, and components of the Morison Element force.
114
+
WEC-Sim solves the algebraic loop using a `Simulink Transport Delay <https://www.mathworks.com/help/simulink/slref/transportdelay.html>`_ with a very small time delay (``1e-7``).
115
+
This blocks extrapolates the previous acceleration by ``1e-7`` seconds, which results in a known acceleration for the added mass force.
116
+
The small extrapolation solves the algebraic loop but prevents large errors that arise when extrapolating the acceleration over an entire time step.
115
117
This will convert the algebraic loop equation of motion to a solvable one:
So when body-to-body interactions are considered, the term :math:`dM` is still only dependent on and only affects the added mass of the body in question (e.g. body 1 above).
120
150
121
151
Working with the Added Mass Implementation
122
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
152
+
"""""""""""""""""""""""""""""""""""""""""""
123
153
124
154
WEC-Sim's added mass implementation should not affect a user's modeling workflow.
125
155
WEC-Sim handles the manipulation and restoration of the mass and forces in the bodyClass functions ``adjustMassMatrix()`` called by ``initializeWecSim`` and ``restoreMassMatrix``, ``storeForceAddedMass`` called by ``postProcessWecSim``.
126
156
However viewing ``body.mass, body.inertia, body,inertiaProducts, body.hydroForce.hf*.fAddedMass`` between calls to ``initializeWecSim`` and ``postProcessWecSim`` will not show the input file definitions.
127
157
Users can get the manipulated mass matrix, added mass coefficients, added mass force and total force from ``body.hydroForce.hf*.storage`` after the simulation.
128
-
However, in the rare case that a user wants to manipulate the added mass force *during* a simulation, the change in mass, :math:`dMass` above, must be taken into account. Refer to how ``body.calculateForceAddedMass()`` calculates the entire added mass force in WEC-Sim post-processing.
158
+
However, in the rare case that a user wants to manipulate the added mass force *during* a simulation, the change in mass, :math:`dM` above, must be taken into account. Refer to how ``body.calculateForceAddedMass()`` calculates the entire added mass force in WEC-Sim post-processing.
129
159
130
-
.. Note:: If applying the method in ``body.calculateForceAddedMass()`` *during* the simulation, the negative of ``dMass`` must be taken: :math:`dMass = -dMass`. This must be accounted for because the definitions of mass, inertia, etc and their stored values are flipped between simulation and post-processing.
160
+
.. Note:: If applying the method in ``body.calculateForceAddedMass()`` *during* the simulation, the negative of ``dM`` must be taken: :math:`dM = -dM`. This must be accounted for because the definitions of mass, inertia, etc and their stored values are flipped between simulation and post-processing.
131
161
132
162
.. Note::
133
163
Depending on the wave formulation used, :math:`A` can either be a function of wave frequency :math:`A(\omega)`, or equal to the added mass at infinite wave frequency :math:`A_{\infty}`
0 commit comments