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.