RP Photonics logo
RP Photonics
Modeling & Design Software
Technical consulting services on lasers, nonlinear optics, fiber optics etc.
Profit from the knowledge and experience of a top expert!
Powerful simulation and design software.
Make computer models in order to get a comprehensive understanding of your devices!
Success comes from understanding – be it in science or in industrial development.
The famous Encyclopedia of Laser Physics and Technology – available online for free!
The ideal place for finding suppliers for many photonics products.
Advertisers: Make sure to have your products displayed here!
powerful tools for efficient laser development and laser science
This page gives you an overview on our software products.
RP Fiber Calculator is a convenient tool for calculations on optical fibers.
RP Fiber Power is an extremely flexible tool for designing and optimizing fiber devices.
RP Resonator is a particularly flexible tool for laser resonator design.
RP ProPulse can simulate the pulse evolution e.g. in mode-locked lasers and sync-pumped OPOs.
RP Coating is a particularly flexible design tool for dielectric multilayer systems.
RP Q-switch can simulate the power evolution in Q-switched lasers.
Most of our software products support a powerful script language, which gives you an extraordinary degree of flexibility.
Here you learn about software license conditions, updates and upgrades, etc.
Competent technical support is a key quality associated with software from RP Photonics.
RP Photonics has distributors in various countries.
The RP Photonics Software News keep you updated on our developments and give the users additional interesting hints.
Here you can make inquiries e.g. concerning technical details, prices and quotations.
en | de

RP ProPulse – Numerical Simulation of Pulse Propagation

Example Case: Adiabatic Soliton Compression

Here, we consider the nonlinear compression of pulses with the adiabatic soliton compression method. Soliton pulses are injected into a photonic crystal fiber where the chromatic dispersion decreases more and more along the length. Therefore, the soliton pulse duration also decreases. It is also taken into account that there is higher-order dispersion, and the fiber nonlinearity in the model takes into account self-steepening and stimulated Raman scattering.

resonator: ring
* FiberPiece [split = maxr(1,round(gamma_f(rt * dL) * dL * P_p() / phi_nl_max))]:
  GDD(l) = GVD_f(l,rt * dL) * dL,
  nlpol = gamma_f(rt * dL) * dL [f = f_R, h(t) = h(t), T = t_max_R, ss = 1]
resonator end

The fiber is split into small sections of length dL (1 cm). Formally, these are described as being in a resonator, so that subsequent fiber pieces correspond to subsequent resonator round-trips. The chromatic dispersion is made dependent on the position in the fiber by using a GVD function which depends both on the wavelength and the position z. That GVD function is obtained by linear interpolation between the properties of two different fibers. In an analogous fashion, the fiber nonlinearity can be made position-dependent. The following part of the script code demonstrates how easily such things can be implemented in RP ProPulse:

; General fiber parameters:
n2_f := 2.5e-20 { m^2 / W }
include "Raman h(t) for silica.inc"  { Raman response function of silica }
; Fiber 1:
n_f1 := 1.5
w_f1 := 1.4 um / 2
A_f1 := pi * w_f1^2
gamma_f1 := (2pi / lambda_ref) * n2_f / A_f1  { rad / (W * m) }
defarray D_f1 [600, 1600, 100]
readlist l, D_f1[l]:
   600, -120
   700, -40
   800, 24
   900, 60
  1000, 82
  1100, 92
  1200, 100
  1300, 105
  1400, 108
  1500, 110
  1600, 111
D_f1(l) := (if l<600e-9 then -120 else if l>1600e-9 then 111 else D_f1~~[l / nm]) * ps / (nm * km)
GVD_f1(l) := (-l^2 / (2 * pi * c)) * D_f1(l)
E_s1 := 2 * abs(GVD_f1(lambda_ref)) / (gamma_f1 * (tau0 / 1.76))
  { soliton energy for tau0 }
z_s1 := pi * (tau0 / 1.76)^2 / (2 * abs(GVD_f1(lambda_ref)))
; Fiber 2:
n_f2 := 1.5
w_f2 := 1.4 um / 2
A_f2 := pi * w_f2^2
gamma_f2 := (2pi / lambda_ref) * n2_f / A_f2  { rad / (W * m) }
defarray D_f2 [600, 1600, 100]
readlist l, D_f2[l]:
   600, -220
   700, -140
   800, -68
   900, -25
  1000, 3
  1100, 22
  1200, 35
  1300, 45
  1400, 53
  1500, 57
  1600, 60
D_f2(l) := (if l<600e-9 then -220 else if l>1600e-9 then 60 else D_f2~~[l / nm]) * ps / (nm * km)
GVD_f2(l) := (-l^2 / (2 * pi * c)) * D_f2(l)
; Combined fiber with adiabatic transition of parameters:
L := 2  { length in which the parameters of fiber 2 are reached }
D_f(l,z) := (1 - z / L) * D_f1(l) + (z / L) * D_f2(l)
GVD_f(l,z) := (1 - z / L) * GVD_f1(l) + (z / L) * GVD_f2(l)
gamma_f(z) := (1 - z / L) * gamma_f1 + (z / L) * gamma_f2

The following diagram shows how the pulse parameters evolve in the fiber. If the pulses could instantly adjust to the local fiber parameters, the pulse duration would decrease linearly along the fiber, as shown by the dotted curve. However, in reality the evolution is not totally adiabatic, so that the actual behavior is slightly different – particularly in the beginning, where the soliton period is relatively long (0.38 m). Furthermore, the effects of third-order dispersion and stimulated Raman scattering finally prevent the pulses from getting arbitrarily short. Raman scattering also causes a soliton self-frequency shift to longer wavelengths.

pulse parameters vs. propagation length

We can also inspect the final pulse with the interactive pulse display window, and recognize that its spectral shape has become distorted:

pulse after compression

The original pulses were spectrally centered at 1060 nm, and stimulated Raman scattering generates a substantial bump on the long-wavelength side.

(back to the list of example cases)