JuliaGrid
JuliaGrid is an open-source, easy-to-use simulation tool/solver for researchers and educators provided as a Julia package, with source code released under MIT License. JuliaGrid is inspired by the Matpower, an open-source steady-state power system solver, and allows a variety of display and manipulation options.
The software package, among other things, includes:
- AC power flow analysis,
- DC power flow analysis,
- DC optimal power flow analysis,
- non-linear state estimation,
- linear DC state estimation,
- linear state estimation with PMUs,
- least absolute value state estimation,
- bad data processing,
- observability analysis,
- optimal PMU placement.
Main Features
Features supported by JuliaGrid can be categorised into four main groups:
Power Flow - executive function
runpf()
- performs the AC and DC power flow analysis,Optimal Power Flow - executive function
runopf()
- performs the DC and AC optimal power flow analysis,State Estimation - executive function
runse()
- performs non-linear, DC and PMU state estimation,Standalone Measurement Generator - executive function
runmg()
- generates a set of measurements.
Installation
JuliaGrid requires Julia 1.3 and higher. To install JuliaGrid package, run the following command:
pkg> add https://github.com/mcosovic/JuliaGrid.jl
To load the package, use the command:
julia> using JuliaGrid
Quick Start Power Flow
results, system, info = runpf("dc", "case14.h5", "main", "flow", "generation")
results, = runpf("nr", "case14.xlsx", "main"; max = 20, stop = 1.0e-8)
Quick Start Optimal Power Flow
results, system, info = runopf("case118.h5", "dc", "main", "flow", "generation")
Quick Start State Estimation
results, = runse("case14se.xlsx", "nonlinear", "main", "estimate"; start = "warm")
results, = runse("case30se.h5", "dc", "estimate"; bad = ["pass" 2 "threshold" 3.5])
results, = runse("case14se.xlsx", "pmu", "main", "estimate")
Quick Start Measurement Generator
measurements, system, info = runmg("case14.h5"; pmuset = "optimal", pmuvariance = ["complete" 1e-5])
measurements, = runmg("case14.h5"; legacyset = ["redundancy" 3.1], legacyvariance = ["complete" 1e-4])