Skip to content

JohnNehls/vecsel-femtosecond-pulse-formation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VECSEL Femtosecond Pulse Formation

A Python simulation of pulse formation in a mode-locked V-cavity VECSEL (vertical-external-cavity surface-emitting laser).

The model reproduces the findings of

Sieber, Mangold, Golling, Tilma, Südmeyer, Keller, "Experimentally verified pulse formation model for high-power femtosecond VECSELs," Applied Physics B 113 (2013). https://doi.org/10.1007/s00340-013-5449-7

The RK4 core is JIT-compiled with Numba.

Physics

The complex field envelope is propagated round trip by round trip through

output coupler  →  GDD  →  gain (SESAM-arm pass)  →
SESAM          →  gain (output-arm pass)         →  residual losses

Two gain passes per round trip model the V-cavity. The gain and SESAM ground-state variables are carried between pulses by projecting their exponential recovery analytically over the dark inter-pulse interval, so only the ~T window around the pulse is integrated numerically.

Units throughout: nm (wavelength), fs (time), nJ (energy), MW (power).

Install

pip install -r requirements.txt

or, as an editable install:

pip install -e .

Requires Python ≥ 3.10, NumPy, SciPy, Matplotlib, and Numba.

Run

python run_stability.py            # start from noise, run until stable
python run_stability.py --seed     # seed with a sech pulse for faster convergence
python run_stability.py --help     # all options

The script plots the per-trip pulse trace, peak intracavity power, and pulse FWHM. Pass --no-plot for headless operation, --save out.npz to persist the trip-by-trip arrays, or --figs-dir DIR to save the plots as PNGs instead of showing them interactively.

Example output

The three figures below are produced by

python run_stability.py --seed --figs-dir docs/figures

and recreate Figure 4 of Sieber et al. 2013 (pulse build-up from a sech seed to a steady-state mode-locked pulse).

Pulse evolution

Peak power build-up

Pulse duration

Tests

pytest

Covers the parabolic filter, FWHM finder, RK4 closed-form match when P=0, GDD energy conservation and phase identity, pulse centering, grid sanity, and an end-to-end smoke test.

Layout

vecsel/          simulation package
  constants.py     physical parameters from Sieber et al. 2013
  grid.py          time/frequency grid, spectral filter, initial pulse
  ode.py           RK4 for the saturable-medium rate equation (Numba)
  gdd.py           intracavity group-delay dispersion
  gain.py          active-region gain element (one pass)
  sesam.py         two-timescale saturable absorber mirror
  utils.py         par, fwhm, center_pulse
run_stability.py stability-detecting run script
tests/           pytest suite

About

Python implementation of Sieber/Keller's VECSEL pulse formation model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages