Design Modules
There are two types of modules within ORBIT, design and installation.
Installation modules require a number of inputs, setup a simulation and
model the installation of offshore wind components. Alternatively, design
modules model the design of an offshore wind components and can produce inputs.
Within the context of ProjectManager
, a design module can remove inputs from
the required configuration for a project. The following example will illustrate
this feature and how it is used within ProjectManager
.
Warning
Design phase modules in ORBIT are intended to capture broad scaling trends for offshore wind components and do not represent the required fidelity of a full engineering design.
Example
Consider a simple project with one monopile installation phase:
from ORBIT import ProjectManager
phases = [
"MonopileInstallation", # Monopile installation with one vessel
]
required_config = ProjectManager.compile_input_dict(phases)
required_config
>>>
{
'wtiv': 'dict | str',
'site': {'depth': 'float','distance': 'float'},
'plant': {'num_turbines': 'int'},
'turbine': {'hub_height': 'float'},
'port': {
'num_cranes': 'int',
'monthly_rate': 'float',
'name': 'str (optional)'
},
'monopile': {
'type': 'Monopile',
'length': 'float',
'diameter': 'float',
'deck_space': 'float',
'mass': 'float'
},
'transition_piece': {
'type': 'Transition Piece',
'deck_space': 'float',
'mass': 'float'
},
'design_phases': [],
'install_phases': ['MonopileInstallation']
}
In the required configuration for the above project, the user must fill in a
'monopile'
sub dictionary. Alternatively, a MonopileDesign
phase could
be included in the phase list. This additional phase would effectively fill in
the 'monopile'
sub dictionary for the user:
...
phases = [
"MonopileDesign", # Basic monopile sizing based on turbine size and site
"MonopileInstallation", # Monopile installation with one vessel
]
required_config = ProjectManager.compile_input_dict(phases)
required_config
>>>
{
...
'turbine': {
'hub_height': 'float',
'rotor_diameter': 'float', # <-- Additional input from MonopileDesign
'rated_windspeed': 'float'
},
...
# <-- 'monopile' no longer required
'monopile_design': {
'design_time': 'float (optional)',
...
},
'design_phases': ['MonopileDesign'],
'install_phases': ['MonopileInstallation']
}
Note
There may be additional inputs required for a design phase. In this example,
additional site level information (eg. turbine.rotor_diameter
) is added
to the required configuration when the MonopileDesign
phase is added to
the phase list.
Overriding Values from a Design Phase
In the example above, the MonopileDesign
phase will produce the input
parameters 'monopile'
and 'transition_piece'
. It is also possible to
supply some of the values for these designs if known and let MonopileDesign
fill in the rest. For example, if the user knows the dimensions of the monopile
but not the transition piece, the 'monopile'
dictionary can be added to the
project config above:
config {
'turbine': {
'hub_height': 130,
'rotor_diameter': 154, # <-- Additional input from MonopileDesign
'rated_windspeed': 11
},
'monopile': { # <-- 'monopile' isn't required but can be
'type': 'Monopile', # added to include known project parameters.
'mass': 800, # Other inputs produced by MonopileDesign will
'length': 100 # be added to the config.
},
...
'monopile_design': {
'design_time': 'float (optional)',
...
},
'design_phases': ['MonopileDesign'],
'install_phases': ['MonopileInstallation']
}
project = ProjectManager(config)
project.run()
project.config
>>>
{
...
'monopile': {
'type': 'Monopile',
'mass': 800,
'length': 100,
'diameter': 8.512, # <-- Additional inputs added by MonopileDesign
'deck_space': 36.245 #
},
}