Skip to main content

pecblocks: Generalized block diagram modeling of power electronic converters for grid solar and storage applications.

Project description

pecblocks

Power Electronic Converter Blocks (pecblocks) use the output of detailed electromagnetic transient (EMT) simulations to produce generalized block diagram models of power electronic systems. The process uses deep learning with customized block architectures. The outputs are reduced-order models that meet specified accuracy requirements, while providing important advantages over the original EMT models:

  • Converter Block models have fewer nodes and can take longer time steps, resulting in shorter simulation times
  • Converter Block models are continuously differentiable, making them compatible with control design methods

Models will run in both time domain and frequency domain. The scope includes not only the power electronic converter, but also the photovoltaic (PV) array, maximum power point tracking (MPPT), phase-lock loop (PLL) control, output filter circuits, battery storage if present, etc. The applications include but may not be limited to solar power inverters, energy storage converters, motor drives, and other power electronics equipment.

User Instructions

See ReadTheDocs Manual

Developer Instructions

Familiarity with Python, git and sphinx is expected. The developer may need credentials for this project on GitHub, ReadTheDocs, and/or PyPi. The application program interface (API) and the schema for JSON files are documented in the ReadTheDocs Manual.

Python 3.7.6 and later have been used for testing. From a command prompt in this directory, Install the necessary Python modules with:

  • git clone https://github.com/pnnl/pecblocks.git
  • cd pecblocks
  • pip install -r requirements.txt
  • pip install -e .

The project on ReadTheDocs will re-build automatically upon commits to the git repository. To build and run the documentation locally:

  • Change to the docs subdirectory of your git clone
  • The first time only, invoke pip install -r requirements.txt --upgrade-strategy only-if-needed
  • make html
  • From a browser, open the file docs\_build\html\index.html from the directory of your git clone

To deploy the project on PyPi, staring in the directory of your git clone, where setup.py is located:

  • Make sure that the version number in setup.cfg and src\pecblocks\version.py is new.
  • Invoke build_package.bat on Windows. This copies quick-start examples into the source tree, and does the following steps:
    • Invoke rd /s /q dist on Windows (would be rm -rf dist on Linux or Mac OS X)
    • python -m build
    • twine check dist/* should not show any errors
  • twine upload -r testpypi dist/* requires project credentials for pecblocks on test.pypi.org (Note: this will reject if version already exists, also note that testpypi is a separate register to pypi)
  • pip install -i https://test.pypi.org/simple/ pecblocks==0.0.3 for local testing of the deployable package, example version 0.0.3 (Note: consider doing this in a separate Python test environment)
  • twine upload dist/* for final deployment

If this doesn't work, some preparatory steps may be required:

  • Invoke pip install build and pip install twine if necessary
  • Project credentials are required for pecblocks on pypi.org. If 2-Factor-Authentication is enabled an API token needs to be used.

Directories

  • data contains the training data used in project publications and examples
  • docs contains the source files for user documentation
  • examples contains the end-user scripts and configuration files to run various examples
  • src contains the Python package code to be deployed on PyPi

In the examples subdirectory:

  • data_prep processes ATP, lab, and newer Simscape outputs into a format form pecblocks
  • dev contains archived examples, scripts, and models for developing the deployable package, and investigating Thevenin vs. Norton model sensitivity (no longer actively used)
  • dll contains C/C++ and Python code for standalone evaluation of HWPV models in continuous time domain, using Backward Euler integration
  • ex1 contains the first examples of inverter subsystem models (no longer actively used)
  • helics contains a co-simulation example with Python federates
  • hwpv contains the primary examples from project publications
  • initialization was used to develop better initialization of the linear H1 block (no longer actively used).
  • lcl uses phasor arithmetic to calculate voltages and currents at the inverter bridge terminals, from voltages and currents at the PCC. But this is an acausal operation, not good for control design. (no longer actively used)
  • media contains graphics of training data sets and output comparisons.
  • pv1 contains single-phase inverter modeling code, later incorporated into the generalized package for deployment (no longer actively used)
  • sdomain contains a lightweight model evaluation test for Raspberry Pi, using numpy but not torch
  • simscape processes MATLAB/Simscape outputs into a format for pecblocks (no longer actively used)
  • training downloader and configuration for a quick-start example

License

See License

Notice

This material was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the United States Department of Energy, nor Battelle, nor any of their employees, nor any jurisdiction or organization that has cooperated in the development of these materials, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness or any information, apparatus, product, software, or process disclosed, or represents that its use would not infringe privately owned rights. Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or any agency thereof, or Battelle Memorial Institute. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof.

PACIFIC NORTHWEST NATIONAL LABORATORY
            operated by
             BATTELLE
             for the
 UNITED STATES DEPARTMENT OF ENERGY
  under Contract DE-AC05-76RL01830

Copyright 2021-2024, Battelle Memorial Institute

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pecblocks-0.0.4.tar.gz (93.9 kB view details)

Uploaded Source

Built Distribution

pecblocks-0.0.4-py2.py3-none-any.whl (35.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pecblocks-0.0.4.tar.gz.

File metadata

  • Download URL: pecblocks-0.0.4.tar.gz
  • Upload date:
  • Size: 93.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.4

File hashes

Hashes for pecblocks-0.0.4.tar.gz
Algorithm Hash digest
SHA256 3c6e768b06f27379447581607a720a91798564690fad69b625019ec2b032d3ae
MD5 d1062c67beb3a24c312b51e611216b2f
BLAKE2b-256 550a43d222fb5317be0e612ae3072301d75f046007ab078dace404b55b659eda

See more details on using hashes here.

File details

Details for the file pecblocks-0.0.4-py2.py3-none-any.whl.

File metadata

  • Download URL: pecblocks-0.0.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.4

File hashes

Hashes for pecblocks-0.0.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5bed20b53b861ee58c4c2962b9765dc5277396882283009ce1788a224b9746a4
MD5 a88509e99bab82553d6b9a01e0637fd2
BLAKE2b-256 dbb7128b6611af633bbad874cc9d55aee7b937fa551ad1ba475b202ada1e7eda

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page