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

Device certificate metrics and paper-style ImPlot figures. More...

#include "Stability_certificate.h"
#include "../../Elements/Element.h"
#include "../Stability_Estimate/Stability_estimate.h"
#include <algorithm>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <limits>
#include <stdexcept>
Include dependency graph for Stability_certificate.cpp:

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).
 
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)
 Numeric Y of an element at f (Hz), optionally AC dq block.
 
void finalizeCertificateSweep (CertificateSweep &sweep, const CertificateSpec &spec)
 Aggregate pass/fail from a completed sweep + spec.
 
bool sweepPassesSpec (const CertificateSweep &sweep, const CertificateSpec &spec)
 True if all enabled spec gates pass on a completed sweep.
 
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, double phase_limit_deg)
 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 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)
 
void plot_certificate_phase (const CertificateSweep &sweep, const std::string &title)
 
void plot_certificate_gate (const CertificateSweep &sweep, const std::string &title)
 
void plot_certificate_operating_region (const std::vector< OperatingRegionSample > &samples, const std::string &title)
 
void plot_certificate_local_vs_system (const CertificateSweep &local, const CertificateSweep &system_H, const std::string &title)
 
void plot_certificate_tuning_compare (const CertificateSweep &before, const CertificateSweep &after, const std::string &title)
 
void plot_certificate_dw_slice (const Eigen::MatrixXcd &Y, double freq_Hz, const std::string &title)
 
void plot_certificate_numerical_range (const Eigen::MatrixXcd &Y, double freq_Hz, double phase_limit_deg, const std::string &title)
 
void plot_certificate_dw_shell (const Eigen::MatrixXcd &Y, double freq_Hz, const CertificateSpec &spec, const std::string &title)
 
void plot_certificate_geometric_sweep (const CertificateSweep &sweep, const std::string &title)
 

Detailed Description

Device certificate metrics and paper-style ImPlot figures.

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 
)

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()

◆ plot_certificate_gate()

◆ 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 
)

◆ plot_certificate_numerical_range()

void plot_certificate_numerical_range ( const Eigen::MatrixXcd &  Y,
double  freq_Hz,
double  phase_limit_deg,
const std::string &  title 
)

◆ plot_certificate_operating_region()

void plot_certificate_operating_region ( const std::vector< OperatingRegionSample > &  samples,
const std::string &  title 
)

References add_plot_tab(), and s.

Referenced by reportOperatingRegion().

◆ plot_certificate_passivity()

◆ plot_certificate_phase()

◆ plot_certificate_tuning_compare()

void plot_certificate_tuning_compare ( const CertificateSweep before,
const CertificateSweep after,
const std::string &  title 
)

◆ 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,
double  phase_limit_deg 
)

◆ 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().