TLP

While recuperating from an injury, I scoured the internet for info. on TLPs at the behest of a colleague — anything to distract myself from the pain. By Friday, I was able to assemble a list. Here’s a summary.1

Overview of a tension leg platform
Figure 1: Overview of a tension leg platform. Courtesy: N.D.P. Barltrop, Floating Structures: a guide for design and Analysis, Volume One.
Tension leg platforms
Figure 2: Tension leg platforms statistics: Water depth to topsides weight (left), and Displacement to topsides weight (right).

It is interesting to note that the largest TLPs, viz., Snorre A and Heidrun are both owned by Statoil. In terms of weights and displacements, these two are literally off the chart when compared with the rest — an incredible feat.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
tlpscatter.py -- 2018 ckunte
"""
import numpy as np
import matplotlib.pyplot as plt
import urllib2
URL = 'https://gist.githubusercontent.com/ckunte/b0a204548a2ca72a0771bcc834a947dd/raw/9cf611e4ee31fd2d2cecee4cedc4f46a08ebe85e'

tlpdata = np.loadtxt(urllib2.urlopen(URL), dtype='int,int,int', \
    delimiter=',', usecols=(2, 3, 4), \
    unpack=True, skiprows=1)

def disp_weight(disp, topside):
    plt.scatter(disp, topside, c='blue', alpha=0.45)
    plt.xlabel('Displacement (t)')
    plotopt()
    plt.savefig('tlp_disp_weight.png')
    plt.close()

def depth_weight(depth, topside):
    plt.scatter(depth, topside, c='red', alpha=0.45)
    plt.xlabel('Water depth (m)')
    plotopt()
    plt.savefig('tlp_depth_weight.png')
    plt.close()

def plotopt():
    plt.ylabel('Topside weght (t)')
    plt.xlim(xmin=0)
    plt.ylim(ymin=0)
    plt.grid()

def main():
    disp_weight(tlpdata[0], tlpdata[1])
    depth_weight(tlpdata[2], tlpdata[1])
    pass

if __name__ == '__main__':
    main()

  1. There may be a few more than listed; I just don’t have enough info. without going through paid subscriptions like WoodMac.