Skip to main content

ANDES

The dynamic simulation engine of the CURENT Large-scale Testbed

PyPI Conda Documentation License: GPL v3

ANDES is an open-source Python package for power system modeling and simulation. It supports power flow, time-domain simulation (transient stability), eigenvalue analysis, continuation power flow, and state estimation.

Quick Start

pip install andes       # or: conda install -c conda-forge andes
import andes

ss = andes.load("ieee14.raw", addfile="ieee14.dyr", setup=False)
ss.add("Fault", bus=2, tf=1.0, tc=1.1)       # three-phase bus fault
ss.setup()

ss.PFlow.run()                                # power flow
ss.TDS.run()                                  # time-domain simulation
ss.TDS.plt.plot(ss.GENROU.omega)              # plot generator speeds

Five lines from a PSS/E case file to a transient stability plot:

IEEE 14-bus transient simulation

What ANDES Provides

Five analysis routines. Power flow (Newton-Raphson), time-domain simulation (implicit trapezoidal), eigenvalue analysis, continuation power flow for voltage stability limits, and state estimation.

Eigenvalue map of the Kundur two-area system

Over 100 dynamic models. Synchronous generators (GENROU, GENCLS), turbine governors (TGOV1, IEEEG1, HYGOV), exciters (EXST1, ESST3A, SEXS, AC8B), stabilizers (IEEEST, ST2CUT), second-generation renewable models (REGCA1, REECA1, REPCA1, WTDTA1), distributed energy resources (PVD1, ESD1), and dynamic loads (ZIP, FLoad), with full implementation of limiters, saturation, and time constant zeroing.

PSS/E data compatibility. ANDES natively reads PSS/E RAW and DYR files, MATPOWER cases, and its own JSON and Excel formats. Once a dynamic model is implemented, its PSS/E DYR input is automatically supported.

Scripting and extensibility. Built for Python workflows: load cases, sweep parameters, modify topology, and extract results in NumPy arrays or Pandas DataFrames. A Gymnasium-compatible reinforcement learning environment is available for power system control research.

Performance. A 20-second transient simulation of a 2000-bus system completes in seconds on a typical desktop computer, with optional Numba JIT compilation.

Verification

ANDES has been verified against DSATools TSAT and Siemens PSS/E on standard test systems. The NPCC 140-bus case (GENROU, GENCLS, TGOV1, IEEEX1) produces results identical to TSAT. The WECC 179-bus case (GENROU, IEEEG1, EXST1, ESST3A, ESDC2A, IEEEST, ST2CUT) shows close agreement across all three tools.

NPCC 140-Bus (ANDES vs. TSAT) WECC 179-Bus (ANDES vs. TSAT vs. PSS/E)
NPCC WECC

Full verification notebooks with side-by-side comparisons are available in the documentation.

Symbolic Modeling Framework

Models in ANDES are defined as mathematical equations in Python. The framework automatically generates optimized numerical code, analytically derived Jacobian matrices, and LaTeX documentation from the same source. What you simulate is what you document.

The following is the complete implementation of the TGOV1 turbine governor. Reusable transfer function blocks (LagAntiWindup, LeadLag) and discrete components (limiters, deadbands) are provided in the ANDES library.

class TGOV1Model(TGBase):
    def __init__(self, system, config):
        TGBase.__init__(self, system, config)

        self.gain = ConstService(v_str='ue/R')

        self.pref = Algeb(v_str='tm0 * R',
                          e_str='pref0 * R - pref')
        self.wd = Algeb(v_str='0',
                        e_str='ue * (omega - wref) - wd')
        self.pd = Algeb(v_str='ue * tm0',
                        e_str='ue*(- wd + pref + paux) * gain - pd')

        self.LAG = LagAntiWindup(u=self.pd, K=1, T=self.T1,
                                 lower=self.VMIN, upper=self.VMAX)
        self.LL = LeadLag(u=self.LAG_y, T1=self.T2, T2=self.T3)

        self.pout.e_str = 'ue * (LL_y - Dt * wd) - pout'

ANDES generates documentation from this definition, including parameter tables, variable listings, and rendered equations:

Auto-generated model documentation for TGOV1

Application Gallery

The documentation includes worked examples covering:

  • Forced oscillation source localization
  • Critical clearing time sweeps
  • Low-inertia frequency response analysis
  • Reinforcement learning for oscillation damping
  • and others ...

Browse the full gallery at docs.andes.app.

Resources

Citing ANDES

If you use ANDES for research or consulting, please cite the following paper:

H. Cui, F. Li and K. Tomsovic, "Hybrid Symbolic-Numeric Framework for Power System Modeling and Analysis," IEEE Transactions on Power Systems, vol. 36, no. 2, pp. 1373-1384, March 2021, doi: 10.1109/TPWRS.2020.3017019.

Sponsors

ANDES was developed at the CURENT Engineering Research Center at the University of Tennessee, Knoxville, with support from the National Science Foundation (NSF Award EEC-1041877), the Department of Energy Office of Electricity, and the CURENT Industry Partnership Program.

CURENT

See contributors for the full list.

License

ANDES is licensed under the GPL v3 License.

Release files for andes 2.0.0

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

Source distribution (sdist)

Source distribution for andes 2.0.0
File Size Uploaded
andes-2.0.0.tar.gz 8.8 MB Details

Built distribution (wheel)

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

Total release size: 12.0 MB

Release files / andes-2.0.0.tar.gz

Download URL andes-2.0.0.tar.gz
Size 8.8 MB
Tags Source
SHA-256 checksum
How to use checksums
3292c44205b27867dd78da40539c79af8684c92850daa5b07e0221006ae1417e
BLAKE2b-256 checksum
How to use checksums
0449ba47e9224edd5495921dcb961fa87d2fbf5a6bc87ce47495235a64c145dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / andes-2.0.0-py3-none-any.whl

Download URL andes-2.0.0-py3-none-any.whl
Size 3.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
565db0ed16be87ad2d33df2717d13231b8b2452f1ec4e9d3978f79f659c88943
BLAKE2b-256 checksum
How to use checksums
c17fc364e4cf203875c8e438128a0f44ce9d8a7a55062f7dd02a2de9a0aa1100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.9.3

1 release file

1.9.2

1 release file

1.9.1

1 release file

1.9.0

1 release file

1.8.10

1 release file

1.8.9

1 release file

1.8.8

1 release file

1.8.7

1 release file

1.8.6

1 release file

1.8.5

1 release file

1.8.4

1 release file

1.8.3

1 release file

1.8.2

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.8

1 release file

1.7.7

1 release file

1.7.6

1 release file

1.7.5

1 release file

1.7.4

1 release file

1.7.3

1 release file

1.7.2

1 release file

1.7.1

1 release file

1.7.0

1 release file

1.6.6

1 release file

1.6.5

1 release file

1.6.4

1 release file

1.6.3

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6.0

1 release file

1.5.12

1 release file

1.5.11

1 release file

1.5.10

1 release file

1.5.9

1 release file

1.5.8

1 release file

1.5.6

1 release file

1.5.5

1 release file

1.5.4

1 release file

1.5.3

1 release file

1.5.2

1 release file

1.5.0

1 release file

1.4.4

1 release file

1.4.3

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.12

1 release file

1.3.11

1 release file

1.3.10

1 release file

1.3.9

1 release file

1.3.8

1 release file

1.3.6

1 release file

1.3.5

1 release file

1.3.4

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.9

1 release file

1.2.8

1 release file

1.2.7

1 release file

1.2.6

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.9.5

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.6.9

1 release file

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