Mode Solver API

ModeSolver

class prismo.modes.solver.ModeSolver(wavelength, x, y, epsilon)[source]

2D finite-difference eigenmode solver for waveguides.

Solves the vector wave equation to find guided modes: ∇ × ∇ × E = (ω/c)² ε E

Parameters:
  • wavelength (float) – Vacuum wavelength (m).

  • x (ndarray) – x-coordinates for the mode profile.

  • y (ndarray) – y-coordinates for the mode profile.

  • epsilon (ndarray) – Permittivity distribution (relative).

__init__(wavelength, x, y, epsilon)[source]
solve(num_modes=1, mode_type='TE', beta_guess=None)[source]

Solve for guided modes.

Parameters:
  • num_modes (int) – Number of modes to calculate.

  • mode_type (str) – Mode type: ‘TE’, ‘TM’, or ‘vector’ (full vectorial).

  • beta_guess (float, optional) – Initial guess for propagation constant.

Returns:

List of calculated modes.

Return type:

List[WaveguideMode]

get_mode(mode_number=0)[source]

Get a specific mode by index.

Parameters:

mode_number (int) – Mode index (0 = fundamental).

Returns:

The requested mode.

Return type:

WaveguideMode

WaveguideMode

class prismo.modes.solver.WaveguideMode(mode_number, neff, frequency, wavelength, Ex, Ey, Ez, Hx, Hy, Hz, x, y, power=1.0)[source]

Container for waveguide mode information.

mode_number

Mode index (0 for fundamental, 1 for first higher order, etc.).

Type:

int

neff

Effective refractive index.

Type:

complex

frequency

Frequency at which mode was calculated (Hz).

Type:

float

wavelength

Wavelength (m).

Type:

float

Ex, Ey, Ez

Electric field components.

Type:

ndarray

Hx, Hy, Hz

Magnetic field components.

Type:

ndarray

x, y

Coordinate arrays.

Type:

ndarray

power

Mode power (normalized).

Type:

float

mode_number: int
neff: complex
frequency: float
wavelength: float
Ex: ndarray
Ey: ndarray
Ez: ndarray
Hx: ndarray
Hy: ndarray
Hz: ndarray
x: ndarray
y: ndarray
power: float = 1.0
__init__(mode_number, neff, frequency, wavelength, Ex, Ey, Ez, Hx, Hy, Hz, x, y, power=1.0)