August 26, 2010

Example 4: Similariton collision with SSF on GPU

from numpy import *
from scipy import *
import matplotlib.pyplot as plt
from numpy.fft import fftshift
import PyOFTK
 
from pycuda.tools import make_default_context
import pycuda.driver as cuda
 
cuda.init()
context = make_default_context()
 
lambdaZero = 1.03e-6
T = 60.0
nt = pow(2,12)
dt = T/float(nt)
t = linspace(-T/2, T/2, nt)
C = 2.99792458e-4
nz = 4000
dz = 0.01
betap = array([0.0 , 0.0 ,0.024])
gamma = 0.065
 
# Gain profil
omega = PyOFTK.wspace(T,nt)
vs = fftshift(omega/(2*pi))
wavelength = (1/((vs/C)+1/(lambdaZero)))*1e9
alpha = array([-0.2])
gainBandwidth = 50.0
alphaVec = PyOFTK.gainProfil(wavelength, alpha[0], gainBandwidth)
 
dureePulse = 0.5
puissanceCrete = 2.0
u_ini_g = PyOFTK.gaussianPulse(t[0:nt/2],dureePulse,-7.5,puissanceCrete,1,0)
u_ini_d = PyOFTK.gaussianPulse(t[nt/2:nt],dureePulse,7.5,puissanceCrete,1,0)
u_ini = r_[u_ini_g, u_ini_d]
 
[u_out, i_arch] = PyOFTK.ssfgpuFull(u_ini, dt, dz, nz, alpha, betap, gamma,
context, 500, 1e-5)
 
context.pop()
 
plt.imshow(i_arch, aspect='normal')
plt.show()