6D buoys: Modelling a surface-piercing buoy

Surface-piercing buoys, such as CALM buoys, SPAR buoys, and meteorological discus buoys, can be modelled in OrcaFlex by the spar buoy type of 6D buoy. Despite its name, the OrcaFlex spar buoy can be used to model any axisymmetric body.

Spar buoys have a large amount of data, enabling you to model a wide range of effects, but this can also make it rather complicated to set up a spar buoy model. To help with this, we describe here how we ourselves go about setting up an OrcaFlex model of a surface-piercing buoy.

1. Create a simple model containing just a spar buoy

Start by modelling the free-floating behaviour of the buoy, without connecting any lines. This allows us to get the basic behaviour of the buoy correct, before complications such as moorings etc. are introduced. We therefore set up an OrcaFlex model containing only a spar buoy and with no waves or current.

Set the buoy's applied load to zero. You may use this later to account for the wind force on the upper part of the buoy. To do so, you will need to know the projected area (i.e. that exposed to wind) of the pipe work etc. in the upper part of the buoy.

Set the buoy's Munk moment coefficient to zero: a non-zero value is only appropriate for a slender body in near-axial, fully-submerged flow.

Set the number of wings to zero. Wings are normally only relevant to towed fish.

Finally, for now set all the buoy's drag and added mass data to zero. We will assign the correct values later.

2. Set up the geometry data

Spar buoys have their own local buoy axes. You can choose the origin for these buoy axes, but the buoy $z$-axis direction must be chosen to be parallel to the axis of the buoy and the buoy $x$ and $y$-axes parallel to the other two principal directions of structural inertia. You also need to define the position of the centre of mass, relative to this local coordinate system. The buoy manufacturer should supply this information.

Set the stack base position, the position of the centre of the bottom of the buoy relative to the buoy axes. The stack base position therefore has $z$-coordinate $-h$, where $h$ is the axial distance from the bottom of the buoy to the buoy origin.

Now set up a number of cylinders, and their lengths and diameters, to represent the shape of the buoy (you will need the dimensions of the various parts of the buoy, which should be available from the buoy manufacturer). Set the cylinder lengths and diameters corresponding to the length and volume for each section. Tapered sections may be represented by a series of short cylinders with progressively increasing or decreasing diameters.

In fact, we recommend using a number of short cylinders even where the buoy diameter is constant over a long length. More cylinders will, in general, give more accurate results, though at the cost of reduced computation speed.

You can check your geometry data by zooming in on the buoy in a wire frame 3D view. Turn on the local axes drawing to confirm that the buoy origin is in the correct place.

The value of bulk modulus is not relevant to a surface-piercing buoy, so it can be left at the default value.

3. Set up the mass and inertia data

Now define the mass and moments of inertia of the buoy. These should be supplied by the buoy manufacturer.

The mass is the weight of the buoy in air. The moments of inertia are those of the buoy (in air) about its centre of mass, as follows:

If you cannot obtain data for the moments of inertia, then they can be calculated approximately from the masses of the various parts of the buoy and their general distribution.

4. Check that the buoy floats at the correct draught

Set the initial position and attitude of the buoy so that it is in its expected equilibrium position. The initial position is that of the buoy local origin, and you can calculate this point's expected equilibrium position from the buoy draught (which should be available from the buoy manufacturer).

The initial attitude defines the initial orientation of the buoy. Set it to $(0,0,0)$, which orients the buoy with its $z$-axis vertical and the buoy local $x,y$ axes aligned with the global $X,Y$ axes.

Set degrees of freedom included in statics to none and then run the simulation and look at the time history result for buoy $Z$. If the data have been set up correctly then the buoy should have remained in its initial position and attitude, with perhaps just small oscillations about that position.

If the buoy $Z$ shows significant oscillations, this indicates that the model's equilibrium position does not match the expected one. Something is wrong with the data and this needs tracing and correcting before you proceed. You can estimate the model's equilibrium position by looking at the mean $Z$ position in the time history.

5. Check that the buoy is stable

Now check that the buoy is stable – if it is pitched over to one side and released, does it right itself? To test this, set the rotation 2 value of the initial attitude to, say, 10° and run the simulation. If the buoy falls over then there is something wrong with the centre of mass or the volume distribution, and this must be corrected.

Note: It is possible that the buoy is not be intended to be stable on its own, e.g. stability may only be achieved when the moorings are connected. In this case you will need to include the moorings in the model to check stability.

6. Set the added mass data

The $x$ and $y$ added mass coefficients can be simply assigned the value 1.0, the standard value for a cylinder in flow normal to its axis.

Added mass in the $z$ direction should be estimated for the buoy from the published literature (DNV rules, Barltrop & Adams, 1991) and distributed between the immersed cylinders (remember that hydrodynamic loads are only applied to the immersed parts of the model).

Ideally, these data should then be checked by comparing the heave and pitch natural periods of the model against values obtained from model tests or full scale measurements, and adjustments made as necessary.

7. Set the drag and damping data

The best approach depends on whether the buoy is a SPAR, whose length is great by comparison with its diameter, or a surface-following discus shape such as an oceanographic buoy. CALM buoys are usually closer to the discus configuration, often with a damping skirt which is submerged at normal draft.

Spar buoys

Set the drag areas for each cylinder to the areas, of the part of the buoy which that cylinder represents, that are exposed to fluid drag in the corresponding direction. Note that you should specify the areas that are exposed to drag when the buoy is fully submerged: OrcaFlex automatically calculates the proportion of each cylinder that is submerged and scales all the fluid loads on the cylinder by that proportion wet.

For a cylinder of diameter $d$ and length $l$, the normal drag area is $dl$ (the area of the cylinder when viewed normal to its axis) and the axial drag area is $\pi d^2/4$ (the area when viewed end-on). However, where a cylinder is used to represent part of the buoy that is not truly cylindrical (for example, the pipework and turntable on the deck of a SPAR buoy may be approximated by an equivalent cylinder) or where the cylinder is shielded from drag by adjacent structure, then the drag areas should be set accordingly.

Set the drag force coefficient based on values given in the literature. For short fully-immersed cylinders, standard values are given in Barltrop & Adams, 1991, Hoerner,1965 and DNV-RP-C205. However, the standard book values do not include energy absorption by wave-making at the free surface. Strictly speaking, this is a linear term (forces directly proportional to velocity), but in OrcaFlex this must be implemented by adjusting the drag coefficients of one or more cylinders.

The unit damping force data can be set to zero. If you later find that the buoy shows persistent small amplitude oscillations, then you may wish to set a non-zero value here to damp this out.

Set the drag area moments, drag moment coefficients and unit damping moment data. For the normal direction these can usually all be left as zero, providing you have subdivided the buoy into sufficiently short cylinders (since these terms involve a high power of the cylinder length $l$). In the axial direction, these values represent the drag and damping effects in yaw: if these are important to you, you should use values corresponding to the two main sources, namely skin friction on the cylinder surface and form drag on any protuberances on the buoy.

Having set up these drag and damping data, it is well worth running simulations of heave and pitch oscillations and checking that their rate of decay is reasonable and consistent with any real data you have available.

Discus and CALM buoys

These types of buoy require different treatment since they have little axial extension; instead, it is their radial extension that most affects the buoy's pitch properties, and axial discretisation of the buoy into cylinders does not capture the important effects. For example the pitch damping is often mostly due to radiation damping, i.e. surface wave generation; this is especially important for a CALM buoy with a skirt.

To represent this, OrcaFlex has rotational drag and damping data, but there is little information in the literature to help in assigning their values. We therefore strongly recommend that you set the data up by calibrating against real test results from model or full scale tests. The most convenient results to work with are time history graphs of buoy heave and pitch in still water, starting from a displaced position. This will give the heave and pitch natural periods and the rates of decay and you can adjust the buoy's drag and damping data until you get a good match with this measured behaviour.

Here is the approach we use in more detail:

  1. For the normal direction, define the drag area, drag force coefficient and unit damping force as described above for spar buoys.
  2. Set the axial unit damping force to zero and run a simulation that matches the conditions that existed in the real heave time history results, i.e. with the same initial $Z$ displacement.
  3. Adjust the axial drag area and drag force coefficients until the OrcaFlex buoy's $Z$ (i.e. heave) time history results match the real time history. The drag area and drag coefficient are simply multiplied together in calculating the drag force, so for simplicity you can give one of them the value 1.0 and adjust only the other.

The match will probably be poor in the later parts of the time history, where the heave amplitude decays to small values. This is because the square law drag term is insignificant at small amplitude and, instead, the linear damping force takes over. So we next adjust the axial unit damping force to further improve the match where the amplitude is small:

  1. For the axial direction, set the drag area moment, drag moment coefficient and unit damping moment as described for spar buoys above.
  2. Then set the normal drag area moment, drag moment coefficient and unit damping moment to best match the real pitch time history, in a similar way to 2 and 3 above.
  3. You may find that setting the damping data in turn disturbs the match previously obtained in the earlier large amplitude phase, in which case you might need to readjust the drag data in the same way as previously.