Calculations/Dipolar-Gas-Simulator/+VariationalSolver2D/@Calculator/calculateVDkWithCutoff.m

29 lines
1.1 KiB
Mathematica
Raw Normal View History

function VDk = calculateVDkWithCutoff(~, Transf, Params, ell)
% == Calculating the DDI potential in Fourier space with appropriate cutoff == %
% Interaction in K space
QX = Transf.KX*ell/sqrt(2);
QY = Transf.KY*ell/sqrt(2);
Qsq = QX.^2 + QY.^2;
absQ = sqrt(Qsq);
QDsq = QX.^2*cos(Params.phi)^2 + QY.^2*sin(Params.phi)^2;
% Bare interaction
2024-11-18 13:25:09 +01:00
Fpar = -1 + 3*sqrt(pi)*QDsq.*erfcx(absQ)./absQ; % Scaled complementary error function erfcx(x) = e^(x^2) * erfc(x)
Fperp = 2 - 3*sqrt(pi).*absQ.*erfcx(absQ);
Fpar(absQ == 0) = -1;
% Full DDI
VDk = (Fpar*sin(Params.theta)^2 + Fperp*cos(Params.theta)^2);
% Implementing a cutoff:
VDr = ifftn(VDk);
VDr = fftshift(VDr);
rcut = min(Transf.Xmax,Transf.Ymax);
R = sqrt(Transf.X.^2+Transf.Y.^2) < 0.9*rcut;
VDr = VDr.*double(R);
VDr = ifftshift(VDr);
VDk = fftn(VDr);
end