PLaSK library

Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
plask::optical::modal Namespace Reference

## Namespaces
namespace | FFT
namespace | python

## Classes
struct | AdmittanceTransfer
| Base class for all solvers using reflection matrix method. More...
struct | BesselSolverCyl
| Reflection transformation solver in Cartesian 2D geometry. More...
class | Diagonalizer
| 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...
struct | Expansion
struct | ExpansionBessel
struct | ExpansionBesselFini
struct | ExpansionBesselInfini
struct | ExpansionPW2D
struct | ExpansionPW3D
struct | FourierSolver2D
| Reflection transformation solver in Cartesian 2D geometry. More...
struct | FourierSolver3D
| Reflection transformation solver in Cartesian 3D geometry. More...
struct | GradientFunctions
struct | ImpedanceTransfer
| Base class for all solvers using reflection matrix method. More...
struct | LateralMeshAdapter
struct | LateralMeshAdapter< SolverOver< Geometry3D > >
struct | LevelsAdapter
| Simple adapter that allows to process single level in the mesh. More...
struct | LevelsAdapterGeneric
| Generic implementation of the level adapter. More...
struct | LevelsAdapterRectangular
| More efficient Rectangular implementation of the level adapter. More...
class | Matrix
| General simple matrix template. More...
class | MatrixDiagonal
| General simple diagonal matrix template. More...
struct | ModalBase
| Common base with layer details independent on the geometry. More...
class | ModalSolver
| Base class for all modal solvers. More...
struct | PML
| Information about lateral PMLs. More...
struct | ReflectionTransfer
| Base class for all solvers using reflection matrix method. More...
class | RootBrent
class | RootBroyden
struct | RootDigger
struct | RootMuller
class | SimpleDiagonalizer
| Simple diagonalizer This class is a simple diagonalizer. More...
struct | TempMatrix
struct | TempMatrixPool
struct | Transfer
| Base class for Admittance and Reflection transfers. More...
struct | XanceTransfer
| Base class for all solvers using reflection matrix method. More...

## Typedefs
typedef Matrix< double > | dmatrix
typedef Matrix< dcomplex > | cmatrix
typedef DataVector< dcomplex > | cvector
typedef DataVector< double > | dvector
typedef DataVector< const dcomplex > | const_cvector
typedef MatrixDiagonal< dcomplex > | cdiagonal

## Enumerations
enum | WhichField { FIELD_E , FIELD_H }
| Field identification. More...
enum | PropagationDirection { PROPAGATION_TOTAL = 0 , PROPAGATION_UPWARDS = 1 , PROPAGATION_DOWNWARDS = 2 }
| Light propagation direction. More...

## Functions
void | add_vertex (int l, int t, ExpansionPW3D::Gradient &val, long double &W, const ExpansionPW3D::Gradient::Vertex &vertex)
double | cf (const ExpansionPW3D::Coeff &c)
template<typename D >
void | ToeplitzLevinson (const DataVector< D > &TM, Matrix< D > &X)
| Solve T X = Y equation.
void | gaussLaguerre (size_t n, std::vector< double > &abscissae, DataVector< double > &weights, double scale=1.)
| Compute ascissae and weights for Gauss-Laguerre quadatures.
void | gaussLegendre (size_t n, std::vector< double > &abscissae, DataVector< double > &weights)
| Compute ascissae and weights for Gauss-Legendre quadatures.
cmatrix | invmult (cmatrix &A, cmatrix &B)
cvector | invmult (cmatrix &A, cvector &B)
cmatrix | inv (cmatrix &A)
dcomplex | det (cmatrix &A)
int | eigenv (cmatrix &A, cdiagonal &vals, cmatrix *rightv, cmatrix *leftv)
template<typename T >
Matrix< T > | operator+ (const Matrix< T > &A, const Matrix< T > &B)
| Summation operator of the matrices.
template<typename T >
Matrix< T > | operator- (const Matrix< T > &A, const Matrix< T > &B)
| Difference operator of the matrices.
template<typename T >
Matrix< T > | operator- (const Matrix< T > &A)
| Negation operator of the matrix.
cmatrix | operator* (const cmatrix &A, const cmatrix &B)
| Multiplication operator of the matrices (using BLAS level3)
cvector | operator* (const cmatrix &A, const cvector &v)
| Multiplication operator of the matrix-vector product (using BLAS level3)
template<typename T >
cmatrix | operator* (const Matrix< T > &A, const MatrixDiagonal< T > &B)
| Multiplication by the diagonal matrix (right)
template<typename T >
cmatrix | operator* (const MatrixDiagonal< T > &A, const Matrix< T > &B)
| Multiplication by the diagonal matrix (left)
template<typename T >
void | mult_matrix_by_diagonal (Matrix< T > &A, const MatrixDiagonal< T > &B)
| Multiplication of matrix by diagonal in-place (replacing A)
template<typename T >
void | mult_diagonal_by_matrix (const MatrixDiagonal< T > &A, Matrix< T > &B)
| Multiplication of diagonal by matrix in-place (replacing B)
void | mult_matrix_by_vector (const cmatrix &A, const const_cvector &v, cvector &dst)
void | mult_matrix_by_matrix (const cmatrix &A, const cmatrix &B, cmatrix &dst)
void | add_mult_matrix_by_vector (const cmatrix &A, const cvector &v, cvector &dst)
void | add_mult_matrix_by_matrix (const cmatrix &A, const cmatrix &B, cmatrix &dst)
cmatrix | invmult (cmatrix &&A, cmatrix &B)
cvector | invmult (cmatrix &&A, cvector &B)
cmatrix | inv (cmatrix &&A)
dcomplex | det (cmatrix &&A)
int | eigenv (cmatrix &&A, cdiagonal &vals, cmatrix *rightv=NULL, cmatrix *leftv=NULL)
template<typename T >
void | zero_matrix (Matrix< T > &A, size_t m, size_t n)
| Zero matrix.
template<typename T >
void | zero_matrix (Matrix< T > &A)
| Zero matrix.
template<typename T >
void | make_unit_matrix (Matrix< T > &A, size_t n)
| Create unit matrix.
template<typename T >
void | make_unit_matrix (Matrix< T > &A)
| Create unit matrix.
std::unique_ptr< LevelsAdapter > | makeLevelsAdapter (const shared_ptr< const Mesh > &src)
| Adapter factory.
template<typename S , typename T >
S | patterson (const std::function< S(T)> &fun, T a, T b, double &err, unsigned *order=nullptr)
| Compute Patterson quadrature along line a-b in complex plane with specified precision.
template double | patterson< double, double > (const std::function< double(double)> &fun, double a, double b, double &err, unsigned *order)

## Variables
const double | bessel_zeros [][100]
const double | patterson_points []
const double | patterson_weights [][256]
template class PLASK_SOLVER_API | ModalSolver< SolverWithMesh< Geometry2DCartesian, MeshAxis > >
template class PLASK_SOLVER_API | ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >
template class PLASK_SOLVER_API | ModalSolver< SolverOver< Geometry3D > >

## Typedef Documentation

## ◆ cdiagonal

typedef MatrixDiagonal<dcomplex> plask::optical::modal::cdiagonal

Definition at line 342 of file matrices.hpp.

## ◆ cmatrix

typedef Matrix<dcomplex> plask::optical::modal::cmatrix

Definition at line 336 of file matrices.hpp.

## ◆ const_cvector

typedef DataVector<const dcomplex> plask::optical::modal::const_cvector

Definition at line 341 of file matrices.hpp.

## ◆ cvector

typedef DataVector<dcomplex> plask::optical::modal::cvector

Definition at line 339 of file matrices.hpp.

## ◆ dmatrix

typedef Matrix<double> plask::optical::modal::dmatrix

Definition at line 335 of file matrices.hpp.

## ◆ dvector

typedef DataVector<double> plask::optical::modal::dvector

Definition at line 340 of file matrices.hpp.

## Enumeration Type Documentation

## ◆ PropagationDirection

enum plask::optical::modal::PropagationDirection

Light propagation direction.

Enumerator
PROPAGATION_TOTAL | Both directions in total.
PROPAGATION_UPWARDS | Upwards or towards the interface.
PROPAGATION_DOWNWARDS | Downwards or outside of the interface.

Definition at line 30 of file transfer.hpp.

## ◆ WhichField

enum plask::optical::modal::WhichField

Field identification.

Enumerator
FIELD_E | Electric field.
FIELD_H | Magnetic field.

Definition at line 24 of file transfer.hpp.

## Function Documentation

## ◆ add_mult_matrix_by_matrix()

void plask::optical::modal::add_mult_matrix_by_matrix | ( | const cmatrix & | A,
|  | const cmatrix & | B,
|  | cmatrix & | dst
| ) |  |
| inline

Definition at line 489 of file matrices.hpp.

## ◆ add_mult_matrix_by_vector()

void plask::optical::modal::add_mult_matrix_by_vector | ( | const cmatrix & | A,
|  | const cvector & | v,
|  | cvector & | dst
| ) |  |
| inline

Definition at line 479 of file matrices.hpp.

## ◆ add_vertex()

void plask::optical::modal::add_vertex | ( | int | l,
|  | int | t,
|  | ExpansionPW3D::Gradient & | val,
|  | long double & | W,
|  | const ExpansionPW3D::Gradient::Vertex & | vertex
| ) |  |
| inline

Definition at line 283 of file expansion3d.cpp.

## ◆ cf()

double plask::optical::modal::cf | ( | const ExpansionPW3D::Coeff & | c | ) |
| inline

Definition at line 292 of file expansion3d.cpp.

## ◆ det() [1/2]

dcomplex plask::optical::modal::det | ( | cmatrix && | A | ) |
| inline

Definition at line 514 of file matrices.hpp.

## ◆ det() [2/2]

dcomplex plask::optical::modal::det | ( | cmatrix & | A | ) |

Definition at line 76 of file matrices.cpp.

## ◆ eigenv() [1/2]

int plask::optical::modal::eigenv | ( | cmatrix && | A,
|  | cdiagonal & | vals,
|  | cmatrix * | rightv = `NULL`,
|  | cmatrix * | leftv = `NULL`
| ) |  |
| inline

Definition at line 515 of file matrices.hpp.

## ◆ eigenv() [2/2]

int plask::optical::modal::eigenv | ( | cmatrix & | A,
|  | cdiagonal & | vals,
|  | cmatrix * | rightv,
|  | cmatrix * | leftv
| ) |  |

Definition at line 99 of file matrices.cpp.

## ◆ gaussLaguerre()

void plask::optical::modal::gaussLaguerre | ( | size_t | n,
|  | std::vector< double > & | abscissae,
|  | DataVector< double > & | weights,
|  | double | scale = `1.`
| ) |  |

Compute ascissae and weights for Gauss-Laguerre quadatures.

Parameters

  | n | quadrature order
  [out] | abscissae | computed abscissae
  [out] | weights | corresponding weights
  [in] | scale | scale parameter in the $\exp(sx)$ weight

Definition at line 183 of file gauss_laguerre.cpp.

## ◆ gaussLegendre()

void plask::optical::modal::gaussLegendre | ( | size_t | n,
|  | std::vector< double > & | abscissae,
|  | DataVector< double > & | weights
| ) |  |

Compute ascissae and weights for Gauss-Legendre quadatures.

Parameters

  | n | quadrature order
  [out] | abscissae | computed abscissae
  [out] | weights | corresponding weights

Definition at line 23 of file gauss_legendre.cpp.

## ◆ inv() [1/2]

cmatrix plask::optical::modal::inv | ( | cmatrix && | A | ) |
| inline

Definition at line 513 of file matrices.hpp.

## ◆ inv() [2/2]

cmatrix plask::optical::modal::inv | ( | cmatrix & | A | ) |

Definition at line 59 of file matrices.cpp.

## ◆ invmult() [1/4]

cmatrix plask::optical::modal::invmult | ( | cmatrix && | A,
|  | cmatrix & | B
| ) |  |
| inline

Definition at line 511 of file matrices.hpp.

## ◆ invmult() [2/4]

cvector plask::optical::modal::invmult | ( | cmatrix && | A,
|  | cvector & | B
| ) |  |
| inline

Definition at line 512 of file matrices.hpp.

## ◆ invmult() [3/4]

cmatrix plask::optical::modal::invmult | ( | cmatrix & | A,
|  | cmatrix & | B
| ) |  |

Definition at line 18 of file matrices.cpp.

## ◆ invmult() [4/4]

cvector plask::optical::modal::invmult | ( | cmatrix & | A,
|  | cvector & | B
| ) |  |

Definition at line 39 of file matrices.cpp.

## ◆ make_unit_matrix() [1/2]

template<typename T >

void plask::optical::modal::make_unit_matrix | ( | Matrix< T > & | A | ) |

Create unit matrix.

Definition at line 543 of file matrices.hpp.

## ◆ make_unit_matrix() [2/2]

template<typename T >

void plask::optical::modal::make_unit_matrix | ( | Matrix< T > & | A,
|  | size_t | n
| ) |  |

Create unit matrix.

Definition at line 535 of file matrices.hpp.

## ◆ makeLevelsAdapter()

std::unique_ptr< LevelsAdapter > PLASK_SOLVER_API plask::optical::modal::makeLevelsAdapter | ( | const shared_ptr< const Mesh > & | src | ) |

Adapter factory.

Choose the best class based on the mesh type

Parameters

  src | source mesh

Definition at line 76 of file meshadapter.cpp.

## ◆ mult_diagonal_by_matrix()

template<typename T >

void plask::optical::modal::mult_diagonal_by_matrix | ( | const MatrixDiagonal< T > & | A,
|  | Matrix< T > & | B
| ) |  |
| inline

Multiplication of diagonal by matrix in-place (replacing B)

Definition at line 444 of file matrices.hpp.

## ◆ mult_matrix_by_diagonal()

template<typename T >

void plask::optical::modal::mult_matrix_by_diagonal | ( | Matrix< T > & | A,
|  | const MatrixDiagonal< T > & | B
| ) |  |
| inline

Multiplication of matrix by diagonal in-place (replacing A)

Definition at line 430 of file matrices.hpp.

## ◆ mult_matrix_by_matrix()

void plask::optical::modal::mult_matrix_by_matrix | ( | const cmatrix & | A,
|  | const cmatrix & | B,
|  | cmatrix & | dst
| ) |  |
| inline

Definition at line 466 of file matrices.hpp.

## ◆ mult_matrix_by_vector()

void plask::optical::modal::mult_matrix_by_vector | ( | const cmatrix & | A,
|  | const const_cvector & | v,
|  | cvector & | dst
| ) |  |
| inline

Definition at line 456 of file matrices.hpp.

## ◆ operator*() [1/4]

cmatrix plask::optical::modal::operator* | ( | const cmatrix & | A,
|  | const cmatrix & | B
| ) |  |
| inline

Multiplication operator of the matrices (using BLAS level3)

Definition at line 379 of file matrices.hpp.

## ◆ operator*() [2/4]

cvector plask::optical::modal::operator* | ( | const cmatrix & | A,
|  | const cvector & | v
| ) |  |
| inline

Multiplication operator of the matrix-vector product (using BLAS level3)

Definition at line 388 of file matrices.hpp.

## ◆ operator*() [3/4]

template<typename T >

cmatrix plask::optical::modal::operator* | ( | const Matrix< T > & | A,
|  | const MatrixDiagonal< T > & | B
| ) |  |
| inline

Multiplication by the diagonal matrix (right)

Definition at line 399 of file matrices.hpp.

## ◆ operator*() [4/4]

template<typename T >

cmatrix plask::optical::modal::operator* | ( | const MatrixDiagonal< T > & | A,
|  | const Matrix< T > & | B
| ) |  |
| inline

Multiplication by the diagonal matrix (left)

Definition at line 416 of file matrices.hpp.

## ◆ operator+()

template<typename T >

Matrix< T > plask::optical::modal::operator+ | ( | const Matrix< T > & | A,
|  | const Matrix< T > & | B
| ) |  |
| inline

Summation operator of the matrices.

Definition at line 347 of file matrices.hpp.

## ◆ operator-() [1/2]

template<typename T >

Matrix< T > plask::optical::modal::operator- | ( | const Matrix< T > & | A | ) |
| inline

Negation operator of the matrix.

Definition at line 371 of file matrices.hpp.

## ◆ operator-() [2/2]

template<typename T >

Matrix< T > plask::optical::modal::operator- | ( | const Matrix< T > & | A,
|  | const Matrix< T > & | B
| ) |  |
| inline

Difference operator of the matrices.

Definition at line 359 of file matrices.hpp.

## ◆ patterson()

template<typename S , typename T >

S plask::optical::modal::patterson | ( | const std::function< S(T)> & | fun,
|  | T | a,
|  | T | b,
|  | double & | err,
|  | unsigned * | order = `nullptr`
| ) |  |

Compute Patterson quadrature along line a-b in complex plane with specified precision.

Parameters

  | fun | function to integrate
  | a | starting point
  | b | final point
  [in,out] | err | on input maximum error, on output estimated error
  [out] | order | required quadrature order

Returns
  computed integral

Definition at line 20 of file patterson.cpp.

## ◆ patterson< double, double >()

template double plask::optical::modal::patterson< double, double > | ( | const std::function< double(double)> & | fun,
|  | double | a,
|  | double | b,
|  | double & | err,
|  | unsigned * | order
| ) |  |

## ◆ ToeplitzLevinson()

template<typename D >

void plask::optical::modal::ToeplitzLevinson | ( | const DataVector< D > & | TM,
|  | Matrix< D > & | X
| ) |  |

Solve T X = Y equation.

Parameters

  | TM | Toeplitz matrix data stored as: first column + first row reversed (T00 T10 T20 T02 T01)
  [in,out] | X | on input right-hand size (Y), on output solution (X)

Definition at line 29 of file toeplitz.hpp.

## ◆ zero_matrix() [1/2]

template<typename T >

void plask::optical::modal::zero_matrix | ( | Matrix< T > & | A | ) |

Zero matrix.

Definition at line 529 of file matrices.hpp.

## ◆ zero_matrix() [2/2]

template<typename T >

void plask::optical::modal::zero_matrix | ( | Matrix< T > & | A,
|  | size_t | m,
|  | size_t | n
| ) |  |

Zero matrix.

Definition at line 522 of file matrices.hpp.

## Variable Documentation

## ◆ bessel_zeros

const double plask::optical::modal::bessel_zeros

Definition at line 18 of file zeros-data.cpp.

## ◆ ModalSolver< SolverOver< Geometry3D > >

template class PLASK_SOLVER_API plask::optical::modal::ModalSolver< SolverOver< Geometry3D > >

Definition at line 766 of file solver.cpp.

## ◆ ModalSolver< SolverWithMesh< Geometry2DCartesian, MeshAxis > >

template class PLASK_SOLVER_API plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCartesian, MeshAxis > >

Definition at line 764 of file solver.cpp.

## ◆ ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >

template class PLASK_SOLVER_API plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >

Definition at line 765 of file solver.cpp.

## ◆ patterson_points

const double plask::optical::modal::patterson_points

Definition at line 18 of file patterson-data.cpp.

## ◆ patterson_weights

const double plask::optical::modal::patterson_weights

Definition at line 276 of file patterson-data.cpp.