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

Device-level passivity / phase / geometric metrics and plots. More...

#include "../../Constants.h"
#include "../Helper_Functions/Visualization.h"
#include "Certificate_spec.h"
#include "Geometric_certificates.h"
#include <complex>
#include <string>
#include <vector>
Include dependency graph for Stability_certificate.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  CertificateSweep
 Frequency-domain certificate sweep for one device (or one H). More...
 
struct  OperatingRegionSample
 One sample of a (P,Q) operating-region certificate. More...
 

Functions

double passivityIndex (const Eigen::MatrixXcd &Y)
 Hermitian passivity index λ_min((Y+Y*)/2).
 
double shiftedPassivityIndex (const Eigen::MatrixXcd &Y, double delta)
 Shifted passivity λ_min(Her(Y + δ I)).
 
double dwHermitianMargin (const Eigen::MatrixXcd &Y)
 Hermitian DW-slice margin (legacy): λ_min(Her Y).
 
double maxEigenPhaseDeg (const Eigen::MatrixXcd &Y)
 Maximum |arg(λ)| over eigenvalues of Y, in degrees (heuristic).
 
bool sweepPassesSpec (const CertificateSweep &sweep, const CertificateSpec &spec)
 True if all enabled spec gates pass on a completed sweep.
 
Eigen::MatrixXcd extractAcDqBlock (const Eigen::MatrixXcd &Y)
 Extract AC dq 2×2 block from 2×2 or 3×3 Y.
 
Eigen::MatrixXcd elementAdmittance (Element &elem, double freq_Hz, bool ac_dq_block=true)
 Numeric Y of an element at f (Hz), optionally AC dq block.
 
CertificateSweep sweepDeviceCertificate (Element &elem, const CertificateSpec &spec)
 Sweep device Y and evaluate certificates per spec.
 
CertificateSweep sweepDeviceCertificate (Element &elem, double f_min, double f_max, int n_points, bool ac_block=true, double phase_limit_deg=90.0)
 Convenience overload with explicit grid.
 
CertificateSweep sweepReturnRatioCertificate (StabilityEstimate &stability, const std::string &converter_name, const std::string &location, const CertificateSpec &spec)
 Sweep H = Y Z_eq and report Her(I+H) passivity-style margins.
 
CertificateSweep sweepReturnRatioCertificate (StabilityEstimate &stability, const std::string &converter_name, const std::string &location, double f_min, double f_max, int n_points)
 
void finalizeCertificateSweep (CertificateSweep &sweep, const CertificateSpec &spec)
 Aggregate pass/fail from a completed sweep + spec.
 
void writeCertificateSweepCsv (const CertificateSweep &sweep, const std::string &path)
 
void writeOperatingRegionCsv (const std::vector< OperatingRegionSample > &samples, const std::string &path)
 
void plot_certificate_passivity (const CertificateSweep &sweep, const std::string &title="Passivity index")
 
void plot_certificate_phase (const CertificateSweep &sweep, const std::string &title="Device phase certificate")
 
void plot_certificate_gate (const CertificateSweep &sweep, const std::string &title="Device gate certificate")
 
void plot_certificate_operating_region (const std::vector< OperatingRegionSample > &samples, const std::string &title="Certified operating region (P,Q)")
 
void plot_certificate_local_vs_system (const CertificateSweep &local, const CertificateSweep &system_H, const std::string &title="Local vs system certificate")
 
void plot_certificate_tuning_compare (const CertificateSweep &before, const CertificateSweep &after, const std::string &title="Control tuning: passivity")
 
void plot_certificate_dw_slice (const Eigen::MatrixXcd &Y, double freq_Hz, const std::string &title="DW-style Hermitian slice")
 
void plot_certificate_numerical_range (const Eigen::MatrixXcd &Y, double freq_Hz, double phase_limit_deg=90.0, const std::string &title="Numerical range W(Y)")
 
void plot_certificate_dw_shell (const Eigen::MatrixXcd &Y, double freq_Hz, const CertificateSpec &spec={}, const std::string &title="DW shell (xz projection)")
 
void plot_certificate_geometric_sweep (const CertificateSweep &sweep, const std::string &title="Geometric certificates")
 

Detailed Description

Device-level passivity / phase / geometric metrics and plots.

Function Documentation

◆ dwHermitianMargin()

double dwHermitianMargin ( const Eigen::MatrixXcd &  Y)

Hermitian DW-slice margin (legacy): λ_min(Her Y).

Prefer certifyNumericalRange / certifyDwShell for geometric certificates.

References passivityIndex().

◆ elementAdmittance()

Eigen::MatrixXcd elementAdmittance ( Element elem,
double  freq_Hz,
bool  ac_dq_block = true 
)

Numeric Y of an element at f (Hz), optionally AC dq block.

References Element::compute_y_parameters(), and extractAcDqBlock().

Referenced by example_certificate_figures(), and sweepDeviceCertificate().

◆ extractAcDqBlock()

Eigen::MatrixXcd extractAcDqBlock ( const Eigen::MatrixXcd &  Y)

Extract AC dq 2×2 block from 2×2 or 3×3 Y.

Referenced by elementAdmittance().

◆ finalizeCertificateSweep()

◆ maxEigenPhaseDeg()

double maxEigenPhaseDeg ( const Eigen::MatrixXcd &  Y)

Maximum |arg(λ)| over eigenvalues of Y, in degrees (heuristic).

Referenced by sweepReturnRatioCertificate().

◆ passivityIndex()

double passivityIndex ( const Eigen::MatrixXcd &  Y)

Hermitian passivity index λ_min((Y+Y*)/2).

Referenced by dwHermitianMargin(), and shiftedPassivityIndex().

◆ plot_certificate_dw_shell()

◆ plot_certificate_dw_slice()

void plot_certificate_dw_slice ( const Eigen::MatrixXcd &  Y,
double  freq_Hz,
const std::string &  title = "DW-style Hermitian slice" 
)

◆ plot_certificate_gate()

void plot_certificate_gate ( const CertificateSweep sweep,
const std::string &  title = "Device gate certificate" 
)

◆ plot_certificate_geometric_sweep()

◆ plot_certificate_local_vs_system()

void plot_certificate_local_vs_system ( const CertificateSweep local,
const CertificateSweep system_H,
const std::string &  title = "Local vs system certificate" 
)

◆ plot_certificate_numerical_range()

void plot_certificate_numerical_range ( const Eigen::MatrixXcd &  Y,
double  freq_Hz,
double  phase_limit_deg = 90.0,
const std::string &  title = "Numerical range W(Y)" 
)

◆ plot_certificate_operating_region()

void plot_certificate_operating_region ( const std::vector< OperatingRegionSample > &  samples,
const std::string &  title = "Certified operating region (P,Q)" 
)

References add_plot_tab(), and s.

Referenced by reportOperatingRegion().

◆ plot_certificate_passivity()

◆ plot_certificate_phase()

void plot_certificate_phase ( const CertificateSweep sweep,
const std::string &  title = "Device phase certificate" 
)

◆ plot_certificate_tuning_compare()

void plot_certificate_tuning_compare ( const CertificateSweep before,
const CertificateSweep after,
const std::string &  title = "Control tuning: passivity" 
)

◆ shiftedPassivityIndex()

double shiftedPassivityIndex ( const Eigen::MatrixXcd &  Y,
double  delta 
)

Shifted passivity λ_min(Her(Y + δ I)).

References passivityIndex().

◆ sweepDeviceCertificate() [1/2]

◆ sweepDeviceCertificate() [2/2]

CertificateSweep sweepDeviceCertificate ( Element elem,
double  f_min,
double  f_max,
int  n_points,
bool  ac_block = true,
double  phase_limit_deg = 90.0 
)

◆ sweepPassesSpec()

◆ sweepReturnRatioCertificate() [1/2]

CertificateSweep sweepReturnRatioCertificate ( StabilityEstimate stability,
const std::string &  converter_name,
const std::string &  location,
const CertificateSpec spec 
)

◆ sweepReturnRatioCertificate() [2/2]

CertificateSweep sweepReturnRatioCertificate ( StabilityEstimate stability,
const std::string &  converter_name,
const std::string &  location,
double  f_min,
double  f_max,
int  n_points 
)

◆ writeCertificateSweepCsv()

◆ writeOperatingRegionCsv()

void writeOperatingRegionCsv ( const std::vector< OperatingRegionSample > &  samples,
const std::string &  path 
)

References s.

Referenced by example_certificate_figures().