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,
- non-linear state estimation (work in progress),
- linear DC state estimation,
- linear state estimation with PMUs only (work in progress),
- least absolute value state estimation (only for the DC state estimation),
- optimal PMU placement,
- bad data processing (only for the DC state estimation).
Main Features
Features supported by JuliaGrid can be categorised into three main groups:
Power Flow - performs the AC and DC power flow analysis using the executive function
runpf(...)
;State Estimation - performs non-linear, DC and PMU state estimation using the executive function
runse(...)
, where measurement variances and sets can be changed (work in progress);Standalone Measurement Generator - generates a set of measurements according to the AC power flow analysis or predefined user data using the executive function
runmg(...)
.
Installation
JuliaGrid requires Julia 1.2 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
julia> results, system, info = runpf("dc", "case14.h5", "main", "flow")
julia> results, = runpf("nr", "case14.xlsx", "main"; max = 20, stop = 1.0e-8)
Quick Start Measurement Generator
julia> measurements, system, info = rungen("case14.h5"; pmuset = "optimal", pmuvariance = ["complete" 1e-5])
julia> measurements, = rungen("case14.h5"; legacyset = ["redundancy" 3.1], legacyvariance = ["complete" 1e-4])
Quick State Estimation (only DC)
julia> results = runse("case14.h5"; pmuset = "optimal", pmuvariance = ["all" 1e-5])
julia> results = rungen("case14.h5"; legacyset = ["redundancy" 3.1], legacyvariance = ["all" 1e-4])