Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
d679a44
In-progress draft of installation logistics modeling framework
mattEhall Aug 8, 2025
1d3582e
install modeling: expanding yamls and starting assets classes:
mattEhall Aug 12, 2025
0420b18
Preliminary update to vessels.yaml to include AHTS and Barge
Aug 13, 2025
2386c8f
Update actions, capabilities, objects and vessels YAML files
Aug 18, 2025
636a8a1
Starting Task class and outlining more of the process:
mattEhall Aug 19, 2025
89f8afd
New roles/capabilities approach in Actions:
mattEhall Aug 20, 2025
cfbdf4f
Updates to Action.py for checking valid asset-action capability and c…
RyanDavies19 Aug 20, 2025
e67b260
Restore removed error check in action.py
RyanDavies19 Aug 21, 2025
19c2591
Adds function descriptions and improved error handling to action.py
RyanDavies19 Aug 21, 2025
5d49360
Update on vessels day rates, visualizeActions, and action naming in m…
Yuksel-Rudy Aug 21, 2025
00e5f12
Started function to convert units of vessel capability specs - not wo…
mattEhall Aug 21, 2025
f750c4a
Update tasks:
Yuksel-Rudy Aug 21, 2025
f133c51
Markdown plaintext in function descriptions for `action.py`. Adds `as…
RyanDavies19 Aug 21, 2025
ab008c0
Add checks for assets are assigned to roles that already have been as…
RyanDavies19 Aug 22, 2025
0e1a640
Remove default values from actions and capabilities yamls
RyanDavies19 Aug 26, 2025
0d1e1f7
Add getMetrics function to action.py. Started filling in hard coded c…
RyanDavies19 Aug 26, 2025
b71e4ec
Change Irma objects to be FAModel objects
RyanDavies19 Aug 27, 2025
5434acd
Fix YAMLs to be consistent with FAModel objects
RyanDavies19 Aug 29, 2025
7f18495
Got units conversion working and small edits to restore code runnabil…
mattEhall Aug 31, 2025
9786637
improve runing of action class:
RyanDavies19 Sep 8, 2025
1a2bee4
Adds get_row function to tasks:
RyanDavies19 Sep 9, 2025
ff60470
Begining the scheduler object:
RyanDavies19 Sep 9, 2025
16b96a1
Working on new Task-related methods in Scenario:
mattEhall Sep 10, 2025
be1ea51
Updates to scheduler constraints and start of docs:
RyanDavies19 Sep 10, 2025
118cd02
adding a sequence graph to the Task class
Yuksel-Rudy Sep 11, 2025
9018f79
Scheduler.py console printing improvements:
RyanDavies19 Sep 11, 2025
bd13d26
Updating duration, actions_ti, and other features in Task.py based on…
Yuksel-Rudy Sep 11, 2025
ae7171e
Updating duration, actions_ti, and other features in Task.py base…
Yuksel-Rudy Sep 11, 2025
36d1ac1
scheduler.py refactor for four decision variables:
RyanDavies19 Sep 12, 2025
0cf170f
IRMA: Adding a couple more tasks in the staged strategy
mattEhall Sep 16, 2025
3e5cc84
Add calwave modules, charts and modifications
Oct 3, 2025
5c3ec25
CalWave task 1 - anchor installation plan files upgrades and updates …
Oct 20, 2025
f04d376
adding terminology markdown
Yuksel-Rudy Oct 22, 2025
0e1f84b
changing the name from calwave_anch installation.py (it had a space) …
Yuksel-Rudy Oct 22, 2025
dd8084a
Updates to scheduler.py to get it running how it should
shousner Oct 21, 2025
e97942b
Added constraints to scheduler for dependencies and weather
shousner Oct 23, 2025
7f38a21
Updates to schedulerREADME to reflect new changes
shousner Oct 23, 2025
5759f80
Editing schedulerREADME.md so equations render on GitHub
mattEhall Oct 24, 2025
9e04544
mobilize duration hard-coded based on vessel used, sequence yaml file…
Yuksel-Rudy Oct 24, 2025
5ff399f
Adding 'asset_group' capability to the scheduler
shousner Oct 28, 2025
246ece7
Scheduler updates, working scheduler_tutorial.ipynb
shousner Oct 29, 2025
d983e5d
Accidentally put the scheduler_tutorial.ipynb in the main directory
shousner Oct 29, 2025
6fa840d
Adding an example file to run scheduler runs/tests
shousner Oct 29, 2025
b4a80e5
Adding feature to allow dependency offsets
shousner Oct 29, 2025
58cf844
Updating dependency offset feature for 'minimum' and 'exact'
shousner Oct 29, 2025
d27d5e2
Merge remote-tracking branch 'origin/dev' into irma
shousner Oct 31, 2025
35072dd
Merge remote-tracking branch 'origin/dev' into irma
shousner Oct 31, 2025
6356ba4
Updated the scheduler tutorial to explain more about the dependency o…
shousner Oct 31, 2025
96c8ffb
New script to generate task-asset matrices (and wordy help)
shousner Oct 31, 2025
b8b2acb
Generic Task Moduel:
Yuksel-Rudy Nov 3, 2025
793667e
Resurrecting Sequence Graph Capabilities to Task Class
Yuksel-Rudy Nov 3, 2025
ae35d72
Resurrecting Sequence Graph Capabilities to Task Class2:
Yuksel-Rudy Nov 3, 2025
b3edf7a
Gantt Chart support for Task Class
Yuksel-Rudy Nov 3, 2025
9f410b8
Expanding Task.init sequencing options:
mattEhall Nov 4, 2025
1f0feb7
changing calwave task 1 example to run with task.py changes
Yuksel-Rudy Nov 5, 2025
16de612
Merge remote-tracking branch 'origin/dev' into irma
shousner Nov 5, 2025
6aeb87e
Bringing in case study updates into main code
mattEhall Nov 7, 2025
58eb102
IRMA updates to work with seabedtools move
mattEhall Nov 7, 2025
2cbac52
UNDER PROGRESS: removing roles from actions and work on requirements …
Yuksel-Rudy Nov 7, 2025
69de4b7
continue working on action.py to remove roles, data structure fixes, …
Yuksel-Rudy Nov 9, 2025
501fdc4
IRMA ongoing requirements work - now accounting for specs
mattEhall Nov 10, 2025
ade0cc5
more work on Action:
Yuksel-Rudy Nov 10, 2025
1a05f4c
Action updateRequirements real-life data
shousner Nov 11, 2025
47eb99a
A lot of IRMA changes to get task asset assignment working:
mattEhall Nov 24, 2025
eae9888
Switching to SI units and enabling unit converter:
mattEhall Dec 8, 2025
43bca4a
Getting Irma.py to work with the scheduler
shousner Dec 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions examples/OntologySample200m_1turb.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1295,8 +1295,7 @@ anchor_types:
zlug : 10 # embedded depth of padeye [m]

suction1:
type : suction_pile
type : suction
L : 16.4 # length of pile [m]
D : 5.45 # diameter of pile [m]
zlug : 9.32 # embedded depth of padeye [m]

2 changes: 1 addition & 1 deletion famodel/anchors/anchors_famodel/capacity_suction.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def getCapacitySuction(D, L, zlug, H, V, soil_type, gamma, Su0=None, k=None, phi
Maximum vertical capacity [kN]
'''

lambdap = L/D; m = 2/3; # Suction pile slenderness ratio
lambdap = L/D; m = 2/3; # Suction pile slenderness ratio
t = (6.35 + D*20)/1e3 # Suction pile wall thickness (m), API RP2A-WSD
rlug = D/2 # Radial position of the lug
thetalug = 5 # Angle of tilt misaligment, default is 5. (deg)
Expand Down
2,122 changes: 2,122 additions & 0 deletions famodel/irma/action.py

Large diffs are not rendered by default.

338 changes: 338 additions & 0 deletions famodel/irma/actions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,338 @@
# ======================================================================
# actions.yaml
# ----------------------------------------------------------------------
# This file defines standardized marine operations actions.
# Each entry needs numeric values per specific asset in vessels.yaml.
# Action requirements will be checked against vessel capabilities for evaluation and assignment.
#
# Old format: roles, which lists asset roles, each with associated required capabilities
# New format: list of requirements, with optional -in/-out suffix

# The code that models and checks these actions is action.calcDurationAndCost(). Structural changes here will not be reflected in the code unless changes are made there as well

### Example action ###

# example_action:
# objects: [] "The FAModel object types that are expected for this action"
# requirements: [] "List of capability requirements that assets must meet to perform this action"
# duration_h: 0.0 "Duration in hours"
# Hs_m: 0.0 "Wave height constraints in meters"
# description: <text> "A description"

# --- Mobilization ---

mobilize:
objects: []
requirements:
- storage
duration_h:
Hs_m:
description: "Mobilization of vessel in homeport"

demobilize:
objects: []
requirements:
- storage
capabilities: []
duration_h: 1.0
description: "Demobilization of vessel in homeport"

load_cargo:
objects: [anchor, mooring, cable, platform, component]
# still have to figure out the aspect of loading from a port
requirements:
- chain_storage-in
- rope_storage-in
- line_handling
- lifting
- storage-in
- station_keeping
- cable_storage-in
- cable_handling
duration_h:
Hs_m:
description: "Load-out of generic components from port or vessel onto vessel."


# --- Towing & Transport ---

transit_linehaul_self:
objects: [anchor]
requirements:
- propulsion
duration_h:
description: "Self-propelled line-haul between port and site"

transit_linehaul_tug:
objects: [anchor]
requirements:
- propulsion
duration_h:
description: "Tugged line-haul convoy (tug + barge) between port and site"

transit_onsite_self:
objects: [anchor]
requirements:
- propulsion
duration_h:
description: "Self-propelled in-field move between site locations"

transit_onsite_tug:
objects: [anchor]
requirements:
- propulsion
- towing
duration_h:
description: "Tug + barge in-field move between site locations"


tow:
objects: [platform]
requirements:
- propulsion
- towing
- station_keeping
duration_h:
Hs_m:
description: "Towing floating structures (e.g., floaters, barges) to site; includes station-keeping."

transport_components:
objects: [component]
requirements:
- propulsion
- storage
- lifting
- station_keeping
duration_h:
Hs_m:
description: "Transport of large components such as towers, nacelles, blades, or jackets."

at_site_support:
objects: []
requirements:
- propulsion
duration_h:
Hs_m:
description: "Transport of vessel around the site to provide support."

# --- Mooring & Anchors ---

install_anchor:
objects: [anchor, component]
requirements:
- storage-out
- anchor_overboarding
- anchor_lowering
- anchor_orienting
- anchor_embedding
- station_keeping
- monitoring_system
# - survey <-- typically done before installation?
duration_h:
Hs_m:
description: "Anchor installation (suction, driven, helical, DEA, SEPLA) with tensioning and verification."

retrieve_anchor:
objects: [anchor, component]
requirements:
- storage-in
- anchor_removal
- station_keeping
duration_h:
Hs_m:
description: "Anchor retrieval, including break-out and recovery to deck."


load_mooring:
objects: [mooring, component]
requirements:
- chain_storage-in
- rope_storage-in
- line_handling
- station_keeping
duration_h:
Hs_m:
description: "Load-out of mooring lines and components from port or vessel onto vessel."


lay_mooring:
objects: [mooring, component]
requirements:
- propulsion
- chain_storage-out
- rope_storage-out
- line_handling
- station_keeping
- subsea_connection
duration_h:
Hs_m:
description: "Laying mooring lines and connection to anchors."


mooring_hookup:
objects: [mooring, component, platform]
requirements:
- chain_storage # <-- what is this for?
- rope_storage # <-- what is this for?
- line_handling
- towing # <-- may want to tweak this to be a more generic term that includes bollard pull
- mooring_work
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Hook-up of mooring lines to floating platforms, including pretensioning."

# --- Heavy Lift & Installation ---

install_wec:
objects: [platform]
requirements:
- storage
- platform_handling
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Lifting, placement and securement of wave energy converters (WECs) onto moorings, including alignment, connection of power/data umbilicals and verification via ROV."

install_semisub:
objects: [platform]
requirements:
- storage
- lifting
#- pumping
- towing
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Wet tow arrival, station-keeping, ballasting/trim, mooring hookup and pretensioning, ROV verification and umbilical connections as needed."

install_spar:
objects: [platform]
requirements:
- storage
- lifting
#- pumping
- towing
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Arrival and upending via controlled ballasting, station-keeping, fairlead/messenger handling, mooring hookup and pretensioning with ROV confirmation. Heavy-lift support may be used during port integration."

install_tlp:
objects: [platform]
requirements:
- storage
- lifting
#- pumping
- towing
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Tendon porch alignment, tendon hookup, sequential tensioning to target pretension, verification of offsets/RAOs and ROV checks."

install_wtg:
objects: [turbine]
requirements:
- storage
- lifting
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Installation of wind turbine generator including tower, nacelle and blades."
# --- Cable Operations ---

lay_cable:
objects: [cable]
requirements:
- cable_storage-out
- cable_laying
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Laying static/dynamic power cables, including burial where required."

cable_hookup:
objects: [cable, component, platform]
requirements:
- cable_storage
- cable_handling
- towing
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Hook-up of cable to floating platforms, including pretensioning."

retrieve_cable:
objects: [cable]
requirements:
- cable_storage-in
- cable_handling
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Cable recovery operations, including cutting, grappling and retrieval."

# Lay and bury in a single pass using a plough
lay_and_bury_cable:
objects: [cable]
requirements:
- propulsion
- cable_storage
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Simultaneous lay and plough burial; continuous QA via positioning + MBES/SSS, with post-pass verification."

# Backfill trench or stabilize cable route using rock placement
backfill_rockdump:
objects: [cable]
requirements:
- storage
- propulsion
- station_keeping
- monitoring_system
- rock_placement
duration_h:
Hs_m:
description: "Localized rock placement to stabilize exposed cables, infill trenches or provide scour protection. Includes real-time positioning and sonar verification of rock placement."

# --- Survey & Monitoring ---

site_survey:
objects: []
requirements:
- survey
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Pre-installation site survey including bathymetry, sub-bottom profiling and positioning."

monitor_installation:
objects: [anchor, mooring, component, platform, cable]
requirements:
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Real-time monitoring of installation operations using ROV and sensor packages."

diver_support:
objects: []
requirements:
- survey
- station_keeping
- monitoring_system
duration_h:
Hs_m:
description: "Divers site survey including monitoring and positioning."
Loading
Loading