Spectral Integral Suite in C++
sis::Discretize< std::complex< T > > Class Template Reference

Given a linear block matrix operator and appropriate boundary conditions, this class will produce an Eigen matrix representing the discretized version. The implementation will naturally involve column pivoting, and the pivot matrix is also stored. More...

#include <sis.hpp>

Inheritance diagram for sis::Discretize< std::complex< T > >:
Collaboration diagram for sis::Discretize< std::complex< T > >:

Public Member Functions

 Discretize ()
 Null Constructor. More...
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > operator() (const LinopMat< std::complex< T > > &Lmat_, const BcMat< std::complex< T > > &bc_)
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > operator() (const LinopMat< std::complex< T > > &Lmat_)
 Discretization based on a previous call with Boundary conditions. Then other LinopMats can be discretized based on a previous Lbc called with operator()(const LinopMat<T> &Lmat, const BcMat<T> &bc). More...
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > ChebDiff (const LinopMat< std::complex< T > > &Lmat_)
 Chebyshev differentiation operator for LinopMat. More...
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > MatAppend (const LinopMat< std::complex< T > > &Lmat_, const BcMat< std::complex< T > > &bc_)
 
- Public Member Functions inherited from sis::MatGen< std::complex< T > >
 MatGen ()
 Null Constructor. More...
 
 MatGen (int n_)
 Constructor. More...
 
void compute (int n_)
 Call this to generate integration matrices for highest order n. More...
 
void clear ()
 

Public Attributes

Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > P
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > subs_mat
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > A1
 
Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > invmat_temp
 
std::vector< int > highest_each_column
 
int num_bc
 
- Public Attributes inherited from sis::MatGen< std::complex< T > >
std::vector< Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > > mats
 
std::vector< Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > > mats2
 
std::vector< Eigen::Matrix< std::complex< T >, Eigen::Dynamic, Eigen::Dynamic > > con_mats
 

Detailed Description

template<class T>
class sis::Discretize< std::complex< T > >

Given a linear block matrix operator and appropriate boundary conditions, this class will produce an Eigen matrix representing the discretized version. The implementation will naturally involve column pivoting, and the pivot matrix is also stored.

Definition at line 9855 of file sis.hpp.

Constructor & Destructor Documentation

◆ Discretize()

template<class T >
sis::Discretize< std::complex< T > >::Discretize ( )
inline

Null Constructor.

Definition at line 9867 of file sis.hpp.

Member Function Documentation

◆ ChebDiff()

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::ChebDiff ( const LinopMat< std::complex< T > > &  Lmat_)
inline

Chebyshev differentiation operator for LinopMat.

Definition at line 10067 of file sis.hpp.

References sis::Discretize< T >::highest_each_column, sis::N, sis::Chebfun< T >::p2c(), sis::setChebPts(), and sis::y().

◆ MatAppend()

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::MatAppend ( const LinopMat< std::complex< T > > &  Lmat_,
const BcMat< std::complex< T > > &  bc_ 
)
inline

Generates the Eigen matrix of discretization as full matrix, without embedding constraints, by appending them instead. Constraints are at the bottom.

Definition at line 10160 of file sis.hpp.

References sis::MatGen< T >::compute(), sis::Discretize< T >::highest_each_column, sis::Discretize< T >::mat_temp, sis::MatGen< T >::mats2, sis::N, sis::Discretize< T >::num_bc, and sis::Discretize< T >::subs_mat.

◆ operator()() [1/2]

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::operator() ( const LinopMat< std::complex< T > > &  Lmat_,
const BcMat< std::complex< T > > &  bc_ 
)
inline

Generates the Eigen matrix. Note that columns are pivoted according to P. Lmat is the operator, bc is the boundary condition and n_ is the highest order.

Definition at line 9872 of file sis.hpp.

References sis::MatGen< T >::compute(), sis::Discretize< T >::highest_each_column, sis::Discretize< T >::mat_temp, sis::MatGen< T >::mats2, sis::N, sis::Discretize< T >::num_bc, sis::Discretize< T >::P, and sis::Discretize< T >::subs_mat.

◆ operator()() [2/2]

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::operator() ( const LinopMat< std::complex< T > > &  Lmat_)
inline

Discretization based on a previous call with Boundary conditions. Then other LinopMats can be discretized based on a previous Lbc called with operator()(const LinopMat<T> &Lmat, const BcMat<T> &bc).

Definition at line 10017 of file sis.hpp.

References sis::MatGen< T >::compute(), sis::Discretize< T >::highest_each_column, sis::MatGen< T >::mats2, sis::N, sis::Discretize< T >::num_bc, sis::Discretize< T >::P, and sis::Discretize< T >::subs_mat.

Member Data Documentation

◆ A1

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::A1

Definition at line 9860 of file sis.hpp.

◆ highest_each_column

template<class T >
std::vector<int> sis::Discretize< std::complex< T > >::highest_each_column

Definition at line 9862 of file sis.hpp.

◆ invmat_temp

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::invmat_temp

Definition at line 9861 of file sis.hpp.

◆ num_bc

template<class T >
int sis::Discretize< std::complex< T > >::num_bc

Definition at line 9864 of file sis.hpp.

◆ P

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::P

Definition at line 9857 of file sis.hpp.

◆ subs_mat

template<class T >
Eigen::Matrix<std::complex<T>, Eigen::Dynamic, Eigen::Dynamic> sis::Discretize< std::complex< T > >::subs_mat

Definition at line 9858 of file sis.hpp.


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