Skip to main content

Z-tool

Z-tool is a Python-based implementation for the frequendy-domain stability analysis of modern power systems. The core functionalities are measurement/characterization of EMT models in the frequency domain and small-signal stability assessment. The analysis relies on an existing system model in the EMT simulation software PSCAD and/or input frequency response data.

The following features are currently implemented and validated:

  • Voltage perturbation-based admittance scan at several nodes, including converter-based systems and black-box components, via frequency_sweep
  • Stability assessment via Generalized Nyquist Criteria applicable to standalone-stable MIMO systems
  • Oscillation mode identification via closed-loop eigenvalue decomposition and bus participation factors, EVD
  • Passivity assessment and small gain theorem application
  • Sensitivity of the Nyquist loci with respect to the components' admittance via loci_sensitivity
  • Comprehensive stability analysis computing previous and other metrics via stability_analysis
  • Frame conversion functions, e.g. from dq-frame to alpha/beta-frame and to positive/negative sequence

The flowchart below summarizes a common usage of the tool for stability studies, including frequency-domain system identification (frequency_sweep) and several stability analysis functions (stability):

Tool flowchart Tool summary

Installation

To use the toolbox, the following pre-requisites are needed.

  1. Python 3.7 or higher together with
  2. PSCAD v5 or higher is recommended.
  3. Install the Z-tool via cmd py -m pip install ztoolacdc or using the repository files. Similarly, cmd py -m pip install ztoolacdc --upgrade updates the package.

Usage

A generic usage of the package can be summarized in the following steps:

  1. Add the Z-tool PSCAD library to your PSCAD project
  2. Place the tool's scan blocks at the target buses and name them uniquely
  3. Define the resulting connectivity of the scan blocks (only for multi-infeed analyses)
  4. Specify the basic simulation settings and frequency range for the study
  5. Run the frequency scan and small-signal stability analysis functions

Follow the example(s) described here for more guidance. More details on the approach and implemented functions can be found in the papers below and/or this webinar with the complementary slides. The GUI is currently under development.

Other features

  • Transfer function scan via the frequency_sweep_TF function, see the example here
  • Change of PSCAD component values for parametric studies, see the example here
  • Rational fitting via least-squares optimization with the mode_estimation function, see the example here
  • Alternative computation of participation factors, e.g. extended PFs via EVD
  • Singular value (sigmas) computation for the sensitivity and complementary sensitivity functions
  • Exploit the symmetric properties of the system to reduce the scan time (optional)
  • Base conversion for the analysis of systems with different voltage levels
  • PSCAD control arguments: disabling unnecessary outputs, clear temporary files, keep PSCAD open, retain certificate, etc.
  • Previous snapshots can be re-used to speed-up simulations
  • Snapshot simulation plots for a quick look into the initialization run

Citing Z-tool

If you find the Z-tool useful in your work, we kindly request that you cite the following publications, which you can freely access here and here.

@INPROCEEDINGS{Cifuentes2024,
  author={{Cifuentes Garcia}, Francisco Javier and Roose, Thomas and Sakinci, Özgür Can and Lee, Dongyeong and Dewangan, Lokesh and Avdiaj, Eros and Beerten, Jef},
  booktitle={2024 IEEE PES Innovative Smart Grid Technologies Europe (ISGT EUROPE)}, 
  title={Automated Frequency-Domain Small-Signal Stability Analysis of Electrical Energy Hubs}, 
  year={2024},
  pages={1-6},
  doi={10.1109/ISGTEUROPE62998.2024.10863484}}
@article{Cifuentes2025,
author = {Francisco Javier {Cifuentes Garcia} and Jef Beerten},
title = {Z-Tool: Frequency-domain characterization of EMT models for small-signal stability analysis},
journal = {Electric Power Systems Research},
volume = {252},
pages = {112405},
year = {2026},
doi = {https://doi.org/10.1016/j.epsr.2025.112405}}

Contact Details

For queries about the package or related work please feel free to reach out to Fransciso Javier Cifuentes Garcia. You can find more open-source tools for power systems analysis in the etch website.

License

This is a free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Z-tool is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

Contributors

  • Francisco Javier Cifuentes Garcia: Main developer
  • Thomas Roose: Initial stability analysis functions
  • Jeroen Tant, Jan Kircheis, Eros Avdiaj and Özgür Can Sakinci: Validation and support

Future work

  • Scans in split projects
  • Switch between current and voltage perturbation
  • Computation of stability margin

Metadata

Release files for ztoolacdc 0.1.51

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ztoolacdc 0.1.51
File Size Uploaded
ztoolacdc-0.1.51.tar.gz 135.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ztoolacdc 0.1.51
File Interpreter ABI Platform
ztoolacdc-0.1.51-py3-none-any.whl Python 3 none any Details

Total release size: 274.6 kB

Release files / ztoolacdc-0.1.51.tar.gz

Download URL ztoolacdc-0.1.51.tar.gz
Size 135.4 kB
Tags Source
SHA-256 checksum
How to use checksums
653f66306cdfb678908b753ca8f44b4b6d78c9a64727dd161a31d1439d8a71bf
BLAKE2b-256 checksum
How to use checksums
5b5b21cd4f0817b60ac1eb821135747088cb7db8689ff7d6fef638cc1d011bea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.14

Release files / ztoolacdc-0.1.51-py3-none-any.whl

Download URL ztoolacdc-0.1.51-py3-none-any.whl
Size 139.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b79ad2d0b64d07b3eb1e1b9c5179c482a5699ea47432b31b0dcb0021223a3c3b
BLAKE2b-256 checksum
How to use checksums
dfe8391fa5d060b8390fcf0bf8af1e193234df0a5e8275d8bc7c38602f925a5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.14

Release history Release notifications | RSS feed

0.1.52

2 release files

This release

0.1.51 This release

2 release files

0.1.50

2 release files

0.1.49

2 release files

0.1.48

2 release files

0.1.47

2 release files

0.1.46

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.16

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page