PLaSK library
Loading...
Searching...
No Matches
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< SpaceTgetGeometry () 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, ValTdataLog (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, ValTdataLog (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< Modemodes
 Computed modes.
 
ReceiverFor< Temperature, Geometry2DCartesianinTemperature
 Receiver for the temperature.
 
ReceiverFor< Gain, Geometry2DCartesianinGain
 Receiver for the gain.
 
ReceiverFor< CarriersConcentration, Geometry2DCartesianinCarriersConcentration
 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< doublegetLightMagnitude (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< doublegetHeat (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< SpaceTgeometry
 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

Direction of the possible emission.

Enumerator
FRONT 
BACK 

Definition at line 40 of file eim.hpp.

◆ Polarization

Mode polarization.

Enumerator
TE 
TM 

Definition at line 34 of file eim.hpp.

◆ 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 ( )
inlinevirtual

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
stripemain 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
xeffective index
saveif 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
xvertical effective index
NRrefractive indices
saveif 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
neffinitial effective index to search the mode around
symmetrymode 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
neff1one corner of the range to browse
neff2another corner of the range to browse
symmetrymode symmetry
restepsminimum number of steps to check function value on real contour
imstepsminimum number of steps to check function value on imaginary contour
epsapproximate 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
inlineoverridevirtual

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
inlineoverridevirtual

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
horizontalposition

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
neffeffective index to use
symmetrymode symmetry

Definition at line 313 of file eim.hpp.

◆ getEffectiveIndex()

dcomplex plask::optical::effective::EffectiveIndex2D::getEffectiveIndex ( size_t  n)
inlineprotected

Return mode effective index.

Parameters
nmode 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)
inlineprotected

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
modemode 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
nummode number to consider

◆ getVertDeterminant()

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

Compute determinant for a single stripe.

Parameters
neffeffective 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)
inlineprotected

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 
)
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.

Parameters
sourcesource of configuration
managermanager 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
inlineprotected

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
kxcomputed horizontal propagation constants

Definition at line 578 of file eim.cpp.

◆ onInitialize()

void plask::optical::effective::EffectiveIndex2D::onInitialize ( )
overrideprotectedvirtual

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   
)
inlineprotected

Slot called when gain has changed.

Definition at line 356 of file eim.hpp.

◆ onInvalidate()

void plask::optical::effective::EffectiveIndex2D::onInvalidate ( )
overrideprotectedvirtual

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
neff1one corner of the range to browse
neff2another corner of the range to browse
restepsminimum number of steps to check function value on real contour
imstepsminimum number of steps to check function value on imaginary contour
epsapproximate 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
meshxhorizontal 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
neffeffective index of the mode
symmetrymode 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
polarnew 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
xhorizontal 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
wavelengthnew 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

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: