# EME Mode Specification

Mode specification for EME cells (EMEModeSpec). It determines the set of optical modes computed in each cell and used in the EME propagation step. Every grid type contains at least one mode specification: the Uniform Grid has a single one shared by all cells, while the Explicit Grid and the Composite Grid have one per cell or subgrid.

# Number of Modes

num_modes: Number of modes solved in each EME cell. Using more modes captures more of the coupling between cells, but the memory used at cell interfaces grows quadratically with this value and with the number of wavelengths, and the runtime grows steeply with the number of propagated modes. Reliable results should be independent of the number of modes used; see the Mode Count Sweep for convergence testing. The Keep Modes setting can be used to reduce the number of propagated modes without reducing the solved basis used for interface testing.

Type: integer

  • Unit: unitless
  • Constraint: between 1 and 100
  • Default: 4

# Target Effective Index

target_neff: Guess for the effective index of the modes. The solver computes the modes closest to this value.

Type: floating-point number

  • Unit: unitless
  • Constraint: greater than 0
  • Default: None

The following settings are available under See more.

# Precision

precision: Precision used by the mode solver. The solver is faster and uses less memory under single precision, but is more accurate under double precision.

Options:

  • Auto: resolves the precision per EME cell — double where that cell's mode solve contains a good conductor, single otherwise.
  • Single
  • Double

Default: Double

# Track Mode Frequency

track_freq: Mode tracking based on mode similarity across frequencies. Can correspond to tracking based on the lowest, central, or highest frequency.

Options:

  • Lowest
  • Central
  • Highest

Default: Central

# Bend Radius

bend_radius: A curvature radius for simulation of waveguide bends. Can be negative, in which case the mode plane center has a smaller value than the curvature center along the tangential axis perpendicular to the bend axis. Leave empty for straight sections.

Type: floating-point number

  • Unit: m, μm (default), or nm
  • Default: None (straight)

# Bend Axis

bend_axis: Index into the two tangential axes defining the normal to the plane in which the bend lies. This must be provided if Bend Radius is not None. For example, for a ring in the global xy-plane, and a mode plane in either the xz or the yz plane, the bend axis is always 1 (the global z axis).

Options:

  • None
  • 0
  • 1

Default: None

# Bend Medium Frame

bend_medium_frame: Interpretation of media in bent EME cells. Only shown when Bend Radius is set.

Options:

  • Global: the material axes are fixed in physical space, matching the global-frame convention used in FDTD. Use for chip-fixed anisotropy.
  • Co-rotating: the material profile bends with the local waveguide cross-section, as in a bent fiber or a custom profile defined on straight EME coordinates.

Default: Global

NOTE

with Global, orientation-sensitive anisotropic bends may need multiple cells instead of repetitions or a length sweep; check convergence with respect to the number of EME cells.

# Number of PML Layers

num_pml: Number of standard PML layers to add in the two tangential axes. EME simulations terminate the mode plane with PEC boundaries; PML layers can be added here to absorb radiation leaving the waveguide.

Type: integer

  • Unit: unitless
  • Constraint: greater than or equal to 0
  • Default: (0, 0)

# Increasing-Mode Filter Tolerance

increasing_mode_tolerance: Unitless tolerance used when filtering exponentially increasing modes from the EME propagation basis. A mode is dropped only if its effective index satisfies Im(n_eff) < -tolerance. Set a small positive value such as 1e-6 to keep weakly increasing modes caused by numerical noise; set it to 0 to apply the strict sign test.

Type: floating-point number

  • Unit: unitless
  • Constraint: greater than or equal to 0
  • Default: 1e-12

# Frequency Interpolation

interp_spec: Specification for computing modes at a reduced set of frequencies and interpolating to obtain results at all requested wavelengths. This can significantly reduce computational cost for broadband simulations where modes vary smoothly with frequency.

NOTE

Frequency interpolation requires Track Mode Frequency to be set, to ensure consistent mode ordering across frequencies.

# Sampling Specification

sampling_spec: Specification for the frequency sampling points at which the modes are actually computed.

Options:

  • None: no interpolation; the modes are computed at every simulation wavelength.
  • UniformSampling: uniformly spaced frequency sampling points.
  • ChebSampling: Chebyshev node frequency sampling points.
  • CustomSampling: a custom list of wavelength/frequency sampling points, entered directly.

Default: ChebSampling

# Number of Points

num_points: Number of frequency sampling points. Shown for UniformSampling and ChebSampling.

Type: integer

  • Unit: unitless
  • Constraint: greater than or equal to the minimum required by the Interpolation Method
  • Default: 5

# Interpolation Method

method: Method for interpolating the mode data between the computed frequencies. For complex-valued data, real and imaginary parts are interpolated independently.

Options:

  • linear: linear interpolation (faster; requires at least 2 points).
  • cubic: cubic spline interpolation (smoother, more accurate; requires at least 4 points).
  • poly: polynomial interpolation with the barycentric formula (optimal for Chebyshev nodes; requires at least 3 points).

Default: poly

# Reduce Data

reduce_data: If True, mode data is only recorded at the sampling points, and the data at the requested wavelengths is obtained through interpolation. This can significantly reduce storage and computational costs for broadband simulations. Does not apply if the number of sampling points is greater than the number of monitor frequencies.

Options:

  • False
  • True

Default: True

# Polarization Filtering

Defines how to filter and sort the computed modes within each frequency (sort_spec).

# Filter Key

filter_key: Quantity used to filter the modes. When a filter key is selected, the modes matching the filter condition are placed first in the mode list.

Options:

  • None
  • n_eff: real part of the effective index.
  • k_eff: imaginary part of the effective index.
  • TE_fraction: integrated intensity of the E-field component parallel to the first plane axis, normalized to the total in-plane E-field intensity.
  • TM_fraction: same as above, using the E-field component parallel to the second plane axis.
  • wg_TE_fraction
  • wg_TM_fraction
  • mode_area
  • fill_fraction_box: fraction of the mode intensity inside a user-defined bounding box. A box editor is shown when this option is selected.

Default: None

The following fields are shown when a filter key is selected.

# Filter Reference

filter_reference: Reference value against which the filter key is compared.

Default: 0

# Filter Order

filter_order: Whether modes pass the filter when the filter key is over or under the reference value.

Options:

  • over
  • under

Default: over

# Sort Key

sort_key: Quantity used to sort the modes. Accepts the same options as the filter key, except None.

Default: n_eff

# Sort Reference

sort_reference: Optional reference value for sorting; when set, modes are ordered by their distance to this value.

Default: None

# Sort Order

sort_order: Ordering direction applied to the sort key.

Options:

  • None
  • ascending
  • descending

Default: None

# Keep Modes

keep_modes: Which modes to keep after filtering and sorting.

Options:

  • All: keep all computed modes.
  • Filtered: keep only the modes that pass the filter.
  • Count: keep a fixed number of modes (an additional count field is shown).

Default: All