Skip to content

Commit 47eb99a

Browse files
committed
A lot of IRMA changes to get task asset assignment working:
Too many changes to detail, but key points are: Action class: - new Action.dependsOn method for easy dependency check. - expanded/adjusted Action.updateRequirements with more reqs and more consistent calcs. - expanded/adjusted Action.calcDurationAndCost with more actions and a more consistent approach to summing costs and durations. - Added Action.durations and .costs (with an s) to store itemized values. Requirements: - Added "direction" to storage-related reqs. +1 means loading, -1 unloading. - Added "selected_capacity" field to say which capacity will be used. - Added "assigned_asset" field to say which asset will be used to meet that capacity. Task class: - Task.act_sequence is the actions in sequence form (a list in order) - Added a bunch of logic in Task.init to figure out the overall requirements of the task considering all its actions. Currently only works for serial action sequences (no parallel actions). - Adjusted updateStartTime and renamed to setStartTime. - Added Task.chart, which is a slightly streamlined version of calwave_chart, as a Task method. - Added helper functions for processing dependencies, checking asset suitability, etc. imra.py example script: - Some temporary additions for computing general properties of Project class objects for use in IRMA. To be moved eventually. - Added some code to demo the asset assignment and make a Felipe-style plot. Edits to some YAMLs to get thigs working and deal with a couple outlier entries.
1 parent 1a05f4c commit 47eb99a

File tree

8 files changed

+1467
-161
lines changed

8 files changed

+1467
-161
lines changed

famodel/irma/action.py

Lines changed: 228 additions & 69 deletions
Large diffs are not rendered by default.

famodel/irma/actions.yaml

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
# Action requirements will be checked against vessel capabilities for evaluation and assignment.
77
#
88
# Old format: roles, which lists asset roles, each with associated required capabilities
9-
# New format: list of requirements
9+
# New format: list of requirements, with optional -in/-out suffix
1010

1111
# 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
1212

1313
### Example action ###
1414

1515
# example_action:
16-
# objects: [] or {} "The FAModel object types that are supported in this action"
16+
# objects: [] "The FAModel object types that are expected for this action"
1717
# requirements: [] "List of capability requirements that assets must meet to perform this action"
1818
# duration_h: 0.0 "Duration in hours"
1919
# Hs_m: 0.0 "Wave height constraints in meters"
@@ -39,14 +39,15 @@ demobilize:
3939

4040
load_cargo:
4141
objects: [anchor, mooring, cable, platform, component]
42+
# still have to figure out the aspect of loading from a port
4243
requirements:
43-
- chain_storage
44-
- rope_storage
44+
- chain_storage-in
45+
- rope_storage-in
4546
- line_handling
4647
- lifting
47-
- storage
48+
- storage-in
4849
- station_keeping
49-
- cable_storage
50+
- cable_storage-in
5051
- cable_handling
5152
duration_h:
5253
Hs_m:
@@ -80,7 +81,7 @@ transit_onsite_tug:
8081
objects: [anchor]
8182
requirements:
8283
- propulsion
83-
- bollard_pull
84+
- towing
8485
duration_h:
8586
description: "Tug + barge in-field move between site locations"
8687

@@ -89,7 +90,7 @@ tow:
8990
objects: [platform]
9091
requirements:
9192
- propulsion
92-
- bollard_pull
93+
- towing
9394
- station_keeping
9495
duration_h:
9596
Hs_m:
@@ -99,7 +100,6 @@ transport_components:
99100
objects: [component]
100101
requirements:
101102
- propulsion
102-
- bollard_pull
103103
- storage
104104
- lifting
105105
- station_keeping
@@ -120,22 +120,22 @@ at_site_support:
120120
install_anchor:
121121
objects: [anchor, component]
122122
requirements:
123-
- storage
123+
- storage-out
124124
- anchor_overboarding
125125
- anchor_lowering
126126
- anchor_orienting
127127
- anchor_embedding
128128
- station_keeping
129129
- monitoring_system
130-
- survey
130+
# - survey <-- typically done before installation?
131131
duration_h:
132132
Hs_m:
133133
description: "Anchor installation (suction, driven, helical, DEA, SEPLA) with tensioning and verification."
134134

135135
retrieve_anchor:
136136
objects: [anchor, component]
137137
requirements:
138-
- storage
138+
- storage-in
139139
- anchor_removal
140140
- station_keeping
141141
duration_h:
@@ -146,8 +146,8 @@ retrieve_anchor:
146146
load_mooring:
147147
objects: [mooring, component]
148148
requirements:
149-
- chain_storage
150-
- rope_storage
149+
- chain_storage-in
150+
- rope_storage-in
151151
- line_handling
152152
- station_keeping
153153
duration_h:
@@ -159,22 +159,23 @@ lay_mooring:
159159
objects: [mooring, component]
160160
requirements:
161161
- propulsion
162-
- bollard_pull
163-
- chain_storage
164-
- rope_storage
162+
- chain_storage-out
163+
- rope_storage-out
164+
- line_handling
165165
- station_keeping
166+
- subsea_connection
166167
duration_h:
167168
Hs_m:
168-
description: "Laying mooring lines, tensioning and connection to anchors and floaters."
169+
description: "Laying mooring lines and connection to anchors."
169170

170171

171172
mooring_hookup:
172173
objects: [mooring, component, platform]
173174
requirements:
174-
- chain_storage
175-
- rope_storage
175+
- chain_storage # <-- what is this for?
176+
- rope_storage # <-- what is this for?
176177
- line_handling
177-
- bollard_pull
178+
- towing # <-- may want to tweak this to be a more generic term that includes bollard pull
178179
- mooring_work
179180
- station_keeping
180181
- monitoring_system
@@ -201,7 +202,7 @@ install_semisub:
201202
- storage
202203
- lifting
203204
#- pumping
204-
- bollard_pull
205+
- towing
205206
- station_keeping
206207
- monitoring_system
207208
duration_h:
@@ -214,7 +215,7 @@ install_spar:
214215
- storage
215216
- lifting
216217
#- pumping
217-
- bollard_pull
218+
- towing
218219
- station_keeping
219220
- monitoring_system
220221
duration_h:
@@ -227,7 +228,7 @@ install_tlp:
227228
- storage
228229
- lifting
229230
#- pumping
230-
- bollard_pull
231+
- towing
231232
- station_keeping
232233
- monitoring_system
233234
duration_h:
@@ -249,7 +250,7 @@ install_wtg:
249250
lay_cable:
250251
objects: [cable]
251252
requirements:
252-
- cable_storage
253+
- cable_storage-out
253254
- cable_laying
254255
- station_keeping
255256
- monitoring_system
@@ -262,16 +263,17 @@ cable_hookup:
262263
requirements:
263264
- cable_storage
264265
- cable_handling
265-
- bollard_pull
266+
- towing
266267
- station_keeping
267268
- monitoring_system
268269
duration_h:
269270
Hs_m:
270271
description: "Hook-up of cable to floating platforms, including pretensioning."
272+
271273
retrieve_cable:
272274
objects: [cable]
273275
requirements:
274-
- cable_storage
276+
- cable_storage-in
275277
- cable_handling
276278
- station_keeping
277279
- monitoring_system

famodel/irma/capabilities.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ crane:
6060
# fields:
6161
capacity_t: # SWL at specified radius [t] <<< field description is non-sensical.
6262
hook_height_m: # max hook height [m]
63+
speed_mpm: # crane speed [m/s]
6364

6465
station_keeping_by_dynamic_positioning:
6566
# description: DP vessel capability for station keeping

0 commit comments

Comments
 (0)