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::EffectiveIndex2D Struct Reference

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

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

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

## Classes
struct | Field
struct | Matrix
struct | Mode
| Details of the computed mode. More...

## Public Types
enum | Symmetry { SYMMETRY_DEFAULT , SYMMETRY_POSITIVE , SYMMETRY_NEGATIVE , SYMMETRY_NONE }
| Mode symmetry in horizontal axis. More...
enum | Polarization { TE , TM }
| Mode polarization. More...
enum | Emission { FRONT , BACK }
| Direction of the possible emission. More...
Public Types inherited from plask::SolverWithMesh< Geometry2DCartesian, 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
| EffectiveIndex2D (const std::string &name="")
virtual | ~EffectiveIndex2D ()
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`.
double | getStripeX () const
void | setStripeX (double x)
| Set position of the main stripe.
Polarization | getPolarization () const
void | setPolarization (Polarization polar)
| Set new polarization.
dcomplex | getWavelength () const
void | setWavelength (dcomplex wavelength)
| Set new wavelength.
void | setSimpleMesh ()
| Set the simple mesh based on the geometry bounding boxes.
void | setHorizontalMesh (shared_ptr< MeshAxis > meshx)
| Set up the horizontal mesh.
std::vector< dcomplex > | searchVNeffs (plask::dcomplex neff1=0., plask::dcomplex neff2=0., size_t resteps=256, size_t imsteps=64, dcomplex eps=dcomplex(1e-6, 1e-9))
| Look for the vertical effective indices within the specified range This method does not remember the determined modes!
size_t | findMode (dcomplex neff, Symmetry symmetry=SYMMETRY_DEFAULT)
| Find the mode around the specified effective index.
std::vector< size_t > | findModes (dcomplex neff1=0., dcomplex neff2=0., Symmetry symmetry=SYMMETRY_DEFAULT, 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 neff)
| Compute determinant for a single stripe.
dcomplex | getDeterminant (dcomplex neff, Symmetry sym=SYMMETRY_DEFAULT)
| Compute modal determinant for the whole matrix.
size_t | setMode (dcomplex neff, Symmetry sym=SYMMETRY_DEFAULT)
| Set particular value of the effective index, e.g.
void | clearModes ()
| Clear computed modes.
double | getTotalAbsorption (Mode &mode)
| Compute field weights.
double | getTotalAbsorption (size_t num)
| Compute field weights.
dcomplex | getDeltaNeff (double x)
| Return lateral effective index part at specified position.
Public Member Functions inherited from plask::SolverWithMesh< Geometry2DCartesian, 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
Emission | emission
| Direction of laser emission.
dcomplex | vneff
| Vertical effective index of the main stripe.
plask::optional< std::pair< double, double > > | mirrors
| Mirror reflectivities.
RootDigger::Params | root
| Parameters for main rootdigger.
RootDigger::Params | stripe_root
| Parameters for sripe rootdigger.
std::vector< Mode > | modes
| Computed modes.
ReceiverFor< Temperature, Geometry2DCartesian > | inTemperature
| Receiver for the temperature.
ReceiverFor< Gain, Geometry2DCartesian > | inGain
| Receiver for the gain.
ReceiverFor< CarriersConcentration, Geometry2DCartesian > | inCarriersConcentration
| Receiver for the carriers concentration.
ProviderFor< ModeEffectiveIndex >::Delegate | outNeff
| Provider for computed effective index.
ProviderFor< ModeLightMagnitude, Geometry2DCartesian >::Delegate | outLightMagnitude
| Provider of optical field.
ProviderFor< ModeLightE, Geometry2DCartesian >::Delegate | outLightE
| Provider of optical field.
ProviderFor< RefractiveIndex, Geometry2DCartesian >::Delegate | outRefractiveIndex
| Provider for refractive index.
ProviderFor< Heat, Geometry2DCartesian >::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.
double | getMirrorLosses (dcomplex n)
| Compute mirror losses for specified effective mode.
void | updateCache ()
| Update refractive index cache.
void | stageOne ()
| Fist stage of computations Perform vertical computations.
void | computeWeights (size_t stripe)
| Compute field weights basing on solution for given stripe.
void | normalizeFields (Mode &mode, const std::vector< dcomplex, aligned_allocator< dcomplex > > &kx)
| Normalize horizontal fields, so multiplying LightMagnitude by power gives proper LightMagnitude in (V/m)²
dcomplex | detS1 (const dcomplex &x, const std::vector< dcomplex, aligned_allocator< dcomplex > > &NR, bool save=false)
| Compute S matrix determinant for one stripe.
dcomplex | detS (const dcomplex &x, Mode &mode, bool save=false)
| Return S matrix determinant for the whole structure.
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.
dcomplex | getEffectiveIndex (size_t n)
| Return mode effective index.
const LazyData< double > | getLightMagnitude (std::size_t num, shared_ptr< const plask::MeshD< 2 > > dst_mesh, plask::InterpolationMethod=INTERPOLATION_DEFAULT)
| Method computing the distribution of light intensity.
const LazyData< Vec< 3, dcomplex > > | getElectricField (std::size_t num, 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, shared_ptr< const MeshD< 2 > > dst_mesh, dcomplex lam, InterpolationMethod=INTERPOLATION_DEFAULT)
| Get used refractive index.
const LazyData< double > | getHeat (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
size_t | xbegin
| First element of horizontal mesh to consider.
size_t | xend
| Last element of horizontal mesh to consider.
size_t | ybegin
| First element of vertical mesh to consider.
size_t | yend
| Last element of vertical mesh to consider.
DataLog< dcomplex, dcomplex > | log_value
| Logger for determinant.
std::vector< std::vector< dcomplex, aligned_allocator< dcomplex > > > | nrCache
| Cached refractive indices.
std::vector< Field, aligned_allocator< Field > > | yfields
| Computed horizontal and vertical fields.
std::vector< double, aligned_allocator< double > > | yweights
| Vertical field confinement weights.
std::vector< dcomplex, aligned_allocator< dcomplex > > | epsilons
| Computed effective epsilons for each stripe.
double | stripex
| Position of the main stripe.
Polarization | polarization
| Chosen light polarization.
bool | recompute_neffs
| Should stripe indices be recomputed.
dcomplex | k0
| Cache of the normalized frequency (1/µm)
bool | need_gain
| Do we need to have gain.
Protected Attributes inherited from plask::SolverWithMesh< Geometry2DCartesian, 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 29 of file eim.hpp.

## Member Enumeration Documentation

## ◆ Emission

enum plask::optical::effective::EffectiveIndex2D::Emission

Direction of the possible emission.

Enumerator
FRONT |
BACK |

Definition at line 40 of file eim.hpp.

## ◆ Polarization

enum plask::optical::effective::EffectiveIndex2D::Polarization

Mode polarization.

Enumerator
TE |
TM |

Definition at line 34 of file eim.hpp.

## ◆ Symmetry

enum plask::optical::effective::EffectiveIndex2D::Symmetry

Mode symmetry in horizontal axis.

Enumerator
SYMMETRY_DEFAULT |
SYMMETRY_POSITIVE |
SYMMETRY_NEGATIVE |
SYMMETRY_NONE |

Definition at line 31 of file eim.hpp.

## Constructor & Destructor Documentation

## ◆ EffectiveIndex2D()

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

Definition at line 19 of file eim.cpp.

## ◆ ~EffectiveIndex2D()

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

Definition at line 180 of file eim.hpp.

## Member Function Documentation

## ◆ clearModes()

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

Clear computed modes.

Definition at line 330 of file eim.hpp.

## ◆ computeWeights()

void plask::optical::effective::EffectiveIndex2D::computeWeights | ( | size_t | stripe | ) |
| protected

Compute field weights basing on solution for given stripe.

Also compute data for determining vertical fields

Parameters

  stripe | main stripe number

Definition at line 523 of file eim.cpp.

## ◆ detS()

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

Return S matrix determinant for the whole structure.

Parameters

  x | effective index
  save | if `true`, the fields are saved to xfields

Definition at line 665 of file eim.cpp.

## ◆ detS1()

dcomplex plask::optical::effective::EffectiveIndex2D::detS1 | ( | const dcomplex & | x,
|  | const std::vector< dcomplex, aligned_allocator< dcomplex > > & | NR,
|  | bool | save = `false`
| ) |  |
| protected

Compute S matrix determinant for one stripe.

Parameters

  x | vertical effective index
  NR | refractive indices
  save | if `true`, the fields are saved to yfields

Definition at line 434 of file eim.cpp.

## ◆ findMode()

size_t plask::optical::effective::EffectiveIndex2D::findMode | ( | dcomplex | neff,
|  | Symmetry | symmetry = `SYMMETRY_DEFAULT`
| ) |  |

Find the mode around the specified effective index.

Parameters

  neff | initial effective index to search the mode around
  symmetry | mode symmetry

Returns
  index of found mode

Definition at line 169 of file eim.cpp.

## ◆ findModes()

std::vector< size_t > plask::optical::effective::EffectiveIndex2D::findModes | ( | dcomplex | neff1 = `0.`,
|  | dcomplex | neff2 = `0.`,
|  | Symmetry | symmetry = `SYMMETRY_DEFAULT`,
|  | size_t | resteps = `256`,
|  | size_t | imsteps = `64`,
|  | dcomplex | eps = `dcomplex(1e-6, 1e-9)`
| ) |  |

Find the modes within the specified range.

Parameters

  neff1 | one corner of the range to browse
  neff2 | another corner of the range to browse
  symmetry | mode symmetry
  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 found modes

Definition at line 179 of file eim.cpp.

## ◆ getClassDescription()

std::string plask::optical::effective::EffectiveIndex2D::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 188 of file eim.hpp.

## ◆ getClassName()

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

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 186 of file eim.hpp.

## ◆ getDeltaNeff()

dcomplex plask::optical::effective::EffectiveIndex2D::getDeltaNeff | ( | double | x | ) |
| inline

Return lateral effective index part at specified position.

Parameters

  horizontal | position

Definition at line 348 of file eim.hpp.

## ◆ getDeterminant()

dcomplex plask::optical::effective::EffectiveIndex2D::getDeterminant | ( | dcomplex | neff,
|  | Symmetry | sym = `SYMMETRY_DEFAULT`
| ) |  |
| inline

Compute modal determinant for the whole matrix.

Parameters

  neff | effective index to use
  symmetry | mode symmetry

Definition at line 313 of file eim.hpp.

## ◆ getEffectiveIndex()

dcomplex plask::optical::effective::EffectiveIndex2D::getEffectiveIndex | ( | size_t | n | ) |
| inline protected

Return mode effective index.

Parameters

  n | mode number

Definition at line 444 of file eim.hpp.

## ◆ getElectricField()

const LazyData< Vec< 3, dcomplex > > plask::optical::effective::EffectiveIndex2D::getElectricField | ( | std::size_t | num,
|  | 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 915 of file eim.cpp.

## ◆ getHeat()

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

Get generated/absorbed heat.

Definition at line 972 of file eim.cpp.

## ◆ getLightMagnitude()

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

Method computing the distribution of light intensity.

Definition at line 904 of file eim.cpp.

## ◆ getMirrorLosses()

double plask::optical::effective::EffectiveIndex2D::getMirrorLosses | ( | dcomplex | n | ) |
| inline protected

Compute mirror losses for specified effective mode.

Definition at line 371 of file eim.hpp.

## ◆ getPolarization()

Polarization plask::optical::effective::EffectiveIndex2D::getPolarization | ( |  | ) | const
| inline

Returns
  current polarization

Definition at line 208 of file eim.hpp.

## ◆ getRefractiveIndex()

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

Get used refractive index.

Definition at line 926 of file eim.cpp.

## ◆ getStripeX()

double plask::optical::effective::EffectiveIndex2D::getStripeX | ( |  | ) | const
| inline

Returns
  position of the main stripe

Definition at line 196 of file eim.hpp.

## ◆ getTotalAbsorption() [1/2]

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

Compute field weights.

Parameters

  mode | mode to consider

Definition at line 643 of file eim.cpp.

## ◆ getTotalAbsorption() [2/2]

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

Compute field weights.

Parameters

  num | mode number to consider

## ◆ getVertDeterminant()

dcomplex plask::optical::effective::EffectiveIndex2D::getVertDeterminant | ( | dcomplex | neff | ) |
| inline

Compute determinant for a single stripe.

Parameters

  neff | effective index to use

Definition at line 298 of file eim.hpp.

## ◆ getWavelength()

dcomplex plask::optical::effective::EffectiveIndex2D::getWavelength | ( |  | ) | const
| inline

Returns
  current wavelength

Definition at line 220 of file eim.hpp.

## ◆ insertMode()

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

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

Definition at line 427 of file eim.hpp.

## ◆ loadConfiguration()

void plask::optical::effective::EffectiveIndex2D::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 50 of file eim.cpp.

## ◆ nmodes()

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

Return number of found modes.

Definition at line 438 of file eim.hpp.

## ◆ normalizeFields()

void plask::optical::effective::EffectiveIndex2D::normalizeFields | ( | Mode & | mode,
|  | const std::vector< dcomplex, aligned_allocator< dcomplex > > & | kx
| ) |  |
| protected

Normalize horizontal fields, so multiplying LightMagnitude by power gives proper LightMagnitude in (V/m)²

Parameters

  kx | computed horizontal propagation constants

Definition at line 578 of file eim.cpp.

## ◆ onInitialize()

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

Initialize the solver.

Reimplemented from plask::Solver.

Definition at line 257 of file eim.cpp.

## ◆ onInputChange()

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

Slot called when gain has changed.

Definition at line 356 of file eim.hpp.

## ◆ onInvalidate()

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

Invalidate the data.

Reimplemented from plask::Solver.

Definition at line 290 of file eim.cpp.

## ◆ searchVNeffs()

std::vector< dcomplex > plask::optical::effective::EffectiveIndex2D::searchVNeffs | ( | plask::dcomplex | neff1 = `0.`,
|  | plask::dcomplex | neff2 = `0.`,
|  | size_t | resteps = `256`,
|  | size_t | imsteps = `64`,
|  | dcomplex | eps = `dcomplex(1e-6, 1e-9)`
| ) |  |

Look for the vertical effective indices within the specified range This method does not remember the determined modes!

Parameters

  neff1 | one corner of the range to browse
  neff2 | another corner of the range to browse
  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 determined effective indices

Definition at line 107 of file eim.cpp.

## ◆ setHorizontalMesh()

void plask::optical::effective::EffectiveIndex2D::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 245 of file eim.hpp.

## ◆ setMode()

size_t plask::optical::effective::EffectiveIndex2D::setMode | ( | dcomplex | neff,
|  | Symmetry | sym = `SYMMETRY_DEFAULT`
| ) |  |

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

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

Parameters

  neff | effective index of the mode
  symmetry | mode symmetry

Returns
  index of set mode

Definition at line 247 of file eim.cpp.

## ◆ setPolarization()

void plask::optical::effective::EffectiveIndex2D::setPolarization | ( | Polarization | polar | ) |
| inline

Set new polarization.

Parameters

  polar | new polarization

Definition at line 214 of file eim.hpp.

## ◆ setSimpleMesh()

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

Set the simple mesh based on the geometry bounding boxes.

Definition at line 234 of file eim.hpp.

## ◆ setStripeX()

void plask::optical::effective::EffectiveIndex2D::setStripeX | ( | double | x | ) |
| inline

Set position of the main stripe.

Parameters

  x | horizontal position of the main stripe

Definition at line 202 of file eim.hpp.

## ◆ setWavelength()

void plask::optical::effective::EffectiveIndex2D::setWavelength | ( | dcomplex | wavelength | ) |
| inline

Set new wavelength.

Parameters

  wavelength | new wavelength

Definition at line 226 of file eim.hpp.

## ◆ stageOne()

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

Fist stage of computations Perform vertical computations.

Definition at line 372 of file eim.cpp.

## ◆ updateCache()

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

Update refractive index cache.

Returns
  `true` if the chache has been changed

Definition at line 303 of file eim.cpp.

## Friends And Related Symbol Documentation

## ◆ RootDigger

friend struct RootDigger
| friend

Definition at line 109 of file eim.hpp.

## Member Data Documentation

## ◆ emission

Emission plask::optical::effective::EffectiveIndex2D::emission

Direction of laser emission.

Definition at line 138 of file eim.hpp.

## ◆ epsilons

std::vector<dcomplex, aligned_allocator<dcomplex> > plask::optical::effective::EffectiveIndex2D::epsilons
| protected

Computed effective epsilons for each stripe.

Definition at line 129 of file eim.hpp.

## ◆ inCarriersConcentration

ReceiverFor<CarriersConcentration, Geometry2DCartesian> plask::optical::effective::EffectiveIndex2D::inCarriersConcentration

Receiver for the carriers concentration.

Definition at line 161 of file eim.hpp.

## ◆ inGain

ReceiverFor<Gain, Geometry2DCartesian> plask::optical::effective::EffectiveIndex2D::inGain

Receiver for the gain.

Definition at line 158 of file eim.hpp.

## ◆ inTemperature

ReceiverFor<Temperature, Geometry2DCartesian> plask::optical::effective::EffectiveIndex2D::inTemperature

Receiver for the temperature.

Definition at line 155 of file eim.hpp.

## ◆ k0

dcomplex plask::optical::effective::EffectiveIndex2D::k0
| protected

Cache of the normalized frequency (1/µm)

Definition at line 365 of file eim.hpp.

## ◆ log_value

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

Logger for determinant.

Definition at line 117 of file eim.hpp.

## ◆ mirrors

plask::optional<std::pair<double, double> > plask::optical::effective::EffectiveIndex2D::mirrors

Mirror reflectivities.

Definition at line 143 of file eim.hpp.

## ◆ modes

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

Computed modes.

Definition at line 152 of file eim.hpp.

## ◆ need_gain

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

Do we need to have gain.

Definition at line 368 of file eim.hpp.

## ◆ nrCache

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

Cached refractive indices.

Definition at line 120 of file eim.hpp.

## ◆ outHeat

ProviderFor<Heat,Geometry2DCartesian>::Delegate plask::optical::effective::EffectiveIndex2D::outHeat

Provider of the heat absorbed/generated by the light.

Definition at line 176 of file eim.hpp.

## ◆ outLightE

ProviderFor<ModeLightE,Geometry2DCartesian>::Delegate plask::optical::effective::EffectiveIndex2D::outLightE

Provider of optical field.

Definition at line 170 of file eim.hpp.

## ◆ outLightMagnitude

ProviderFor<ModeLightMagnitude,Geometry2DCartesian>::Delegate plask::optical::effective::EffectiveIndex2D::outLightMagnitude

Provider of optical field.

Definition at line 167 of file eim.hpp.

## ◆ outNeff

ProviderFor<ModeEffectiveIndex>::Delegate plask::optical::effective::EffectiveIndex2D::outNeff

Provider for computed effective index.

Definition at line 164 of file eim.hpp.

## ◆ outRefractiveIndex

ProviderFor<RefractiveIndex,Geometry2DCartesian>::Delegate plask::optical::effective::EffectiveIndex2D::outRefractiveIndex

Provider for refractive index.

Definition at line 173 of file eim.hpp.

## ◆ polarization

Polarization plask::optical::effective::EffectiveIndex2D::polarization
| protected

Chosen light polarization.

Definition at line 133 of file eim.hpp.

## ◆ recompute_neffs

bool plask::optical::effective::EffectiveIndex2D::recompute_neffs
| protected

Should stripe indices be recomputed.

Definition at line 135 of file eim.hpp.

## ◆ root

RootDigger::Params plask::optical::effective::EffectiveIndex2D::root

Parameters for main rootdigger.

Definition at line 146 of file eim.hpp.

## ◆ stripe_root

RootDigger::Params plask::optical::effective::EffectiveIndex2D::stripe_root

Parameters for sripe rootdigger.

Definition at line 149 of file eim.hpp.

## ◆ stripex

double plask::optical::effective::EffectiveIndex2D::stripex
| protected

Position of the main stripe.

Definition at line 131 of file eim.hpp.

## ◆ vneff

dcomplex plask::optical::effective::EffectiveIndex2D::vneff

Vertical effective index of the main stripe.

Definition at line 140 of file eim.hpp.

## ◆ xbegin

size_t plask::optical::effective::EffectiveIndex2D::xbegin
| protected

First element of horizontal mesh to consider.

Definition at line 111 of file eim.hpp.

## ◆ xend

size_t plask::optical::effective::EffectiveIndex2D::xend
| protected

Last element of horizontal mesh to consider.

Definition at line 112 of file eim.hpp.

## ◆ ybegin

size_t plask::optical::effective::EffectiveIndex2D::ybegin
| protected

First element of vertical mesh to consider.

Definition at line 113 of file eim.hpp.

## ◆ yend

size_t plask::optical::effective::EffectiveIndex2D::yend
| protected

Last element of vertical mesh to consider.

Definition at line 114 of file eim.hpp.

## ◆ yfields

std::vector<Field, aligned_allocator<Field> > plask::optical::effective::EffectiveIndex2D::yfields
| protected

Computed horizontal and vertical fields.

Definition at line 123 of file eim.hpp.

## ◆ yweights

std::vector<double, aligned_allocator<double> > plask::optical::effective::EffectiveIndex2D::yweights
| protected

Vertical field confinement weights.

Definition at line 126 of file eim.hpp.

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

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