On Sun, Apr 17, 2016 at 9:14 AM, Emeline Lépine
<emeline.lep...@gmail.com> wrote:
> Hi,
>
> According the index line 37 I have either "Bounds error" and "Inexact error"
> (line in red). What's the matter, is it the type ?

Where do you see it?

P.S. Also make sure you are not doing this in global scope for
performance reasons.

>
> Thanks !
>
> Emi
>
> #split step fourier method
> #16/03/2016
>
> using Gadfly
>
> ####################################################################
>
> cputime=0
> tic();
> ln=1;
> Po=.00064; #input power in watts
> L = 12 # lenght of the fiber
> Α=0;# fiber loss value in dB/km
> α =Α/4.343;#ref page %55 GP Agrawal
> γ=0.003; #fiber non linearity in /W/m
> to=125e-12;  #initial pulse width in second
> C= -2; # Input chirp parameter for first calculation
> b2=20e-27 # 2nd order disp. (s2/m)
> Ld=(to^2)/(abs(b2)); # dispersion length in meter
> Ao=sqrt(Po); # Amplitude
> i = complex(1, pi/2);
> start = 0.1;
> step = 0.1;
> stop = 1.5;
> nb_points = 14; # a recalculer à la main à chaque fois
> iim = linspace(start, stop, nb_points);
> ###################################################################
>
> τ= - 4096e-12:1e-12:4095e-12; #dt=t/to
> dt=1e-12;
> rel_error=1e-5;
> h=1000;#step size
>
> u=Ao*exp(-((1+im.*(-C))/2).*(τ/to).^2);
> plot(x=τ,y=abs(u),Geom.line,Guide.xlabel("Time"), Guide.ylabel("Amplitude"),
> Guide.title("Input pulse"));
>
> for k = 1:nb_points # the various fiber lengths can be varied and this
> vector can be changed
>     ii = iim[k];
>     l=maximum(size(u));
>     fwhm1=find(abs(u).>(maxabs(u)./2));
>     fwhm1=length(fwhm1);
>     dw = 1/1/dt*2*pi;
>     w = (-1*1/2:1:1/2-1)*dw;
>     u = fftshift(u);
>     w = fftshift(w);
>     spectrum = fft(fftshift(u)); #Pulse spectrum
>     for jj=h:h:10000
>       spectrum = spectrum.*exp(-α*(h/2) + i*b2/2*w.^2*(h/2));
>       f = ifft(spectrum);
>       f = f.*exp(i*γ*((abs(f).^2)*h));
>       spectrum = fft(f);
>       spectrum = spectrum.*exp(-α*(h/2)+i*b2*w.^2*(h/2));
>     end
>     f = ifft(spectrum);
>     op_pulse(ln)= abs(f);
>     fwmh = find((abs(f)).>(abs(maxabs(f)./2)));
>     fwmh = length(fwmh);
>     ratio = fwmh./fwhm1;
>     pbratio = ratio[k];
>     dd = atand((abs(imag(f)))/(abs(f)));
>     phadisp = dd[k];
> end
> toc;
> cputime = toc;
> plot(x=ln,y=pbratio,Geom.line,Guide.xlabel("Number of steps"),
> Guide.ylabel("Pulse Broadening ratio"));
> plot(x=ln,y=phadisp,Geom.line,Guide.xlabel("Distance travelled"),
> Guide.ylabel("Phase change"));
> draw(PDF("split_step_fourier_method.pdf", 6inch, 6inch), vstack(p1,p2,p3));
>
>
>

Reply via email to