Option Matrix
This page collects the main configuration choices in one place. It is meant as a fast selection guide, not a replacement for the detailed user guide.
Grid topology
| Option |
Use when |
Notes |
periodic |
the simulated domain should wrap around naturally, or you want the cleanest match to FFT-based solvers |
best fit for spectral methods such as split-step-fft and etd-rk2 |
closed-interval |
you want a bounded box with explicit edges |
usually pairs most naturally with FDM-based solvers |
Boundary absorption
| Option |
Use when |
Notes |
no-absorption |
you want no artificial damping at the domain edge |
best only when edge reflections are physically acceptable |
mask |
you want a simple absorbing rim near the boundary |
practical default for many finite-domain runs; larger strength increases per-step damping and 0 disables it |
cap |
you want absorption represented as a complex absorbing potential |
useful when you want boundary damping folded into the effective potential picture; strength scales the imaginary absorbing potential |
Potential type
| Option |
Use when |
Notes |
zero |
you want a homogeneous system without external trapping |
simplest baseline for convergence and solver comparison |
double-well-supergaussian |
you want two localized wells with smooth but tunable walls |
exposes positions, amplitudes, widths, and super-Gaussian order |
Laser type
| Option |
Use when |
Notes |
uniform |
the pump should be spatially homogeneous |
simplest driven case |
continuous-gaussian |
you want a localized continuous spot |
common default for a single focused pump |
continuous-exp |
you want a localized pump with longer radial tails than a Gaussian |
matches the current implementation exactly |
continuous-exp-length |
you want an exponential pump whose sigma_space is the 1/e radial decay length |
preferred for new length-consistent configurations |
pulse-gaussian |
you want repeated pulsed excitation with Gaussian spot shape |
supports per-pulse strength ramping from P0 up to Pmax; choose power_definition carefully |
For pulsed Gaussian studies:
power_definition |
Use when |
Notes |
peak_amplitude |
reproducing legacy fixed-spot runs |
fixed P0 means fixed centre density, not fixed total dose |
pulse_energy |
comparing spot sizes or geometries |
fixed P0 means fixed integrated pulse dose over space and time |
Laser mode
| Option |
Use when |
Notes |
single |
one pump definition is enough |
configure directly on cfg.laser |
multiple |
you want several pumps in one run |
define them in an external YAML file |
Reservoir model
| Option |
Use when |
Notes |
single |
one effective active reservoir is enough for the physics you want to resolve |
cleanest baseline model |
double |
you need to separate inactive and active reservoir populations |
adds inter-reservoir transfer timescales and more stiffness risk |
quadratic-double |
you model pulsed nonresonant excitation with delayed inactive-to-active feeding |
uses kappa*nI^2 transfer and can retain pulse-train memory |
Solver method
| Option |
Use when |
Notes |
rk4-fdm |
you want the safest reference solver |
best first choice for validation and comparisons |
rk4-fdm-fused |
you want a faster FDM-style path without changing the basic method family |
good follow-up once rk4-fdm is validated |
rk4-cuda |
you want FDM GPU production runs on periodic or closed-interval grids |
FDM production/reference; stage-coupled quadratic-double |
ifrk-fft-cuda |
you want selectable-order spectral integration on a periodic grid |
solver.tableau selects RK4, DP5, DOP853, Verner 7, or Verner 9; stage-coupled reservoirs |
ifrk4-fft-cuda |
you need the historical spectral RK4 method name |
alias for ifrk-fft-cuda with RK4 coefficients |
split-step-fft |
second-order spectral evolution on a periodic grid |
Strang splitting with two reservoir half-steps; supports potentials and CAP; does not evaluate kinetic_relaxation_eta |
split-step-fft-cuda |
second-order spectral evolution on a periodic CUDA grid |
supports built-in reservoirs; does not evaluate kinetic_relaxation_eta |
etd-rk2 |
second-order exponential time differencing on a periodic grid |
periodic only; second-order midpoint reservoir coupling; does not evaluate kinetic_relaxation_eta |
ip-rk4 |
spectral-style RK4 reference |
requires periodic; stage-coupled reservoir; for GPU production use ifrk4-fft-cuda |
RK4 CUDA Laplacian
| Option |
Use when |
Notes |
five-point |
you want historical rk4-cuda behavior |
fastest and backward-compatible |
isotropic-9pt |
diagonal/axis artifacts suggest stencil anisotropy |
requires square cells and should still be grid-checked |
Initial seed mode
| Option |
Use when |
Notes |
legacy_positive_uniform |
you need to reproduce old runs |
biased positive-uniform complex seed |
complex_gaussian_zero_mean |
you want an unbiased stochastic seed |
no spectral cutoff |
filtered_complex_gaussian |
you want an explicit condensate-band seed cutoff |
requires init_k_cutoff_um; report/sweep the cutoff |
Backend choice
| Option |
Use when |
Notes |
use_gpu = False |
you want the most portable CPU baseline |
best default for correctness checks |
use_gpu = True |
CuPy is available and you want GPU execution |
validate against a CPU or FDM baseline first |
Practical default path
If you want a stable starting point, the shortest conservative path is:
grid_type = "periodic" or closed-interval, depending on the physical boundary you want
potential_type = "zero" unless you explicitly need trapping
laser_type = "continuous-gaussian"
reservoir_type = "single"
solver.method = "rk4-fdm"
use_gpu = False