WaveBlocksND
Public Types | Static Public Member Functions | Static Private Member Functions | List of all members
waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR > Class Template Reference

Class providing inhomogeneous inner product calculation of scalar wavepackets. More...

#include <inhomogeneous_inner_product.hpp>

Public Types

using CMatrixXX = CMatrix< Eigen::Dynamic, Eigen::Dynamic >
 
using CMatrix1X = CMatrix< 1, Eigen::Dynamic >
 
using CMatrixX1 = CMatrix< Eigen::Dynamic, 1 >
 
using CMatrixD1 = CMatrix< D, 1 >
 
using CMatrixDD = CMatrix< D, D >
 
using CMatrixDX = CMatrix< D, Eigen::Dynamic >
 
using RMatrixDD = RMatrix< D, D >
 
using RMatrixD1 = RMatrix< D, 1 >
 
using CDiagonalXX = Eigen::DiagonalMatrix< complex_t, Eigen::Dynamic >
 
using NodeMatrix = typename QR::NodeMatrix
 
using WeightVector = typename QR::WeightVector
 
using op_t = std::function< CMatrix1X(CMatrixDX, RMatrixD1)>
 

Static Public Member Functions

static CMatrixXX build_matrix (const AbstractScalarHaWp< D, MultiIndex > &pacbra, const AbstractScalarHaWp< D, MultiIndex > &packet, const op_t &op=default_op)
 Calculate the matrix of the inner product. More...
 
static complex_t quadrature (const AbstractScalarHaWp< D, MultiIndex > &pacbra, const AbstractScalarHaWp< D, MultiIndex > &packet, const op_t &op=default_op)
 Perform quadrature. More...
 

Static Private Member Functions

static CMatrix1X default_op (const CMatrixDX &nodes, const RMatrixD1 &pos)
 

Detailed Description

template<dim_t D, class MultiIndex, class QR>
class waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >

Class providing inhomogeneous inner product calculation of scalar wavepackets.

Template Parameters
Ddimensionality of processed wavepackets
MultiIndexmulti-index type of processed wavepackets
QRquadrature rule to use, with R nodes

Member Typedef Documentation

template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CDiagonalXX = Eigen::DiagonalMatrix<complex_t, Eigen::Dynamic>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CMatrix1X = CMatrix<1, Eigen::Dynamic>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CMatrixD1 = CMatrix<D, 1>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CMatrixDD = CMatrix<D, D>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CMatrixDX = CMatrix<D, Eigen::Dynamic>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CMatrixX1 = CMatrix<Eigen::Dynamic, 1>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::CMatrixXX = CMatrix<Eigen::Dynamic, Eigen::Dynamic>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::NodeMatrix = typename QR::NodeMatrix
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::op_t = std::function<CMatrix1X(CMatrixDX,RMatrixD1)>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::RMatrixD1 = RMatrix<D, 1>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::RMatrixDD = RMatrix<D, D>
template<dim_t D, class MultiIndex , class QR >
using waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::WeightVector = typename QR::WeightVector

Member Function Documentation

template<dim_t D, class MultiIndex , class QR >
static CMatrixXX waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::build_matrix ( const AbstractScalarHaWp< D, MultiIndex > &  pacbra,
const AbstractScalarHaWp< D, MultiIndex > &  packet,
const op_t op = default_op 
)
inlinestatic

Calculate the matrix of the inner product.

Returns the matrix elements \(\langle \Phi | f | \Phi' \rangle\) with an operator \(f\). The coefficients of the wavepackets are ignored.

Parameters
[in]pacbrawavepacket \(\Phi\)
[in]packetwavepacket \(\Phi'\)
[in]opoperator \(f(x, q) : \mathbb{C}^{D \times R} \times \mathbb{R}^D \rightarrow \mathbb{C}^R\) which is evaluated at the nodal points \(x\) and position \(q\); default returns a vector of ones
template<dim_t D, class MultiIndex , class QR >
static CMatrix1X waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::default_op ( const CMatrixDX nodes,
const RMatrixD1 pos 
)
inlinestaticprivate
template<dim_t D, class MultiIndex , class QR >
static complex_t waveblocks::innerproducts::InhomogeneousInnerProduct< D, MultiIndex, QR >::quadrature ( const AbstractScalarHaWp< D, MultiIndex > &  pacbra,
const AbstractScalarHaWp< D, MultiIndex > &  packet,
const op_t op = default_op 
)
inlinestatic

Perform quadrature.

Evaluates the scalar \(\langle \Phi | f | \Phi' \rangle\). See build_matrix() for the parameters.


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