July 19, 2009

Example 3: Wave breaking in normal dispersion optical fiber

This example show the wave breaking effect occuring in a normal optical fiber.

from numpy import *
import scipy.fftpack as fftpack
import matplotlib.pyplot as plt
import PyOFTK
 
T = 60.0
nt = pow(2,14)
dt = T/nt
t = linspace(-T/2, T/2, nt)
dz = 0.01
nz = 1000
 
C = 2.99792458e-4
lambdaZero = 1.027e-6
 
betap = array([0, 0, 0.0268742])
alpha = 0.0
u_ini_x = PyOFTK.gaussianPulse(t, 2.0, 0.0, 500, 1.0, 0.0)
u_out_x = PyOFTK.ssf(u_ini_x, dt, dz, nz, alpha, betap, 0.0065, 500, 1e-5)
 
[wavelength_in, spectre_in] = PyOFTK.pulseSpectrum(t, u_ini_x, lambdaZero)
[wavelength_out, spectre_out] = PyOFTK.pulseSpectrum(t, u_out_x, lambdaZero)
 
nu_inst_out = PyOFTK.nuInst(u_out_x)
nu_inst_ini = PyOFTK.nuInst(u_ini_x)
 
# Graph
plt.figure(figsize=(15,10))
ax1 = plt.subplot(221)
plt.plot(t, pow(abs(u_ini_x),2), color="black", linestyle='--')
plt.title("Profile temporel (z = 0)")
plt.ylabel("$|a(z,t)|^2$")
plt.xlabel("$t/t_0$")
plt.grid(True)
ax2 = plt.twinx()
plt.plot(t[0:nt-1], nu_inst_ini, color="black")
# ylabel("Glissement en frequence")
ax2.yaxis.tick_right()
plt.ylim([-0.2,0.2])
plt.xlim([-10,10])
plt.show()
 
ax3 = plt.subplot(222)
plt.plot(t, pow(abs(u_out_x),2), color="black", linestyle='--')
# ylabel("$|a(z,t)|^2$")
plt.xlabel("$t/t_0$")
plt.grid(True)
ax4 = plt.twinx()
plt.plot(t[0:nt-1], nu_inst_out, color="black")
plt.ylabel("Glissement en frequence")
ax4.yaxis.tick_right()
plt.ylim([-0.2,0.2])
plt.xlim([-10,10])
plt.show()
 
ax5 = plt.subplot(223)
plt.plot(wavelength_in, spectre_in, color="black")
plt.title("Spectre (z = 0)")
plt.xlabel("Longueur d'onde [nm]")
plt.xlim([1015, 1040])
plt.grid(True)
plt.show()
 
ax6 = plt.subplot(224)
plt.plot(wavelength_out, spectre_out, color="black")
plt.title("Spectre (z =" + '%.1f'%(dz*nz) + "m)")
plt.xlim([1015, 1040])
plt.xlabel("Longueur d'onde [nm]")
plt.grid(True)
plt.show()

wavebreaking