PLaSK library
|
Reflection transformation solver in Cartesian 3D geometry. More...
#include <solvers/optical/modal/fourier/solver3d.hpp>
Classes | |
struct | Mode |
Public Types | |
enum | What { WHAT_WAVELENGTH , WHAT_K0 , WHAT_KLONG , WHAT_KTRAN } |
Indication of parameter to search. More... | |
enum | ExpansionRule { RULE_OLD , RULE_DIRECT , RULE_INVERSE , RULE_COMBINED } |
Expansion rule. More... | |
typedef ModalSolver< SolverOver< Geometry3D > > | BaseType |
Public Types inherited from plask::SolverOver< Geometry3D > | |
typedef Geometry3D | 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 | |
std::string | getClassName () const override |
Get name of solver. | |
void | clearModes () override |
Clear computed modes. | |
bool | setExpansionDefaults (bool with_k0=true) override |
Set expansion parameters from default values. | |
FourierSolver3D (const std::string &name="") | |
void | loadConfiguration (XMLReader &reader, Manager &manager) override |
Load configuration from given source . | |
size_t | findMode (What what, dcomplex start) |
Find the mode around the specified effective index. | |
size_t | getLongSize () const |
Get order of the orthogonal base in the longitudinal direction. | |
size_t | getTranSize () const |
Get order of the orthogonal base in the transverse direction. | |
void | setLongSize (size_t n) |
Set order of the orthogonal base in the longitudinal direction. | |
void | setTranSize (size_t n) |
Set order of the orthogonal base in the transverse direction. | |
void | setSizes (size_t nl, size_t nt) |
Set order of the orthogonal base. | |
Expansion::Component | getSymmetryLong () const |
Return current mode symmetry. | |
void | setSymmetryLong (Expansion::Component symmetry) |
Set new mode symmetry. | |
Expansion::Component | getSymmetryTran () const |
Return current mode symmetry. | |
void | setSymmetryTran (Expansion::Component symmetry) |
Set new mode symmetry. | |
bool | symmetricLong () const |
Get info if the expansion is symmetric. | |
bool | symmetricTran () const |
Get info if the expansion is symmetric. | |
dcomplex | getKlong () const |
Get longitudinal wavevector. | |
void | setKlong (dcomplex k) |
Set longitudinal wavevector. | |
dcomplex | getKtran () const |
Get transverse wavevector. | |
void | setKtran (dcomplex k) |
Set transverse wavevector. | |
double | getGradSmooth () const |
Get current normal smooth. | |
void | setGradSmooth (double value) |
Set current smooth. | |
int | getDCT () const |
Get type of the DCT. | |
void | setDCT (int n) |
Set type of the DCT. | |
bool | dct2 () const |
True if DCT == 2. | |
ExpansionRule | getRule () const |
Get expansion rule. | |
void | setRule (ExpansionRule rule) |
Set expansion rule. | |
Expansion & | getExpansion () override |
Get solver expansion. | |
size_t | minor () const |
Return minor field coefficients dimension. | |
cvector | incidentVector (Transfer::IncidentDirection side, Expansion::Component polarization, dcomplex lam=NAN) |
Get incident field vector for given polarization. | |
cvector | incidentGaussian (Transfer::IncidentDirection side, Expansion::Component polarization, double sigma_long, double sigma_tran, double center_long=0., double center_tran=0., dcomplex lam=NAN) |
Compute incident vector with Gaussian profile. | |
LazyData< Vec< 3, dcomplex > > | getScatteredFieldE (const cvector &incident, Transfer::IncidentDirection side, const shared_ptr< const MeshD< 3 > > &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< 3 > > &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< 3 > > &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 for reflected light. | |
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. | |
Public Member Functions inherited from plask::optical::modal::ModalSolver< SolverOver< Geometry3D > > | |
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::SolverOver< Geometry3D > | |
SolverOver (const std::string &name="") | |
~SolverOver () | |
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") |
shared_ptr< Geometry3D > | getGeometry () const |
Get current solver geometry space. | |
void | setGeometry (const shared_ptr< Geometry3D > &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 | |
size_t | size_long |
Maximum order of the orthogonal base in longitudinal direction. | |
size_t | size_tran |
Maximum order of the orthogonal base in transverse direction. | |
ExpansionPW3D | expansion |
Class responsible for computing expansion coefficients. | |
std::vector< Mode > | modes |
Computed modes. | |
size_t | refine_long |
Mesh multiplier for finer computation of the refractive indices in the longitudinal direction. | |
size_t | refine_tran |
Mesh multiplier for finer computation of the refractive indices in the transverse direction. | |
double | grad_smooth |
Smoothing of the normal-direction functions. | |
PML | pml_long |
Longitudinal PMLs. | |
PML | pml_tran |
Transverse PMLs. | |
ProviderFor< GradientFunctions, Geometry3D >::Delegate | outGradients |
Provider for gradient functions. | |
Public Attributes inherited from plask::optical::modal::ModalSolver< SolverOver< Geometry3D > > | |
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 | initIncidence (Transfer::IncidentDirection side, Expansion::Component polarization, dcomplex lam) |
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. | |
dcomplex | getEffectiveIndex (size_t n) |
Return mode effective index. | |
void | applyMode (const Mode &mode) |
double | getWavelength (size_t n) override |
Return mode wavelength. | |
LazyData< double > | getGradients (GradientFunctions::EnumType what, const shared_ptr< const MeshD< 3 > > &dst_mesh, InterpolationMethod interp) |
Protected Member Functions inherited from plask::optical::modal::ModalSolver< SolverOver< Geometry3D > > | |
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< Geometry3D > | |
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 | |
dcomplex | klong |
Longitudinal wavevector (1/µm) | |
dcomplex | ktran |
Transverse wavevector (1/µm) | |
Expansion::Component | symmetry_long |
Symmetry along longitudinal axis. | |
Expansion::Component | symmetry_tran |
Symmetry along transverse axis. | |
int | dct |
Type of discrete cosine transform. Can be only 1 or two. | |
ExpansionRule | expansion_rule |
Expansion rule. | |
Protected Attributes inherited from plask::optical::modal::ModalSolver< SolverOver< Geometry3D > > | |
double | smooth |
Smoothing coefficient. | |
Protected Attributes inherited from plask::SolverOver< Geometry3D > | |
shared_ptr< Geometry3D > | 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 |
Approxximate lateral distance between points for temperature investigation. | |
double | temp_layer |
Minimum layer thickness for the purpose of temperature-based layers division. | |
Friends | |
struct | ExpansionPW3D |
Reflection transformation solver in Cartesian 3D geometry.
Definition at line 32 of file solver3d.hpp.
Definition at line 34 of file solver3d.hpp.
Expansion rule.
Enumerator | |
---|---|
RULE_OLD | |
RULE_DIRECT | |
RULE_INVERSE | |
RULE_COMBINED |
Definition at line 49 of file solver3d.hpp.
Indication of parameter to search.
Enumerator | |
---|---|
WHAT_WAVELENGTH | Search for wavelength. |
WHAT_K0 | Search for normalized frequency. |
WHAT_KLONG | Search for longitudinal wavevector. |
WHAT_KTRAN | Search for transverse wavevector. |
Definition at line 41 of file solver3d.hpp.
plask::optical::modal::FourierSolver3D::FourierSolver3D | ( | const std::string & | name = "" | ) |
Definition at line 20 of file solver3d.cpp.
Definition at line 540 of file solver3d.hpp.
|
inlineoverrideprotectedvirtual |
Apply mode number n.
Implements plask::optical::modal::ModalSolver< SolverOver< Geometry3D > >.
Definition at line 525 of file solver3d.hpp.
|
inlineoverridevirtual |
Clear computed modes.
Implements plask::optical::modal::ModalBase.
Definition at line 141 of file solver3d.hpp.
|
inlineoverrideprotectedvirtual |
Recompute integrals used in RE and RH matrices.
Implements plask::optical::modal::ModalBase.
Definition at line 121 of file solver3d.hpp.
|
inline |
True if DCT == 2.
Definition at line 299 of file solver3d.hpp.
size_t plask::optical::modal::FourierSolver3D::findMode | ( | FourierSolver3D::What | what, |
dcomplex | start | ||
) |
Find the mode around the specified effective index.
This method remembers the determined mode, for retrieval of the field profiles.
what | what to search for |
start | initial value of what to search the mode around |
Definition at line 176 of file solver3d.cpp.
|
inlineoverridevirtual |
Get name of solver.
Implements plask::Solver.
Definition at line 38 of file solver3d.hpp.
|
inline |
Get type of the DCT.
Definition at line 288 of file solver3d.hpp.
|
inlineprotected |
|
inlineoverridevirtual |
Get solver expansion.
Implements plask::optical::modal::ModalBase.
Definition at line 317 of file solver3d.hpp.
Compute electric field coefficients for given z.
num | mode number |
z | position within the layer |
Definition at line 403 of file solver3d.hpp.
Compute magnetic field coefficients for given z.
num | mode number |
z | position within the layer |
Definition at line 414 of file solver3d.hpp.
|
protected |
Definition at line 287 of file solver3d.cpp.
|
inline |
Get current normal smooth.
Definition at line 278 of file solver3d.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 426 of file solver3d.hpp.
|
inline |
Get ½ H·conj(H) integral between z1 and z2 for reflected light.
num | mode number |
z1 | lower integration bound |
z2 | upper integration bound |
Definition at line 438 of file solver3d.hpp.
|
inline |
Get longitudinal wavevector.
Definition at line 252 of file solver3d.hpp.
|
inline |
Get transverse wavevector.
Definition at line 265 of file solver3d.hpp.
|
inline |
Get order of the orthogonal base in the longitudinal direction.
Definition at line 188 of file solver3d.hpp.
|
inline |
Get expansion rule.
Definition at line 302 of file solver3d.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 353 of file solver3d.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 371 of file solver3d.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 388 of file solver3d.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 450 of file solver3d.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 463 of file solver3d.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 477 of file solver3d.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 491 of file solver3d.hpp.
|
inline |
Return current mode symmetry.
Definition at line 212 of file solver3d.hpp.
|
inline |
Return current mode symmetry.
Definition at line 229 of file solver3d.hpp.
|
inline |
Get order of the orthogonal base in the transverse direction.
Definition at line 191 of file solver3d.hpp.
|
overrideprotectedvirtual |
Return mode wavelength.
n | mode number |
Implements plask::optical::modal::ModalSolver< SolverOver< Geometry3D > >.
Definition at line 230 of file solver3d.cpp.
cvector plask::optical::modal::FourierSolver3D::incidentGaussian | ( | Transfer::IncidentDirection | side, |
Expansion::Component | polarization, | ||
double | sigma_long, | ||
double | sigma_tran, | ||
double | center_long = 0. , |
||
double | center_tran = 0. , |
||
dcomplex | lam = NAN |
||
) |
Compute incident vector with Gaussian profile.
side | incidence side |
polarization | polarization of the perpendicularly incident light |
sigma_long,sigma_tran | standard deviations in longitudinal and transverse directions |
center_long,center_tran | position of the beam center in longitudinal and transverse directions |
lam | wavelength |
Definition at line 262 of file solver3d.cpp.
cvector plask::optical::modal::FourierSolver3D::incidentVector | ( | Transfer::IncidentDirection | side, |
Expansion::Component | polarization, | ||
dcomplex | lam = NAN |
||
) |
Get incident field vector for given polarization.
side | incidence side |
polarization | polarization of the perpendicularly incident light |
lam | wavelength |
Definition at line 248 of file solver3d.cpp.
|
protected |
Definition at line 236 of file solver3d.cpp.
|
inlineprotected |
Insert mode to the list or return the index of the exiting one.
Definition at line 507 of file solver3d.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 77 of file solver3d.cpp.
|
inline |
Return minor field coefficients dimension.
Definition at line 320 of file solver3d.hpp.
|
inlineoverrideprotectedvirtual |
Return number of determined modes.
Implements plask::optical::modal::ModalSolver< SolverOver< Geometry3D > >.
Definition at line 523 of file solver3d.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 153 of file solver3d.cpp.
|
overrideprotectedvirtual |
This method is called by invalidate() to reset stored values.
Default implementation does nothing.
Reimplemented from plask::Solver.
Definition at line 168 of file solver3d.cpp.
Set type of the DCT.
Definition at line 290 of file solver3d.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 145 of file solver3d.hpp.
Set current smooth.
Definition at line 281 of file solver3d.hpp.
|
inline |
Set longitudinal wavevector.
Definition at line 255 of file solver3d.hpp.
|
inline |
Set transverse wavevector.
Definition at line 268 of file solver3d.hpp.
|
inline |
Set order of the orthogonal base in the longitudinal direction.
Definition at line 194 of file solver3d.hpp.
|
inline |
Check if the current parameters correspond to some mode and insert it.
Definition at line 498 of file solver3d.hpp.
|
inline |
Set expansion rule.
Definition at line 304 of file solver3d.hpp.
|
inline |
Set order of the orthogonal base.
Definition at line 205 of file solver3d.hpp.
|
inline |
Set new mode symmetry.
Definition at line 215 of file solver3d.hpp.
|
inline |
Set new mode symmetry.
Definition at line 232 of file solver3d.hpp.
|
inline |
Set order of the orthogonal base in the transverse direction.
Definition at line 199 of file solver3d.hpp.
|
inline |
Get info if the expansion is symmetric.
Definition at line 246 of file solver3d.hpp.
|
inline |
Get info if the expansion is symmetric.
Definition at line 249 of file solver3d.hpp.
|
friend |
Definition at line 36 of file solver3d.hpp.
|
protected |
Type of discrete cosine transform. Can be only 1 or two.
Definition at line 126 of file solver3d.hpp.
ExpansionPW3D plask::optical::modal::FourierSolver3D::expansion |
Class responsible for computing expansion coefficients.
Definition at line 136 of file solver3d.hpp.
|
protected |
Expansion rule.
Definition at line 129 of file solver3d.hpp.
double plask::optical::modal::FourierSolver3D::grad_smooth |
Smoothing of the normal-direction functions.
Definition at line 164 of file solver3d.hpp.
|
protected |
Longitudinal wavevector (1/µm)
Definition at line 111 of file solver3d.hpp.
|
protected |
Transverse wavevector (1/µm)
Definition at line 112 of file solver3d.hpp.
std::vector<Mode> plask::optical::modal::FourierSolver3D::modes |
Computed modes.
Definition at line 139 of file solver3d.hpp.
ProviderFor<GradientFunctions,Geometry3D>::Delegate plask::optical::modal::FourierSolver3D::outGradients |
Provider for gradient functions.
Definition at line 172 of file solver3d.hpp.
PML plask::optical::modal::FourierSolver3D::pml_long |
Longitudinal PMLs.
Definition at line 167 of file solver3d.hpp.
PML plask::optical::modal::FourierSolver3D::pml_tran |
Transverse PMLs.
Definition at line 169 of file solver3d.hpp.
size_t plask::optical::modal::FourierSolver3D::refine_long |
Mesh multiplier for finer computation of the refractive indices in the longitudinal direction.
Definition at line 159 of file solver3d.hpp.
size_t plask::optical::modal::FourierSolver3D::refine_tran |
Mesh multiplier for finer computation of the refractive indices in the transverse direction.
Definition at line 161 of file solver3d.hpp.
size_t plask::optical::modal::FourierSolver3D::size_long |
Maximum order of the orthogonal base in longitudinal direction.
Definition at line 105 of file solver3d.hpp.
size_t plask::optical::modal::FourierSolver3D::size_tran |
Maximum order of the orthogonal base in transverse direction.
Definition at line 107 of file solver3d.hpp.
|
protected |
Symmetry along longitudinal axis.
Definition at line 114 of file solver3d.hpp.
|
protected |
Symmetry along transverse axis.
Definition at line 115 of file solver3d.hpp.