Spectral Integral Suite in C++
sis::SingularValueDecomposition< T > Class Template Reference

This class computes various SingularValues of a differential block matrix operator using using it's adjoint. Class has various utilities, like computing the adjoint, adjoint boundary conditions, and also computing singular values of the frequency response operator. More...

#include <sis.hpp>

Inheritance diagram for sis::SingularValueDecomposition< T >:
Collaboration diagram for sis::SingularValueDecomposition< T >:

Public Member Functions

void compute (const LinopMat< T > &A_, const BcMat< T > &Lbc_, const BcMat< T > &Rbc_, int num_vals)
 Computes the singular values/functions of a Linear block matrix operator. More...
 
void compute (const LinopMat< T > &A_, const LinopMat< T > &B_, const LinopMat< T > &C_, const BcMat< T > &Lbc_, const BcMat< T > &Rbc_, int num_vals)
 Computes the Singular value(s) of a system in the input-output form,

\begin{align} [\mathcal{A}\,\psi(\cdot)](y) \;&=\; [\mathcal{B}\,\boldmath{d}(\cdot)](y) \\ \phi(y) \;&=\; \mathcal{C}\,\psi(y), \end{align}

This is used to the find the frequency response of block matrix operators. More...

 
void compute (const LinopMat< T > &A_, const ChebfunMat< T > &B_, const LinopMat< T > &C_, const BcMat< T > &Lbc_, const BcMat< T > &Rbc_, int num_vals)
 Computes the Singular value(s) of a system in the input-output form,

\begin{align} [\mathcal{A}\,\psi(\cdot)](y) \;&=\; B(y)\,d \phi(y) \;&=\; \mathcal{C}\,\psi(y), \end{align}

here, B(y) is a function and not an operator. More...

 
LinopMat< T > Adjoint (const LinopMat< T > &Lmat_)
 Computes the adjoint of a linear operator. This is a differential adjoint, and not the conjugate transpose of the operators in the LinopMat. To get the latter, use cTranspose(); Adjoints are for generic discriptor systems, like \(M\partial_{t}\phi(y) = L\phi(y)\). More...
 
BcMat< T > AdjointBc_analytical (const LinopMat< T > &Lmat_, const BcMat< T > &Lbc_, const BcMat< T > &Rbc_)
 Computes adjoint boundary conditions analytically, needs boundary conditions all right boundary conditions in rbc, and all left boundary conditions in lbc. All dependent variables need not have boundary conditions specified, but it is essential that the number of boundary conditions be equal to the sum of derivatives of all independent variables, and all the boundary conditions be linearly independent. The adjoint boundary conditions will be returned in the output, as a BcMat, will all boundary conditions for left and right in it, in the orders left followed by right. More...
 
- Public Member Functions inherited from sis::GeneralizedEigenSolver< T >
 GeneralizedEigenSolver ()
 Null constructor. More...
 
void compute (Linop< T > L, Linop< T > M, int num_vals)
 Call this with an input Linear operator to solve for eigenvalues and vectors. The number of Eigen values/vectors is num_vals, num_vals has to be less than N. More...
 
void compute (const LinopMat< T > &Lmat_, const LinopMat< T > &Mmat_, int num_vals, const BcMat< T > &Lbc_)
 This will use do the same work as compute(), but will overide all boundary conditions specified through BcVec and use the input BcMat instead. Read about class BcMat to see how this works, also see examples example/Ex_16.cpp and test/Visco_3D_pipe.cpp of how this is applied. This function is useful when boundary conditions are mixed between variables. Also, if you have boundary conditions that have an associated eigenvalue, see compute_with_constraints. More...
 
void compute_with_constraints (const LinopMat< T > &Lmat_, const LinopMat< T > &Mmat_, int num_vals, const BcMat< T > &Lbc_, const BcMat< T > &Mbc_)
 
void compute_with_constraints (const LinopMat< T > &Lmat_, const LinopMat< T > &Mmat_, int num_vals, const BcMat< T > &Lbc_embed_, const BcMat< T > &Lbc_append_, const BcMat< T > &Mbc_append_)
 

Additional Inherited Members

- Public Attributes inherited from sis::GeneralizedEigenSolver< T >
std::vector< ChebfunMat< std::complex< T > > > eigenvectorsMat
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, 1 > eigenvalues
 

Detailed Description

template<class T>
class sis::SingularValueDecomposition< T >

This class computes various SingularValues of a differential block matrix operator using using it's adjoint. Class has various utilities, like computing the adjoint, adjoint boundary conditions, and also computing singular values of the frequency response operator.

Definition at line 531 of file sis.hpp.

Member Function Documentation

◆ Adjoint()

template<class T>
LinopMat<T> sis::SingularValueDecomposition< T >::Adjoint ( const LinopMat< T > &  Lmat_)
inline

Computes the adjoint of a linear operator. This is a differential adjoint, and not the conjugate transpose of the operators in the LinopMat. To get the latter, use cTranspose(); Adjoints are for generic discriptor systems, like \(M\partial_{t}\phi(y) = L\phi(y)\).

Definition at line 9269 of file sis.hpp.

References sis::diff(), ind, sis::pow(), and sis::LinopMat< T >::resize().

Referenced by sis::SingularValueDecomposition< T >::compute(), sis::SingularValueDecomposition< std::complex< T > >::compute(), sis::SingularValueDecomposition< std::complex< T > >::PowerSpectralDensity(), and sis::SingularValueDecomposition< std::complex< T > >::PowerSpectralDensityIndividual().

◆ AdjointBc_analytical()

template<class T>
BcMat<T> sis::SingularValueDecomposition< T >::AdjointBc_analytical ( const LinopMat< T > &  Lmat_,
const BcMat< T > &  Lbc_,
const BcMat< T > &  Rbc_ 
)
inline

Computes adjoint boundary conditions analytically, needs boundary conditions all right boundary conditions in rbc, and all left boundary conditions in lbc. All dependent variables need not have boundary conditions specified, but it is essential that the number of boundary conditions be equal to the sum of derivatives of all independent variables, and all the boundary conditions be linearly independent. The adjoint boundary conditions will be returned in the output, as a BcMat, will all boundary conditions for left and right in it, in the orders left followed by right.

Definition at line 9408 of file sis.hpp.

References sis::diff(), sis::feval2D(), and sis::pow().

Referenced by sis::SingularValueDecomposition< T >::compute(), sis::SingularValueDecomposition< std::complex< T > >::compute(), sis::SingularValueDecomposition< std::complex< T > >::PowerSpectralDensity(), and sis::SingularValueDecomposition< std::complex< T > >::PowerSpectralDensityIndividual().

◆ compute() [1/3]

template<class T>
void sis::SingularValueDecomposition< T >::compute ( const LinopMat< T > &  A_,
const BcMat< T > &  Lbc_,
const BcMat< T > &  Rbc_,
int  num_vals 
)
inline

◆ compute() [2/3]

template<class T>
void sis::SingularValueDecomposition< T >::compute ( const LinopMat< T > &  A_,
const LinopMat< T > &  B_,
const LinopMat< T > &  C_,
const BcMat< T > &  Lbc_,
const BcMat< T > &  Rbc_,
int  num_vals 
)
inline

Computes the Singular value(s) of a system in the input-output form,

\begin{align} [\mathcal{A}\,\psi(\cdot)](y) \;&=\; [\mathcal{B}\,\boldmath{d}(\cdot)](y) \\ \phi(y) \;&=\; \mathcal{C}\,\psi(y), \end{align}

This is used to the find the frequency response of block matrix operators.

Definition at line 9245 of file sis.hpp.

◆ compute() [3/3]

template<class T>
void sis::SingularValueDecomposition< T >::compute ( const LinopMat< T > &  A_,
const ChebfunMat< T > &  B_,
const LinopMat< T > &  C_,
const BcMat< T > &  Lbc_,
const BcMat< T > &  Rbc_,
int  num_vals 
)
inline

Computes the Singular value(s) of a system in the input-output form,

\begin{align} [\mathcal{A}\,\psi(\cdot)](y) \;&=\; B(y)\,d \phi(y) \;&=\; \mathcal{C}\,\psi(y), \end{align}

here, B(y) is a function and not an operator.

Definition at line 9258 of file sis.hpp.


The documentation for this class was generated from the following file: