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

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

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

Public Member Functions

 ExpansionBesselFini (BesselSolverCyl *solver)
 Create new expansion.
 
void computeBesselZeros ()
 Fill kpts with Bessel zeros.
 
void init2 () override
 Perform m-specific initialization.
 
void reset () override
 Free allocated memory.
 
void getMatrices (size_t layer, cmatrix &RE, cmatrix &RH) override
 Get RE anf RH matrices.
 
cmatrix muV_k ()
 
cmatrix muTss ()
 
cmatrix muTsp ()
 
cmatrix muTps ()
 
cmatrix muTpp ()
 
- 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.
 
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.
 

Protected Member Functions

double fieldFactor (size_t i) override
 
cmatrix getHzMatrix (const cmatrix &Bz, cmatrix &Hz) override
 
virtual void integrateParams (Integrals &integrals, const dcomplex *datap, const dcomplex *datar, const dcomplex *dataz, dcomplex datap0, dcomplex datar0, dcomplex dataz0) 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.
 

Protected Attributes

Integrals mu_integrals
 Integrals for magnetic permeability.
 
- 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
 

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...
 
- 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.
 

Detailed Description

Definition at line 25 of file expansioncyl-fini.hpp.

Constructor & Destructor Documentation

◆ ExpansionBesselFini()

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

Create new expansion.

Parameters
solversolver which performs calculations

Definition at line 26 of file expansioncyl-fini.cpp.

Member Function Documentation

◆ computeBesselZeros()

void plask::optical::modal::ExpansionBesselFini::computeBesselZeros ( )

Fill kpts with Bessel zeros.

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

◆ fieldFactor()

double plask::optical::modal::ExpansionBesselFini::fieldFactor ( size_t  i)
overrideprotectedvirtual

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

Definition at line 170 of file expansioncyl-fini.cpp.

◆ getHzMatrix()

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

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

Definition at line 49 of file expansioncyl-fini.hpp.

◆ getMatrices()

void plask::optical::modal::ExpansionBesselFini::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 128 of file expansioncyl-fini.cpp.

◆ init2()

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

Perform m-specific initialization.

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

Definition at line 53 of file expansioncyl-fini.cpp.

◆ integrateParams()

void plask::optical::modal::ExpansionBesselFini::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 219 of file expansioncyl-fini.cpp.

◆ muTpp()

cmatrix plask::optical::modal::ExpansionBesselFini::muTpp ( )

Definition at line 209 of file expansioncyl-fini.cpp.

◆ muTps()

cmatrix plask::optical::modal::ExpansionBesselFini::muTps ( )

Definition at line 201 of file expansioncyl-fini.cpp.

◆ muTsp()

cmatrix plask::optical::modal::ExpansionBesselFini::muTsp ( )

Definition at line 193 of file expansioncyl-fini.cpp.

◆ muTss()

cmatrix plask::optical::modal::ExpansionBesselFini::muTss ( )

Definition at line 185 of file expansioncyl-fini.cpp.

◆ muV_k()

cmatrix plask::optical::modal::ExpansionBesselFini::muV_k ( )

Definition at line 177 of file expansioncyl-fini.cpp.

◆ reset()

void plask::optical::modal::ExpansionBesselFini::reset ( )
overridevirtual

Free allocated memory.

Reimplemented from plask::optical::modal::ExpansionBessel.

Definition at line 123 of file expansioncyl-fini.cpp.

Member Data Documentation

◆ mu_integrals

Integrals plask::optical::modal::ExpansionBesselFini::mu_integrals
protected

Integrals for magnetic permeability.

Definition at line 45 of file expansioncyl-fini.hpp.


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