Papers
Topics
Authors
Recent
Search
2000 character limit reached

PowerSimulationsDynamics.jl Overview

Updated 12 July 2026
  • PowerSimulationsDynamics.jl is an open-source Julia toolbox for dynamic power system analysis that integrates DAE formulations with automatic linearization.
  • It offers modular device libraries for synchronous generators, inverters, and loads with interchangeable dynamic and algebraic models.
  • The toolbox supports flexible solver interfaces via DifferentialEquations.jl to enable high-fidelity dynamic simulations and small-signal stability analysis.

Searching arXiv for papers on PowerSimulationsDynamics.jl and closely related Julia power-system dynamics tools. PowerSimulationsDynamics.jl (PSID.jl) is an open-source, Julia-based simulation toolbox for the dynamic analysis of modern power systems, with a stated focus on systems featuring high penetrations of inverter-based resources (IBRs) (Lara et al., 2023). It is designed to study dynamic response in settings where conventional electromechanical models must coexist with fast control and electromagnetic dynamics introduced by converter-interfaced devices. The package combines a rich library of synchronous generator, inverter, and load models with differential-algebraic equation (DAE) formulations, automatic linearization, eigenvalue analysis, and flexible solver interfaces; case studies and validation exercises report close agreement with commercial and open-source simulation tools (Lara et al., 2023). Subsequent use in inverter-dominated grid studies has employed PSID to compare transmission line model fidelity, inverter control gains, and operating conditions on the IEEE WSCC 9-bus system, indicating that line dynamics are generally important for correctly assessing small-signal stability in networks with large penetrations of grid-following converters (Kravis et al., 2023).

1. Origins, scope, and research setting

PowerSimulationsDynamics.jl was presented as a response to the modeling requirements of modern power systems with high penetrations of IBRs (Lara et al., 2023). The motivating premise is that conventional renewable energy sources interfaced via power electronics introduce fast control and electromagnetic dynamics that traditional simulation tools often fail to capture efficiently or robustly. Within that framing, PSID.jl is positioned as a toolbox for dynamic response studies rather than only steady-state network analysis.

The package is implemented in Julia and is described as open-source, modular, and extensible at both the modeling and integration layers (Lara et al., 2023). The emphasis on Julia is tied in the source material to multiple dispatch, sparse and automatic differentiation support, and integration with the wider Julia scientific computing ecosystem. A documented design objective is the ability to study both quasi-static phasor and electromagnetic dq models in a common environment, including cases where both approaches are selectively mixed in the same simulation (Lara et al., 2023).

A useful contextual point is that PSID.jl belongs to a broader Julia-based power-systems ecosystem. The source material explicitly contrasts it with LITS.jl, another open-source Julia package for low-inertia transient simulation and small-signal analysis (Henriquez-Auba et al., 2020). It is also described as complementary to SyntheticPowerGrids.jl, which generates synthetic grid cases that can be exported upstream for time-domain simulation or stability analysis using PSID.jl (Büttner et al., 2023). This suggests a division of labor in which PSID.jl serves as a general dynamic simulation and modal-analysis engine once a system case has been assembled.

2. Modeling framework and mathematical formulation

PSID.jl represents the power system as a DAE system containing device states, network states, and parameters (Lara et al., 2023). The general formulation is given as

dxdt=F(x,y,η),x(t0)=x0\frac{d\vec{x}}{dt} = F(\vec{x}, \vec{y}, \vec{\eta}), \quad \vec{x}(t_0) = \vec{x}^0

dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^0

where x\vec{x} denotes device states, y\vec{y} network states, and η,ψ\vec{\eta}, \vec{\psi} parameters (Lara et al., 2023). In the application study on inverter-dominated grids, the same modeling logic is summarized as

[x˙ 0]=[f(x,y,u) g(x,y,u)],\begin{bmatrix} \dot{x}\ 0 \end{bmatrix} = \begin{bmatrix} f(x, y, u)\ g(x, y, u) \end{bmatrix},

with xx as dynamic states, yy as algebraic states, and uu as inputs (Kravis et al., 2023).

Two DAE realizations are explicitly supported. The first is a residual or semi-explicit formulation, written in the source as

dxddt=Fd(),0=Fa(),dyddt=Gd(),0=Ga()\frac{d\vec{x}_d}{dt} = F_d(\cdot), \quad 0 = F_a(\cdot), \quad \frac{d\vec{y}_d}{dt} = G_d(\cdot), \quad 0 = G_a(\cdot)

for index-1 DAE solvers (Lara et al., 2023). The second is a mass-matrix formulation,

dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^00

or, in device-network partitioned form,

dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^01

with the diagonal entries of dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^02 and dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^03 selectively zeroed to transform differential variables into algebraic ones (Lara et al., 2023). This selective switching is presented as important for problems arising from mechanical systems and for changing algebraic or dynamic status without restructuring the overall model.

Network equations are written in a dq reference frame, and the package uses a lumped parameter dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^04-model for transmission lines, allowing dynamic or algebraic modeling by branch as needed (Lara et al., 2023). The dynamic dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^05-model is represented through differential equations for branch currents and bus voltages in dq coordinates, while the toolbox also supports algebraic line representations. For loads, the source material gives dq-frame current calculations for ZIP models and states that static ZIP, exponential, and dynamic loads such as induction machines are available (Lara et al., 2023).

This mathematical structure is significant because it places device dynamics, network dynamics, and control laws in a single system representation suitable for implicit stiff integration, automatic Jacobian construction, and equilibrium-based linear analysis. A plausible implication is that PSID.jl was designed to avoid the separation between “phasor-level” and “electromagnetic-level” studies that often fragments toolchains in power-system dynamics.

3. Component libraries and model composition

PSID.jl features a rich library of synchronous generator, inverter, and load models (Lara et al., 2023). For synchronous generators, the source material cites standard machine models such as GENROU and Sauer-Pai, with modular sub-components for machine, excitation, governor, shaft, and power system stabilizer (Lara et al., 2023). This component-oriented organization aligns with a device being assembled from reusable submodels rather than treated as a monolithic block.

For inverter-based resources, the package supports both grid-following and grid-forming architectures (Lara et al., 2023). The documented component decomposition includes filter, converter, inner and outer control loops, frequency estimator such as a PLL, and primary energy source. Support for advanced controls such as Virtual Synchronous Machine (VSM) and droop controllers is explicitly noted (Lara et al., 2023). In the small-signal stability study on the IEEE WSCC 9-bus system, PSID.jl is used with synchronous machines, grid-forming inverters, and grid-following inverters within the same network model (Kravis et al., 2023).

The source material stresses extensibility through user-defined models. End-users can prototype and integrate User Defined Models by extending the meta-models, and adding new device, control, branch, or load models is described as straightforward through Julia’s multiple dispatch and by implementing an appropriate device! method for the relevant type (Lara et al., 2023). This is presented as a core design property rather than an auxiliary feature.

The package’s network representation is also treated as compositional. Transmission lines can be modeled algebraically or dynamically by branch, and line/capacitance dynamics can be selectively included (Lara et al., 2023). In the inverter-dominated grid study, PSID enables switching among an algebraic dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^06 model (statpi), a dynamic dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^07 model (dynpi), and a Multi-Segment Single-Branch dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^08 model (MSSB) (Kravis et al., 2023). That study further states that physical parameter values for these line models are derived through vector fitting and frequency-dependent modeling based on real transmission line data.

4. Numerical methods, initialization, and analysis capabilities

A central feature of PSID.jl is the decoupled solver interface via DifferentialEquations.jl, which permits the use of adaptive stiff and implicit solvers including BDF, Rosenbrock, Radau, and Rodas methods (Lara et al., 2023). The source material emphasizes that IBRs and transmission circuits create stiff and multi-rate systems, so solver choice, integration step-size, and error control are integral parts of the workflow rather than implementation details. Automatic differentiation via ForwardDiff.jl is used for efficient Jacobian evaluation, especially for large, stiff nonlinear DAE systems and for Newton-type methods (Lara et al., 2023).

Initialization is treated as a first-class problem. PSID.jl includes device- and system-level initialization routines that find consistent steady-state operating points for arbitrary combinations of models (Lara et al., 2023). This capability is necessary both for transient simulation and for subsequent linearization. The same source describes flexible event and perturbation logic using solver callbacks, with examples such as faults, line trips, and step changes (Lara et al., 2023).

Small-signal analysis is built in. After solving the nonlinear DAE to steady state, PSID.jl can linearize the model at the equilibrium and perform eigenvalue analysis using reduced Jacobians that eliminate algebraic variables (Lara et al., 2023). In the 9-bus inverter-dominated study, the analysis workflow is described more explicitly: for each parameter combination, line model, and scenario, PSID solves for the steady state dydt=G(x,y,ψ),y(t0)=y0\frac{d\vec{y}}{dt} = G(\vec{x}, \vec{y}, \vec{\psi}), \quad \vec{y}(t_0) = \vec{y}^09, linearizes the DAE system around the computed equilibrium, forms the Jacobian x\vec{x}0, and computes eigenvalues of the reduced Jacobian (Kravis et al., 2023). Stability is then inferred from whether eigenvalues lie in the right-half plane or left-half plane, and the real part of the most positive eigenvalue is recorded as the least stable mode (Kravis et al., 2023).

The package also supports participation analysis. In the same study, boxplots and participation factor analyses are used to identify the parameters and model choices most critical to stability (Kravis et al., 2023). Taken together, these features indicate that PSID.jl is not confined to time-domain simulation; it also supports equilibrium computation, modal analysis, and systematic parameter exploration in a unified environment.

5. Validation and reported case studies

The principal validation paper reports several benchmark studies (Lara et al., 2023). In a large-scale quasi-static phasor case based on a roughly 240-bus WECC system, the model contained 2420 dynamic states and 506 algebraic states, with comparisons against PSS®E across 329 line trips and 195 generator trips, amounting to 311,780 individual trace comparisons (Lara et al., 2023). The reported maximum root-mean-square errors were x\vec{x}1 pu for voltage, x\vec{x}2 for angle, and x\vec{x}3 pu for speed (Lara et al., 2023).

A second validation study compared balanced dq-EMT simulation against PSCAD on a system with synchronous machines and IBRs, including droop and grid-following controls and dynamic line and load models (Lara et al., 2023). The reported result was near-identical voltage and power trajectories, with a maximum voltage RMSE of x\vec{x}4 pu, while the source states that PSID.jl simulated far faster, in seconds rather than many hours for PSCAD at similar fidelity (Lara et al., 2023).

For small-signal analysis, PSID.jl’s linearization and eigenvalue calculations were validated against ANDES and commercial packages such as DSATools SSAT, with negligible differences and a typical RMSE in eigenvalues of x\vec{x}5 (Lara et al., 2023). The same paper also reports comparisons among multiple stiff and implicit integrators for QSP and EMT systems, noting that Rosenbrock methods excelled for stiff EMT problems (Lara et al., 2023).

The application paper on inverter-dominated grids supplies an example of PSID.jl as a research platform rather than solely a validation target (Kravis et al., 2023). It uses the IEEE WSCC 9-bus test system, modified to include synchronous machines, grid-forming inverters, and grid-following inverters, under operating scenarios where inverters supply a high (x\vec{x}6) or very high (x\vec{x}7) share of total active power (Kravis et al., 2023). For grid-forming Virtual Synchronous Machine controls, the study varies parameters including the inertia time constant x\vec{x}8, damping coefficient x\vec{x}9 p.u., reactive power droop gain y\vec{y}0 p.u., and inner-loop PI gains within listed ranges; engineering constraints reduce the gain space to 7,000 possible combinations, from which 1,000 samples are randomly chosen for analysis (Kravis et al., 2023).

6. Use in inverter-dominated and synthetic-grid research

In the 9-bus small-signal stability study, PSID.jl is used to assess how inverter control gains, transmission line model fidelity, and operating conditions affect system stability (Kravis et al., 2023). The reported findings are that line model fidelity significantly impacts small-signal stability predictions, especially under high grid-following inverter share, and that dynamic or multi-segment line models can reveal stabilization not shown by algebraic y\vec{y}1 models (Kravis et al., 2023). The study also reports that heavier loads and greater inverter penetration reduce robustness unless gains are carefully tuned, and that among the VSM outer-loop gains, sensitivity is greatest with reactive power droop gain y\vec{y}2 (Kravis et al., 2023). The paper’s abstract states the principal conclusion more narrowly: line dynamics are generally important for correctly assessing small-signal stability in networks with large penetrations of grid-following converters, and gain tuning in these networks should utilize high-fidelity line models (Kravis et al., 2023).

This use case is important because it demonstrates PSID.jl as a platform for high-dimensional parametric analysis. The same study attributes feasibility to automated linearization, eigenanalysis, and batch processing across parameter sets, line models, and operating scenarios (Kravis et al., 2023). A plausible implication is that PSID.jl is particularly suited to studies in which modeling assumptions themselves are part of the experiment.

The package is also described as complementary to SyntheticPowerGrids.jl, a modular framework for generating synthetic power grids with realistic dynamical behavior (Büttner et al., 2023). That framework can generate and validate large sets of synthetic grids and can output models in compatible formats; the source explicitly states that it can be integrated upstream of PowerSimulationsDynamics.jl or PowerModels.jl so that diverse synthetic cases are automatically generated and then exported for time-domain simulation, stability analysis, or optimal control studies (Büttner et al., 2023). This suggests a broader methodological pipeline in which PSID.jl functions as the downstream dynamics and analysis engine for data-rich scenario generation.

A related comparison arises with LITS.jl, which is described as another open-source Julia package for transient simulation of low-inertia power systems with a strong emphasis on component-level model composition and rapid prototyping (Henriquez-Auba et al., 2020). The comparison source states that PSID.jl also supports DAEs and model composition, but that design philosophies differ, with LITS.jl especially optimized for low-inertia-centric studies and granular control at the component level (Henriquez-Auba et al., 2020). This suggests that PSID.jl occupies a general-purpose role for modern dynamic studies, whereas LITS.jl targets a more specialized prototyping niche.

7. Design characteristics, advantages, and interpretive cautions

Several design characteristics are repeatedly emphasized in the source material: openness and modularity, algorithm-model decoupling, an IBR-centric orientation, uniform dq network representation, performance and scalability in Julia, and integrated automatic-differentiation-based linearization and modal analysis (Lara et al., 2023). The package is explicitly contrasted with commercial tools such as PSS®E, DSATools, and PSCAD on the grounds that PSID.jl is fully open-source, highly modular, and extensible at both the model and solver level, while also supporting user-defined models and fine control over inverter modeling detail (Lara et al., 2023).

The most specific advantages claimed in the validation paper concern flexibility and solver choice. Models and solver routines are described as decoupled, allowing experimentation with different DAE formulations, time discretizations, and solver approaches on the same system (Lara et al., 2023). In practical terms, the package is said to support rapid scripting for customized scenarios, initialization, event handling, and automated analysis, with internal caches that pre-allocate and index state spaces efficiently for large systems, implicit solvers, and automatic differentiation (Lara et al., 2023).

At the same time, the application paper on inverter-dominated grids indicates an interpretive caution that is intrinsic to PSID.jl’s use: conclusions can depend materially on network model fidelity and operating scenario selection (Kravis et al., 2023). In that study, algebraic and dynamic line representations do not merely alter numerical detail; they can change the assessed small-signal stability boundary. This does not constitute a limitation unique to PSID.jl, but it does underscore that the package’s flexibility makes modeling choices experimentally consequential rather than incidental.

Taken together, the cited work presents PowerSimulationsDynamics.jl as a research-oriented power-system dynamics environment that combines DAE-based transient simulation, quasi-static phasor and dq-EMT modeling, automatic linearization, eigenanalysis, and extensible device composition in Julia (Lara et al., 2023). Its documented use in inverter-dominated grid studies and its integration with adjacent Julia tools for synthetic-grid generation suggest a role as a general analysis platform for contemporary questions in low-inertia and converter-rich power systems (Kravis et al., 2023, Büttner et al., 2023).

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to PowerSimulationsDynamics.jl.