PLaSK library

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

Solver performing calculations in 2D Cartesian space using effective index method. More...

`#include <solvers/optical/effective/efm.hpp>`

Inheritance diagram for plask::optical::effective::EffectiveFrequencyCyl:
[legend]
Collaboration diagram for plask::optical::effective::EffectiveFrequencyCyl:
[legend]

## Classes
struct | FieldR
struct | FieldZ
struct | MatrixR
struct | MatrixZ
struct | Mode
| Details of the computed mode. More...

## Public Types
enum | Emission { TOP , BOTTOM }
| Direction of the possible emission. More...
enum | Determinant { DETERMINANT_INWARDS , DETERMINANT_OUTWARDS , DETERMINANT_FULL }
| Radial determinant modes. More...
Public Types inherited from plask::SolverWithMesh< Geometry2DCylindrical, RectangularMesh< 2 > >
typedef RectangularMesh< 2 > | 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 Member Functions
dcomplex | freqv (dcomplex lam)
| Convert wavelength to the frequency parameter.
dcomplex | lambda (dcomplex freq)
| Convert frequency parameter to the wavelength.
int | getStripe () const
| Return the main stripe number.
void | setStripe (int stripe)
| Set stripe for computations.
double | getStripeR () const
| Get position of the main stripe.
void | setStripeR (double r=0.)
| Set position of the main stripe.
void | useAllStripes ()
| Use all stripes.
dcomplex | getDeltaNeff (double r)
| Return radial effective index part at specified position.
dcomplex | getNNg (double r)
| Return effective index at specified position.
| EffectiveFrequencyCyl (const std::string &name="")
virtual | ~EffectiveFrequencyCyl ()
std::string | getClassName () const override
| Get name of solver.
std::string | getClassDescription () const override
| Get a description of this solver.
void | loadConfiguration (plask::XMLReader &reader, plask::Manager &manager) override
| Load configuration from given `source`.
Emission | getEmission () const
| Get emission direction.
void | setEmission (Emission emis)
| Set emission direction.
void | setSimpleMesh ()
| Set the simple mesh based on the geometry bounding boxes.
void | setHorizontalMesh (shared_ptr< MeshAxis > meshx)
| Set up the horizontal mesh.
bool | getAsymptotic () const
| Get asymptotic flag.
void | setAsymptotic (bool value)
| Set asymptotic flag.
size_t | findMode (dcomplex lambda, int m=0)
| Find the mode around the specified effective wavelength.
std::vector< size_t > | findModes (plask::dcomplex lambda1=0., plask::dcomplex lambda2=0., int m=0, size_t resteps=256, size_t imsteps=64, dcomplex eps=dcomplex(1e-6, 1e-9))
| Find the modes within the specified range.
dcomplex | getVertDeterminant (dcomplex vlambda)
| Compute vectical modal determinant.
dcomplex | getDeterminant (dcomplex lambda, int m=0)
| Compute modal determinant for the whole matrix.
size_t | setMode (dcomplex clambda, int m=0)
| Set particular value of the effective wavelength, e.g.
size_t | setMode (double lambda, double loss, int m=0)
| Set particular value of the effective wavelength, e.g.
void | clearModes ()
| Clear computed modes.
double | getTotalAbsorption (Mode &mode)
| Return total amount of energy absorbed by the matter in a unit time.
double | getTotalAbsorption (size_t num)
| Return total amount of energy absorbed by the matter in a unit time.
double | getGainIntegral (Mode &mode)
| Return total amount of energy generated in the gain region in a unit time.
double | getGainIntegral (size_t num)
| Return total amount of energy absorbed by the matter in a unit time.
Public Member Functions inherited from plask::SolverWithMesh< Geometry2DCylindrical, RectangularMesh< 2 > >
| 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.
RectangularMesh< 2 > & | meshRef () const
| Get current module mesh.
shared_ptr< RectangularMesh< 2 > > | getMesh () const
| Get current solver mesh.
void | setMesh (const shared_ptr< RectangularMesh< 2 > > &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")
virtual void | onGeometryChange (const Geometry::Event &)
| This method is called when the geometry is changed.
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
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 Attributes
Determinant | determinant
| Radial determinant mode.
RootDigger::Params | root
| Parameters for horizontal root digger.
RootDigger::Params | stripe_root
| Parameters for vertical root diggers.
double | perr
| Allowed relative power integral precision.
dcomplex | k0
| Current value of reference normalized frequency (1/µm)
dcomplex | vlam
| 'Vertical wavelength' used as a helper for searching vertical modes
std::vector< Mode > | modes
| Computed modes.
ReceiverFor< Temperature, Geometry2DCylindrical > | inTemperature
| Receiver for the temperature.
ReceiverFor< Gain, Geometry2DCylindrical > | inGain
| Receiver for the gain.
ReceiverFor< CarriersConcentration, Geometry2DCylindrical > | inCarriersConcentration
| Receiver for the carriers concentration.
ProviderFor< ModeWavelength >::Delegate | outWavelength
| Provider for computed resonant wavelength.
ProviderFor< ModeLoss >::Delegate | outLoss
| Provider for computed modal extinction.
ProviderFor< ModeLightMagnitude, Geometry2DCylindrical >::Delegate | outLightMagnitude
| Provider of optical field.
ProviderFor< ModeLightE, Geometry2DCylindrical >::Delegate | outLightE
| Provider of optical field.
ProviderFor< RefractiveIndex, Geometry2DCylindrical >::Delegate | outRefractiveIndex
| Provider of refractive index.
ProviderFor< Heat, Geometry2DCylindrical >::Delegate | outHeat
| Provider of the heat absorbed/generated by the light.

## Protected Member Functions
void | onInputChange (ReceiverBase &, ReceiverBase::ChangeReason)
| Slot called when gain has changed.
void | onInitialize () override
| Initialize the solver.
void | onInvalidate () override
| Invalidate the data.
void | updateCache ()
| Update refractive index cache.
void | stageOne ()
| Fist stage of computations Perform vertical computations.
dcomplex | detS1 (const dcomplex &v, const std::vector< dcomplex, aligned_allocator< dcomplex > > &NR, const std::vector< dcomplex, aligned_allocator< dcomplex > > &NG, std::vector< FieldZ > *saveto=nullptr)
| Return S matrix determinant for one stripe.
void | computeStripeNNg (size_t stripe, bool save_integrals=false)
| Compute stripe averaged n ng.
double | integrateBessel (Mode &mode)
| Integrate horizontal field.
void | computeBessel (size_t i, dcomplex v, const Mode &mode, dcomplex *J1, dcomplex *H1, dcomplex *J2, dcomplex *H2)
| Compute Bessel functions.
dcomplex | detS (const plask::dcomplex &lam, Mode &mode, bool save=false)
| Return S matrix determinant for the whole structure.
size_t | getMainStripe ()
| Obtain main stripe.
size_t | insertMode (const Mode &mode)
| Insert mode to the list or return the index of the exiting one.
size_t | nmodes () const
| Return number of found modes.
double | getWavelength (size_t n)
| Return mode wavelength.
double | getModalLoss (size_t n)
| Return mode modal loss.
const LazyData< double > | getLightMagnitude (std::size_t num, const shared_ptr< const MeshD< 2 > > &dst_mesh, InterpolationMethod=INTERPOLATION_DEFAULT)
| Method computing the distribution of light intensity.
const LazyData< Vec< 3, dcomplex > > | getElectricField (std::size_t num, const shared_ptr< const plask::MeshD< 2 > > &dst_mesh, plask::InterpolationMethod=INTERPOLATION_DEFAULT)
| Method computing the distribution of the light electric field.
const LazyData< dcomplex > | getRefractiveIndex (RefractiveIndex::EnumType component, const shared_ptr< const MeshD< 2 > > &dst_mesh, dcomplex lam, InterpolationMethod=INTERPOLATION_DEFAULT)
| Get used refractive index.
const LazyData< double > | getHeat (const shared_ptr< const MeshD< 2 > > &dst_mesh, InterpolationMethod method=INTERPOLATION_DEFAULT)
| Get generated/absorbed heat.
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 Attributes
DataLog< dcomplex, dcomplex > | log_value
| Logger for char_val.
size_t | rsize
| Last element of horizontal mesh to consider.
size_t | zbegin
| First element of vertical mesh to consider.
size_t | zsize
| Last element of vertical mesh to consider.
std::vector< std::vector< dcomplex, aligned_allocator< dcomplex > > > | nrCache
| Cached refractive indices.
std::vector< std::vector< dcomplex, aligned_allocator< dcomplex > > > | ngCache
| Cached group indices.
std::vector< FieldZ > | zfields
| Computed vertical fields.
std::vector< double, aligned_allocator< double > > | zintegrals
| Vertical field confinement weights.
std::vector< dcomplex, aligned_allocator< dcomplex > > | veffs
| Computed effective frequencies for each stripe.
std::vector< dcomplex, aligned_allocator< dcomplex > > | nng
| Computed weighted indices for each stripe.
dcomplex | old_k0
| Old value of k0 to detect changes.
Emission | emission
| Direction of laser emission.
int | rstripe
| Stripe number to use for vertical computations.
bool | need_gain
| Do we need to compute gain.
bool | cache_outdated
| Indicator that we need to recompute the effective indices.
bool | have_veffs
| Indicator if we have veffs foe the current cache.
bool | asymptotic
| Indicator if we want an asymptotic lateral solution in the outermost layer.
Protected Attributes inherited from plask::SolverWithMesh< Geometry2DCylindrical, RectangularMesh< 2 > >
shared_ptr< RectangularMesh< 2 > > | 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

## Friends
struct | RootDigger

## Detailed Description

Solver performing calculations in 2D Cartesian space using effective index method.

Definition at line 32 of file efm.hpp.

## Member Enumeration Documentation

## ◆ Determinant

enum plask::optical::effective::EffectiveFrequencyCyl::Determinant

Radial determinant modes.

Enumerator
DETERMINANT_INWARDS | Use out->in transfer matrix method.
DETERMINANT_OUTWARDS | Use out->in transfer matrix method.
DETERMINANT_FULL | Construct one matrix for all layers.

Definition at line 127 of file efm.hpp.

## ◆ Emission

enum plask::optical::effective::EffectiveFrequencyCyl::Emission

Direction of the possible emission.

Enumerator
TOP | Top emission.
BOTTOM | Bottom emission.

Definition at line 121 of file efm.hpp.

## Constructor & Destructor Documentation

## ◆ EffectiveFrequencyCyl()

plask::optical::effective::EffectiveFrequencyCyl::EffectiveFrequencyCyl | ( | const std::string & | name = `""` | ) |

Definition at line 24 of file efm.cpp.

## ◆ ~EffectiveFrequencyCyl()

virtual plask::optical::effective::EffectiveFrequencyCyl::~EffectiveFrequencyCyl | ( |  | ) |
| inline virtual

Definition at line 335 of file efm.hpp.

## Member Function Documentation

## ◆ clearModes()

void plask::optical::effective::EffectiveFrequencyCyl::clearModes | ( |  | ) |
| inline

Clear computed modes.

Definition at line 470 of file efm.hpp.

## ◆ computeBessel()

void plask::optical::effective::EffectiveFrequencyCyl::computeBessel | ( | size_t | i,
|  | dcomplex | v,
|  | const Mode & | mode,
|  | dcomplex * | J1,
|  | dcomplex * | H1,
|  | dcomplex * | J2,
|  | dcomplex * | H2
| ) |  |
| protected

Compute Bessel functions.

Definition at line 619 of file efm.cpp.

## ◆ computeStripeNNg()

void plask::optical::effective::EffectiveFrequencyCyl::computeStripeNNg | ( | size_t | stripe,
|  | bool | save_integrals = `false`
| ) |  |
| protected

Compute stripe averaged n ng.

Definition at line 541 of file efm.cpp.

## ◆ detS()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::detS | ( | const plask::dcomplex & | lam,
|  | Mode & | mode,
|  | bool | save = `false`
| ) |  |
| protected

Return S matrix determinant for the whole structure.

Definition at line 682 of file efm.cpp.

## ◆ detS1()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::detS1 | ( | const dcomplex & | v,
|  | const std::vector< dcomplex, aligned_allocator< dcomplex > > & | NR,
|  | const std::vector< dcomplex, aligned_allocator< dcomplex > > & | NG,
|  | std::vector< FieldZ > * | saveto = `nullptr`
| ) |  |
| protected

Return S matrix determinant for one stripe.

Definition at line 444 of file efm.cpp.

## ◆ findMode()

size_t plask::optical::effective::EffectiveFrequencyCyl::findMode | ( | dcomplex | lambda,
|  | int | m = `0`
| ) |  |

Find the mode around the specified effective wavelength.

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

Parameters

  lambda | initial wavelength close to the solution
  m | number of the LP_mn mode describing angular dependence

Returns
  index of the found mode

Definition at line 123 of file efm.cpp.

## ◆ findModes()

std::vector< size_t > plask::optical::effective::EffectiveFrequencyCyl::findModes | ( | plask::dcomplex | lambda1 = `0.`,
|  | plask::dcomplex | lambda2 = `0.`,
|  | int | m = `0`,
|  | size_t | resteps = `256`,
|  | size_t | imsteps = `64`,
|  | dcomplex | eps = `dcomplex(1e-6, 1e-9)`
| ) |  |

Find the modes within the specified range.

This method does not remember the determined modes!

Parameters

  lambda1 | one corner of the range to browse
  lambda2 | another corner of the range to browse
  m | number of the LP_mn mode describing angular dependence
  resteps | minimum number of steps to check function value on real contour
  imsteps | minimum number of steps to check function value on imaginary contour
  eps | approximate error for integrals

Returns
  vector of indices of determined modes

Definition at line 134 of file efm.cpp.

## ◆ freqv()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::freqv | ( | dcomplex | lam | ) |
| inline

Convert wavelength to the frequency parameter.

Definition at line 178 of file efm.hpp.

## ◆ getAsymptotic()

bool plask::optical::effective::EffectiveFrequencyCyl::getAsymptotic | ( |  | ) | const
| inline

Get asymptotic flag.

Definition at line 384 of file efm.hpp.

## ◆ getClassDescription()

std::string plask::optical::effective::EffectiveFrequencyCyl::getClassDescription | ( |  | ) | const
| inline override virtual

Get a description of this solver.

Returns
  description of this solver (empty string by default)

Reimplemented from plask::Solver.

Definition at line 343 of file efm.hpp.

## ◆ getClassName()

std::string plask::optical::effective::EffectiveFrequencyCyl::getClassName | ( |  | ) | const
| inline override virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 341 of file efm.hpp.

## ◆ getDeltaNeff()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::getDeltaNeff | ( | double | r | ) |
| inline

Return radial effective index part at specified position.

Parameters

  horizontal | position

Definition at line 268 of file efm.hpp.

## ◆ getDeterminant()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::getDeterminant | ( | dcomplex | lambda,
|  | int | m = `0`
| ) |  |
| inline

Compute modal determinant for the whole matrix.

Parameters

  lambda | wavelength
  m | number of the LP_mn mode describing angular dependence

Definition at line 440 of file efm.hpp.

## ◆ getElectricField()

const LazyData< Vec< 3, dcomplex > > plask::optical::effective::EffectiveFrequencyCyl::getElectricField | ( | std::size_t | num,
|  | const shared_ptr< const plask::MeshD< 2 > > & | dst_mesh,
|  | plask::InterpolationMethod | = `INTERPOLATION_DEFAULT`
| ) |  |
| protected

Method computing the distribution of the light electric field.

Definition at line 1053 of file efm.cpp.

## ◆ getEmission()

Emission plask::optical::effective::EffectiveFrequencyCyl::getEmission | ( |  | ) | const
| inline

Get emission direction.

Returns
  emission direction

Definition at line 352 of file efm.hpp.

## ◆ getGainIntegral() [1/2]

double plask::optical::effective::EffectiveFrequencyCyl::getGainIntegral | ( | Mode & | mode | ) |

Return total amount of energy generated in the gain region in a unit time.

Parameters

  mode | mode to analyze

Definition at line 840 of file efm.cpp.

## ◆ getGainIntegral() [2/2]

double plask::optical::effective::EffectiveFrequencyCyl::getGainIntegral | ( | size_t | num | ) |

Return total amount of energy absorbed by the matter in a unit time.

Parameters

  num | mode number

Definition at line 867 of file efm.cpp.

## ◆ getHeat()

const LazyData< double > plask::optical::effective::EffectiveFrequencyCyl::getHeat | ( | const shared_ptr< const MeshD< 2 > > & | dst_mesh,
|  | InterpolationMethod | method = `INTERPOLATION_DEFAULT`
| ) |  |
| protected

Get generated/absorbed heat.

Definition at line 1140 of file efm.cpp.

## ◆ getLightMagnitude()

const LazyData< double > plask::optical::effective::EffectiveFrequencyCyl::getLightMagnitude | ( | std::size_t | num,
|  | const shared_ptr< const MeshD< 2 > > & | dst_mesh,
|  | InterpolationMethod | = `INTERPOLATION_DEFAULT`
| ) |  |
| protected

Method computing the distribution of light intensity.

Definition at line 1023 of file efm.cpp.

## ◆ getMainStripe()

size_t plask::optical::effective::EffectiveFrequencyCyl::getMainStripe | ( |  | ) |
| inline protected

Obtain main stripe.

Definition at line 547 of file efm.hpp.

## ◆ getModalLoss()

double plask::optical::effective::EffectiveFrequencyCyl::getModalLoss | ( | size_t | n | ) |
| inline protected

Return mode modal loss.

Parameters

  n | mode number

Definition at line 597 of file efm.hpp.

## ◆ getNNg()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::getNNg | ( | double | r | ) |
| inline

Return effective index at specified position.

Parameters

  horizontal | position

Definition at line 281 of file efm.hpp.

## ◆ getRefractiveIndex()

const LazyData< dcomplex > plask::optical::effective::EffectiveFrequencyCyl::getRefractiveIndex | ( | RefractiveIndex::EnumType | component,
|  | const shared_ptr< const MeshD< 2 > > & | dst_mesh,
|  | dcomplex | lam,
|  | InterpolationMethod | = `INTERPOLATION_DEFAULT`
| ) |  |
| protected

Get used refractive index.

Definition at line 1083 of file efm.cpp.

## ◆ getStripe()

int plask::optical::effective::EffectiveFrequencyCyl::getStripe | ( |  | ) | const
| inline

Return the main stripe number.

Definition at line 231 of file efm.hpp.

## ◆ getStripeR()

double plask::optical::effective::EffectiveFrequencyCyl::getStripeR | ( |  | ) | const
| inline

Get position of the main stripe.

Definition at line 242 of file efm.hpp.

## ◆ getTotalAbsorption() [1/2]

double plask::optical::effective::EffectiveFrequencyCyl::getTotalAbsorption | ( | Mode & | mode | ) |

Return total amount of energy absorbed by the matter in a unit time.

Parameters

  mode | mode to analyze

Definition at line 801 of file efm.cpp.

## ◆ getTotalAbsorption() [2/2]

double plask::optical::effective::EffectiveFrequencyCyl::getTotalAbsorption | ( | size_t | num | ) |

Return total amount of energy absorbed by the matter in a unit time.

Parameters

  num | mode number

Definition at line 834 of file efm.cpp.

## ◆ getVertDeterminant()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::getVertDeterminant | ( | dcomplex | vlambda | ) |
| inline

Compute vectical modal determinant.

Parameters

  vlambda | vertical plane-wave wavelength

Definition at line 427 of file efm.hpp.

## ◆ getWavelength()

double plask::optical::effective::EffectiveFrequencyCyl::getWavelength | ( | size_t | n | ) |
| inline protected

Return mode wavelength.

Parameters

  n | mode number

Definition at line 588 of file efm.hpp.

## ◆ insertMode()

size_t plask::optical::effective::EffectiveFrequencyCyl::insertMode | ( | const Mode & | mode | ) |
| inline protected

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

Definition at line 570 of file efm.hpp.

## ◆ integrateBessel()

double plask::optical::effective::EffectiveFrequencyCyl::integrateBessel | ( | Mode & | mode | ) |
| protected

Integrate horizontal field.

Parameters

  mode | mode to integrate

Definition at line 603 of file efm.cpp.

## ◆ lambda()

dcomplex plask::optical::effective::EffectiveFrequencyCyl::lambda | ( | dcomplex | freq | ) |
| inline

Convert frequency parameter to the wavelength.

Definition at line 181 of file efm.hpp.

## ◆ loadConfiguration()

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

Load configuration from given `source`.

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

Parameters

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

Reimplemented from plask::Solver.

Definition at line 56 of file efm.cpp.

## ◆ nmodes()

size_t plask::optical::effective::EffectiveFrequencyCyl::nmodes | ( |  | ) | const
| inline protected

Return number of found modes.

Definition at line 582 of file efm.hpp.

## ◆ onInitialize()

void plask::optical::effective::EffectiveFrequencyCyl::onInitialize | ( |  | ) |
| override protected virtual

Initialize the solver.

Reimplemented from plask::Solver.

Definition at line 220 of file efm.cpp.

## ◆ onInputChange()

void plask::optical::effective::EffectiveFrequencyCyl::onInputChange | ( | ReceiverBase & | ,
|  | ReceiverBase::ChangeReason |
| ) |  |
| inline protected

Slot called when gain has changed.

Definition at line 218 of file efm.hpp.

## ◆ onInvalidate()

void plask::optical::effective::EffectiveFrequencyCyl::onInvalidate | ( |  | ) |
| override protected virtual

Invalidate the data.

Reimplemented from plask::Solver.

Definition at line 253 of file efm.cpp.

## ◆ setAsymptotic()

void plask::optical::effective::EffectiveFrequencyCyl::setAsymptotic | ( | bool | value | ) |
| inline

Set asymptotic flag.

Definition at line 387 of file efm.hpp.

## ◆ setEmission()

void plask::optical::effective::EffectiveFrequencyCyl::setEmission | ( | Emission | emis | ) |
| inline

Set emission direction.

Parameters

  emis | new emissjon direction

Definition at line 356 of file efm.hpp.

## ◆ setHorizontalMesh()

void plask::optical::effective::EffectiveFrequencyCyl::setHorizontalMesh | ( | shared_ptr< MeshAxis > | meshx | ) |
| inline

Set up the horizontal mesh.

Horizontal division is provided while vertical one is created basing on the geometry bounding boxes.

Parameters

  meshx | horizontal mesh

Definition at line 375 of file efm.hpp.

## ◆ setMode() [1/2]

size_t plask::optical::effective::EffectiveFrequencyCyl::setMode | ( | dcomplex | clambda,
|  | int | m = `0`
| ) |  |

Set particular value of the effective wavelength, e.g.

to one of the values returned by findModes. If it is not proper mode, exception is throw.

Parameters

  clambda | complex wavelength of the mode

Returns
  index of the set mode

Definition at line 209 of file efm.cpp.

## ◆ setMode() [2/2]

size_t plask::optical::effective::EffectiveFrequencyCyl::setMode | ( | double | lambda,
|  | double | loss,
|  | int | m = `0`
| ) |  |
| inline

Set particular value of the effective wavelength, e.g.

to one of the values returned by findModes. If it is not proper mode, exception is throw.

Parameters

  lambda | wavelength of the mode
  loss | modal loss (as returned by outLoss)
  m | number of the LP_mn mode describing angular dependence

Returns
  index of the set mode

Definition at line 465 of file efm.hpp.

## ◆ setSimpleMesh()

void plask::optical::effective::EffectiveFrequencyCyl::setSimpleMesh | ( |  | ) |
| inline

Set the simple mesh based on the geometry bounding boxes.

Definition at line 364 of file efm.hpp.

## ◆ setStripe()

void plask::optical::effective::EffectiveFrequencyCyl::setStripe | ( | int | stripe | ) |
| inline

Set stripe for computations.

Definition at line 234 of file efm.hpp.

## ◆ setStripeR()

void plask::optical::effective::EffectiveFrequencyCyl::setStripeR | ( | double | r = `0.` | ) |
| inline

Set position of the main stripe.

Parameters

  r | horizontal position of the main stripe

Definition at line 251 of file efm.hpp.

## ◆ stageOne()

void plask::optical::effective::EffectiveFrequencyCyl::stageOne | ( |  | ) |
| protected

Fist stage of computations Perform vertical computations.

Definition at line 348 of file efm.cpp.

## ◆ updateCache()

void plask::optical::effective::EffectiveFrequencyCyl::updateCache | ( |  | ) |
| protected

Update refractive index cache.

Definition at line 266 of file efm.cpp.

## ◆ useAllStripes()

void plask::optical::effective::EffectiveFrequencyCyl::useAllStripes | ( |  | ) |
| inline

Use all stripes.

Definition at line 259 of file efm.hpp.

## Friends And Related Symbol Documentation

## ◆ RootDigger

friend struct RootDigger
| friend

Definition at line 184 of file efm.hpp.

## Member Data Documentation

## ◆ asymptotic

bool plask::optical::effective::EffectiveFrequencyCyl::asymptotic
| protected

Indicator if we want an asymptotic lateral solution in the outermost layer.

Definition at line 507 of file efm.hpp.

## ◆ cache_outdated

bool plask::optical::effective::EffectiveFrequencyCyl::cache_outdated
| protected

Indicator that we need to recompute the effective indices.

Definition at line 501 of file efm.hpp.

## ◆ determinant

Determinant plask::optical::effective::EffectiveFrequencyCyl::determinant

Radial determinant mode.

Definition at line 228 of file efm.hpp.

## ◆ emission

Emission plask::optical::effective::EffectiveFrequencyCyl::emission
| protected

Direction of laser emission.

Definition at line 215 of file efm.hpp.

## ◆ have_veffs

bool plask::optical::effective::EffectiveFrequencyCyl::have_veffs
| protected

Indicator if we have veffs foe the current cache.

Definition at line 504 of file efm.hpp.

## ◆ inCarriersConcentration

ReceiverFor<CarriersConcentration, Geometry2DCylindrical> plask::optical::effective::EffectiveFrequencyCyl::inCarriersConcentration

Receiver for the carriers concentration.

Definition at line 313 of file efm.hpp.

## ◆ inGain

ReceiverFor<Gain, Geometry2DCylindrical> plask::optical::effective::EffectiveFrequencyCyl::inGain

Receiver for the gain.

Definition at line 310 of file efm.hpp.

## ◆ inTemperature

ReceiverFor<Temperature, Geometry2DCylindrical> plask::optical::effective::EffectiveFrequencyCyl::inTemperature

Receiver for the temperature.

Definition at line 307 of file efm.hpp.

## ◆ k0

dcomplex plask::optical::effective::EffectiveFrequencyCyl::k0

Current value of reference normalized frequency (1/µm)

Definition at line 298 of file efm.hpp.

## ◆ log_value

DataLog<dcomplex, dcomplex> plask::optical::effective::EffectiveFrequencyCyl::log_value
| protected

Logger for char_val.

Definition at line 187 of file efm.hpp.

## ◆ modes

std::vector<Mode> plask::optical::effective::EffectiveFrequencyCyl::modes

Computed modes.

Definition at line 304 of file efm.hpp.

## ◆ need_gain

bool plask::optical::effective::EffectiveFrequencyCyl::need_gain
| protected

Do we need to compute gain.

Definition at line 498 of file efm.hpp.

## ◆ ngCache

std::vector<std::vector<dcomplex, aligned_allocator<dcomplex> > > plask::optical::effective::EffectiveFrequencyCyl::ngCache
| protected

Cached group indices.

Definition at line 197 of file efm.hpp.

## ◆ nng

std::vector<dcomplex, aligned_allocator<dcomplex> > plask::optical::effective::EffectiveFrequencyCyl::nng
| protected

Computed weighted indices for each stripe.

Definition at line 209 of file efm.hpp.

## ◆ nrCache

std::vector<std::vector<dcomplex, aligned_allocator<dcomplex> > > plask::optical::effective::EffectiveFrequencyCyl::nrCache
| protected

Cached refractive indices.

Definition at line 194 of file efm.hpp.

## ◆ old_k0

dcomplex plask::optical::effective::EffectiveFrequencyCyl::old_k0
| protected

Old value of k0 to detect changes.

Definition at line 212 of file efm.hpp.

## ◆ outHeat

ProviderFor<Heat,Geometry2DCylindrical>::Delegate plask::optical::effective::EffectiveFrequencyCyl::outHeat

Provider of the heat absorbed/generated by the light.

Definition at line 331 of file efm.hpp.

## ◆ outLightE

ProviderFor<ModeLightE,Geometry2DCylindrical>::Delegate plask::optical::effective::EffectiveFrequencyCyl::outLightE

Provider of optical field.

Definition at line 325 of file efm.hpp.

## ◆ outLightMagnitude

ProviderFor<ModeLightMagnitude,Geometry2DCylindrical>::Delegate plask::optical::effective::EffectiveFrequencyCyl::outLightMagnitude

Provider of optical field.

Definition at line 322 of file efm.hpp.

## ◆ outLoss

ProviderFor<ModeLoss>::Delegate plask::optical::effective::EffectiveFrequencyCyl::outLoss

Provider for computed modal extinction.

Definition at line 319 of file efm.hpp.

## ◆ outRefractiveIndex

ProviderFor<RefractiveIndex,Geometry2DCylindrical>::Delegate plask::optical::effective::EffectiveFrequencyCyl::outRefractiveIndex

Provider of refractive index.

Definition at line 328 of file efm.hpp.

## ◆ outWavelength

ProviderFor<ModeWavelength>::Delegate plask::optical::effective::EffectiveFrequencyCyl::outWavelength

Provider for computed resonant wavelength.

Definition at line 316 of file efm.hpp.

## ◆ perr

double plask::optical::effective::EffectiveFrequencyCyl::perr

Allowed relative power integral precision.

Definition at line 295 of file efm.hpp.

## ◆ root

RootDigger::Params plask::optical::effective::EffectiveFrequencyCyl::root

Parameters for horizontal root digger.

Definition at line 291 of file efm.hpp.

## ◆ rsize

size_t plask::optical::effective::EffectiveFrequencyCyl::rsize
| protected

Last element of horizontal mesh to consider.

Definition at line 189 of file efm.hpp.

## ◆ rstripe

int plask::optical::effective::EffectiveFrequencyCyl::rstripe
| protected

Stripe number to use for vertical computations.

-1 means to compute all stripes as in the proper EFM

Definition at line 224 of file efm.hpp.

## ◆ stripe_root

RootDigger::Params plask::optical::effective::EffectiveFrequencyCyl::stripe_root

Parameters for vertical root diggers.

Definition at line 292 of file efm.hpp.

## ◆ veffs

std::vector<dcomplex, aligned_allocator<dcomplex> > plask::optical::effective::EffectiveFrequencyCyl::veffs
| protected

Computed effective frequencies for each stripe.

Definition at line 206 of file efm.hpp.

## ◆ vlam

dcomplex plask::optical::effective::EffectiveFrequencyCyl::vlam

'Vertical wavelength' used as a helper for searching vertical modes

Definition at line 301 of file efm.hpp.

## ◆ zbegin

size_t plask::optical::effective::EffectiveFrequencyCyl::zbegin
| protected

First element of vertical mesh to consider.

Definition at line 190 of file efm.hpp.

## ◆ zfields

std::vector<FieldZ> plask::optical::effective::EffectiveFrequencyCyl::zfields
| protected

Computed vertical fields.

Definition at line 200 of file efm.hpp.

## ◆ zintegrals

std::vector<double, aligned_allocator<double> > plask::optical::effective::EffectiveFrequencyCyl::zintegrals
| protected

Vertical field confinement weights.

Definition at line 203 of file efm.hpp.

## ◆ zsize

size_t plask::optical::effective::EffectiveFrequencyCyl::zsize
| protected

Last element of vertical mesh to consider.

Definition at line 191 of file efm.hpp.

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

- solvers/optical/effective/efm.hpp
- solvers/optical/effective/efm.cpp