|
PLaSK library
|
Common base with layer details independent on the geometry. More...
#include <solvers/optical/modal/solverbase.hpp>
Public Types | |
| enum | Emission { EMISSION_UNSPECIFIED = 0 , EMISSION_TOP , EMISSION_BOTTOM , EMISSION_FRONT , EMISSION_BACK } |
| Directions of the possible emission. More... | |
Public Member Functions | |
| 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. | |
| virtual std::string | getId () const =0 |
| Get solver id. | |
| virtual bool | initCalculation ()=0 |
| Init calculations. | |
| const std::vector< std::size_t > & | getStack () const |
| Get stack. | |
| virtual void | computeIntegrals ()=0 |
| Recompute integrals used in RE and RH matrices. | |
| virtual void | clearModes ()=0 |
| Clear computed modes. | |
| virtual bool | setExpansionDefaults (bool with_k0=true)=0 |
| Set expansion parameters from default values. | |
| void | ensureInterface () |
| Throw exception if the interface position is unsuitable for eigenmode computations. | |
| virtual Expansion & | getExpansion ()=0 |
| Get solver expansion. | |
| 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 | |
| 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 | |
| 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 | |
| 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. | |
Common base with layer details independent on the geometry.
Definition at line 38 of file solverbase.hpp.
Directions of the possible emission.
| Enumerator | |
|---|---|
| EMISSION_UNSPECIFIED | Side emission (fields not normalized) |
| EMISSION_TOP | Top emission. |
| EMISSION_BOTTOM | Bottom emission. |
| EMISSION_FRONT | Front emission. |
| EMISSION_BACK | Back emission. |
Definition at line 40 of file solverbase.hpp.
|
inline |
Definition at line 151 of file solverbase.hpp.
|
inlinevirtual |
Definition at line 167 of file solverbase.hpp.
|
inline |
Reset determined fields.
Definition at line 195 of file solverbase.hpp.
|
inline |
Clear lam0.
Definition at line 177 of file solverbase.hpp.
Clear computed modes.
Implemented in plask::optical::modal::BesselSolverCyl, plask::optical::modal::FourierSolver2D, and plask::optical::modal::FourierSolver3D.
Recompute integrals used in RE and RH matrices.
Implemented in plask::optical::modal::BesselSolverCyl, plask::optical::modal::FourierSolver2D, and plask::optical::modal::FourierSolver3D.
|
inline |
Throw exception if the interface position is unsuitable for eigenmode computations.
Definition at line 237 of file solverbase.hpp.
Get solver expansion.
Implemented in plask::optical::modal::BesselSolverCyl, plask::optical::modal::FourierSolver2D, and plask::optical::modal::FourierSolver3D.
|
pure virtual |
Get solver id.
Implemented in plask::optical::modal::ModalSolver< BaseT >, plask::optical::modal::ModalSolver< SolverOver< Geometry3D > >, plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCartesian, MeshAxis > >, and plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.
| dvector plask::optical::modal::ModalBase::getIncidentFluxes | ( | const cvector & | incident, |
| Transfer::IncidentDirection | side | ||
| ) |
Get amplitudes of incident diffraction orders.
| incident | incident field vector |
| side | incidence side |
Definition at line 633 of file solver.cpp.
|
inline |
Get current k0.
Definition at line 180 of file solverbase.hpp.
|
inline |
Get current wavelength.
Definition at line 189 of file solverbase.hpp.
|
inline |
Get lam0.
Definition at line 170 of file solverbase.hpp.
|
inline |
Get layer number for vertical coordinate.
Alter this coordinate to the layer local one. The bottom infinite layer has always negative coordinate.
| [in,out] | h | vertical coordinate |
Definition at line 205 of file solverbase.hpp.
Definition at line 556 of file solver.cpp.
| cvector plask::optical::modal::ModalBase::getReflectedCoefficients | ( | const cvector & | incident, |
| Transfer::IncidentDirection | side | ||
| ) |
Get coefficients of reflected diffraction orders.
| incident | incident field vector |
| side | incidence side |
Definition at line 720 of file solver.cpp.
| dvector plask::optical::modal::ModalBase::getReflectedFluxes | ( | const cvector & | incident, |
| Transfer::IncidentDirection | side | ||
| ) |
Get amplitudes of reflected diffraction orders.
| incident | incident field vector |
| side | incidence side |
Definition at line 661 of file solver.cpp.
|
inline |
Get reflection coefficient.
| incident | incident field vector |
| side | incidence side |
Definition at line 286 of file solverbase.hpp.
|
protected |
Create and return rootdigger of a desired type.
Definition at line 84 of file solver.cpp.
|
inline |
|
inline |
Get reflection coefficient.
| incident | incident field vector |
| side | incidence side |
Definition at line 297 of file solverbase.hpp.
| cvector plask::optical::modal::ModalBase::getTransmittedCoefficients | ( | const cvector & | incident, |
| Transfer::IncidentDirection | side | ||
| ) |
Get coefficients of transmitted diffraction orders.
| incident | incident field vector |
| side | incidence side |
Definition at line 727 of file solver.cpp.
| dvector plask::optical::modal::ModalBase::getTransmittedFluxes | ( | const cvector & | incident, |
| Transfer::IncidentDirection | side | ||
| ) |
Get amplitudes of transmitted diffraction orders.
| incident | incident field vector |
| side | incidence side |
Definition at line 689 of file solver.cpp.
Init calculations.
Implemented in plask::optical::modal::ModalSolver< BaseT >, plask::optical::modal::ModalSolver< SolverOver< Geometry3D > >, plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCartesian, MeshAxis > >, and plask::optical::modal::ModalSolver< SolverWithMesh< Geometry2DCylindrical, MeshAxis > >.
Initialize transfer class.
Definition at line 28 of file solver.cpp.
Read root digger configuration.
| reader | XML reader |
Definition at line 65 of file solverbase.hpp.
|
protected |
Scale the incident field vector.
Definition at line 608 of file solver.cpp.
|
pure virtual |
Set expansion parameters from default values.
| with_k0 | Change k0 |
true if anything was changed Implemented in plask::optical::modal::BesselSolverCyl, plask::optical::modal::FourierSolver2D, and plask::optical::modal::FourierSolver3D.
|
inline |
Set current k0.
Definition at line 183 of file solverbase.hpp.
|
inline |
Set current wavelength.
Definition at line 192 of file solverbase.hpp.
Set lam0.
Definition at line 172 of file solverbase.hpp.
| bool plask::optical::modal::ModalBase::always_recompute_gain |
Always compute material coefficients/integrals for gained layers for current wavelength.
Definition at line 132 of file solverbase.hpp.
| Transfer::Determinant plask::optical::modal::ModalBase::determinant_type |
Method of computing determinant in zero search.
Definition at line 52 of file solverbase.hpp.
| Emission plask::optical::modal::ModalBase::emission |
Direction of the light emission for fields normalization.
Definition at line 49 of file solverbase.hpp.
|
protected |
Can layers be automatically grouped.
Definition at line 136 of file solverbase.hpp.
| std::ptrdiff_t plask::optical::modal::ModalBase::interface |
Index of the matching interface.
Definition at line 108 of file solverbase.hpp.
| double plask::optical::modal::ModalBase::interface_position |
Approximate position of the matching interface.
Definition at line 111 of file solverbase.hpp.
| dcomplex plask::optical::modal::ModalBase::k0 |
Normalized frequency (1/µm)
Definition at line 117 of file solverbase.hpp.
| double plask::optical::modal::ModalBase::lam0 |
Reference wavelength used for getting material parameters (nm)
Definition at line 114 of file solverbase.hpp.
| std::vector<bool> plask::optical::modal::ModalBase::lcomputed |
Information if the layer has data from inEpsilon.
Definition at line 102 of file solverbase.hpp.
| size_t plask::optical::modal::ModalBase::lcount |
Number of distinct layers.
Definition at line 96 of file solverbase.hpp.
| std::vector<bool> plask::optical::modal::ModalBase::lgained |
Information if the layer has gain.
Definition at line 99 of file solverbase.hpp.
|
protected |
Maximum temperature difference for grouped layers (NAN means ignore temperature)
Definition at line 139 of file solverbase.hpp.
| bool plask::optical::modal::ModalBase::recompute_gain_integrals |
Force re-computation of material coefficients/integrals in layers with gain.
Definition at line 129 of file solverbase.hpp.
| bool plask::optical::modal::ModalBase::recompute_integrals |
Force re-computation of material coefficients/integrals.
Definition at line 126 of file solverbase.hpp.
| RootDigger::Params plask::optical::modal::ModalBase::root |
Parameters for main rootdigger.
Definition at line 123 of file solverbase.hpp.
| std::vector<std::size_t> plask::optical::modal::ModalBase::stack |
Organization of layers in the stack.
Definition at line 105 of file solverbase.hpp.
|
protected |
Approximate lateral distance between points for temperature investigation.
Definition at line 142 of file solverbase.hpp.
|
protected |
Minimum layer thickness for the purpose of temperature-based layers division.
Definition at line 145 of file solverbase.hpp.
| std::unique_ptr<Transfer> plask::optical::modal::ModalBase::transfer |
Transfer method object (AdmittanceTransfer or ReflectionTransfer)
Definition at line 84 of file solverbase.hpp.
|
protected |
Selected transfer method.
Definition at line 59 of file solverbase.hpp.
| shared_ptr<OrderedAxis> plask::optical::modal::ModalBase::vbounds |
Layer boundaries.
Definition at line 90 of file solverbase.hpp.
| shared_ptr<OrderedAxis> plask::optical::modal::ModalBase::verts |
Centers of layers.
Definition at line 93 of file solverbase.hpp.
| PML plask::optical::modal::ModalBase::vpml |
Parameters for vertical PMLs (if used)
Definition at line 120 of file solverbase.hpp.