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    #
    },
}