Cable Laying and Burying#

This guide will demonstrate the use of a combined cable laying and burying vessel compared to using separate cable laying and burying vessels. Here we will focus on the array cabling, but the same logic applies to the export cables.

from copy import deepcopy

import pandas as pd

from ORBIT import ProjectManager

Below, we set up a base configuration using an imagined cable and sections (25 each of 1km and 2km cable sections) designed for simplicity.

base_config = {
    "site": {"distance": 20, "depth": 35},
    "array_system": {
        "system_cost": 50e6,
        "cables": {
            "ExampleCable": {
                "linear_density": 40,
                "cable_sections": [(2, 25), (1, 25)]
            }
        }
    },
    "install_phases": ["ArrayCableInstallation"]
}

Single Cable Laying and Burying Process#

Now we can add a cable laying vessel that will simultaneously lay and bury cables by defining the array_cable_install_vessel. For export cables, this is the export_cable_install_vessel. We will create and run the project for later results comparison.

config_combined = deepcopy(base_config)
config_combined["array_cable_install_vessel"] = "example_cable_lay_vessel"

project_combined = ProjectManager(config_combined)
project_combined.run()
ORBIT library intialized at '/opt/hostedtoolcache/Python/3.13.13/x64/lib/python3.13/site-packages/library'

Separate Cable Laying and Burying Processes#

Using the same base configuration, we can now signal to the simulation to use a separate cable laying and burying process by defining both the array_cable_install_vessel and array_cable_bury_vessel. Note that the laying and combined vessel configuration keys are the same, so that a separate input is only required when the cable burying vessel is utilized. Similar to the above example, the export cable burying vessel is export_cable_bury_vessel.

Even though the vessel is the same, by defining both vessel keys, we indicate that the processes should be separated.

config_separate = deepcopy(base_config)
config_separate["array_cable_install_vessel"] = "example_cable_lay_vessel"
config_separate["array_cable_bury_vessel"] = "example_cable_lay_vessel"

project_separate = ProjectManager(config_separate)
project_separate.run()

Including a Trenching Vessel#

A third option is to also define a cable trenching vessel that digs out the trench for the cable to lie in prior to the cable laying. This is often required for rocky soil types. Similar to the separate process, we simply define the trenching vessel to activate the separated process using the array_cable_trench_vessel key or export_cable_trench_vessel for export cables.

config_separate_with_trench = deepcopy(base_config)
config_separate_with_trench["array_cable_install_vessel"] = "example_cable_lay_vessel"
config_separate_with_trench["array_cable_bury_vessel"] = "example_cable_lay_vessel"
config_separate_with_trench["array_cable_trench_vessel"] = "example_cable_lay_vessel"

# Run
project_separate_with_trench = ProjectManager(config_separate_with_trench)
project_separate_with_trench.run()

Viewing the results#

Below we show the combined process for laying and burying the first cable. Note the "action" column contains the "Lay/Bury" action to indicate the combined process.

df_combined = pd.DataFrame(project_combined.actions)
df_combined.iloc[3:12]
cost_multiplier agent action duration cost level time phase phase_name max_waveheight max_windspeed transit_speed
3 NaN Array Cable Installation Vessel Position Onsite 2.0 20097.583333 ACTION 9.73913 ArrayCableInstallation NaN NaN NaN NaN
4 NaN Array Cable Installation Vessel Prepare Cable 1.0 10048.791667 ACTION 10.73913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
5 NaN Array Cable Installation Vessel Pull In Cable 5.5 55268.354167 ACTION 16.23913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
6 NaN Array Cable Installation Vessel Terminate Cable 5.5 55268.354167 ACTION 21.73913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
7 NaN Array Cable Installation Vessel Lower Cable 1.0 10048.791667 ACTION 22.73913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
8 NaN Array Cable Installation Vessel Lay/Bury Cable 32.0 321561.333333 ACTION 54.73913 ArrayCableInstallation ArrayCableInstallation 2.0 25.0 11.5
9 NaN Array Cable Installation Vessel Prepare Cable 1.0 10048.791667 ACTION 55.73913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
10 NaN Array Cable Installation Vessel Pull In Cable 5.5 55268.354167 ACTION 61.23913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
11 NaN Array Cable Installation Vessel Terminate Cable 5.5 55268.354167 ACTION 66.73913 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN

Now, we demonstrate the separate process by combining the separate laying and burying steps taken for the first cable. Note that we have to concatenate two separate sections of the actions log to highlight this process. For each process the vessel has to "Position Onsite", then go on with the separate logic. For the burying process, this is much simpler than the initial laying and cable connection.

df_separate = pd.DataFrame(project_separate.actions)
pd.concat((df_separate.iloc[4:13], df_separate.iloc[455:457]))
cost_multiplier agent action duration cost level time phase phase_name max_waveheight max_windspeed transit_speed
4 NaN Array Cable Installation Vessel Position Onsite 2.000 20097.583333 ACTION 9.739130 ArrayCableInstallation NaN NaN NaN NaN
5 NaN Array Cable Installation Vessel Prepare Cable 1.000 10048.791667 ACTION 10.739130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
6 NaN Array Cable Installation Vessel Pull In Cable 5.500 55268.354167 ACTION 16.239130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
7 NaN Array Cable Installation Vessel Terminate Cable 5.500 55268.354167 ACTION 21.739130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
8 NaN Array Cable Installation Vessel Lower Cable 1.000 10048.791667 ACTION 22.739130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
9 NaN Array Cable Installation Vessel Lay Cable 5.000 50243.958333 ACTION 27.739130 ArrayCableInstallation ArrayCableInstallation 2.0 25.0 11.5
10 NaN Array Cable Installation Vessel Prepare Cable 1.000 10048.791667 ACTION 28.739130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
11 NaN Array Cable Installation Vessel Pull In Cable 5.500 55268.354167 ACTION 34.239130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
12 NaN Array Cable Installation Vessel Terminate Cable 5.500 55268.354167 ACTION 39.739130 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
455 NaN Array Cable Burial Vessel Position Onsite 2.000 20097.583333 ACTION 1548.978261 ArrayCableInstallation NaN NaN NaN NaN
456 NaN Array Cable Burial Vessel Bury Cable 4.825 48485.419792 ACTION 1553.803261 ArrayCableInstallation ArrayCableInstallation 2.0 25.0 11.5

Similar to the above, when we add trenching as a separate step, we have three discrete stages to combine to demonstrate the trenching, laying, and burying for the first cable.

df_separate_with_trench = pd.DataFrame(project_separate_with_trench.actions)
pd.concat((
    df_separate_with_trench.iloc[4:6],
    df_separate_with_trench.iloc[107:116],
    df_separate_with_trench.iloc[558:560],
))
cost_multiplier agent action duration cost level time phase phase_name max_waveheight max_windspeed transit_speed
4 NaN Array Cable Trench Vessel Position Onsite 2.000 20097.583333 ACTION 3.739130 ArrayCableInstallation NaN NaN NaN NaN
5 NaN Array Cable Trench Vessel Dig Trench 19.300 193941.679167 ACTION 23.039130 ArrayCableInstallation ArrayCableInstallation 2.0 25.0 11.5
107 NaN Array Cable Installation Vessel Position Onsite 2.000 20097.583333 ACTION 828.217391 ArrayCableInstallation NaN NaN NaN NaN
108 NaN Array Cable Installation Vessel Prepare Cable 1.000 10048.791667 ACTION 829.217391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
109 NaN Array Cable Installation Vessel Pull In Cable 5.500 55268.354167 ACTION 834.717391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
110 NaN Array Cable Installation Vessel Terminate Cable 5.500 55268.354167 ACTION 840.217391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
111 NaN Array Cable Installation Vessel Lower Cable 1.000 10048.791667 ACTION 841.217391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
112 NaN Array Cable Installation Vessel Lay Cable 5.000 50243.958333 ACTION 846.217391 ArrayCableInstallation ArrayCableInstallation 2.0 25.0 11.5
113 NaN Array Cable Installation Vessel Prepare Cable 1.000 10048.791667 ACTION 847.217391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
114 NaN Array Cable Installation Vessel Pull In Cable 5.500 55268.354167 ACTION 852.717391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
115 NaN Array Cable Installation Vessel Terminate Cable 5.500 55268.354167 ACTION 858.217391 ArrayCableInstallation ArrayCableInstallation NaN NaN NaN
558 NaN Array Cable Burial Vessel Position Onsite 2.000 20097.583333 ACTION 2367.456522 ArrayCableInstallation NaN NaN NaN NaN
559 NaN Array Cable Burial Vessel Bury Cable 4.825 48485.419792 ACTION 2372.281522 ArrayCableInstallation ArrayCableInstallation 2.0 25.0 11.5