PLaSK library

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
plask::optical::modal::BesselSolverCyl Struct Reference

Reflection transformation solver in Cartesian 2D geometry. More...

`#include <solvers/optical/modal/bessel/solvercyl.hpp>`

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

## Classes
struct | Mode

## Public Types
enum | BesselDomain { DOMAIN_FINITE , DOMAIN_INFINITE }
enum | InfiniteWavevectors { WAVEVECTORS_UNIFORM , WAVEVECTORS_NONUNIFORM , WAVEVECTORS_LAGUERRE , WAVEVECTORS_MANUAL }
enum | Rule { RULE_DIRECT , RULE_COMBINED_1 , RULE_COMBINED_2 , RULE_OLD }
typedef ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > > | BaseType
Public Types inherited from plask::SolverWithMesh< Geometry2DCylindrical, MeshAxis >
typedef MeshAxis | MeshType
| Type of the mesh for this solver.
Public Types inherited from plask::SolverOver< SpaceT >
typedef SpaceT | SpaceType
| of the space for this solver
Public Types inherited from plask::optical::modal::ModalBase
enum | Emission { EMISSION_UNSPECIFIED = 0 , EMISSION_TOP , EMISSION_BOTTOM , EMISSION_FRONT , EMISSION_BACK }
| Directions of the possible emission. More...

## Public Member Functions
const char * | ruleName ()
std::string | getClassName () const override
| Get name of solver.
std::vector< double > | getKlist ()
| Return list of wavevectors.
void | setKlist (const std::vector< double > &values)
| Set manual k-list.
std::vector< double > | getKweights ()
| Return list of wavevector weights.
void | setKweights (const std::vector< double > &values)
| Set manual k-weights.
void | clearKweights ()
void | clearModes () override
| Clear computed modes.
bool | setExpansionDefaults (bool with_k0=true) override
| Set expansion parameters from default values.
| BesselSolverCyl (const std::string &name="")
void | loadConfiguration (XMLReader &reader, Manager &manager) override
| Load configuration from given `source`.
size_t | findMode (dcomplex start, int m=1)
| Find the mode around the specified effective index.
size_t | getSize () const
| Get order of the orthogonal base.
void | setSize (size_t n)
| Set order of the orthogonal base.
double | getKscale () const
| Get scale for infinite wavevectors.
void | setKscale (double s)
| Set scale for infinite wavevectors.
double | getKmax () const
| Get maximum wavevector/k0 for infinite domain.
void | setKmax (double s)
| Set maximum wavevector/k0 for infinite domain.
InfiniteWavevectors | getKmethod () const
| Get method of infinite k-space integration.
void | setKmethod (InfiniteWavevectors k)
| Set method of infinite k-space integration.
BesselDomain | getDomain () const
| Get current domain.
void | setDomain (BesselDomain dom)
| Set new domain.
Rule | getRule () const
| Get current domain.
void | setRule (Rule r)
| Set new domain.
unsigned | getM () const
| Get order of the orthogonal base.
void | setM (unsigned n)
| Set order of the orthogonal base.
Expansion & | getExpansion () override
| Get solver expansion.
LazyData< Vec< 3, dcomplex > > | getScatteredFieldE (const cvector &incident, Transfer::IncidentDirection side, const shared_ptr< const MeshD< 2 > > &dst_mesh, InterpolationMethod method, PropagationDirection part=PROPAGATION_TOTAL)
| Get electric field at the given mesh for reflected light.
LazyData< Vec< 3, dcomplex > > | getScatteredFieldH (const cvector &incident, Transfer::IncidentDirection side, const shared_ptr< const MeshD< 2 > > &dst_mesh, InterpolationMethod method, PropagationDirection part=PROPAGATION_TOTAL)
| Get magnetic field at the given mesh for reflected light.
LazyData< double > | getScatteredFieldMagnitude (const cvector &incident, Transfer::IncidentDirection side, const shared_ptr< const MeshD< 2 > > &dst_mesh, InterpolationMethod method)
| Get light intensity for reflected light.
cvector | getFieldVectorE (size_t num, double z)
| Compute electric field coefficients for given z.
cvector | getFieldVectorH (size_t num, double z)
| Compute magnetic field coefficients for given z.
double | getIntegralEE (size_t num, double z1, double z2)
| Get ½ E·conj(E) integral between z1 and z2.
double | getIntegralHH (size_t num, double z1, double z2)
| Get ½ H·conj(H) integral between z1 and z2.
cvector | getScatteredFieldVectorE (const cvector &incident, Transfer::IncidentDirection side, double z)
| Compute electric field coefficients for given z for reflected light.
cvector | getScatteredFieldVectorH (const cvector &incident, Transfer::IncidentDirection side, double z)
| Compute magnetic field coefficients for given z for reflected light.
double | getScatteredIntegralEE (const cvector &incident, Transfer::IncidentDirection side, double z1, double z2)
| Get ½ E·conj(E) integral between z1 and z2 for reflected light.
double | getScatteredIntegralHH (const cvector &incident, Transfer::IncidentDirection side, double z1, double z2)
| Get ½ H·conj(H) integral between z1 and z2.
size_t | setMode ()
| Check if the current parameters correspond to some mode and insert it.
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)
cmatrix | muV_k ()
cmatrix | muTss ()
cmatrix | muTsp ()
cmatrix | muTps ()
cmatrix | muTpp ()
Public Member Functions inherited from plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >
| ModalSolver (const std::string &name="")
| ~ModalSolver ()
double | getSmooth () const
| Get current smooth.
void | setSmooth (double value)
| Set current smooth.
Transfer::Method | getTransferMethod () const
| Get currently selected transfer method.
void | setTransferMethod (Transfer::Method method)
| Set new transfer method.
bool | getGroupLayers () const
| Getter for group_layers.
void | setGroupLayers (bool value)
| Setter for group_layers.
double | getMaxTempDiff () const
| Getter for max_temp_diff.
void | setMaxTempDiff (double value)
| Setter for max_temp_diff.
double | getTempDist () const
| Getter for temp_dist.
void | setTempDist (double value)
| Setter for temp_dist.
double | getTempLayer () const
| Getter for temp_dist.
void | setTempLayer (double value)
| Setter for temp_dist.
std::string | getId () const override
| Get solver id.
bool | initCalculation () override
| Init calculations.
size_t | getInterface ()
| Get the position of the matching interface.
void | setInterfaceAt (double pos)
| Set the position of the matching interface.
void | setInterfaceOn (const shared_ptr< const GeometryObject > &object, const PathHints *path=nullptr)
| Set the position of the matching interface at the bottom of the provided geometry object.
void | setInterfaceOn (const shared_ptr< const GeometryObject > &object, const PathHints &path)
| Set the position of the matching interface at the bottom of the provided geometry object.
dcomplex | getDeterminant ()
| Get discontinuity matrix determinant for the current parameters.
void | prepareExpansionIntegrals (Expansion *expansion, const shared_ptr< MeshD< BaseT::SpaceType::DIM > > &mesh, dcomplex lam, dcomplex glam)
cvector | incidentVector (Transfer::IncidentDirection side, size_t idx, dcomplex lam=NAN)
| Get incident field vector for given mode.
cvector | incidentVector (Transfer::IncidentDirection side, const cvector &incident, dcomplex lam=NAN)
| Get incident field vector for given polarization.
Public Member Functions inherited from plask::SolverWithMesh< Geometry2DCylindrical, MeshAxis >
| SolverWithMesh (const std::string &name="")
| ~SolverWithMesh ()
void | loadConfiguration (XMLReader &source, Manager &manager) override
| Load configuration from given `source`.
void | parseStandardConfiguration (XMLReader &source, Manager &manager, const std::string &expected_msg="solver configuration element")
virtual void | onMeshChange (const typename MeshT::Event &PLASK_UNUSED(evt))
| This method is called just after the mesh has been changed.
void | onGeometryChange (const Geometry::Event &PLASK_UNUSED(evt)) override
| This method is called when the geometry is changed.
MeshAxis & | meshRef () const
| Get current module mesh.
shared_ptr< MeshAxis > | getMesh () const
| Get current solver mesh.
void | setMesh (const shared_ptr< MeshAxis > &mesh)
| Set new mesh for the solver.
void | setMesh (shared_ptr< MeshGeneratorD< MeshT::DIM > > generator)
| Set new mesh got from generator.
Public Member Functions inherited from plask::SolverOver< SpaceT >
| SolverOver (const std::string &name="")
| ~SolverOver ()
void | parseStandardConfiguration (XMLReader &source, Manager &manager, const std::string &expected_msg="solver configuration element")
shared_ptr< SpaceT > | getGeometry () const
| Get current solver geometry space.
void | setGeometry (const shared_ptr< SpaceT > &geometry)
| Set new geometry for the solver.
Public Member Functions inherited from plask::Solver
bool | initCalculation ()
| This should be called on beginning of each calculation method to ensure that solver will be initialized.
| Solver (const std::string &name="")
| Construct uninitialized solver.
virtual | ~Solver ()
| Virtual destructor (for subclassing). Do nothing.
void | parseStandardConfiguration (XMLReader &source, Manager &manager, const std::string &expected_msg="solver configuration element")
| Load standard configuration (geometry, mesh) tags from `source`.
bool | isInitialized ()
| Check if solver is already initialized.
void | invalidate ()
| This method should be and is called if something important was changed: calculation space, mesh, etc.
std::string | getId () const
| Get solver id.
std::string | getName () const
virtual std::string | getClassDescription () const
| Get a description of this solver.
template<typename ArgT = double, typename ValT = double>
DataLog< ArgT, ValT > | dataLog (const std::string &chart_name, const std::string &axis_arg_name, const std::string &axis_val_name)
template<typename ArgT = double, typename ValT = double>
DataLog< ArgT, ValT > | dataLog (const std::string &axis_arg_name, const std::string &axis_val_name)
template<typename ... Args>
void | writelog (LogLevel level, std::string msg, Args &&... params) const
| Log a message for this solver.
Public Member Functions inherited from plask::optical::modal::ModalBase
void | initTransfer (Expansion &expansion, bool reflection)
| Initialize transfer class.
| ModalBase ()
virtual | ~ModalBase ()
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.
dcomplex | getLam () const
| Get current wavelength.
void | setLam (dcomplex lambda)
| Set current wavelength.
void | clearFields ()
| Reset determined fields.
size_t | getLayerFor (double &h) const
| Get layer number for vertical coordinate.
const std::vector< std::size_t > & | getStack () const
| Get stack.
void | ensureInterface ()
| Throw exception if the interface position is unsuitable for eigenmode computations.
dvector | getIncidentFluxes (const cvector &incident, Transfer::IncidentDirection side)
| Get amplitudes of incident diffraction orders.
dvector | getReflectedFluxes (const cvector &incident, Transfer::IncidentDirection side)
| Get amplitudes of reflected diffraction orders.
dvector | getTransmittedFluxes (const cvector &incident, Transfer::IncidentDirection side)
| Get amplitudes of transmitted diffraction orders.
cvector | getReflectedCoefficients (const cvector &incident, Transfer::IncidentDirection side)
| Get coefficients of reflected diffraction orders.
cvector | getTransmittedCoefficients (const cvector &incident, Transfer::IncidentDirection side)
| Get coefficients of transmitted diffraction orders.
double | getReflection (const cvector &incident, Transfer::IncidentDirection side)
| Get reflection coefficient.
double | getTransmission (const cvector &incident, Transfer::IncidentDirection side)
| Get reflection coefficient.
void | getMatrices (size_t layer, cmatrix &RE, cmatrix &RH)

## Public Attributes
std::vector< double > | klist
| Abscissa for manual wavevectors.
boost::optional< std::vector< double > > | kweights
| Weights for manual wavevectors.
std::unique_ptr< ExpansionBessel > | expansion
| Class responsible for computing expansion coefficients.
std::vector< Mode > | modes
| Computed modes.
double | integral_error
| Expected integration estimate error.
size_t | max_integration_points
| Maximum number of integration points in a single segment.
PML | pml
| Lateral PMLs.
ProviderFor< ModeLoss >::Delegate | outLoss
| Provider for computed modal extinction.
Public Attributes inherited from plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >
ReceiverFor< Temperature, typename BaseT::SpaceType > | inTemperature
| Receiver for the temperature.
ReceiverFor< Gain, typename BaseT::SpaceType > | inGain
| Receiver for the gain.
ReceiverFor< Epsilon, typename BaseT::SpaceType > | inEpsilon
| Receiver for the dynamic epsilon.
ReceiverFor< CarriersConcentration, typename BaseT::SpaceType > | inCarriersConcentration
| Receiver for carriers concentration.
ProviderFor< Epsilon, typenameBaseT::SpaceType >::Delegate | outEpsilon
| Provider of the permittivity tensor.
ProviderFor< RefractiveIndex, typenameBaseT::SpaceType >::Delegate | outRefractiveIndex
| Provider of the refractive index.
ProviderFor< ModeWavelength >::Delegate | outWavelength
| Provider for computed resonant wavelength.
ProviderFor< ModeLightMagnitude, typenameBaseT::SpaceType >::Delegate | outLightMagnitude
| Provider of the optical field intensity.
ProviderFor< ModeLightE, typenameBaseT::SpaceType >::Delegate | outLightE
| Provider of the optical electric field.
ProviderFor< ModeLightH, typenameBaseT::SpaceType >::Delegate | outLightH
| Provider of the optical magnetic field.
ProviderFor< ModeLightE, typenameBaseT::SpaceType >::Delegate | outUpwardsLightE
| Provider of the optical electric field propagating upwards.
ProviderFor< ModeLightH, typenameBaseT::SpaceType >::Delegate | outUpwardsLightH
| Provider of the optical magnetic field propagating upwards.
ProviderFor< ModeLightE, typenameBaseT::SpaceType >::Delegate | outDownwardsLightE
| Provider of the optical electric field propagating downwards.
ProviderFor< ModeLightH, typenameBaseT::SpaceType >::Delegate | outDownwardsLightH
| Provider of the optical magnetic field propagating downwards.
Public Attributes inherited from plask::optical::modal::ModalBase
Emission | emission
| Direction of the light emission for fields normalization.
Transfer::Determinant | determinant_type
| Method of computing determinant in zero search.
std::unique_ptr< Transfer > | transfer
| Transfer method object (AdmittanceTransfer or ReflectionTransfer)
shared_ptr< OrderedAxis > | vbounds
| Layer boundaries.
shared_ptr< OrderedAxis > | verts
| Centers of layers.
size_t | lcount
| Number of distinct layers.
std::vector< bool > | lgained
| Information if the layer has gain.
std::vector< bool > | lcomputed
| Information if the layer has data from inEpsilon.
std::vector< std::size_t > | stack
| Organization of layers in the stack.
std::ptrdiff_t | interface
| Index of the matching interface.
double | interface_position
| Approximate position of the matching interface.
double | lam0
| Reference wavelength used for getting material parameters (nm)
dcomplex | k0
| Normalized frequency (1/µm)
PML | vpml
| Parameters for vertical PMLs (if used)
RootDigger::Params | root
| Parameters for main rootdigger.
bool | recompute_integrals
| Force re-computation of material coefficients/integrals.
bool | recompute_gain_integrals
| Force re-computation of material coefficients/integrals in layers with gain.
bool | always_recompute_gain
| Always compute material coefficients/integrals for gained layers for current wavelength.

## Protected Member Functions
void | onInitialize () override
| Initialize the solver.
void | onInvalidate () override
| This method is called by invalidate() to reset stored values.
void | computeIntegrals () override
| Recompute integrals used in RE and RH matrices.
size_t | insertMode ()
| Insert mode to the list or return the index of the exiting one.
size_t | nummodes () const override
| Return number of determined modes.
double | applyMode (size_t n) override
| Apply mode number n.
void | applyMode (const Mode &mode)
double | getModalLoss (size_t n)
| Return mode modal loss.
double | getWavelength (size_t n) override
| Return mode wavelength.
Protected Member Functions inherited from plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >
void | onInitialize () override
void | onGeometryChange (const Geometry::Event &evt) override
void | parseCommonModalConfiguration (XMLReader &reader, Manager &manager)
| Parse common configuration from XML file.
void | setupLayers ()
| Compute layer boundaries and detect layer sets.
size_t | initIncidence (Transfer::IncidentDirection side, dcomplex lam=NAN)
void | scaleIncidentVector (cvector &incident, size_t layer)
| Scale the incident field vector with scale specific to the solver.
void | scaleIncidentVector (cvector &incident, size_t layer)
void | scaleIncidentVector (cvector &incident, size_t layer)
void | scaleIncidentVector (cvector &incident, size_t layer)
DataVector< const Tensor3< dcomplex > > | getEpsilonProfile (const shared_ptr< const MeshD< BaseT::SpaceType::DIM > > &dst_mesh, dcomplex lam, InterpolationMethod interp=INTERPOLATION_DEFAULT)
| Get permittivity tensor after expansion.
LazyData< dcomplex > | getRefractiveIndex (RefractiveIndex::EnumType component, const shared_ptr< const MeshD< BaseT::SpaceType::DIM > > &dst_mesh, dcomplex lam, InterpolationMethod interp=INTERPOLATION_DEFAULT)
| Get refractive index after expansion.
LazyData< Vec< 3, dcomplex > > | getLightE (size_t num, shared_ptr< const MeshD< BaseT::SpaceType::DIM > > dst_mesh, InterpolationMethod method)
| Compute electric field.
LazyData< Vec< 3, dcomplex > > | getLightH (size_t num, shared_ptr< const MeshD< BaseT::SpaceType::DIM > > dst_mesh, InterpolationMethod method)
| Compute magnetic field.
LazyData< double > | getLightMagnitude (size_t num, shared_ptr< const MeshD< BaseT::SpaceType::DIM > > dst_mesh, InterpolationMethod method)
| Compute normalized electric field intensity 1/2 E conj(E) / P.
Protected Member Functions inherited from plask::SolverOver< SpaceT >
template<typename Boundary , typename ConditionT >
void | readBoundaryConditions (Manager &manager, XMLReader &reader, BoundaryConditions< Boundary, ConditionT > &dest)
| Read boundary conditions using information about the geometry of this solver.
Protected Member Functions inherited from plask::optical::modal::ModalBase
std::unique_ptr< RootDigger > | getRootDigger (const RootDigger::function_type &func, const char *name)
| Create and return rootdigger of a desired type.
void | readRootDiggerConfig (XMLReader &reader)
| Read root digger configuration.
void | scaleIncidentVector (cvector &incident, size_t layer, double size_factor)
| Scale the incident field vector.

## Protected Attributes
BesselDomain | domain
| Domain over which the field is expanded (finite or infinite)
int | m
| Angular dependency index.
size_t | size
| Maximum order of the orthogonal base.
Rule | rule
| Coefficients matrix expansion rule.
double | kscale
| Scale for k-points for infinite expansion.
double | kmax
| Maximum k-vector/k0 for infinite expansion.
InfiniteWavevectors | kmethod
| How integration points and weight should be computed.
Protected Attributes inherited from plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >
double | smooth
| Smoothing coefficient.
Protected Attributes inherited from plask::SolverWithMesh< Geometry2DCylindrical, MeshAxis >
shared_ptr< MeshAxis > | mesh
| Mesh over which the calculations are performed.
boost::signals2::connection | mesh_signal_connection
| Connection of mesh to onMeshChange method, see http://www.boost.org/doc/libs/1_55_0/doc/html/signals2/tutorial.html#idp204830936.
Protected Attributes inherited from plask::SolverOver< SpaceT >
shared_ptr< SpaceT > | geometry
| Space in which the calculations are performed.
Protected Attributes inherited from plask::Solver
bool | initialized
| `true` only if solver is initialized
Protected Attributes inherited from plask::optical::modal::ModalBase
Transfer::Method | transfer_method
| Selected transfer method.
bool | group_layers
| Can layers be automatically grouped.
double | max_temp_diff
| Maximum temperature difference for grouped layers (NAN means ignore temperature)
double | temp_dist
| Approximate lateral distance between points for temperature investigation.
double | temp_layer
| Minimum layer thickness for the purpose of temperature-based layers division.

## Friends
struct | ExpansionBessel
struct | ExpansionBesselFini
struct | ExpansionBesselInfini

## Detailed Description

Reflection transformation solver in Cartesian 2D geometry.

Definition at line 30 of file solvercyl.hpp.

## Member Typedef Documentation

## ◆ BaseType

typedef ModalSolver<SolverWithMesh<Geometry2DCylindrical,MeshAxis> > plask::optical::modal::BesselSolverCyl::BaseType

Definition at line 32 of file solvercyl.hpp.

## Member Enumeration Documentation

## ◆ BesselDomain

enum plask::optical::modal::BesselSolverCyl::BesselDomain

Enumerator
DOMAIN_FINITE |
DOMAIN_INFINITE |

Definition at line 38 of file solvercyl.hpp.

## ◆ InfiniteWavevectors

enum plask::optical::modal::BesselSolverCyl::InfiniteWavevectors

Enumerator
WAVEVECTORS_UNIFORM |
WAVEVECTORS_NONUNIFORM |
WAVEVECTORS_LAGUERRE |
WAVEVECTORS_MANUAL |

Definition at line 43 of file solvercyl.hpp.

## ◆ Rule

enum plask::optical::modal::BesselSolverCyl::Rule

Enumerator
RULE_DIRECT |
RULE_COMBINED_1 |
RULE_COMBINED_2 |
RULE_OLD |

Definition at line 51 of file solvercyl.hpp.

## Constructor & Destructor Documentation

## ◆ BesselSolverCyl()

plask::optical::modal::BesselSolverCyl::BesselSolverCyl | ( | const std::string & | name = `""` | ) |

Definition at line 20 of file solvercyl.cpp.

## Member Function Documentation

## ◆ applyMode() [1/2]

void plask::optical::modal::BesselSolverCyl::applyMode | ( | const Mode & | mode | ) |
| inline protected

Definition at line 465 of file solvercyl.hpp.

## ◆ applyMode() [2/2]

double plask::optical::modal::BesselSolverCyl::applyMode | ( | size_t | n | ) |
| inline override protected virtual

Apply mode number n.

Returns
  Mode power

Implements plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.

Definition at line 459 of file solvercyl.hpp.

## ◆ clearKweights()

void plask::optical::modal::BesselSolverCyl::clearKweights | ( |  | ) |
| inline

Definition at line 187 of file solvercyl.hpp.

## ◆ clearModes()

void plask::optical::modal::BesselSolverCyl::clearModes | ( |  | ) |
| inline override virtual

Clear computed modes.

Implements plask::optical::modal::ModalBase.

Definition at line 191 of file solvercyl.hpp.

## ◆ computeIntegrals()

void plask::optical::modal::BesselSolverCyl::computeIntegrals | ( |  | ) |
| inline override protected virtual

Recompute integrals used in RE and RH matrices.

Implements plask::optical::modal::ModalBase.

Definition at line 119 of file solvercyl.hpp.

## ◆ epsTpp()

cmatrix plask::optical::modal::BesselSolverCyl::epsTpp | ( | size_t | layer | ) |

Definition at line 199 of file solvercyl.cpp.

## ◆ epsTps()

cmatrix plask::optical::modal::BesselSolverCyl::epsTps | ( | size_t | layer | ) |

Definition at line 209 of file solvercyl.cpp.

## ◆ epsTsp()

cmatrix plask::optical::modal::BesselSolverCyl::epsTsp | ( | size_t | layer | ) |

Definition at line 204 of file solvercyl.cpp.

## ◆ epsTss()

cmatrix plask::optical::modal::BesselSolverCyl::epsTss | ( | size_t | layer | ) |

Definition at line 194 of file solvercyl.cpp.

## ◆ epsV_k()

cmatrix plask::optical::modal::BesselSolverCyl::epsV_k | ( | size_t | layer | ) |

Definition at line 189 of file solvercyl.cpp.

## ◆ findMode()

size_t plask::optical::modal::BesselSolverCyl::findMode | ( | dcomplex | start,
|  | int | m = `1`
| ) |  |

Find the mode around the specified effective index.

This method remembers the determined mode, for retrieval of the field profiles.

Parameters

  start | initial wavelength value to search the mode around

Returns
  determined effective index

Definition at line 165 of file solvercyl.cpp.

## ◆ getClassName()

std::string plask::optical::modal::BesselSolverCyl::getClassName | ( |  | ) | const
| inline override virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 68 of file solvercyl.hpp.

## ◆ getDomain()

BesselDomain plask::optical::modal::BesselSolverCyl::getDomain | ( |  | ) | const
| inline

Get current domain.

Definition at line 253 of file solvercyl.hpp.

## ◆ getExpansion()

Expansion & plask::optical::modal::BesselSolverCyl::getExpansion | ( |  | ) |
| inline override virtual

Get solver expansion.

Implements plask::optical::modal::ModalBase.

Definition at line 273 of file solvercyl.hpp.

## ◆ getFieldVectorE()

cvector plask::optical::modal::BesselSolverCyl::getFieldVectorE | ( | size_t | num,
|  | double | z
| ) |  |
| inline

Compute electric field coefficients for given z.

Parameters

  num | mode number
  z | position within the layer

Returns
  electric field coefficients

Definition at line 333 of file solvercyl.hpp.

## ◆ getFieldVectorH()

cvector plask::optical::modal::BesselSolverCyl::getFieldVectorH | ( | size_t | num,
|  | double | z
| ) |  |
| inline

Compute magnetic field coefficients for given z.

Parameters

  num | mode number
  z | position within the layer

Returns
  magnetic field coefficients

Definition at line 344 of file solvercyl.hpp.

## ◆ getIntegralEE()

double plask::optical::modal::BesselSolverCyl::getIntegralEE | ( | size_t | num,
|  | double | z1,
|  | double | z2
| ) |  |
| inline

Get ½ E·conj(E) integral between z1 and z2.

Parameters

  num | mode number
  z1 | lower integration bound
  z2 | upper integration bound

Returns
  computed integral

Definition at line 356 of file solvercyl.hpp.

## ◆ getIntegralHH()

double plask::optical::modal::BesselSolverCyl::getIntegralHH | ( | size_t | num,
|  | double | z1,
|  | double | z2
| ) |  |
| inline

Get ½ H·conj(H) integral between z1 and z2.

Parameters

  num | mode number
  z1 | lower integration bound
  z2 | upper integration bound

Returns
  computed integral

Definition at line 368 of file solvercyl.hpp.

## ◆ getKlist()

std::vector< double > plask::optical::modal::BesselSolverCyl::getKlist | ( |  | ) |
| inline

Return list of wavevectors.

Definition at line 150 of file solvercyl.hpp.

## ◆ getKmax()

double plask::optical::modal::BesselSolverCyl::getKmax | ( |  | ) | const
| inline

Get maximum wavevector/k0 for infinite domain.

Definition at line 243 of file solvercyl.hpp.

## ◆ getKmethod()

InfiniteWavevectors plask::optical::modal::BesselSolverCyl::getKmethod | ( |  | ) | const
| inline

Get method of infinite k-space integration.

Definition at line 248 of file solvercyl.hpp.

## ◆ getKscale()

double plask::optical::modal::BesselSolverCyl::getKscale | ( |  | ) | const
| inline

Get scale for infinite wavevectors.

Definition at line 238 of file solvercyl.hpp.

## ◆ getKweights()

std::vector< double > plask::optical::modal::BesselSolverCyl::getKweights | ( |  | ) |
| inline

Return list of wavevector weights.

Definition at line 167 of file solvercyl.hpp.

## ◆ getM()

unsigned plask::optical::modal::BesselSolverCyl::getM | ( |  | ) | const
| inline

Get order of the orthogonal base.

Definition at line 269 of file solvercyl.hpp.

## ◆ getModalLoss()

double plask::optical::modal::BesselSolverCyl::getModalLoss | ( | size_t | n | ) |
| inline protected

Return mode modal loss.

Parameters

  n | mode number

Definition at line 476 of file solvercyl.hpp.

## ◆ getRule()

Rule plask::optical::modal::BesselSolverCyl::getRule | ( |  | ) | const
| inline

Get current domain.

Definition at line 261 of file solvercyl.hpp.

## ◆ getScatteredFieldE()

LazyData< Vec< 3, dcomplex > > plask::optical::modal::BesselSolverCyl::getScatteredFieldE | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | const shared_ptr< const MeshD< 2 > > & | dst_mesh,
|  | InterpolationMethod | method,
|  | PropagationDirection | part = `PROPAGATION_TOTAL`
| ) |  |
| inline

Get electric field at the given mesh for reflected light.

Parameters

  incident | incident field vector
  side | incidence direction
  dst_mesh | target mesh
  method | interpolation method
  part | part of the field (forward-, backward-propagating, or total) that is wanted

Definition at line 283 of file solvercyl.hpp.

## ◆ getScatteredFieldH()

LazyData< Vec< 3, dcomplex > > plask::optical::modal::BesselSolverCyl::getScatteredFieldH | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | const shared_ptr< const MeshD< 2 > > & | dst_mesh,
|  | InterpolationMethod | method,
|  | PropagationDirection | part = `PROPAGATION_TOTAL`
| ) |  |
| inline

Get magnetic field at the given mesh for reflected light.

Parameters

  incident | incident field vector
  side | incidence direction
  dst_mesh | target mesh
  method | interpolation method
  part | part of the field (forward-, backward-propagating, or total) that is wanted

Definition at line 301 of file solvercyl.hpp.

## ◆ getScatteredFieldMagnitude()

LazyData< double > plask::optical::modal::BesselSolverCyl::getScatteredFieldMagnitude | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | const shared_ptr< const MeshD< 2 > > & | dst_mesh,
|  | InterpolationMethod | method
| ) |  |
| inline

Get light intensity for reflected light.

Parameters

  incident | incident field vector
  side | incidence direction
  dst_mesh | destination mesh
  method | interpolation method

Definition at line 318 of file solvercyl.hpp.

## ◆ getScatteredFieldVectorE()

cvector plask::optical::modal::BesselSolverCyl::getScatteredFieldVectorE | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | double | z
| ) |  |
| inline

Compute electric field coefficients for given z for reflected light.

Parameters

  incident | incident field vector
  side | incidence side
  z | position within the layer

Returns
  electric field coefficients

Definition at line 380 of file solvercyl.hpp.

## ◆ getScatteredFieldVectorH()

cvector plask::optical::modal::BesselSolverCyl::getScatteredFieldVectorH | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | double | z
| ) |  |
| inline

Compute magnetic field coefficients for given z for reflected light.

Parameters

  incident | incident field vector
  side | incidence side
  z | position within the layer

Returns
  magnetic field coefficients

Definition at line 393 of file solvercyl.hpp.

## ◆ getScatteredIntegralEE()

double plask::optical::modal::BesselSolverCyl::getScatteredIntegralEE | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | double | z1,
|  | double | z2
| ) |  |
| inline

Get ½ E·conj(E) integral between z1 and z2 for reflected light.

Parameters

  incident | incident field vector
  side | incidence side
  z1 | lower integration bound
  z2 | upper integration bound

Returns
  computed integral

Definition at line 407 of file solvercyl.hpp.

## ◆ getScatteredIntegralHH()

double plask::optical::modal::BesselSolverCyl::getScatteredIntegralHH | ( | const cvector & | incident,
|  | Transfer::IncidentDirection | side,
|  | double | z1,
|  | double | z2
| ) |  |
| inline

Get ½ H·conj(H) integral between z1 and z2.

Parameters

  incident | incident field vector
  side | incidence side
  z1 | lower integration bound
  z2 | upper integration bound

Returns
  computed integral

Definition at line 421 of file solvercyl.hpp.

## ◆ getSize()

size_t plask::optical::modal::BesselSolverCyl::getSize | ( |  | ) | const
| inline

Get order of the orthogonal base.

Definition at line 230 of file solvercyl.hpp.

## ◆ getWavelength()

double plask::optical::modal::BesselSolverCyl::getWavelength | ( | size_t | n | ) |
| override protected virtual

Return mode wavelength.

Parameters

  n | mode number

Implements plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.

Definition at line 183 of file solvercyl.cpp.

## ◆ insertMode()

size_t plask::optical::modal::BesselSolverCyl::insertMode | ( |  | ) |
| inline protected

Insert mode to the list or return the index of the exiting one.

Definition at line 436 of file solvercyl.hpp.

## ◆ loadConfiguration()

void plask::optical::modal::BesselSolverCyl::loadConfiguration | ( | XMLReader & | source,
|  | Manager & | manager
| ) |  |
| override virtual

Load configuration from given `source`.

XML reader (`source`) point to opening of `this` solver tag and after return from this method should point to this solver closing tag.

Parameters

  source | source of configuration
  manager | manager from which information about geometry, meshes, materials, and so on can be get if needed

Reimplemented from plask::Solver.

Definition at line 37 of file solvercyl.cpp.

## ◆ muTpp()

cmatrix plask::optical::modal::BesselSolverCyl::muTpp | ( |  | ) |

Definition at line 251 of file solvercyl.cpp.

## ◆ muTps()

cmatrix plask::optical::modal::BesselSolverCyl::muTps | ( |  | ) |

Definition at line 242 of file solvercyl.cpp.

## ◆ muTsp()

cmatrix plask::optical::modal::BesselSolverCyl::muTsp | ( |  | ) |

Definition at line 233 of file solvercyl.cpp.

## ◆ muTss()

cmatrix plask::optical::modal::BesselSolverCyl::muTss | ( |  | ) |

Definition at line 224 of file solvercyl.cpp.

## ◆ muV_k()

cmatrix plask::optical::modal::BesselSolverCyl::muV_k | ( |  | ) |

Definition at line 215 of file solvercyl.cpp.

## ◆ nummodes()

size_t plask::optical::modal::BesselSolverCyl::nummodes | ( |  | ) | const
| inline override protected virtual

Return number of determined modes.

Implements plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.

Definition at line 457 of file solvercyl.hpp.

## ◆ onInitialize()

void plask::optical::modal::BesselSolverCyl::onInitialize | ( |  | ) |
| override protected virtual

Initialize the solver.

Default implementation just does nothing, however it is a good idea to overwrite it in subclasses and put initialization code in it.

Reimplemented from plask::Solver.

Definition at line 131 of file solvercyl.cpp.

## ◆ onInvalidate()

void plask::optical::modal::BesselSolverCyl::onInvalidate | ( |  | ) |
| override protected virtual

This method is called by invalidate() to reset stored values.

Default implementation does nothing.

See also
  invalidate()

Reimplemented from plask::Solver.

Definition at line 159 of file solvercyl.cpp.

## ◆ ruleName()

const char * plask::optical::modal::BesselSolverCyl::ruleName | ( |  | ) |
| inline

Definition at line 58 of file solvercyl.hpp.

## ◆ setDomain()

void plask::optical::modal::BesselSolverCyl::setDomain | ( | BesselDomain | dom | ) |
| inline

Set new domain.

Definition at line 255 of file solvercyl.hpp.

## ◆ setExpansionDefaults()

bool plask::optical::modal::BesselSolverCyl::setExpansionDefaults | ( | bool | with_k0 = `true` | ) |
| inline override virtual

Set expansion parameters from default values.

Parameters

  with_k0 | Change k0

Returns
  `true` if anything was changed

Implements plask::optical::modal::ModalBase.

Definition at line 195 of file solvercyl.hpp.

## ◆ setKlist()

void plask::optical::modal::BesselSolverCyl::setKlist | ( | const std::vector< double > & | values | ) |
| inline

Set manual k-list.

Definition at line 157 of file solvercyl.hpp.

## ◆ setKmax()

void plask::optical::modal::BesselSolverCyl::setKmax | ( | double | s | ) |
| inline

Set maximum wavevector/k0 for infinite domain.

Definition at line 245 of file solvercyl.hpp.

## ◆ setKmethod()

void plask::optical::modal::BesselSolverCyl::setKmethod | ( | InfiniteWavevectors | k | ) |
| inline

Set method of infinite k-space integration.

Definition at line 250 of file solvercyl.hpp.

## ◆ setKscale()

void plask::optical::modal::BesselSolverCyl::setKscale | ( | double | s | ) |
| inline

Set scale for infinite wavevectors.

Definition at line 240 of file solvercyl.hpp.

## ◆ setKweights()

void plask::optical::modal::BesselSolverCyl::setKweights | ( | const std::vector< double > & | values | ) |
| inline

Set manual k-weights.

Definition at line 178 of file solvercyl.hpp.

## ◆ setM()

void plask::optical::modal::BesselSolverCyl::setM | ( | unsigned | n | ) |
| inline

Set order of the orthogonal base.

Definition at line 271 of file solvercyl.hpp.

## ◆ setMode()

size_t plask::optical::modal::BesselSolverCyl::setMode | ( |  | ) |
| inline

Check if the current parameters correspond to some mode and insert it.

Definition at line 428 of file solvercyl.hpp.

## ◆ setRule()

void plask::optical::modal::BesselSolverCyl::setRule | ( | Rule | r | ) |
| inline

Set new domain.

Definition at line 263 of file solvercyl.hpp.

## ◆ setSize()

void plask::optical::modal::BesselSolverCyl::setSize | ( | size_t | n | ) |
| inline

Set order of the orthogonal base.

Definition at line 232 of file solvercyl.hpp.

## Friends And Related Symbol Documentation

## ◆ ExpansionBessel

friend struct ExpansionBessel
| friend

Definition at line 34 of file solvercyl.hpp.

## ◆ ExpansionBesselFini

friend struct ExpansionBesselFini
| friend

Definition at line 35 of file solvercyl.hpp.

## ◆ ExpansionBesselInfini

friend struct ExpansionBesselInfini
| friend

Definition at line 36 of file solvercyl.hpp.

## Member Data Documentation

## ◆ domain

BesselDomain plask::optical::modal::BesselSolverCyl::domain
| protected

Domain over which the field is expanded (finite or infinite)

Definition at line 107 of file solvercyl.hpp.

## ◆ expansion

std::unique_ptr<ExpansionBessel> plask::optical::modal::BesselSolverCyl::expansion

Class responsible for computing expansion coefficients.

Definition at line 144 of file solvercyl.hpp.

## ◆ integral_error

double plask::optical::modal::BesselSolverCyl::integral_error

Expected integration estimate error.

Definition at line 206 of file solvercyl.hpp.

## ◆ klist

std::vector<double> plask::optical::modal::BesselSolverCyl::klist

Abscissa for manual wavevectors.

Definition at line 138 of file solvercyl.hpp.

## ◆ kmax

double plask::optical::modal::BesselSolverCyl::kmax
| protected

Maximum k-vector/k0 for infinite expansion.

Definition at line 130 of file solvercyl.hpp.

## ◆ kmethod

InfiniteWavevectors plask::optical::modal::BesselSolverCyl::kmethod
| protected

How integration points and weight should be computed.

Definition at line 133 of file solvercyl.hpp.

## ◆ kscale

double plask::optical::modal::BesselSolverCyl::kscale
| protected

Scale for k-points for infinite expansion.

Definition at line 127 of file solvercyl.hpp.

## ◆ kweights

boost::optional<std::vector<double> > plask::optical::modal::BesselSolverCyl::kweights

Weights for manual wavevectors.

Definition at line 141 of file solvercyl.hpp.

## ◆ m

int plask::optical::modal::BesselSolverCyl::m
| protected

Angular dependency index.

Definition at line 110 of file solvercyl.hpp.

## ◆ max_integration_points

size_t plask::optical::modal::BesselSolverCyl::max_integration_points

Maximum number of integration points in a single segment.

Definition at line 209 of file solvercyl.hpp.

## ◆ modes

std::vector<Mode> plask::optical::modal::BesselSolverCyl::modes

Computed modes.

Definition at line 147 of file solvercyl.hpp.

## ◆ outLoss

ProviderFor<ModeLoss>::Delegate plask::optical::modal::BesselSolverCyl::outLoss

Provider for computed modal extinction.

Definition at line 215 of file solvercyl.hpp.

## ◆ pml

PML plask::optical::modal::BesselSolverCyl::pml

Lateral PMLs.

Definition at line 212 of file solvercyl.hpp.

## ◆ rule

Rule plask::optical::modal::BesselSolverCyl::rule
| protected

Coefficients matrix expansion rule.

Definition at line 124 of file solvercyl.hpp.

## ◆ size

size_t plask::optical::modal::BesselSolverCyl::size
| protected

Maximum order of the orthogonal base.

Definition at line 113 of file solvercyl.hpp.

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

- solvers/optical/modal/bessel/solvercyl.hpp
- solvers/optical/modal/bessel/solvercyl.cpp