PLaSK library
Loading...
Searching...
No Matches
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< 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

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< Modemodes
 Computed modes.
 
ReceiverFor< Temperature, Geometry2DCylindricalinTemperature
 Receiver for the temperature.
 
ReceiverFor< Gain, Geometry2DCylindricalinGain
 Receiver for the gain.
 
ReceiverFor< CarriersConcentration, Geometry2DCylindricalinCarriersConcentration
 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< doublegetLightMagnitude (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< doublegetHeat (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< FieldZzfields
 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< 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 32 of file efm.hpp.

Member Enumeration Documentation

◆ 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

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

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
lambdainitial wavelength close to the solution
mnumber 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
lambda1one corner of the range to browse
lambda2another corner of the range to browse
mnumber of the LP_mn mode describing angular dependence
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 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
inlineoverridevirtual

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
inlineoverridevirtual

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
horizontalposition

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
lambdawavelength
mnumber 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
modemode 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
nummode 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 ( )
inlineprotected

Obtain main stripe.

Definition at line 547 of file efm.hpp.

◆ getModalLoss()

double plask::optical::effective::EffectiveFrequencyCyl::getModalLoss ( size_t  n)
inlineprotected

Return mode modal loss.

Parameters
nmode 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
horizontalposition

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

Definition at line 834 of file efm.cpp.

◆ getVertDeterminant()

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

Compute vectical modal determinant.

Parameters
vlambdavertical plane-wave wavelength

Definition at line 427 of file efm.hpp.

◆ getWavelength()

double plask::optical::effective::EffectiveFrequencyCyl::getWavelength ( size_t  n)
inlineprotected

Return mode wavelength.

Parameters
nmode number

Definition at line 588 of file efm.hpp.

◆ insertMode()

size_t plask::optical::effective::EffectiveFrequencyCyl::insertMode ( const Mode mode)
inlineprotected

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
modemode 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 
)
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 56 of file efm.cpp.

◆ nmodes()

size_t plask::optical::effective::EffectiveFrequencyCyl::nmodes ( ) const
inlineprotected

Return number of found modes.

Definition at line 582 of file efm.hpp.

◆ onInitialize()

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

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

Slot called when gain has changed.

Definition at line 218 of file efm.hpp.

◆ onInvalidate()

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

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
emisnew 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
meshxhorizontal 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
clambdacomplex 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
lambdawavelength of the mode
lossmodal loss (as returned by outLoss)
mnumber 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
rhorizontal 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

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: