pulsesuite.core.rungekutta

rungekutta.py – high‑performance 4th‑order Runge‑Kutta propagator for the (modified) nonlinear Schrödinger / UPPE equations.

  • No Fortran; entirely Python + Numba + pyFFTW.

  • Designed to interoperate with fastfft.py and the future gulley.py plasma module.

  • All expensive maths are JIT‑compiled; only plan creation and dataclass bookkeeping run in the CPython interpreter.

Classes

Field

Spatial‑temporal grid and associated cached arrays.

Medium

RKFlags

RK4Integrator

Ease‑of‑use wrapper that keeps medium/flags constant.

Functions

rhs(Exy, field, medium, flags)

rk4_step(field, medium, dz, flags[, sub_steps])

Advance field.Exy by dz in‑place using RK4.

Module Contents

class pulsesuite.core.rungekutta.Field

Spatial‑temporal grid and associated cached arrays.

Exy: numpy.ndarray
dx: float
dy: float
dt: float
lambda0: float
t_arr: numpy.ndarray
w_arr: numpy.ndarray
__post_init__()
w0() float
intensity() numpy.ndarray
class pulsesuite.core.rungekutta.Medium
n0: float
n2: float
n4i: float = 0.0
tc: float = 1.2e-15
sigma: float = 5e-20
rho_max: float = 6e+28
class pulsesuite.core.rungekutta.RKFlags
kerr: bool = True
kerr4: bool = False
raman: bool = True
shock: bool = True
photo: bool = False
drude_0: bool = False
gulley_t: bool = False
pulsesuite.core.rungekutta.rhs(Exy: numpy.ndarray, field: Field, medium: Medium, flags: RKFlags)
pulsesuite.core.rungekutta.rk4_step(field: Field, medium: Medium, dz: float, flags: RKFlags, sub_steps: int | None = None)

Advance field.Exy by dz in‑place using RK4.

class pulsesuite.core.rungekutta.RK4Integrator(field: Field, medium: Medium, dz: float, flags: RKFlags)

Ease‑of‑use wrapper that keeps medium/flags constant.

field
medium
dz
flags
step(n: int = 1)
run(z_max: float)