Numerical modelling

We develop, maintain, and optimize our leading nonlinear propagation code for optical pulses: Luna.jl.

Luna.jl is a flexible platform for the simulation of nonlinear optical dynamics—both in waveguides (such as optical fibres) and free-space geometries—using the unidirectional pulse propagation equation (UPPE) and its approximate forms, such as the commonly used generalised nonlinear Schrödinger equation (GNLSE). Some of the key features of Luna:

  • A variety of propagation geometries treated in a unified way:
    • Single-mode (mode-averaged) propagation in waveguides
    • Multi-mode propagation in waveguides with arbitrary (including non-symmetric) mode-shapes, full polarisation resolution, and intermodal coupling for arbitrary nonlinear polarisation terms
    • Waveguides with arbitrarily varying material properties and cross-sections (e.g. tapered fibres)
    • Free-space propagation with radial symmetry
    • Full (3+1)-dimensional free-space propagation
  • Both field-resolved and envelope propagation equations
  • A range of linear and nonlinear optical effects:
    • Modal dispersion and loss in waveguides
    • Optical Kerr effect (third-order nonlinearity)
    • Raman scattering in molecular gases or glasses
    • Strong-field photoionisation and plasma dynamics
  • A built-in interface for the running and processing of multi-dimensional parameter scans in serial or parallel
  • A standard library of plotting and processing functions, including calculation of spectrograms and beam properties

Luna is designed to be extensible: adding e.g. a new type of waveguide or a new nonlinear effect is straightforward, even without editing the main source code.

Luna was originally developed for modelling ultrafast pulse propagation in gas-filled hollow capillary fibres and hollow-core photonic crystal fibres. Therefore, such simulations have particularly good support. It is also excellent for modelling propagation in solid-core fibres.

For many more details, and to access the code, please visit Luna.jl.

For interesting scientific problems we are often happy to help you use our modelling code, add new required features, and collaborate on publications. In other circumstances you could make use of our consulting services.