𧬠EMT Small-Signal stability: Floquet analysisο
EMT Small-Signal stability analysis studies whether small perturbations grow or decay around a periodic steady-state trajectory. VeraGrid performs this assessment with Floquet theory.
This distinction is fundamental. In RMS Small-Signal analysis, the operating point is normally a constant equilibrium in phasor or rotating-frame variables. In phase-domain EMT simulation, a healthy AC steady state is not constant: the instantaneous voltages, currents, fluxes, and many controller signals repeat in time. The object being linearized is therefore a closed periodic orbit, also called a limit cycle, rather than one fixed point.
An intuitive way to view the method is:
Follow the settled EMT waveform for one complete repeat period.
Add an infinitesimal perturbation at the beginning of that period.
Propagate the perturbation through the same complete period.
Measure whether it is smaller or larger when the waveform returns to the same phase of its cycle.
The one-period linear map is the monodromy operator. Its eigenvalues are the Floquet multipliers.
Important
VeraGrid captures one complete period from the end of the EMT settling simulation. That entire captured period must already be in periodic steady state. If amplitude, phase, controller states, DC voltage, speed, or any other slow quantity is still drifting, the segment is not a valid periodic orbit and its multipliers must not be interpreted as Floquet stability results.
Use RMS Small-Signal stability for modal analysis around an RMS equilibrium. Use EMT simulations for the underlying waveform-domain workflow.
Why ordinary eigenvalue analysis is not enoughο
For an autonomous or time-invariant model at an equilibrium , Small-Signal analysis linearizes once:
The eigenvalues of the constant matrix determine local stability. This is the familiar RMS picture.
For an EMT model in instantaneous phase coordinates, the steady-state trajectory normally satisfies
and the linearized matrix changes along the waveform:
A Jacobian evaluated at one arbitrary waveform sample describes only that instant. It does not include what the perturbation experiences during the remaining phase angles, switching configurations, saturations, or periodically varying control conditions. Floquet analysis resolves this by propagating the perturbation around the whole period.
When to use Floquet analysisο
Use EMT Floquet analysis when:
the model must remain in instantaneous phase or waveform coordinates;
the normal operating condition is periodic rather than constant;
unbalance, harmonic coupling, converter controls, filters, or switching behavior are relevant;
the objective is the local stability of a settled EMT operating trajectory;
the important modes cannot be represented reliably by an RMS equilibrium model.
Typical applications include converter-grid interactions, phase-domain machine and network models, weak-grid control interactions, periodically switched systems, and comparisons between RMS and EMT modal behavior.
Floquet analysis is not a replacement for a nonlinear EMT disturbance study. It answers what happens to infinitesimal perturbations around one periodic orbit. Fault clearing, protection sequences, large reference steps, current limiting, topology changes, and transitions between operating modes still require time-domain simulation.
VeraGrid workflowο
The complete workflow is:
Build the grid and assign valid EMT models.
Solve the balanced or three-phase power flow used to initialize the EMT problem.
Run an ordinary EMT simulation long enough to verify that the intended periodic steady state is reached.
Determine the full repeat period
of that trajectory.
Choose an EMT time step
that divides
into an integer number of steps.
Set
ss_assessment_timelong enough for all startup transients to decay.Run
SmallSignalStabilityEmtDriver.Inspect multiplier magnitudes, Floquet exponents, damping, frequencies, participation factors, and numerical sensitivity.
In the GUI, the EMT Small-Signal command requires an available three-phase power-flow result. The scripting driver accepts either PowerFlowResults or PowerFlowResults3Ph.
The captured period is the operating pointο
What the driver capturesο
The current driver:
simulates the EMT DAE from
to
ss_assessment_timewithStructuralVectorizedSolver;computes the number of samples as
extracts the final
trajectory samples; and
builds the one-period perturbation operator along that captured segment.
The captured window is therefore the last period before ss_assessment_time. EmtOptions.simulation_time does not select this window; the Floquet driver uses ss_assessment_time as its settling horizon.
The driver does not currently certify automatically that the final period is periodic. Periodicity validation is an engineering prerequisite that must be performed before trusting the modal results.
How to verify periodic steady stateο
Before running Floquet analysis, use an ordinary EMT simulation and compare at least the final two complete periods. At matching phase instants, verify that
for all relevant states, and that terminal waveforms also repeat. A useful normalized closure measure for one signal is
There is no universal acceptable value for ; it must be small compared with the perturbations and modal growth rates being studied. At minimum, check:
phase voltages and currents;
DC-link or stored-energy states;
PLL angle and frequency;
converter and machine controller integrators;
rotor speed or other slow mechanical states;
switching or sampled-control states when present;
the initial-to-final state mismatch over the candidate period.
Increase ss_assessment_time if the final two periods do not overlap, if their envelope is changing, or if the computed multipliers change materially when more settling time is allowed.
Warning
A visually sinusoidal voltage is not sufficient evidence of periodic steady state. A slow controller, DC-link, thermal, mechanical, or retained procedural state may still be drifting while the terminal voltage appears settled.
Choosing the correct periodο
For a waveform whose complete state repeats once per fundamental cycle,
This gives s at 50 Hz and approximately
s at 60 Hz.
The fundamental electrical period is not always the full system period:
ordinary harmonics repeat within the fundamental period and do not necessarily require a longer
;
a controller sequence or modulation pattern may repeat only after several fundamental cycles;
subharmonic behavior requires a multiple of the fundamental period;
a switching model may require the common repeat period of the electrical waveform, carrier, and sampled controls;
an averaged converter without explicit carrier switching may repeat at the grid period;
a truly quasiperiodic trajectory has no single finite repeat period and does not satisfy the assumptions of this Floquet calculation.
Choose the smallest period that reproduces the entire model state, not only one selected voltage waveform.
Period and time-step consistencyο
Select an integer number of EMT steps per period:
For example, or
gives exactly 200 or 400 steps per period. Because the current implementation uses integer truncation when calculating
target_period / time_step, a non-integer ratio means that the represented window is shorter than the requested period. This creates a phase-closure error in the monodromy map.
Repeat important studies with a smaller and proportionally more steps per period. A physical critical multiplier should converge as the EMT discretization is refined.
Settingsο
Floquet-specific settings are stored in SmallSignalStabilityEmtOptions. The EMT integrator settings come from EmtOptions.
Main settingsο
Option |
Default |
Meaning |
|---|---|---|
|
|
Positive number of multipliers to retain. Unlike the RMS driver, the current EMT implementation does not use |
|
|
Full repeat period |
|
|
Optional modal frequency target for the standard Arnoldi path. |
|
|
Krylov subspace dimension budget. |
|
|
Time simulated before extracting the final period. It must be at least one period and long enough to reach periodic steady state. |
|
|
|
|
|
Diagnostic output level. |
The target_period value is expressed in seconds. Enter 0.02 for a 50 Hz fundamental period, not 50.
EMT settings used by the assessmentο
The most important EmtOptions fields are:
time_step: integration stepused both to settle the model and to traverse the captured period;
integration_method: normallyDynamicIntegrationMethod.DaeTrapezoidalfor EMT;tolerance: nonlinear solution tolerance used by the EMT problem;initialization and problem settings used to construct the underlying EMT DAE.
The Floquet analysis inherits the numerical model created by these choices. Changing the integration method or time step changes the discrete one-period map and should therefore be included in sensitivity checks.
Hybrid Arnoldi controlsο
The following advanced settings primarily affect HybridArnoldi:
Option |
Default |
Purpose |
|---|---|---|
|
|
Maximum explicit restart cycles. |
|
|
Relative Ritz-pair residual tolerance. |
|
|
Use refined Ritz vectors when restarting. |
|
|
Adapt block size or Krylov depth when residuals stagnate. |
|
|
Improvement threshold used for stagnation detection. |
|
|
Restart cycles observed before adaptation. |
|
|
Threshold for removing linearly dependent block vectors. |
|
|
Prefer the explicit per-step transition stack when available. |
|
|
Use accelerated block propagation and orthogonalization when available. |
|
|
Optional lower block-size bound. |
|
|
Optional upper block-size bound. |
|
|
Optional cap for adaptive Krylov expansion. |
These controls are available through scripting even when only the principal settings are exposed in the GUI.
Floquet theoryο
Periodic nonlinear DAEο
Let the EMT model be written as
where contains differential states and
algebraic variables. Let
be the captured
-periodic solution.
Linearizing along the orbit gives
When is nonsingular, the algebraic perturbation can be eliminated:
which produces the reduced linear time-periodic system
VeraGrid applies the equivalent DAE perturbation propagation without requiring the dense reduced matrix to be formed at every sample.
Fundamental and monodromy matricesο
The fundamental matrix maps an initial perturbation to a later perturbation:
It satisfies
The transition over one complete period is the monodromy matrix
Changing moves the reference point around the same periodic orbit. The matrix representation changes, but its Floquet multipliers do not.
Floquet multipliersο
The Floquet multipliers are the eigenvalues of the monodromy map:
If a perturbation is aligned with mode , its amplitude after successive periods behaves approximately as
Therefore:
Multiplier |
Interpretation |
|---|---|
The perturbation decays from period to period. |
|
Marginal behavior; physical symmetries and numerical error must be considered. |
|
The perturbation grows and the periodic orbit is locally unstable. |
The spectral radius is
For an autonomous continuous-time system, a periodic orbit normally has one trivial multiplier at associated with shifting the phase along the orbit. A grid-forced, sampled, or explicitly time-periodic EMT model does not necessarily have the same autonomous symmetry. Do not discard a near-unit multiplier automatically; identify its participating states and verify the model timing and reference conditions first.
Floquet exponents, damping, and frequencyο
VeraGrid maps each multiplier to a continuous-time Floquet exponent:
It then reports
The complex logarithm is multi-valued. Consequently, exponent frequencies are defined modulo unless a branch is selected from additional physical information. A mode at frequency
and another at
can map to the same multiplier. Interpret high-frequency modes together with the EMT sampling rate, expected controller or network bandwidth, and the selected target frequency.
Relation to the PoincarΓ© mapο
Imagine observing the EMT system once per period at exactly the same waveform phase. The periodic orbit appears as a fixed point of this sampled return map. The monodromy matrix is the local derivative of that return map, and the Floquet multipliers are its eigenvalues. This is why stability is judged with the unit circle: the analysis asks whether the perturbation shrinks at each return.
Numerical implementation in VeraGridο
Matrix-free one-period propagationο
A dense monodromy matrix is generally expensive to assemble and store. VeraGrid instead exposes the monodromy action as a scipy.sparse.linalg.LinearOperator. Applying the operator to a perturbation propagates that perturbation through all EMT steps of the captured period.
The implementation provides three paths:
Operator |
Role |
|---|---|
|
Vector-by-vector propagation with cached sparse LU factorizations. |
|
Matrix-by-matrix propagation used by block Krylov methods. |
|
Product of an explicit stack of per-step state-transition matrices when the EMT problem exposes it. |
Conceptually, if the discrete perturbation map of step is
, the monodromy action is
The order matters: a perturbation must traverse every step in chronological order around the complete cycle.
Arnoldiο
SmallSignalEmtBuildTypes.Arnoldi is the standard path.
Small systems use a dense fallback by applying the operator to basis vectors.
Larger systems use ARPACK through
scipy.sparse.linalg.eigs.Without a target frequency, the retained modes are those with the largest multiplier magnitude and are therefore closest to instability.
With
target_frequency_hz, the driver targets multipliers close toand its conjugate.
Because only k modes are retained, a sparse result is a selected part of the spectrum, not proof that no uncomputed unstable mode exists outside the requested search behavior.
Hybrid Arnoldiο
SmallSignalEmtBuildTypes.HybridArnoldi is intended for larger or more difficult cases. It uses block propagation, Block Modified Gram-Schmidt orthogonalization, SVD-based deflation, refined Ritz vectors, explicit restarts, and optional adaptation when residual improvement stagnates.
The hybrid path targets dominant multiplier magnitudes. target_frequency_hz is currently a standard-Arnoldi feature and should not be assumed to redirect the hybrid selection.
Resultsο
Modesο
ResultTypes.Modes contains one row per retained multiplier:
Column |
Meaning |
|---|---|
|
Real part of |
|
Imaginary part of |
|
Multiplier magnitude |
|
Damping ratio computed from the selected Floquet exponent branch. |
|
Frequency obtained from the imaginary part of that exponent. |
The multiplier plot shows the complex multipliers and the unit circle. Points outside the circle are unstable. Points close to the circle require time-step, period, settling, and eigensolver convergence checks.
results.report_stability() reports the spectral radius and uses the implementation tolerance around unity. For engineering conclusions, inspect individual modes and numerical sensitivity rather than relying only on that summary string.
Participation factorsο
VeraGrid forms left and right modal vectors, bi-orthonormalizes them, and computes normalized magnitudes of
Rows correspond to EMT state variables and columns to retained Floquet modes. Participation factors help identify which states dominate a critical mode, but they are referenced to the selected point on the periodic orbit and summarize the one-period map. They are not a time-resolved participation waveform.
Closely spaced, repeated, or poorly converged multipliers can make individual eigenvectors and participation factors sensitive. Use grouped physical interpretation when the spectral gap is small.
Registered result propertiesο
SmallSignalStabilityEmtResults stores:
Property |
Type |
Description |
|---|---|---|
|
|
Eigenvalues of the monodromy map. |
|
|
Right eigenvectors or Ritz vectors of retained modes. |
|
|
Left or dual vectors used for participation factors. |
|
|
Analysed period |
|
|
Floquet exponents |
|
|
Damping ratios derived from the exponents. |
|
|
Exponent frequencies in hertz. |
|
|
Mode-normalized state participation factors. |
|
|
EMT state labels used in result tables. |
validate_spectral_gaps(h_step) can help identify retained multipliers that are poorly isolated relative to the integration-step scale. It is a numerical diagnostic, not a substitute for a residual or convergence study.
Interpreting a result safelyο
Use the following order:
Confirm that the power flow and EMT initialization converged.
Confirm closure of the final two or more waveform periods.
Confirm that
target_period / time_stepis an integer.Locate multipliers outside or closest to the unit circle.
Inspect their participation factors and associated physical states.
Repeat with a longer
ss_assessment_time.Repeat with a smaller EMT time step.
Increase
kor change the Krylov configuration when the relevant spectral region may be incomplete.Reproduce predicted growth or decay with a small time-domain perturbation.
Only after these checks should a near-unit multiplier be classified as a physical weakly damped or unstable mode.
GUI workflowο
Create or open a grid with EMT models assigned to the relevant devices.
Run the three-phase power flow. The GUI uses this result to construct the EMT Floquet driver.
Run a normal EMT simulation and confirm that the final periods are settled and repeatable.
Open the EMT Small-Signal settings.
Set the EMT Time step and Integration method.
Set Assessment time long enough for settling.
Set Target period in seconds, for example
0.02for 50 Hz.Set a positive number of Modes and select Arnoldi or Hybrid Arnoldi.
Run Small-Signal EMT Simulation.
Inspect Modes, the multiplier plot, and Participation factors.
The GUI field represents a period in seconds. The value passed to target_period is always a duration, not a frequency.
APIο
The maintained repository examples are under trunk/Floquet_stability/. The following compact pattern uses a three-phase power flow and chooses an integer number of EMT steps per period.
import numpy as np
import VeraGridEngine.api as gce
from VeraGridEngine.Devices.multi_circuit import MultiCircuit
from VeraGridEngine.Simulations.EMT.emt_options import EmtOptions
from VeraGridEngine.Simulations.PowerFlow.power_flow_options import PowerFlowOptions
from VeraGridEngine.Simulations.PowerFlow3ph.power_flow_results_3ph import PowerFlowResults3Ph
from VeraGridEngine.Simulations.SmallSignalStabilityEmt.small_signal_stability_emt_driver import (
SmallSignalStabilityEmtDriver,
)
from VeraGridEngine.Simulations.SmallSignalStabilityEmt.small_signal_stability_emt_options import (
SmallSignalStabilityEmtOptions,
)
from VeraGridEngine.Simulations.SmallSignalStabilityEmt.small_signal_stability_emt_results import (
SmallSignalStabilityEmtResults,
)
from VeraGridEngine.enumerations import DynamicIntegrationMethod, SmallSignalEmtBuildTypes
grid: MultiCircuit = gce.open_file("my_emt_case.veragrid")
pf_options: PowerFlowOptions = PowerFlowOptions(verbose=0)
pf_results: PowerFlowResults3Ph = gce.power_flow3ph(grid=grid, options=pf_options)
period_s: float = 1.0 / float(grid.fBase)
steps_per_period: int = 400
time_step_s: float = period_s / float(steps_per_period)
emt_options: EmtOptions = EmtOptions(
time_step=time_step_s,
tolerance=1e-6,
integration_method=DynamicIntegrationMethod.DaeTrapezoidal,
verbose=0,
)
floquet_options: SmallSignalStabilityEmtOptions = SmallSignalStabilityEmtOptions(
k=12,
target_period=period_s,
ss_assessment_time=20.0 * period_s,
max_krylov_dim=40,
build_type=SmallSignalEmtBuildTypes.Arnoldi,
verbose=1,
)
driver: SmallSignalStabilityEmtDriver = SmallSignalStabilityEmtDriver(
grid=grid,
emt_options=emt_options,
sss_options=floquet_options,
pf_results=pf_results,
)
driver.run()
results: SmallSignalStabilityEmtResults | None = driver.results
if results is not None:
multipliers: np.ndarray = np.asarray(results.multipliers, dtype=complex)
floquet_exponents: np.ndarray = np.asarray(results.eigenvalues, dtype=complex)
participation: np.ndarray = np.asarray(results.participation_factors, dtype=float)
print(results.report_stability())
print(multipliers)
print(floquet_exponents)
print(participation)
else:
print("The EMT Floquet analysis did not produce results.")
The example value 20 * period_s is illustrative, not a guarantee of settling. Models with slow controls or mechanical states may require a much longer assessment time. Verify periodic closure independently.
Targeting a frequencyο
The standard Arnoldi path can prioritize multipliers close to an expected modal frequency:
floquet_options: SmallSignalStabilityEmtOptions = SmallSignalStabilityEmtOptions(
k=8,
target_period=period_s,
target_frequency_hz=120.0,
build_type=SmallSignalEmtBuildTypes.Arnoldi,
)
Because frequency is aliased by the multiplier map, use physical knowledge of the system and compare nearby frequency branches.
EMT Floquet versus RMS Small-Signalο
Aspect |
RMS Small-Signal |
EMT Floquet Small-Signal |
|---|---|---|
Reference solution |
Constant equilibrium |
Complete periodic trajectory |
Linear model |
Constant matrix or pencil |
Linear time-periodic system |
Primary spectrum |
Eigenvalues |
Floquet multipliers |
Stability boundary |
Imaginary axis |
Unit circle |
Time evolution represented |
Around one operating point |
Around all instants of one period |
Frequency detail |
Fundamental phasor/control dynamics |
EMT state and periodic waveform coupling |
Main prerequisite |
Consistent initialized equilibrium |
Consistent initialized and settled periodic orbit |
When an EMT model is an exact periodic realization of an RMS model, corresponding slow modes can be compared after mapping multipliers to exponents. Agreement is not automatic: the models may have different states, reference frames, bandwidth, switching detail, or initialization assumptions.
Floquet versus ERA/Matrix Pencilο
VeraGrid also contains an EMT ERA/Matrix Pencil workflow. The methods answer different questions.
Method |
Input |
Output |
Meaning |
|---|---|---|---|
Floquet |
Periodic EMT trajectory plus model Jacobians |
Multipliers of the one-period map |
Model-based local stability of a periodic orbit |
ERA/Matrix Pencil |
Selected ringdown time series |
Identified poles, residues, and reconstruction diagnostics |
Signal-based modal identification |
Use Floquet when the objective is the local stability of the periodic EMT model itself. Use ERA/Matrix Pencil when modes must be inferred from observable transient signals, including data that may not expose the complete model Jacobian.
Validation and benchmark strategyο
Useful repository examples are located in trunk/Floquet_stability/, including:
scripting_floquet_generator_piline_Rload_emt.pyfor an EMT generator-line-load case;kundur_small_signal_rms_vs_emt.pyfor RMS/EMT modal comparison;reduced_vs_dense.pyfor operator comparisons;hpc_stress_test.pyfor Arnoldi and Hybrid Arnoldi stress testing;demo_era_vs_floquet.pyfor the distinction between model-based and signal-based modal analysis.
For a defensible study, compare dense and Krylov results on a small case, compare Arnoldi variants when possible, reduce the time step, increase settling time, and confirm predicted modal behavior with a small perturbation in EMT time simulation.
Common mistakesο
Capturing one fundamental cycle while a slow state is still drifting.
Treating
target_periodas frequency instead of seconds.Choosing a period that represents the voltage but not the complete switching or controller state.
Using a time step that does not divide the period.
Assuming
k = 0has the RMS meaning of βall modes.βInterpreting a partial Arnoldi spectrum as the complete spectrum.
Reading exponent frequency without considering logarithm-branch aliasing.
Declaring a near-unit multiplier physical before checking time-step and period sensitivity.
Treating participation factors as instantaneous waveforms.
Using Floquet analysis for a trajectory that is transient, quasiperiodic, or undergoing a large event.
Referencesο
G. Floquet, βSur les Γ©quations diffΓ©rentielles linΓ©aires Γ coefficients pΓ©riodiques,β Annales scientifiques de lβΓcole Normale SupΓ©rieure, 1883.
V. A. Yakubovich and V. M. Starzhinskii, Linear Differential Equations with Periodic Coefficients. Wiley, 1975.
Y. Saad, Numerical Methods for Large Eigenvalue Problems, 2nd ed. SIAM, 2011.
H. Li, C. Liu, X. Jiang, Y. Zeng, Z. Guo, and T. Q. Zheng, βA Time-Domain Stability Analysis Method for Grid-Connected Inverter With PR Control Based on Floquet Theory,β IEEE Transactions on Industrial Electronics, doi:10.1109/TIE.2020.3036227.
H. Li et al., βA Floquet theory-based fast time-domain stability analysis for N-parallel inverters system,β IET Power Electronics, doi:10.1049/pel2.12225.
N. Watson and J. Arrillaga, Power Systems Electromagnetic Transients Simulation, 2nd ed. IET, 2019.