PLaSK library
Loading...
Searching...
No Matches
plask::optical::modal::ExpansionBesselInfini Struct Reference

#include <solvers/optical/modal/bessel/expansioncyl-infini.hpp>

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

Public Member Functions

 ExpansionBesselInfini (BesselSolverCyl *solver)
 Create new expansion.
 
void init2 () override
 Perform m-specific initialization.
 
void getMatrices (size_t layer, cmatrix &RE, cmatrix &RH) override
 Get RE anf RH matrices.
 
- Public Member Functions inherited from plask::optical::modal::ExpansionBessel
 ExpansionBessel (BesselSolverCyl *solver)
 Create new expansion.
 
virtual ~ExpansionBessel ()
 
void init1 ()
 Init expansion.
 
void init3 ()
 Estimate required integration order.
 
virtual void reset ()
 Free allocated memory.
 
bool diagonalQE (size_t l) const override
 
size_t matrixSize () const override
 Return size of the expansion matrix (equal to the number of expansion coefficients)
 
void prepareField () override
 Prepare for computatiations of the fields.
 
void cleanupField () override
 Cleanup after computatiations of the fields.
 
LazyData< Vec< 3, dcomplex > > getField (size_t layer, const shared_ptr< const typename LevelsAdapter::Level > &level, const cvector &E, const cvector &H) override
 Compute electric or magnetic field on dst_mesh at certain level.
 
LazyData< Tensor3< dcomplex > > getMaterialEps (size_t layer, const shared_ptr< const typename LevelsAdapter::Level > &level, InterpolationMethod interp=INTERPOLATION_DEFAULT) override
 Get epsilons index back from expansion.
 
double integratePoyntingVert (const cvector &E, const cvector &H) override
 Compute vertical component of the Poynting vector for specified fields.
 
double integrateField (WhichField field, size_t layer, const cmatrix &TE, const cmatrix &TH, const std::function< std::pair< dcomplex, dcomplex >(size_t, size_t)> &vertical) override
 Compute ½ En·conj(Em) or ½ Hn·conj(Hm)
 
void beforeGetEpsilon () override
 Prepare retrieval of refractive index.
 
void afterGetEpsilon () override
 Finish retrieval of refractive index.
 
unsigned getM () const
 
void setM (unsigned n)
 
size_t idxs (size_t i)
 Get $ X_s $ index.
 
size_t idxp (size_t i)
 Get $ X_p $ index.
 
cmatrix epsV_k (size_t layer)
 
cmatrix epsTss (size_t layer)
 
cmatrix epsTsp (size_t layer)
 
cmatrix epsTps (size_t layer)
 
cmatrix epsTpp (size_t layer)
 
virtual std::vector< doublegetKpts ()
 Return expansion wavevectors.
 
- Public Member Functions inherited from plask::optical::modal::Expansion
 Expansion (ModalBase *solver)
 
virtual ~Expansion ()
 
TempMatrix getTempMatrix ()
 
double getLam0 () const
 Get lam0.
 
void setLam0 (double lam)
 Set lam0.
 
void clearLam0 ()
 Clear lam0.
 
dcomplex getK0 () const
 Get current k0.
 
void setK0 (dcomplex k)
 Set current k0.
 
void computeIntegrals ()
 Compute all expansion coefficients.
 
virtual bool diagonalQE (size_t PLASK_UNUSED(l)) const
 Tell if matrix for i-th layer is diagonal.
 
virtual void getDiagonalEigenvectors (cmatrix &Te, cmatrix &Te1, const cmatrix &RE, const cdiagonal &gamma)
 Get eigenvectors with some physical meaning when the layer is diagonal.
 
void initField (WhichField which, InterpolationMethod method)
 Prepare for computations of the fields.
 
double getModeFlux (size_t n, const cmatrix &TE, const cmatrix &TH)
 Compute vertical component of the Poynting vector for fields specified as matrix column.
 

Public Attributes

DataVector< doublekdelts
 
- Public Attributes inherited from plask::optical::modal::ExpansionBessel
int m
 Angular dependency index.
 
bool initialized
 Expansion is initialized.
 
bool m_changed
 m has changed and init2 must be called
 
OrderedAxis rbounds
 Horizontal axis with separate integration intervals.
 
std::vector< doublekpts
 Argument coefficients for Bessel expansion base (zeros of Bessel function for finite domain)
 
shared_ptr< RectangularMesh< 2 > > mesh
 Mesh for getting material data.
 
- Public Attributes inherited from plask::optical::modal::Expansion
WhichField which_field
 
InterpolationMethod field_interpolation
 
ModalBasesolver
 Solver which performs calculations (and is the interface to the outside world)
 
dcomplex k0
 Frequency for which the actual computations are performed.
 
double lam0
 Material parameters wavelength.
 
LazyData< doubletemperature
 Obtained temperature.
 
bool gain_connected
 Flag indicating if the gain is connected.
 
bool epsilon_connected
 Flag indicating if inEpsilon is connected.
 
LazyData< Tensor2< double > > gain
 Obtained gain.
 
LazyData< Tensor3< dcomplex > > epsilons
 Obtained epsilons.
 
LazyData< doublecarriers
 Carriers concentration.
 

Protected Member Functions

virtual void integrateParams (Integrals &integrals, const dcomplex *datap, const dcomplex *datar, const dcomplex *dataz, dcomplex datap0, dcomplex datar0, dcomplex dataz0) override
 
double fieldFactor (size_t i) override
 
cmatrix getHzMatrix (const cmatrix &Bz, cmatrix &Hz) override
 
- Protected Member Functions inherited from plask::optical::modal::ExpansionBessel
void beforeLayersIntegrals (dcomplex lam, dcomplex glam) override
 
Tensor3< dcomplex > getEps (size_t layer, size_t ri, double r, double matz, double lam, double glam)
 
void layerIntegrals (size_t layer, double lam, double glam) override
 Compute integrals for RE and RH matrices.
 
- Protected Member Functions inherited from plask::optical::modal::Expansion
virtual void beforeLayersIntegrals (dcomplex PLASK_UNUSED(lam), dcomplex PLASK_UNUSED(glam))
 Method called before layer integrals are computed.
 
virtual void afterLayersIntegrals ()
 Method called after layer integrals are computed.
 

Additional Inherited Members

- Public Types inherited from plask::optical::modal::Expansion
enum  Component { E_UNSPECIFIED = 0 , E_TRAN = 1 , E_LONG = 2 }
 Specified component in polarization or symmetry. More...
 
- Protected Attributes inherited from plask::optical::modal::ExpansionBessel
std::vector< Segmentsegments
 Integration segments.
 
std::vector< booldiagonals
 Information if the layer is diagonal.
 
std::vector< Integralslayers_integrals
 Computed integrals.
 
- Protected Attributes inherited from plask::optical::modal::Expansion
TempMatrixPool temporary
 

Detailed Description

Definition at line 26 of file expansioncyl-infini.hpp.

Constructor & Destructor Documentation

◆ ExpansionBesselInfini()

plask::optical::modal::ExpansionBesselInfini::ExpansionBesselInfini ( BesselSolverCyl solver)

Create new expansion.

Parameters
solversolver which performs calculations

Definition at line 28 of file expansioncyl-infini.cpp.

Member Function Documentation

◆ fieldFactor()

double plask::optical::modal::ExpansionBesselInfini::fieldFactor ( size_t  i)
inlineoverrideprotectedvirtual

Implements plask::optical::modal::ExpansionBessel.

Definition at line 47 of file expansioncyl-infini.hpp.

◆ getHzMatrix()

cmatrix plask::optical::modal::ExpansionBesselInfini::getHzMatrix ( const cmatrix Bz,
cmatrix Hz 
)
inlineoverrideprotectedvirtual

Implements plask::optical::modal::ExpansionBessel.

Definition at line 51 of file expansioncyl-infini.hpp.

◆ getMatrices()

void plask::optical::modal::ExpansionBesselInfini::getMatrices ( size_t  layer,
cmatrix RE,
cmatrix RH 
)
overridevirtual

Get RE anf RH matrices.

Parameters
layerlayer number
[out]RE,RHresulting matrix

Implements plask::optical::modal::Expansion.

Definition at line 135 of file expansioncyl-infini.cpp.

◆ init2()

void plask::optical::modal::ExpansionBesselInfini::init2 ( )
overridevirtual

Perform m-specific initialization.

Implements plask::optical::modal::ExpansionBessel.

Definition at line 33 of file expansioncyl-infini.cpp.

◆ integrateParams()

void plask::optical::modal::ExpansionBesselInfini::integrateParams ( Integrals integrals,
const dcomplex *  datap,
const dcomplex *  datar,
const dcomplex *  dataz,
dcomplex  datap0,
dcomplex  datar0,
dcomplex  dataz0 
)
overrideprotectedvirtual

Implements plask::optical::modal::ExpansionBessel.

Definition at line 182 of file expansioncyl-infini.cpp.

Member Data Documentation

◆ kdelts

DataVector<double> plask::optical::modal::ExpansionBesselInfini::kdelts

Definition at line 28 of file expansioncyl-infini.hpp.


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