MarinePowerDynamics.jl is a fork of PowerDynamics.jl commit (835e831) designed specifically for research on the grid integration of marine energy systems, especially grid-connected Wave Energy Converters (WECs).
This package extends the original PowerDynamics.jl by adding support for dynamic marine PTO (Power Take-Off) modeling based on external time-series data and by enabling new simulation workflows for realistic, time-driven co-simulation with mechanical WEC models such as those from WEC-SIM.
As marine renewable energy grows, it’s essential to study the dynamic impact of devices like WECs on power grids. The original PowerDynamics.jl provides a powerful framework for grid dynamic simulation but does not natively support marine PTO models or direct integration with external (e.g., WEC-SIM) time series.
MarinePowerDynamics.jl enables:
- Co-simulation of grid and WEC mechanical systems
- Importing external time-series (from WEC-SIM) for PTO nodes
- Realistic grid event simulation with time-step exposure at the node level
This work is based in part on research published in
A. Barajas-Ritchie, E. Cotilla-Sanchez, Saptarshi Bhattacharya, Diane Baldwin Stability Testing and Dynamic Simulation of Grid-Connected Wave Energy Converters,
This package is a fork of PowerDynamics.jl.
If you use this package in your research, please also cite the original PowerDynamics.jl paper (see below).
MarinePowerDynamics.jl introduces the LinearPTO node, supporting dynamic coupling between WEC-SIM simulations and the power grid.
-
a. Uses External Time-Series from WEC-SIM:
The LinearPTO node reads WEC mechanical state time-series (relative displacement & velocity) generated by WEC-SIM RM3 or similar models, allowing grid simulation with realistic wave energy profiles. -
b. Built on VSIMinimal Node Model:
The backbone of LinearPTO is the VSIMinimal grid-forming voltage source model, commonly used for inverter-based renewable integration. This ensures compatibility with standard grid simulation approaches. -
c. Uses Power Equations from WEC-SIM:
The LinearPTO equations and droop control logic are based on the mechanical-to-electrical PTO conversion as implemented in WEC-SIM, including- Force:
F_pto = -K_pto * X_rel - C_pto * V_rel - Power:
P_mech = F_pto * V_rel
Electrical power and per-unit conversion follows WEC-SIM methodology.
- Force:
-
a. Simulation Call (AbstractPerturbation.jl):
- Fixed time-step support for event-based grid studies (e.g., grid faults, step changes) where WEC/Mechanical and grid time integration must be synchronized.
- Exposes all relevant simulate signatures and error handling for marine PTO scenarios.
-
b. Time-step Exposed to Nodes:
- Nodes can now access the current simulation time-step.
- This is crucial for time-dependent (externally-driven) nodes like LinearPTO, enabling them to fetch the correct point from imported time-series.
-
c. Modified NodeMacro.jl:
- Adjusted macro logic to pass simulation time (
t) explicitly into node dynamics.
- Adjusted macro logic to pass simulation time (
If you're attempting to add this package to an existing Julia environment and encounter issues, try the following:
using Pkg
Pkg.activate(".") # from root directory of your environment or project
Pkg.develop(path="MarinePowerDynamics.jl") # may need to update this path based on your local setup
Pkg.add(PackageSpec(name="TimerOutputs", version="0.5.24")) # known dependency issue
Pkg.instantiate()
Pkg.precompile()