ORIOM (Offshore Renewables Installation and O&M) is an open-code Python-based modelling tool developed by WavEC Offshore Renewables to simulate and assess installation and operations & maintenance (O&M) logistics and costs for offshore renewable energy projects, including (but not limited to) fixed-bottom offshore wind, floating wind, wave energy, and floating solar.
ORIOM supports scenario-based simulation of:
- Scheduling and operational sequencing
- Marine spread definition and vessel utilisation (including vessel logs)
- Port logistics, mobilisation, and demobilisation assumptions
- Cost build-up and aggregated project KPIs
ORIOM has been developed and used over multiple years in WavEC R&D projects and consulting activities and is published primarily to improve transparency, peer review, and reproducibility of published analyses.
If you use ORIOM in academic work, reports, or benchmarking studies, please cite it as:
WavEC Offshore Renewables, ORIOM — Offshore Renewables Installation and O&M, 2026. (Please include repository URL and the version/tag used.)
ORIOM is made available under the PolyForm Shield License 1.0.0 (see LICENCE).
- You may use, modify, and redistribute ORIOM for purposes that do not compete with WavEC Offshore Renewables.
- You may not use ORIOM to provide products or services that compete with WavEC’s line of business (see
LICENCEfor the governing definition of “compete”). - Use of the Software for AI/ML training is prohibited without a separate written licence (see
LICENCE).
If you are unsure whether a planned use competes, contact us: oriom@wavec.org.
Examples of uses that are typically compatible (non-competing):
- Academic research (MSc/PhD work, open-access publications)
- Teaching and internal training
- Internal evaluation, benchmarking, or decision support within an organisation, where results are not offered as a competing external service/product
Examples of uses that are typically competing and therefore not permitted without a separate agreement:
- Providing third-party consulting, planning, optimisation, or design verification services based on ORIOM
- Packaging ORIOM into a product/SaaS offering offered to third parties in a competing market
This section is non-binding guidance. The LICENCE file governs.
Simulates an installation campaign by representing installable devices as deferred “events” to be executed using a constrained set of available vessels.
Supports sensitivity studies through:
- Failure-rate scaling
- Bathtub-shaped failure distributions
- Monthly failure distribution scenarios
Optional configuration to apply different port distances to subsets of vessel types.
Automated tests are provided to cover key features and regression behaviour.
Contributions are welcome, but subject to review and approval by WavEC Offshore Renewables. ORIOM is published primarily for transparency and reproducibility and is not operated as a community-driven open-source project.
- Bug fixes and robustness improvements
- Documentation and examples
- Tests and reproducibility improvements
- Performance improvements that do not change model intent
- Open an issue describing the problem and the proposed approach (or email us for sensitive topics).
- If the change is in scope, submit a pull request referencing the issue.
By submitting a pull request, you confirm that:
- you have the right to submit the code (no third-party code with incompatible terms); and
- you grant WavEC Offshore Renewables the right to use, modify, and redistribute your contribution as part of ORIOM under the repository’s licence (PolyForm Shield License 1.0.0).
If your employer or institution requires a separate contributor agreement, contact us first: oriom@wavec.org.
We may not be able to respond to every request. Unapproved pull requests may be closed without merging.
- Python 3.10 - tested
- Git
Using SSH:
git clone git@github.com:WavEC-Offshore-Renewables/oriom.gitOr HTTPS:
git clone https://github.com/WavEC-Offshore-Renewables/oriom.gitThen:
cd oriomCreate:
python -m virtualenv venvActivate:
- Windows (PowerShell):
.\venv\Scripts\Activate.ps1- Windows (cmd):
venv\Scripts\activate.bat- Linux/macOS:
source venv/bin/activateUpgrade pip:
python -m pip install --upgrade pipInstall dependencies and install the package in editable mode:
python -m pip install -r requirements.txt
python -m pip install -e .Run:
python>>> from oriom.test import test
>>> test()
ORIOM
Hello from ORIOM by WavEC - Offshore RenewablesORIOM is currently run via repository entry points (e.g., main.py or the oriom.main module). The key requirement is to point the configuration to your Excel input file.
In main.py, update the configuration (lines 72-86) so that:
EXCEL_FILE_PATHpoints to the directory containing your Excel input fileFORM_NAMEmatches the Excel filename
Example:
DEFAULT_CONFIG = ConfigRun(
STATISTICAL_CHART=True,
DIFF_DISTANCE=True,
DIFF_KM_DISTANCE=5,
KM_MOTHER_VESSEL=5,
VESSEL_DIST_REDUCED_LIST=['ctv', 'sv'],
FUEL_TO_ADD={},
MOBILISATION_TO_ADD={},
ENERGY_AVAILABILITY_CALCULATION=True,
ENERGY_STATISTICAL_CALCULATION=False,
PROJECT_NAME='TEST_TO_USE',
BASEFILES_FROM_EXCEL=False,
EXCEL_FILE_PATH=r'C:\Users\<USER>\...\oriom\tests\test_files\test_end_to_end',
SOURCE_PATH_SHAREPOINT='',
FORM_NAME='form_v8_test.xlsx',
TIME_FAIL_OP_IMMEDIATELY=0.02,
)From the repository root:
python main.pyOr as a module:
python -m oriom.mainAvoid printing directly to the console; use Python’s logging module:
import logging
logging.warning('Watch out!')
logging.info('FYI: ...')Logging is configured at DEBUG level. The log file is written under:
./tmp/run_[YYYYMMDD_HHMMSS]/logging.log
This repository can generate HTML documentation with Sphinx.
Install documentation dependencies:
python -m pip install sphinx sphinx-rtd-themeGenerate API stubs and build HTML docs:
sphinx-apidoc -f -e -o docs/source/_api ./src/oriom src/oriom/main.py
sphinx-build -b html docs/source/ docs/build/htmlIf you have make available in your system, you can run:
make documentation_buildOpen:
All newly added code must include corresponding unit tests. As a minimum quality requirement, only branches with 80% test coverage or higher will be considered.
Using unittest:
python -m unittestUsing pytest:
python -m pip install pytest
python -m pytest -qInstall coverage:
python -m pip install coverageRun tests with coverage:
python -m coverage run --source=oriom -m pytest -q
python -m coverage reportIf you have make available in your system, you can run:
make testFor commercial licencing and collaboration enquiries:
WavEC – Offshore Renewables oriom@wavec.org