GPUE  v1.0
GPU Gross-Pitaevskii Equation numerical solver for Bose-Einstein condensates
quKineticSpec.m
Go to the documentation of this file.
1 function [varargout] = quKineticSpec(Psir,m,dx,q,avg,iii)
2 % QUKINETICSPEC Evalutes the quantum kinetic energy spectrum [PRA 89, 053631 (2014)]
3 % Built on work by Dr A. White, and extended by (Dr?) Lee James O'Riordan.
4 % Ek = quKineticSpec(Psir,m,dx,q,avg,iii),
5 % Psir N-dim wavefunction in r space with grid spacing dx and mass m
6 % q = include phase for quantum spectrum, 1=yes,0=no;
7 % avg = perform angled average. Likely always want this to be yes, 1
8 % iii output index for naming the figure files. Useful when looped with
9 % kinSpec script
10 
11 % Setup
12 %##############################################################################%
13 hbar=1.05457e-34;
14 rDim = size(Psir); xDim = rDim(1); yDim = rDim(2);
15 %##############################################################################%
16 % Build camp in K-space
17 dkx = 2*pi/(dx*xDim); dky = 2*pi/(dx*yDim);
18 
19 kx = [linspace(0,(xDim/2-1)*dkx,xDim/2) linspace(-xDim/2*dkx,-dkx,xDim/2)]';
20 ky = [linspace(0,(yDim/2-1)*dky,yDim/2) linspace(-yDim/2*dky,-dky,yDim/2)]';
21 
22 [kxm,kym] = meshgrid(kx,ky);
23 %##############################################################################%
24 %|k|
25 km_mag = sqrt(kxm.^2 + kym.^2);
26 k_mag = sqrt(kx.^2 + ky.^2);
27 kMax = max(max(k_mag));
28 
29 %##############################################################################%
30 Psik = fftn(Psir);
31 
32 %##############################################################################%
33 %##############################################################################%
34 % Velocity field calculation
35 %##############################################################################%
36 
37 phase = angle(Psir);
38 
39 np1=unwrap(phase,[],1);
40 np2=unwrap(phase,[],2);
41 
42 [velnp1x,velnp1y] = gradient(np1,dx,dx);
43 [velnp2x,velnp2y] = gradient(np2,dx,dx);
44 
45 v_y = (hbar/m)*(velnp1y);
46 v_x = (hbar/m)*(velnp2x);
47 %
48 
49 v_x(find(v_x==0)) = 1e-100;
50 v_y(find(v_y==0)) = 1e-100;
51 
52 u_x=exp(q*1i*angle(Psir)).*abs(Psir).*(v_x);
53 u_y=exp(q*1i*angle(Psir)).*abs(Psir).*(v_y);
54 
55 %figure(4);pcolor(abs(u_x.^2 + u_y.^2));shading interp;title('|U|');colorbar;axis square
56 
57 u_kx = fftn(u_x);
58 u_ky = fftn(u_y);
59 
60 kxmkym = kxm.*kym;
61 uc_kx=(kxm.^2.*u_kx + kxm.*kym.*u_ky)./(km_mag.^2+1e-100);
62 uc_ky=(kxm.*kym.*u_kx + kym.^2.*u_ky)./(km_mag.^2+1e-100);
63 
64 ui_kx = u_kx - uc_kx;
65 ui_ky = u_ky - uc_ky;
66 
67 uc_x = ifft2(uc_kx); uc_y = ifft2(uc_ky);
68 ui_x = ifft2(ui_kx); ui_y = ifft2(ui_ky);
69 
70 Ec = 0.5*abs(uc_x.^2 + uc_y.^2);
71 Ei = 0.5*abs(ui_x.^2 + ui_y.^2);
72 
73 dimSize = size(Psir);
74 xx = linspace(-(dimSize(1)/2)*dx,(dimSize(1)/2)*dx,dimSize(1));
75 figure;pcolor(xx,xx,log10(Ec));shading interp;colorbar;axis square; title(['Comp ',int2str(iii)])
77 set(gca,'DefaultTextInterpreter','Latex')
78 set(gca,'FontName','Latin Modern Roman','FontSize',24);
79 xlabel(' $x$ [m] ','Interpreter','latex')
80 ylabel(' $y$ [m] ','Interpreter','latex')
81 
82 print('-dpng','-r300',['./Comp_CBAR_',int2str(iii),'.png']);
84 print('-dpng','-r300',['./Comp_',int2str(iii),'.png']);
85 
86 figure;pcolor(xx,xx,log10(Ei));shading interp;;colorbar;axis square;title(['Incomp ',int2str(iii)])
87 set(gca,'TickLabelInterpreter', 'latex');
88 set(gca,'DefaultTextInterpreter','Latex')
89 set(gca,'FontName','Latin Modern Roman','FontSize',24);
90 xlabel(' $x$ [m] ','Interpreter','latex')
91 ylabel(' $y$ [m] ','Interpreter','latex')
92 
93 print('-dpng','-r300',['./Incomp_CBAR_',int2str(iii),'.png']);
95 print('-dpng','-r300',['./Incomp_',int2str(iii),'.png']);
96 
97 %figure;
98 [N1,C]=hist(abs(Psir.^2));drawnow;
99 hl = hbar/sqrt(m*2*(C(1))*1e6*(4*pi*hbar*hbar*4.67e-9/m)*sqrt(m*(100)/(2*pi*hbar)));
100 
101 div=1;
102 ii=1;
103 for kk=1:length(k_mag)/2-1
104  indX=find( k_mag(kk)<=km_mag & k_mag(kk+1) > km_mag);
105  if avg==1
106  div=length(indX);
107  end
108  ekc(ii) = (m*k_mag(kk)/(2)).*(sum(abs(sqrt(uc_kx(indX).^2 + uc_ky(indX).^2)).^2))./div;
109  eki(ii) = (m*k_mag(kk)/(2)).*(sum(abs(sqrt(ui_kx(indX).^2 + ui_ky(indX).^2)).^2))./div;
110  ii=ii+1;
111 end
112 figure;
113 loglog(k_mag(1:(xDim/2-1)),ekc,k_mag(1:(xDim/2-1)),eki,'LineWidth',2);%axis([1e4 1e7 5e-18 1e-10]);
114 %title('EK');%axis([1e4 1.2e7 1e-18 1e-6]);
115 legend({'$E^c(k)$','$E^i(k)$'},'FontSize',20,'FontWeight','bold','Interpreter','latex');
116 set(gca,'TickLabelInterpreter', 'latex');
117 set(gca,'DefaultTextInterpreter','Latex')
118 set(gca,'FontName','Latin Modern Roman','FontSize',24);
119 xlabel(' $k$ [m$^{-1}$] ','Interpreter','latex')
120 ylabel(' $E(k)$ [a.u.] ','Interpreter','latex')
121 print('-dpng','-r300',['./EK_',int2str(iii),'.png']);
122 title(['Spectra ',int2str(iii)]);
123 
125 %vline(2*pi/hl,'r','Healing');
126 %figure(4);
127 %loglog(k_mag(1:511),eki,'LineWidth',2);axis square;
128 %title('eki');
129 
130 
131 %ii=1;
132 %for kk=1:length(k_mag)/2-1
133 % indX=find( k_mag(kk)<=km_mag & k_mag(kk+1) > km_mag);
134 % Ek(ii) = (hbar^2*k_mag(kk)^3/(2*m))*sum(abs(Psik(indX)).^2)./length(indX);
135 % ii=ii+1;
136 %end
137 %figure(5);
138 %loglog(k_mag(1:511),Ek);axis square;%axis([sqrt(2*dkx.^2) 2*pi/dx 1e-30 1e-5])
139 %title('Ek');
140 end
end if(length(DT.vertexAttachments{ii})==5) if plotit plot(x(ii)
Latin Modern Roman
Definition: quKineticSpec.m:78
loglog(k_mag(1:(xDim/2-1)), ekc, k_mag(1:(xDim/2-1)), eki, 'LineWidth', 2)
title('|U|')
xx
Definition: quKineticSpec.m:74
end ekc(ii)
Latin Modern xlabel(' $x$ [m] ', 'Interpreter', 'latex') ylabel(' $y$ [m] '
tuple dx
Definition: en.py:59
pcolor(abs(u_x.^ 2+u_y.^ 2))
uc_kx
Definition: quKineticSpec.m:61
drawnow
Definition: quKineticSpec.m:98
hl
Definition: quKineticSpec.m:99
ylabel(' $y$(m)', 'Interpreter', 'latex') % Defect marker size MarkerSize
% % iii output index for naming the figure files Useful when looped with % kinSpec script % Setup % hbar
Definition: quKineticSpec.m:13
and extended by(Dr?) Lee James O 'Riordan. % Ek
colorbar off
Definition: quKineticSpec.m:83
h LineWidth
Ei
Definition: quKineticSpec.m:71
latex
Definition: quKineticSpec.m:76
A
Definition: GPE_2d.m:67
varargout
Latin Modern FontSize
Definition: quKineticSpec.m:78
colorbar
Definition: quKineticSpec.m:55
hold on q
Definition: velField.m:38
ui_ky
Definition: quKineticSpec.m:65
TickLabelInterpreter
Definition: quKineticSpec.m:76
% Used for determining interaction strength of system % % Constants required for simulation m
Definition: GPE_2d.m:13
figure
Definition: quKineticSpec.m:75
end if sqrt(sum([x(ii), y(ii)].^ 2))< radius %% ignore edges if(length(DT.vertexAttachments
Latin Modern Interpreter
Definition: quKineticSpec.m:80
xDim
Definition: quKineticSpec.m:14
tic for a
Definition: GPE_2d.m:90
% vline(2 *pi/hl, 'r', 'Healing')
ui_kx
Definition: quKineticSpec.m:64
uc_ky
Definition: quKineticSpec.m:62
C
Definition: GPE_2d.m:69
shading interp
Definition: quKineticSpec.m:55
for kk
ky
Definition: quKineticSpec.m:20
div
U
Definition: GPE_2d.m:28
k_mag
Definition: quKineticSpec.m:26
% Ek(ii)
% % k km_mag
Definition: quKineticSpec.m:25
% axis([1e4 1e7 5e-18 1e-10])
% Psik
Definition: quKineticSpec.m:30
Ec
Definition: quKineticSpec.m:70
ii
Latin Modern latex print('-dpng','-r300', ['./Comp_CBAR_', int2str(iii),'.png'])
hold on
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % phase singularity for vortex creation annihilation for iii
Definition: GPE_2d.m:37
end k
dx *xDim pi()
legend({' $E^ c(k)$',' $E^ i(k)$'}, 'FontSize', 20, 'FontWeight', 'bold', 'Interpreter', 'latex')
FontName
Definition: quKineticSpec.m:78
% avg
Definition: quKineticSpec.m:7
axis square
Definition: quKineticSpec.m:75
eki(ii)
length
Definition: vort.py:75