The current may be a depth-independent or depth-dependent, as
specified by the u argument. The computation is iterated at most
niteration times until the RMS deviation between computed z
values falls below the product of convergenceCriterion and wire
length. The returned result has an attribute named u that holds
the value of that argument, and this is how a later call to
plot() is able to display a velocity profile; see
Examples 2 and 3.
knockdown(m, u = 1, convergence = 0.1, maxiteration = 100, debug = 0L)an object of the "mooring" class, usually created with
mooring(), followed by a call to segmentize().
either a non-negative number indicating depth-independent velocity, or a function that returns that velocity as a function of depth (m) below the ocean surface.
criteria for stopping the iteration process.
If the root-mean-squared difference in element angles
drops below this convergence degrees, then convergence is declared and the iterative
solution process stops. If not, then the iteration stops after maxiteration
passes (and a warning is issued). In any case, the actual number of
iterations is stored in an attribute named iterations, the RMS
angle difference (in degrees) is stored as RMSAngleChange,
and the RMS difference in element depth (in m) is stored
RMSDepthChange.
an integer value (or a numeric that can be converted to an integer) that controls debugging. If this is positive, then some debugging information may be printed by the function.
knockdown returns a mooring object representing the
deformed mooring, with x and z values updated, with the
original values being saved as x0 and z0. In addition, the
stress and angle of each element is stored in fields named tau
and phi, the latter in radians. Attributes are added to the
object to describe the solution in more detail. The u attribute
stores the value supplied to knockdown(), and waterDepth stores
the water depth that was supplied to the anchor() call. An
overview of the iterative solution is provided in the
attributes (see convergence).
# Illustrate importance of drag on the wire.
library(mooring)
m <- mooring(anchor(), wire(length = 30), float("16in Viny"), waterDepth = 50)
ms <- segmentize(m)
# Example 1: no current
plot(ms)
# Example 2: uniform 0.5 m/s (approx. 1 knot) current
par(mfrow = c(1, 2))
k1 <- knockdown(ms, u = 0.5)
plot(k1, which = "velocity")
plot(k1)
# Example 3: 0.5 m/s surface current, exponential decay below
k2 <- knockdown(ms, u = function(depth) 0.5 * exp(-depth / 30))
par(mfrow = c(1, 2))
plot(k2)
plot(k2, which = "velocity")
# Example 4: as Example 3, but show knockdown and tension
# The red dashed line in the tension plot indicates the
# anchor weight.
par(mfrow = c(1, 2))
plot(k2, which = "knockdown")
plot(k2, which = "tension")