# PLaSK User Manual

#### Page Contents

- BesselCyl

# BesselCyl

<optical solver="BesselCyl">

  Corresponding Python class: `optical.modal.BesselCyl`.

  Vectorial optical solver based on the Bessel expansion reflection transfer method.

  Attributes:

    - name (`required`) – Solver name.

  Contents:
    <geometry>

      Geometry for use by this solver.

      Attributes:

        - ref (`required`) – Name of a Cylindrical geometry defined in the `<geometry>` section.

    <mesh>

      Optional Ordered mesh used by this solver.

      Attributes:

        - ref (`required`) – Name of a Ordered mesh defined in the `<grids>` section.

    <expansion>

      Details on Bessel expansion used in computations

      Attributes:

        - lam0 – This is a wavelength at which refractive index is retrieved from the structure. If this parameter is None, material parameters are computed each time, the wavelength changes even slightly (this is most accurate, but can be very inefficient. (float)

        - update-gain – If this attribute is set to ‘yes’, material parameters are always recomputed for layers with gain or permittivity provided by inEpsilon. This allows to set ‘lam0’ for better efficiency and still consider slight changes of wavelength, where it matters the most. (bool, default is `yes`)

        - domain – Computational domain. If set to finite, the field is expanded in Fourier-Bessel series over a finite domain (geometry + PMLs). For infinite domain, the field is represented by its Hankel transform. (`finite` or `infinite`, default is `infinite`)

        - size – Expansion size. (int, default 12)

        - group-layers – Should similar layers be grouped for better performance. (bool, default is `yes`)

        - temp-diff – Maximum temperature difference between the layers in one group. If a temperature in a single layer varies vertically more than this value, the layer is split into two and put into separate groups. If this is empty, temperature gradient is ignored in layers grouping. (float (K))

        - temp-dist – Approximate lateral distance of the points in which the temperature is probed to decide about the temperature difference in one layer. (float (µm), default 0.5 µm)

        - temp-layer – Minimum thickness of sublayers resulting from temperature-gradient division. (float (µm), default 0.05 µm)

        - integrals-error – Maximum error for Bessel functions integrals. (float, default 1e-06)

        - integrals-points – Maximum number of points each element is sampled for computing Bessel functions integrals. (int, default 1000)

        - k-method – Method of selecting wavevectors for numerical Hankel transform in infinite domain. (`uniform`, `nonuniform`, `laguerre`, or `manual`, default is `nonuniform`)

        - k-max – Maximum wavevector used in infinite domain relative to the wavelength. (float, default 5)

        - k-scale – Scale factor for wavevectors used in infinite domain. (float, default 1)

        - k-list – A list of wavevectors ranges. If no weights are given, the actual wavevectors used in the computations are the avrages of each two adjacent values specified here and the integration weights are the sizes of each interval. (list of floats)

        - k-weights – Weights for manual wavevectors. (list of floats)

        - rule – Expansion rule for coefficients matrix. Can be direct or inverse. Inverse rule is proven to provide better convergence and should be used in almost every case. (`direct`, `combined1`, `combined2`, or `old`, default is `direct`)

    <mode>

      Mode properties.

      Attributes:

        - lam – Light wavelength. For finding modes this parameter is ignored. However, it is important for reflection and transmission computation. (float (nm))

        - emission – Direction of the useful light emission. Necessary for the over-threshold model to correctly compute the output power. In this solver only top and bottom emission is possible. (`undefined`, `top`, or `bottom`, default is `undefined`)

    <interface>

      Matching interface position in the stack.

      Attributes:

        - position – Interface will be located as close as possible to the vertical coordinate specified in this attribute. (float (µm))

        - object – Name of the geometry object below which the interface is located. (geometry object)

        - path – Optional path name, specifying particular instance of the object given in the object attribute. (geometry path)

    <transfer>

      Vertical field transfer settings.

      Attributes:

        - method – Layers transfer algorithm. Can be either reflection transfer, admittance/impedance transfer or automatic, in which case the reflection computations will use reflection transfer and eigenmode search is done with admittance transfer. Reflection transfer can have optional suffix `-admittance` (default) or `-impedance`, in which case the admittance/impedance matching is done at interface (for eigenmode search). You should prefer admittance if electric field is expected to have significant horizontal components (particularly at the interface) i.e. for TE-like modes and impedance for TM-like modes. (`auto`, `admittance`, `impedance`, `reflection`, `reflection-impedance`, or `reflection-admittance`, default is `auto`)

        - determinant – This attribute specified what is returned by the `get_determinant` method. Regardless of the determinant type, its value must be zero for any mode. Depending on the determinant type value, the computed value is either the characteristic matrix eigenvalue with the smallest magniture or the full determinant of this matrix. (`eigenvalue`, `full`, or `eigen`, default is `eigenvalue`)

    <vpml>

      Vertical absorbing perfectly matched layer boundary conditions parameters.

      Attributes:

        - factor – PML scaling factor. (complex, default is `(1-2j)`)

        - dist – PML distance from the structure. (float (µm), default 10.0 µm)

        - size – PML size. (float (µm), default 2.0 µm)

    <root>

      Parameters of the global root-finding algorithm.

      Attributes:

        - method – Root finding algorithm (Muller’s method or Broyden’s method). (`muller`, `broyden`, or `brent`, default is `muller`)

        - tolx – Maximum change of the argument which is allowed for convergent solution. (float, default 1e-06)

        - tolf-min – Minimum value of the determinant sufficient to assume convergence. (float, default 1e-07)

        - tolf-max – Maximum value of the determinant required to assume convergence. (float, default 1e-05)

        - maxstep – Maximum step in one iteration of root finding. Significant for the Broyden method only. (float, default 0.1)

        - maxiter – Maximum number of root finding iterations. (int, default 500)

        - alpha – Parameter ensuring sufficient decrease of determinant in each step (Broyden method only). (float, default 1e-07)

        - lambda – Minimum decrease ratio of one step (Broyden method only). (float, default 1e-08)

        - initial-range – Initial range size (Muller method only). (complex, default 0.001)

    <pml>

      Side absorbing perfectly matched layer boundary conditions parameters.

      Attributes:

        - factor – PML scaling factor. (complex, default 1.0)

        - shape – PML shape order (0 → flat, 1 → linearly increasing, 2 → quadratic, etc.). (float, default 1)

        - dist – PML distance from the structure. (float (µm), default 20.0 µm)

        - size – PML size. (float (µm), default 0.0 µm)