Harmony
HARMONic stabilitY assessment of PE-penetrated power systems
Loading...
Searching...
No Matches
Geometric_certificates.cpp File Reference

Numerical-range, small-gain, and sampled DW-shell certificates. More...

#include "Geometric_certificates.h"
#include <algorithm>
#include <cmath>
#include <limits>
Include dependency graph for Geometric_certificates.cpp:

Functions

double excessPassivity (const Eigen::MatrixXcd &A)
 Hermitian / excess passivity ν = λ_min(Her A); shortage = max(0,-ν).
 
double shortagePassivity (const Eigen::MatrixXcd &A)
 
double spectralNorm (const Eigen::MatrixXcd &A)
 Operator (spectral) norm σ_max(A).
 
std::vector< std::complex< double > > numericalRangeBoundary (const Eigen::MatrixXcd &A, int n_theta)
 Trace ∂W(A) via the support function: z(θ) = e^{iθ} λ_max(Her(e^{-iθ} A)).
 
NumericalRangeCertificate certifyNumericalRange (const Eigen::MatrixXcd &A, double phase_limit_deg, int n_theta)
 Numerical-range small-phase certificate.
 
DwShellCertificate certifyDwShell (const Eigen::MatrixXcd &A, double phase_limit_deg, double gain_limit, double excess_eps, int n_theta, int n_sphere)
 Sample DW(A) on a dense set of unit vectors (exact NR boundary + sphere grid).
 
Eigen::MatrixXcd loopShiftedSector (const Eigen::MatrixXcd &A, double alpha, double beta)
 Classic loop-shifted (sector) matrix for SISO/MIMO sector [α, β]: T = (A - α I)(β I - A)^{-1} when invertible; empty matrix on failure.
 
bool certifySector (const Eigen::MatrixXcd &A, double alpha, double beta, double eps)
 True if Her(T) ≻ eps for the loop-shifted sector map (when defined).
 

Detailed Description

Numerical-range, small-gain, and sampled DW-shell certificates.

Function Documentation

◆ certifyDwShell()

DwShellCertificate certifyDwShell ( const Eigen::MatrixXcd &  A,
double  phase_limit_deg = 90.0,
double  gain_limit = 1.0,
double  excess_eps = 0.0,
int  n_theta = 180,
int  n_sphere = 24 
)

◆ certifyNumericalRange()

NumericalRangeCertificate certifyNumericalRange ( const Eigen::MatrixXcd &  A,
double  phase_limit_deg = 90.0,
int  n_theta = 180 
)

◆ certifySector()

bool certifySector ( const Eigen::MatrixXcd &  A,
double  alpha,
double  beta,
double  eps 
)

True if Her(T) ≻ eps for the loop-shifted sector map (when defined).

References loopShiftedSector().

◆ excessPassivity()

double excessPassivity ( const Eigen::MatrixXcd &  A)

Hermitian / excess passivity ν = λ_min(Her A); shortage = max(0,-ν).

Referenced by certifyDwShell().

◆ loopShiftedSector()

Eigen::MatrixXcd loopShiftedSector ( const Eigen::MatrixXcd &  A,
double  alpha,
double  beta 
)

Classic loop-shifted (sector) matrix for SISO/MIMO sector [α, β]: T = (A - α I)(β I - A)^{-1} when invertible; empty matrix on failure.

Passivity of T is a sector certificate for A (when defined).

Referenced by certifySector().

◆ numericalRangeBoundary()

std::vector< std::complex< double > > numericalRangeBoundary ( const Eigen::MatrixXcd &  A,
int  n_theta 
)

Trace ∂W(A) via the support function: z(θ) = e^{iθ} λ_max(Her(e^{-iθ} A)).

Referenced by certifyNumericalRange().

◆ shortagePassivity()

double shortagePassivity ( const Eigen::MatrixXcd &  A)

Referenced by certifyDwShell().

◆ spectralNorm()

double spectralNorm ( const Eigen::MatrixXcd &  A)

Operator (spectral) norm σ_max(A).

Referenced by certifyDwShell(), and sweepReturnRatioCertificate().