PLaSK library
|
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>
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. | |
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.
plask::optical::modal::Diagonalizer::Diagonalizer | ( | Expansion * | src | ) |
Definition at line 28 of file diagonalizer.cpp.
|
virtual |
Definition at line 31 of file diagonalizer.cpp.
Calculate the diagonalization of given layer.
true
if any work has been done and false
if it was not necessary Implemented in plask::optical::modal::SimpleDiagonalizer.
|
pure virtual |
Return diagonal matrix of eigenevalues.
Implemented in plask::optical::modal::SimpleDiagonalizer.
Initiate the diagonalization.
Implemented in plask::optical::modal::SimpleDiagonalizer.
|
pure virtual |
Return inverse matrix of eigenvectors of QE.
Implemented in plask::optical::modal::SimpleDiagonalizer.
|
pure virtual |
Return inverse matrix of eigenvectors of QH.
Implemented in plask::optical::modal::SimpleDiagonalizer.
|
inline |
Return true is layer is diagonalized.
Definition at line 72 of file diagonalizer.hpp.
|
pure virtual |
Return the overall matrix size.
Implemented in plask::optical::modal::SimpleDiagonalizer.
|
inline |
Return the reference to the source object.
Definition at line 62 of file diagonalizer.hpp.
Return the reference to the source object.
Definition at line 59 of file diagonalizer.hpp.
Return matrix of eigenvectors of QE.
Implemented in plask::optical::modal::SimpleDiagonalizer.
Return matrix of eigenvectors of QH.
Implemented in plask::optical::modal::SimpleDiagonalizer.
|
protected |
True if the given layer was diagonalized.
Definition at line 46 of file diagonalizer.hpp.
const std::size_t plask::optical::modal::Diagonalizer::lcount |
Number of distinct layers.
Definition at line 49 of file diagonalizer.hpp.
|
protected |
Information about the matrices to diagonalize.
Definition at line 45 of file diagonalizer.hpp.