PLaSK library

Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | List of all members
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 Expansion * | source () const
| Return the reference to the source object.
Expansion * | source ()
| 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 cdiagonal & | Gamma (size_t layer) const =0
| Return diagonal matrix of eigenevalues.
virtual const cmatrix & | TE (size_t layer) const =0
| Return matrix of eigenvectors of QE.
virtual const cmatrix & | TH (size_t layer) const =0
| Return matrix of eigenvectors of QH.
virtual const cmatrix & | invTE (size_t layer) const =0
| Return inverse matrix of eigenvectors of QE.
virtual const cmatrix & | invTH (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
Expansion * | src
| Information about the matrices to diagonalize.
std::vector< bool > | diagonalized
| 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:

- solvers/optical/modal/diagonalizer.hpp
- solvers/optical/modal/diagonalizer.cpp