RepresentativeLVNetworks.jl contains Julia and Python packages containing code and data outputs from CSIRO's National Low-Voltage Feeder Taxonomy (NLVFT) Study 2021, which performed clustering analysis of around 95000 low-voltage electrical distribution networks in Australia, and selected 23 'typical' networks. See the Final Report and ARENA Project Page for details of this analysis.
The main components of this repository are:
- The 23 representative LV networks, in OpenDSS format, in the data folder.
- A Julia package which heavily relies on OpenDSSDirect.jl, a Julia wrapper for OpenDSS's calculation engine. (OpenDSS is an electrical power distribution system simulation software application, developed by the US Electric Power Research Institute.)
- The Python package uses Ditto for OpenDSS reading, and provide some simple network rendering functionality and unit tests for visualising the representative networks selected by this work.
The low voltage feeder taxonomy test case data a.k.a. the representative networks, are stored in /data
and can be used straight away in OpenDSS. If you know how to use OpenDSS, you don't need to use
the Julia code or notebooks. For windows, you can download OpenDSS at https://www.epri.com/pages/sa/opendss. On mac/linux, you can access OpenDSS' engine through either Python or Julia wrappers:
Alternatively, you can explore the power flow results of the representative networks through Pluto.jl notebooks.
Pluto.jl is a Julia package that provides a convenient, user-friendly, interactive notebook user interface to Julia. The contents of the notebook files provide guided, step-by-step, examples of
OpenDSS analysis of the LVFT /data
files.
Example network render, see ./python-reader/output for html renders:
The Julia package contains:
- the national low voltage feeder taxonomy data set (in
/data
). - convenience functions for working with OpenDSSDirect.jl (in
src
) - Pluto.jl notebook files (in
notebooks
) that explore:- multiperiod unbalanced power flow (in
/notebooks/multiperiod.jl
) - multiperiod unbalanced power flow with PV (in
/notebooks/pvsystem.jl
) - multiperiod unbalanced power flow with storage (in
/notebooks/storage.jl
) - multiperiod unbalanced power flow with demand response through transformer tap changing (a.k.a. conservation voltage reduction) (in
/notebooks/cvr_load.jl
)
- multiperiod unbalanced power flow (in
The Python package contains example Python code for reading the Low Voltage Feeder Taxonomy representative network DSS files using Ditto, converting to NetworkX graphs and rendering to HTML/PNG, and calculating clustering metrics.
- See Python Readme in
./python-reader
subfolder for installation instructions.
We recommend using Visual studio code (an integrated development environment) to launch the notebooks, in combination with the long-term support Julia release (1.6). To this end, ensure that the OpenDSS software has been installed, and furthermore
Install:
- Visual studio code https://code.visualstudio.com/Download
- Julia 1.6 https://julialang.org/
Install the Julia plug-in for VSCode: https://www.julia-vscode.org/docs/dev/gettingstarted/#Installation-and-Configuration-1
Installation instructions for RepresentativeLVNetworks.jl
- Unzip the file downloaded from NEAR (http://linked.data.gov.au/dataset/energy/f325fb3c-2dcd-410c-97a8-e).
- Browser in VSCode to the root of the unzipped folder.
- Open a Julia terminal within VSCode. E.g. menu "view" -> "command pallete" and type "Julia start REPL". Press enter. This provides you with the Julia "REPL" green prompt julia>, see https://docs.julialang.org/en/v1/stdlib/REPL/
- If you type
pwd() [enter]
at thejulia>
prompt you should see the path of the unzipped folder. - type:
include("script/initial_setup.jl") [enter]
to set up the Julia environment needed to launch the RepresentativeLVNetworks package (other dependent packages). The establishment of the Julia environment may take some minutes. - To confirm the successful setup of the environment, typing
using Pkg; Pkg.status() [enter]
at thejulia>
prompt in the terminal window should return a) the Project name "RepresentativeLVNetworks" and version number b) the label "Status" followed by the path of aProject.toml
file, and c) a list of [8 hexadecimal digits within square braces], labels of installed packages, and version numbers.
Running the notebooks of RepresentativeLVNetworks.jl
- Open a Julia terminal within VSCode. E.g. menu "view" -> "command pallete" and type "Julia start REPL". Press enter.
- In the VSCode file browser, go to the
/notebooks
folder and choose a notebook to run, e.g.multiperiod.jl
(see section Package contents above) and right-click to "copy path". - Type:
include("script/pluto_launch.jl") [enter]
to launch Pluto.jl. This should launch a browser with a webpage stating "Welcome to Pluto". - In the 'open from file' text box, paste the copied notebook path and click 'open'. This will launch the selected notebook.
- Julia will now just-in-time compile a lot of code, which means you'll have to wait about 3 minutes before the notebook becomes interactive.
- Each notebook (
multiperiod.jl
,pvsystem.jl
,storage.jl
, andcvr_load.jl
) contains a dropdown box to select the network (a letter between A and W) and a button "generate figures". You need to press this button every time you change the network selection. This triggers the notebook to update the OpenDSS calculations and figures. In each notebook, there are sliders and tickboxes to finetune the simulation. Generally, you'll also need to press " generate figures" after any change of the sliders/tickboxes.
Figures are stored in data/csv_results
.
You can ask for generic Julia help on discourse (https://discourse.julialang.org/) The JuliaLang youtube channel also contains tutorials (https://www.youtube.com/c/TheJuliaLanguage)
This code is the result of a research project. See below for links to the final report and other publications describing it and its results.
If referencing this work, please cite as:
Geth, Frederik; Brinsmead, Thomas; West, Sam; Goldthorpe, Peter; Spak, Brian; Cross, Gavin; Braslavsky, Julio. National Low-Voltage Feeder Taxonomy Study. Newcastle: CSIRO; 2021. https://doi.org/10.25919/2tas-7213
This presentation covers the Challenges and opportunities of the digital electric grid and Lessons learnt from the CSIRO National Low-Voltage Feeder Taxonomy Study. The presentation focuses on the LVFT project context, aims and achievements, final report highlights, lessons learnt and future directions.
- Slides http://linked.data.gov.au/dataset/energy/15d42cd5-dc72-449a-9ff2-7a2561830233
- Video recording http://linked.data.gov.au/dataset/energy/1038ac62-633f-4234-9284-f7ea0ca2b22c
- This presentation explains the Low-Voltage representative models and notebooks that have been developed as part of the CSIRO Low-Voltage Feeder Taxonomy study.
- Video recording http://linked.data.gov.au/dataset/energy/1038ac62-633f-4234-9284-f7ea0ca2b22c
See LICENSE for this software's license terms. If using this software, you must abide by this license agreement.
For a list of licenses for libraries required by this code, see:
- Julia code: THIRD_PARTY_LICENSES.csv
- Python code: THIRD_PARTY_LICENSES.md
This work received funding from ARENA, the Australian Renewable Energy Agency. The views expressed herein are not necessarily the views of the Australian government, and the Australian government does not accept responsibility for any information or advice contained herein.
CSIRO contributors to this package include:
- Matt Amos
- Thomas Brinsmead
- Frederik Geth
- Rahmat Heidarihaei
- Sam West