Chain stiffness

Position Mooring (DnV-OS-E301), DnV’s Offshore Standard, has undergone three revisions in six years — a sign of how busy things are w.r.t. mooring systems, and the urgent need for updates as the industry rapidly learns from experience and innovates on demand. The one of interest to me is the recipe it offers to calculate effective elastic modulus (E) for studless chains. These, the standard acknowledges, are courtesy of Vicinay Cadenas, the world-renowned chain maker from Spain.

Table: Effective elastic modulus E for studless chains (N/m2)

Grade2000-82010-15
R3(8.37 - 0.0305d) ⋅ 1E10(5.40 - 0.0040d) ⋅ 1E10
R4(7.776 - 0.01549d) ⋅ 1E10(5.45 - 0.0025d) ⋅ 1E10
R5- do -(6.00 - 0.0033d) ⋅ 1E10

where, chain link diameter, d, is in mm, and A would be the combined cross sectional area of two legs of a (common) chain link. So, here’s the story of change in one graph that you do not get to see in standards or when comparing between revisions.

As the table shows the recipe changed in the 2010 edition for all grades.

Effective elastic modulus (E) and axial stiffness (EA) for a range of studless chain sizes and grades
Effective elastic modulus (E) and axial stiffness (EA) for a range of studless chain sizes and grades

A graph of chain diameter plotted against its corresponding axial stiffness is always handy for a mooring engineer, because anyone with an elementary understanding of structural mechanics would know that stiffness is essential in controlling displacements (vessel excursions or offsets).

The one that jumps right out is, of course, the R3 grade stud-less chain as it falls free from its previous value. It’s good to remember that the R3 has been with us longer than the newer grades, which are essentially out of the demand from larger vessels in harsher environments like the FLNG. Seriously, what just happened there?

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# ea.py -- 2015 ckunte

import numpy as np
import matplotlib.pyplot as plt


def main(d):
    # As per DNV-OS-E301 (From 2000 to 2015 editions):
    E = [
        (5.4 - 0.004 * d) * 1e10,  # R3 studless (2010-15)
        (8.37 - 0.00305 * d) * 1e10,  # R3 studless (2000-8)
        (5.45 - 0.0025 * d) * 1e10,  # R4 studless (2010-15)
        (6.0 - 0.0033 * d) * 1e10,  # R5 studless (2010-15)
        (7.776 - 0.01549 * d) * 1e10,  # R4, R5 studless (2000-8)
    ]  # Effective elastic modulus (E) in N/m^2 for chain dia (d) in mm

    lbl = [
        "Studless R3 (2010-15)",
        "Studless R3 (2000-8)",
        "Studless R4 (2010-15)",
        "Studless R5 (2010-15)",
        "Studless R4, R5 (2000-8)",
    ]  # Label list for plots in the order of E list (above)

    for i, j in zip(E, lbl):
        # plot chain diameter (d) versus effective elastic modulus (E)
        ax1 = plt.subplot(211)
        plt.plot(d, (i * 1e-6), label=j, linewidth=2)
        plt.setp(ax1.get_xticklabels(), visible=False)
        # plot chain diameter (d) versus chain stiffness (EA)
        # d is in mm, hence converting it to m (to calculate EA in N)
        EA = i * 2.0 * np.pi * (d / 1e3) ** 2 / (4.0 * 1e6)  # (MN)
        ax2 = plt.subplot(212)
        plt.plot(d, EA, label=j, linewidth=2)
        plt.setp(ax2.get_xticklabels(), fontsize=12)

    ax1.legend(loc=0)
    ax2.legend(loc=0)
    plt.subplots_adjust(top=0.95, hspace=0.1, bottom=0.05)
    ax1.set_ylabel("Effective elastic modulus, E (MN/m$^2$)")
    plt.ylabel("Axial stiffness, EA (MN)")
    plt.xlabel("Chain diameter, d (mm)")
    ax1.grid(True)
    ax2.grid(True)
    fig = plt.gcf()
    fig.set_size_inches(8.5, 11)
    fig.savefig("studless-chain-ea.svg", dpi=100)
    plt.close()


if __name__ == "__main__":
    d = np.linspace(60, 200)  # chain diameter range to plot (mm)
    main(d)