|
PLaSK library
|
Reflection transformation solver in Cartesian 2D geometry. More...
#include <solvers/optical/modal/bessel/solvercyl.hpp>
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 |
Reflection transformation solver in Cartesian 2D geometry.
Definition at line 30 of file solvercyl.hpp.
| typedef ModalSolver<SolverWithMesh<Geometry2DCylindrical,MeshAxis> > plask::optical::modal::BesselSolverCyl::BaseType |
Definition at line 32 of file solvercyl.hpp.
| Enumerator | |
|---|---|
| DOMAIN_FINITE | |
| DOMAIN_INFINITE | |
Definition at line 38 of file solvercyl.hpp.
| Enumerator | |
|---|---|
| WAVEVECTORS_UNIFORM | |
| WAVEVECTORS_NONUNIFORM | |
| WAVEVECTORS_LAGUERRE | |
| WAVEVECTORS_MANUAL | |
Definition at line 43 of file solvercyl.hpp.
| Enumerator | |
|---|---|
| RULE_DIRECT | |
| RULE_COMBINED_1 | |
| RULE_COMBINED_2 | |
| RULE_OLD | |
Definition at line 51 of file solvercyl.hpp.
| plask::optical::modal::BesselSolverCyl::BesselSolverCyl | ( | const std::string & | name = "" | ) |
Definition at line 20 of file solvercyl.cpp.
Definition at line 465 of file solvercyl.hpp.
|
inlineoverrideprotectedvirtual |
Apply mode number n.
Implements plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.
Definition at line 459 of file solvercyl.hpp.
|
inline |
Definition at line 187 of file solvercyl.hpp.
|
inlineoverridevirtual |
Clear computed modes.
Implements plask::optical::modal::ModalBase.
Definition at line 191 of file solvercyl.hpp.
|
inlineoverrideprotectedvirtual |
Recompute integrals used in RE and RH matrices.
Implements plask::optical::modal::ModalBase.
Definition at line 119 of file solvercyl.hpp.
| cmatrix plask::optical::modal::BesselSolverCyl::epsTpp | ( | size_t | layer | ) |
Definition at line 199 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::epsTps | ( | size_t | layer | ) |
Definition at line 209 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::epsTsp | ( | size_t | layer | ) |
Definition at line 204 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::epsTss | ( | size_t | layer | ) |
Definition at line 194 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::epsV_k | ( | size_t | layer | ) |
Definition at line 189 of file solvercyl.cpp.
| 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.
| start | initial wavelength value to search the mode around |
Definition at line 165 of file solvercyl.cpp.
|
inlineoverridevirtual |
Get name of solver.
Implements plask::Solver.
Definition at line 68 of file solvercyl.hpp.
|
inline |
Get current domain.
Definition at line 253 of file solvercyl.hpp.
|
inlineoverridevirtual |
Get solver expansion.
Implements plask::optical::modal::ModalBase.
Definition at line 273 of file solvercyl.hpp.
Compute electric field coefficients for given z.
| num | mode number |
| z | position within the layer |
Definition at line 333 of file solvercyl.hpp.
Compute magnetic field coefficients for given z.
| num | mode number |
| z | position within the layer |
Definition at line 344 of file solvercyl.hpp.
|
inline |
Get ½ E·conj(E) integral between z1 and z2.
| num | mode number |
| z1 | lower integration bound |
| z2 | upper integration bound |
Definition at line 356 of file solvercyl.hpp.
|
inline |
Get ½ H·conj(H) integral between z1 and z2.
| num | mode number |
| z1 | lower integration bound |
| z2 | upper integration bound |
Definition at line 368 of file solvercyl.hpp.
|
inline |
Return list of wavevectors.
Definition at line 150 of file solvercyl.hpp.
|
inline |
Get maximum wavevector/k0 for infinite domain.
Definition at line 243 of file solvercyl.hpp.
|
inline |
Get method of infinite k-space integration.
Definition at line 248 of file solvercyl.hpp.
|
inline |
Get scale for infinite wavevectors.
Definition at line 238 of file solvercyl.hpp.
|
inline |
Return list of wavevector weights.
Definition at line 167 of file solvercyl.hpp.
|
inline |
Get order of the orthogonal base.
Definition at line 269 of file solvercyl.hpp.
|
inlineprotected |
|
inline |
Get current domain.
Definition at line 261 of file solvercyl.hpp.
|
inline |
Get electric field at the given mesh for reflected light.
| 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.
|
inline |
Get magnetic field at the given mesh for reflected light.
| 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.
|
inline |
Get light intensity for reflected light.
| incident | incident field vector |
| side | incidence direction |
| dst_mesh | destination mesh |
| method | interpolation method |
Definition at line 318 of file solvercyl.hpp.
|
inline |
Compute electric field coefficients for given z for reflected light.
| incident | incident field vector |
| side | incidence side |
| z | position within the layer |
Definition at line 380 of file solvercyl.hpp.
|
inline |
Compute magnetic field coefficients for given z for reflected light.
| incident | incident field vector |
| side | incidence side |
| z | position within the layer |
Definition at line 393 of file solvercyl.hpp.
|
inline |
Get ½ E·conj(E) integral between z1 and z2 for reflected light.
| incident | incident field vector |
| side | incidence side |
| z1 | lower integration bound |
| z2 | upper integration bound |
Definition at line 407 of file solvercyl.hpp.
|
inline |
Get ½ H·conj(H) integral between z1 and z2.
| incident | incident field vector |
| side | incidence side |
| z1 | lower integration bound |
| z2 | upper integration bound |
Definition at line 421 of file solvercyl.hpp.
|
inline |
Get order of the orthogonal base.
Definition at line 230 of file solvercyl.hpp.
|
overrideprotectedvirtual |
Return mode wavelength.
| n | mode number |
Implements plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.
Definition at line 183 of file solvercyl.cpp.
|
inlineprotected |
Insert mode to the list or return the index of the exiting one.
Definition at line 436 of file solvercyl.hpp.
|
overridevirtual |
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.
| 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.
| cmatrix plask::optical::modal::BesselSolverCyl::muTpp | ( | ) |
Definition at line 251 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::muTps | ( | ) |
Definition at line 242 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::muTsp | ( | ) |
Definition at line 233 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::muTss | ( | ) |
Definition at line 224 of file solvercyl.cpp.
| cmatrix plask::optical::modal::BesselSolverCyl::muV_k | ( | ) |
Definition at line 215 of file solvercyl.cpp.
|
inlineoverrideprotectedvirtual |
Return number of determined modes.
Implements plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.
Definition at line 457 of file solvercyl.hpp.
|
overrideprotectedvirtual |
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.
|
overrideprotectedvirtual |
This method is called by invalidate() to reset stored values.
Default implementation does nothing.
Reimplemented from plask::Solver.
Definition at line 159 of file solvercyl.cpp.
Definition at line 58 of file solvercyl.hpp.
|
inline |
Set new domain.
Definition at line 255 of file solvercyl.hpp.
|
inlineoverridevirtual |
Set expansion parameters from default values.
| with_k0 | Change k0 |
true if anything was changed Implements plask::optical::modal::ModalBase.
Definition at line 195 of file solvercyl.hpp.
|
inline |
Set manual k-list.
Definition at line 157 of file solvercyl.hpp.
Set maximum wavevector/k0 for infinite domain.
Definition at line 245 of file solvercyl.hpp.
|
inline |
Set method of infinite k-space integration.
Definition at line 250 of file solvercyl.hpp.
Set scale for infinite wavevectors.
Definition at line 240 of file solvercyl.hpp.
|
inline |
Set manual k-weights.
Definition at line 178 of file solvercyl.hpp.
Set order of the orthogonal base.
Definition at line 271 of file solvercyl.hpp.
|
inline |
Check if the current parameters correspond to some mode and insert it.
Definition at line 428 of file solvercyl.hpp.
Set new domain.
Definition at line 263 of file solvercyl.hpp.
|
inline |
Set order of the orthogonal base.
Definition at line 232 of file solvercyl.hpp.
|
friend |
Definition at line 34 of file solvercyl.hpp.
|
friend |
Definition at line 35 of file solvercyl.hpp.
|
friend |
Definition at line 36 of file solvercyl.hpp.
|
protected |
Domain over which the field is expanded (finite or infinite)
Definition at line 107 of file solvercyl.hpp.
| std::unique_ptr<ExpansionBessel> plask::optical::modal::BesselSolverCyl::expansion |
Class responsible for computing expansion coefficients.
Definition at line 144 of file solvercyl.hpp.
| double plask::optical::modal::BesselSolverCyl::integral_error |
Expected integration estimate error.
Definition at line 206 of file solvercyl.hpp.
| std::vector<double> plask::optical::modal::BesselSolverCyl::klist |
Abscissa for manual wavevectors.
Definition at line 138 of file solvercyl.hpp.
|
protected |
Maximum k-vector/k0 for infinite expansion.
Definition at line 130 of file solvercyl.hpp.
|
protected |
How integration points and weight should be computed.
Definition at line 133 of file solvercyl.hpp.
|
protected |
Scale for k-points for infinite expansion.
Definition at line 127 of file solvercyl.hpp.
| boost::optional<std::vector<double> > plask::optical::modal::BesselSolverCyl::kweights |
Weights for manual wavevectors.
Definition at line 141 of file solvercyl.hpp.
|
protected |
Angular dependency index.
Definition at line 110 of file solvercyl.hpp.
| 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.
| std::vector<Mode> plask::optical::modal::BesselSolverCyl::modes |
Computed modes.
Definition at line 147 of file solvercyl.hpp.
| ProviderFor<ModeLoss>::Delegate plask::optical::modal::BesselSolverCyl::outLoss |
Provider for computed modal extinction.
Definition at line 215 of file solvercyl.hpp.
| PML plask::optical::modal::BesselSolverCyl::pml |
Lateral PMLs.
Definition at line 212 of file solvercyl.hpp.
|
protected |
Coefficients matrix expansion rule.
Definition at line 124 of file solvercyl.hpp.
|
protected |
Maximum order of the orthogonal base.
Definition at line 113 of file solvercyl.hpp.