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

SymEngine-based symbolic algebra utilities for network analysis. More...

#include "../../Constants.h"
Include dependency graph for Symbolic_functions.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

DenseMatrix createZeroMatrix (int size1, int size2)
 Creates a zero-filled SymEngine dense matrix.
 
void fillWithZero (DenseMatrix &mat)
 Sets every entry of a SymEngine dense matrix to zero in place.
 
DenseMatrix eigenToSymEngineDenseMatrix (const MatrixXcd &eigenMat)
 Converts an Eigen complex matrix to a SymEngine DenseMatrix.
 
complex< double > substitute_symbol (const RCP< const Basic > &expr, const std::string &symbol_name, double value)
 Substitutes a named symbol with a real value in an expression.
 
complex< double > substitute_symbol (const RCP< const Basic > &expr, RCP< const Basic > symbol_name, double value)
 Substitutes a symbolic variable with a real value in an expression.
 
complex< double > substitute_symbol (const RCP< const Basic > &expr, const std::string &symbol_name, complex< double > value)
 Substitutes a named symbol with a complex value in an expression.
 
complex< double > substitute_symbol (const RCP< const Basic > &expr, RCP< const Basic > symbol_name, complex< double > value)
 Substitutes a symbolic variable with a complex value in an expression.
 
MatrixXcd substitute_symbol (DenseMatrix, const string &, double)
 Substitutes a named symbol with a real value in every matrix entry.
 
MatrixXcd substitute_symbol (DenseMatrix, const string &, complex< double >)
 Substitutes a named symbol with a complex value in every matrix entry.
 
MatrixXcd substitute_symbol (DenseMatrix, RCP< const Basic >, double)
 Substitutes a symbolic variable with a real value in every matrix entry.
 
MatrixXcd substitute_symbol (DenseMatrix, RCP< const Basic >, complex< double >)
 Substitutes a symbolic variable with a complex value in every matrix entry.
 
RCP< const Basic > substitute_symbols (const RCP< const Basic > &expr, const std::vector< RCP< const Basic > > &symbols, double value)
 Substitutes multiple symbols with the same real value in an expression.
 
double eval_basic (const RCP< const Basic > &expr)
 Evaluates a symbolic expression to a real scalar.
 
MatrixXd kron_reduction (MatrixXd, vector< int >)
 Kron-reduces a real matrix by eliminating specified nodes.
 
DenseMatrix kron_reduction (DenseMatrix, vector< int >)
 Kron-reduces a symbolic dense matrix by eliminating specified nodes.
 
Eigen::SparseMatrix< double > absoluteSparseMatrix (const Eigen::SparseMatrix< std::complex< double > > &matrix)
 Takes the element-wise absolute value of a complex sparse matrix.
 
RCP< const Basic > inv (const RCP< const Basic > &val)
 Symbolic multiplicative inverse (1/x).
 
RCP< const Basic > addSym (const RCP< const Basic > &a, const RCP< const Basic > &b)
 Symbolic addition a + b.
 
RCP< const Basic > subSym (const RCP< const Basic > &a, const RCP< const Basic > &b)
 Symbolic subtraction a - b.
 

Variables

const RCP< const Basic > PI
 Symbolic representation of π.
 
const double mu_0
 Vacuum permeability (H/m).
 
const double epsilon_0
 Vacuum permittivity (F/m).
 
const double gamma_num
 Euler–Mascheroni constant.
 
RCP< const Basic > j
 Imaginary unit j.
 
RCP< const Basic > omega
 Angular frequency symbol ω.
 
RCP< const Basic > s
 Complex frequency symbol s = jω.
 

Detailed Description

SymEngine-based symbolic algebra utilities for network analysis.

Provides symbolic constants, matrix creation/conversion, parameter substitution, Kron reduction, and basic symbolic arithmetic used when assembling MNA matrices and transfer functions.

Function Documentation

◆ absoluteSparseMatrix()

Eigen::SparseMatrix< double > absoluteSparseMatrix ( const Eigen::SparseMatrix< std::complex< double > > &  matrix)
extern

Takes the element-wise absolute value of a complex sparse matrix.

Parameters
matrixInput complex sparse matrix.
Returns
Real sparse matrix of magnitudes.

Referenced by PowerFlow::load_params_dc().

◆ addSym()

RCP< const Basic > addSym ( const RCP< const Basic > &  a,
const RCP< const Basic > &  b 
)
extern

Symbolic addition a + b.

Parameters
aFirst operand.
bSecond operand.
Returns
Simplified sum.

Referenced by Impedance::Impedance(), Impedance::Impedance(), MMC::writeMNAmatrix(), Resistor::writeMNAmatrix(), AC_source::writeMNAmatrix(), DC_source::writeMNAmatrix(), and Inductor::writeMNAmatrix().

◆ createZeroMatrix()

DenseMatrix createZeroMatrix ( int  size1,
int  size2 
)
extern

◆ eigenToSymEngineDenseMatrix()

DenseMatrix eigenToSymEngineDenseMatrix ( const MatrixXcd &  eigenMat)
extern

Converts an Eigen complex matrix to a SymEngine DenseMatrix.

Parameters
eigenMatInput Eigen MatrixXcd.
Returns
Equivalent SymEngine dense matrix.

References j.

◆ eval_basic()

double eval_basic ( const RCP< const Basic > &  expr)
extern

Evaluates a symbolic expression to a real scalar.

Parameters
exprSymbolic expression (must be real-valued after substitution).
Returns
Numeric double result.

Referenced by extractCoefficient().

◆ fillWithZero()

void fillWithZero ( DenseMatrix &  mat)
extern

Sets every entry of a SymEngine dense matrix to zero in place.

Parameters
matMatrix to zero.

References j.

◆ inv()

RCP< const Basic > inv ( const RCP< const Basic > &  val)
extern

Symbolic multiplicative inverse (1/x).

Parameters
valSymbolic value.
Returns
Symbolic inverse expression.

Referenced by Resistor::writeMNAmatrix().

◆ kron_reduction() [1/2]

DenseMatrix kron_reduction ( DenseMatrix  matrix,
vector< int >  no_eliminate 
)
extern

Kron-reduces a symbolic dense matrix by eliminating specified nodes.

Parameters
matrixInput symbolic matrix.
nodesIndices of nodes to eliminate.
Returns
Symbolically reduced matrix.

References createZeroMatrix(), and j.

◆ kron_reduction() [2/2]

MatrixXd kron_reduction ( MatrixXd  matrix,
vector< int >  no_eliminate 
)
extern

Kron-reduces a real matrix by eliminating specified nodes.

Parameters
matrixInput admittance/impedance matrix.
nodesIndices of nodes to eliminate.
Returns
Reduced matrix.

Referenced by Cable::Cable(), and Overhead_Line::Overhead_Line().

◆ substitute_symbol() [1/8]

complex< double > substitute_symbol ( const RCP< const Basic > &  expr,
const std::string &  symbol_name,
complex< double >  value 
)
extern

Substitutes a named symbol with a complex value in an expression.

Parameters
exprSymbolic expression.
symbol_nameName of the symbol to replace.
valueComplex substitution value.
Returns
Complex numeric result after substitution.

◆ substitute_symbol() [2/8]

complex< double > substitute_symbol ( const RCP< const Basic > &  expr,
const std::string &  symbol_name,
double  value 
)
extern

Substitutes a named symbol with a real value in an expression.

Parameters
exprSymbolic expression.
symbol_nameName of the symbol to replace.
valueReal substitution value.
Returns
Complex numeric result after substitution.

Referenced by AC_source::AC_source(), Cable::compute_y_parameters(), Overhead_Line::compute_y_parameters(), TransmissionLine::computePowerFlow(), Transformer_base::computePowerFlow(), and Impedance_base::computePowerFlow().

◆ substitute_symbol() [3/8]

complex< double > substitute_symbol ( const RCP< const Basic > &  expr,
RCP< const Basic >  symbol_name,
complex< double >  value 
)
extern

Substitutes a symbolic variable with a complex value in an expression.

Parameters
exprSymbolic expression.
symbol_nameSymbol to replace.
valueComplex substitution value.
Returns
Complex numeric result after substitution.

◆ substitute_symbol() [4/8]

complex< double > substitute_symbol ( const RCP< const Basic > &  expr,
RCP< const Basic >  symbol_name,
double  value 
)
extern

Substitutes a symbolic variable with a real value in an expression.

Parameters
exprSymbolic expression.
symbol_nameSymbol to replace.
valueReal substitution value.
Returns
Complex numeric result after substitution.

◆ substitute_symbol() [5/8]

MatrixXcd substitute_symbol ( DenseMatrix  M,
const string &  symbol_name,
complex< double >  value 
)
extern

Substitutes a named symbol with a complex value in every matrix entry.

Parameters
matSymbolic dense matrix.
symbol_nameName of the symbol to replace.
valueComplex substitution value.
Returns
Numeric complex matrix after substitution.

References j.

◆ substitute_symbol() [6/8]

MatrixXcd substitute_symbol ( DenseMatrix  M,
const string &  symbol_name,
double  value 
)
extern

Substitutes a named symbol with a real value in every matrix entry.

Parameters
matSymbolic dense matrix.
symbol_nameName of the symbol to replace.
valueReal substitution value.
Returns
Numeric complex matrix after substitution.

References j.

◆ substitute_symbol() [7/8]

MatrixXcd substitute_symbol ( DenseMatrix  M,
RCP< const Basic >  symbol,
complex< double >  value 
)
extern

Substitutes a symbolic variable with a complex value in every matrix entry.

Parameters
matSymbolic dense matrix.
symbol_nameSymbol to replace.
valueComplex substitution value.
Returns
Numeric complex matrix after substitution.

References j.

◆ substitute_symbol() [8/8]

MatrixXcd substitute_symbol ( DenseMatrix  M,
RCP< const Basic >  symbol,
double  value 
)
extern

Substitutes a symbolic variable with a real value in every matrix entry.

Parameters
matSymbolic dense matrix.
symbol_nameSymbol to replace.
valueReal substitution value.
Returns
Numeric complex matrix after substitution.

References j.

◆ substitute_symbols()

RCP< const Basic > substitute_symbols ( const RCP< const Basic > &  expr,
const std::vector< RCP< const Basic > > &  symbols,
double  value 
)
extern

Substitutes multiple symbols with the same real value in an expression.

Parameters
exprSymbolic expression.
symbolsList of symbols to replace.
valueCommon real substitution value.
Returns
Simplified symbolic expression after substitution.

◆ subSym()

RCP< const Basic > subSym ( const RCP< const Basic > &  a,
const RCP< const Basic > &  b 
)
extern

Symbolic subtraction a - b.

Parameters
aMinuend.
bSubtrahend.
Returns
Simplified difference.

Referenced by Resistor::writeMNAmatrix().

Variable Documentation

◆ epsilon_0

const double epsilon_0
extern

Vacuum permittivity (F/m).

Vacuum permittivity (F/m).

Referenced by Cable::Cable(), and Overhead_Line::Overhead_Line().

◆ gamma_num

const double gamma_num
extern

Euler–Mascheroni constant.

Euler–Mascheroni constant.

Referenced by Cable::Cable().

◆ j

RCP<const Basic> j
extern

Imaginary unit j.

Referenced by AC_source::AC_source(), AC_source::AC_source(), AC_source::AC_source(), Admittance::Admittance(), Cable::Cable(), DC_source::DC_source(), DC_source::DC_source(), DC_source::DC_source(), DC_source::DC_source(), Impedance::Impedance(), Impedance::Impedance(), Impedance::Impedance(), Impedance::Impedance(), Impedance::Impedance(), Load::Load(), Overhead_Line::Overhead_Line(), Resistor::Resistor(), Transformer_classic::Transformer_classic(), Transformer_real::Transformer_real(), TransformerDeltaDelta::TransformerDeltaDelta(), TransformerDeltaY::TransformerDeltaY(), TransformerDeltaY_real::TransformerDeltaY_real(), TransformerYDelta::TransformerYDelta(), WTtype3::WTtype3(), Element::apply_transformation(), bode_plot_implot(), StabilityEstimate::bodeplotTF(), StabilityEstimate::compute_equivalent_admittance_parameters_num(), Element::compute_y_parameters(), MMC::compute_y_parameters(), Cable::compute_y_parameters(), Overhead_Line::compute_y_parameters(), computeJacobians(), Converter::computeParticipationFactors(), MMC::computeStateDerivatives(), convertToPhasor(), createZeroMatrix(), eigen2sun(), eigenToSymEngineDenseMatrix(), fillWithZero(), ComponentBuilder::findNonEmptyNumericArray(), ComponentBuilder::findNonEmptyString(), ComponentBuilder::findNumber(), ComponentBuilder::findNumericOrReferenceArray(), ComponentBuilder::findScalar(), StateSpaceModel::form_cutset_nodes(), StateSpaceModel::formState(), get_block(), kron_reduction(), mat_add(), mat_mul(), mat_sub(), mat_transpose(), matrixToVector(), matrixToVector(), mul_scalar(), nyquist_plot_implot(), StabilityEstimate::nyquistplotTF(), plot_participation_factors_implot(), Element::plotYParameters(), Element::printElementValues(), Resistor::printElementValues(), PowerFlow::solve_opf(), substitute_symbol(), substitute_symbol(), substitute_symbol(), substitute_symbol(), SimulationBuilder::validateJSON(), vectorToMatrix(), vectorToMatrix(), viz_opf(), Element::writeFile(), StabilityEstimate::writeFileTF(), and Switch::writeMNAmatrix().

◆ mu_0

const double mu_0
extern

Vacuum permeability (H/m).

Vacuum permeability (H/m).

Referenced by Cable::Cable(), and Overhead_Line::Overhead_Line().

◆ omega

◆ PI

const RCP<const Basic> PI
extern

Symbolic representation of π.

◆ s