clear all
close all
clc
% format long
%%
q1=1;
q2=500*q1;
q3=1;

c=2.998e8;

a=1;

Nr=301;
Nz=301;
Nt=301;

t=linspace(-100,100,Nt)*q1/c;
rho=linspace(-100,100,Nr)*q1;
z=linspace(-100,100,Nz)*q1;
[R,Z,T]=meshgrid(rho,z,t);

tau=Z-c*T;sigma=Z+c*T;
  s=R.^2./(q1+1i*tau)-1i*sigma;
  u=R.^2./(q1+1i*tau).^2-1;
  v=R.^2./(q1+1i*tau).^2+1;
  A=(a+1)*a*u.*(q1+1i*tau)-2*a*(q2+s);
  A=A./((q1+1i*tau).*(q2+s).^2);
  B=2*a*u.*(q1+1i*tau)-2*(q2+s);
  B=B./(q3*(q1+1i*tau).*(q2+s));
  f = 2*1i*R.*exp(-s/q3)./((q1+1i*tau).^2.*(q2+s).^a).*(A+B-u./q3^2);

% rE=real(f);
E0=f;
E=imag(f);

E=E/max(max(max(abs(E))));

figure
slice(R,Z,T*c,E,0,0,(-100:25:100)*q1),shading interp
xlabel('r'),ylabel('z'),zlabel('t*c'),box on,axis tight
% load Mymap;colormap(Mymap);set(gca,'Clim',[-1 1]);
load('MyColormaps','mycmap');colormap(mycmap);set(gca,'Clim',[-1 1]);colorbar
alpha(0.4)

% figure
% slice(R,Z,T*c,angle(E0),NaN,0,(-60:10:60)*q1),shading interp
% xlabel('r'),ylabel('z'),zlabel('t*c'),box on,axis tight
% % load Mymap;colormap(Mymap);set(gca,'Clim',[-1 1]);
% alpha(0.5)

% figure
% % slice(R,Z,T*c,real(E),NaN,0,(-80:20:80)*q1),shading interp
% slice(R,Z,T*c,real(E),NaN,NaN,0),shading interp
% % slice(R,Z,T*c,abs(E).^2,NaN,0,NaN),shading interp
% xlabel('r'),ylabel('z'),zlabel('t*c'),box on,axis tight
% % load Mymap;colormap(Mymap);set(gca,'Clim',[-1 1]);
% load('MyColormaps','mycmap');colormap(mycmap);set(gca,'Clim',[-1 1]);colorbar
% view(0,90)
% xlim([-17.5 17.5]);ylim([-17.5 17.5]);zlim([-17.5 17.5])

Erz=zeros(Nr,Nz);
for ir=1:Nr
    for iz=1:Nz
        Erz(ir,iz)=E(iz,ir,round(Nt/2));
    end
end
[Zrt,Rrt]=meshgrid(z,rho);
% figure;surf(Rrt,Zrt,abs(Erz).^2); shading interp; lighting phong; view(2); axis equal; axis tight; colorbar; colormap jet
% % figure;surf(Rrt,Trt*c,abs(Ert)); shading interp; lighting phong; view(2); axis equal; axis tight; colorbar; colormap jet
% xlim([-17.5 17.5]);ylim([-17.5 17.5]);

% time Fourier transform to frequency
Druation = t(end) -t(1); 
t_s=t(2)-t(1);
f_s = 1/t_s; %采样频率
f_x = 0:f_s/(Nt-1):f_s;  

Wf1=zeros(size(E));
for ri=1:Nr
    for zi=1:Nz
fEr=E(zi,ri,:);
y_f = fft(fEr); 
shift_f = fftshift(y_f);
Wf1(zi,ri,:)=shift_f;
    end
end

f=(f_x-f_s/2)/(c/q1);
[R1,Z1,F]=meshgrid(rho,z,f);

% r Fourier transform to f_r
Druation = rho(end) -rho(1); 
fr_s = 1/(rho(2)-rho(1)); %采样频率
fr_x = 0:fr_s/(Nr-1):fr_s;  

Wf2=zeros(size(E));
for ti=1:Nt
    for zi=1:Nz
fEr=Wf1(zi,:,ti);
y_f = fft(fEr); 
shift_f = fftshift(y_f);
Wf2(zi,:,ti)=shift_f;
    end
end

fr=(fr_x-fr_s/2)/(1/q1);
[Fr,Z2,F2]=meshgrid(fr,z,f);

% z Fourier transform to f_z
Druation = z(end) -z(1); 
fz_s = 1/(z(2)-z(1)); %采样频率
fz_x = 0:fz_s/(Nz-1):fz_s;  

Wf3=zeros(size(E));
for ti=1:Nt
    for ri=1:Nr
fEr=Wf2(:,ri,ti);
y_f = fft(fEr); 
shift_f = fftshift(y_f);
Wf3(:,ri,ti)=shift_f;
    end
end

Wf30=Wf3;

fz=(fz_x-fz_s/2)/(1/q1);
[Fr3,Fz,F3]=meshgrid(fr,fz,f);

figure
slice(Fr3,Fz,F3,abs(Wf3),NaN,0,f(1):(f(end)-f(1))/10:f(end)),shading interp
xlabel('f_r (q_1)'),ylabel('f_z (q_1)'),zlabel('f (c/q_1)'),box on,axis tight
colormap jet
alpha(0.5)

% Wf3(abs(F3)>0.4)=0;

for ti=1:Nt
    for zi=1:Nz
Wtz(ti,zi)=sum((abs(Wf3(zi,:,ti))).^2);
    end
end

[Fzp,Fp]=meshgrid(fz,f);
figure;
surf(Fzp,Fp,Wtz); shading interp; lighting phong; view(2); axis equal; axis tight;
load('myc','myc');colormap(myc)
