PLaSK library
Loading...
Searching...
No Matches
plask::optical::modal::Diagonalizer Class Referenceabstract

Base for the class determining and holding the necessary matrices This is the abstract base class for all diagonalizers (multi-threaded, disk-storage, MPI-using etc. More...

#include <solvers/optical/modal/diagonalizer.hpp>

Inheritance diagram for plask::optical::modal::Diagonalizer:
[legend]
Collaboration diagram for plask::optical::modal::Diagonalizer:
[legend]

Public Member Functions

 Diagonalizer (Expansion *src)
 
virtual ~Diagonalizer ()
 
virtual std::size_t matrixSize () const =0
 Return the overall matrix size.
 
const Expansionsource () const
 Return the reference to the source object.
 
Expansionsource ()
 Return the reference to the source object.
 
virtual void initDiagonalization ()=0
 Initiate the diagonalization.
 
virtual bool diagonalizeLayer (size_t layer)=0
 Calculate the diagonalization of given layer.
 
bool isDiagonalized (size_t layer)
 Return true is layer is diagonalized.
 
virtual const cdiagonalGamma (size_t layer) const =0
 Return diagonal matrix of eigenevalues.
 
virtual const cmatrixTE (size_t layer) const =0
 Return matrix of eigenvectors of QE.
 
virtual const cmatrixTH (size_t layer) const =0
 Return matrix of eigenvectors of QH.
 
virtual const cmatrixinvTE (size_t layer) const =0
 Return inverse matrix of eigenvectors of QE.
 
virtual const cmatrixinvTH (size_t layer) const =0
 Return inverse matrix of eigenvectors of QH.
 

Public Attributes

const std::size_t lcount
 Number of distinct layers.
 

Protected Attributes

Expansionsrc
 Information about the matrices to diagonalize.
 
std::vector< booldiagonalized
 True if the given layer was diagonalized.
 

Detailed Description

Base for the class determining and holding the necessary matrices This is the abstract base class for all diagonalizers (multi-threaded, disk-storage, MPI-using etc.

This class should compute gamma, Te and Th matrices for each layer and store it until the next initDiagonalization(...) is called or the object is destroyed (this is necessary for computation of the fields after the convergence).

Definition at line 42 of file diagonalizer.hpp.

Constructor & Destructor Documentation

◆ Diagonalizer()

plask::optical::modal::Diagonalizer::Diagonalizer ( Expansion src)

Definition at line 28 of file diagonalizer.cpp.

◆ ~Diagonalizer()

plask::optical::modal::Diagonalizer::~Diagonalizer ( )
virtual

Definition at line 31 of file diagonalizer.cpp.

Member Function Documentation

◆ diagonalizeLayer()

virtual bool plask::optical::modal::Diagonalizer::diagonalizeLayer ( size_t  layer)
pure virtual

Calculate the diagonalization of given layer.

Returns
true if any work has been done and false if it was not necessary

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ Gamma()

virtual const cdiagonal & plask::optical::modal::Diagonalizer::Gamma ( size_t  layer) const
pure virtual

Return diagonal matrix of eigenevalues.

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ initDiagonalization()

virtual void plask::optical::modal::Diagonalizer::initDiagonalization ( )
pure virtual

Initiate the diagonalization.

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ invTE()

virtual const cmatrix & plask::optical::modal::Diagonalizer::invTE ( size_t  layer) const
pure virtual

Return inverse matrix of eigenvectors of QE.

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ invTH()

virtual const cmatrix & plask::optical::modal::Diagonalizer::invTH ( size_t  layer) const
pure virtual

Return inverse matrix of eigenvectors of QH.

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ isDiagonalized()

bool plask::optical::modal::Diagonalizer::isDiagonalized ( size_t  layer)
inline

Return true is layer is diagonalized.

Definition at line 72 of file diagonalizer.hpp.

◆ matrixSize()

virtual std::size_t plask::optical::modal::Diagonalizer::matrixSize ( ) const
pure virtual

Return the overall matrix size.

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ source() [1/2]

Expansion * plask::optical::modal::Diagonalizer::source ( )
inline

Return the reference to the source object.

Definition at line 62 of file diagonalizer.hpp.

◆ source() [2/2]

const Expansion * plask::optical::modal::Diagonalizer::source ( ) const
inline

Return the reference to the source object.

Definition at line 59 of file diagonalizer.hpp.

◆ TE()

virtual const cmatrix & plask::optical::modal::Diagonalizer::TE ( size_t  layer) const
pure virtual

Return matrix of eigenvectors of QE.

Implemented in plask::optical::modal::SimpleDiagonalizer.

◆ TH()

virtual const cmatrix & plask::optical::modal::Diagonalizer::TH ( size_t  layer) const
pure virtual

Return matrix of eigenvectors of QH.

Implemented in plask::optical::modal::SimpleDiagonalizer.

Member Data Documentation

◆ diagonalized

std::vector<bool> plask::optical::modal::Diagonalizer::diagonalized
protected

True if the given layer was diagonalized.

Definition at line 46 of file diagonalizer.hpp.

◆ lcount

const std::size_t plask::optical::modal::Diagonalizer::lcount

Number of distinct layers.

Definition at line 49 of file diagonalizer.hpp.

◆ src

Expansion* plask::optical::modal::Diagonalizer::src
protected

Information about the matrices to diagonalize.

Definition at line 45 of file diagonalizer.hpp.


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