Folder renaming, restructuring.
This commit is contained in:
parent
cdb25d5395
commit
5ce08f83dd
@ -1,364 +0,0 @@
|
||||
%% Across range of a_s, n
|
||||
|
||||
% load('.\Results\ExtractingKRoton_Result_Below1000.mat')
|
||||
% load('.\Results\ExtractingKRoton_Result_Above1000.mat')
|
||||
load('.\Results\ExtractingKRoton_Result_Above10000.mat')
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
|
||||
% Create a tiled layout with tighter spacing
|
||||
figure(17)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1800 500])
|
||||
t = tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x2 grid
|
||||
|
||||
% First subplot
|
||||
nexttile; % Equivalent to subplot(2, 2, 1)
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
eps_dd_values = data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, eps_dd_values, '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$\epsilon_{dd}$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northeast', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Second subplot
|
||||
nexttile; % Equivalent to subplot(2, 2, 2)
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
n_values = data_struct(idx).n_values;
|
||||
plot(theta_values, n_values * 1E-15, '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$n (\times 10^{3} \mu m^{-2})$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northeast', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Third subplot
|
||||
nexttile; % Equivalent to subplot(2, 2, 3)
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
k_roton_values = data_struct(idx).k_roton_values;
|
||||
plot(theta_values, k_roton_values * 1E-6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_{roton} (\mu m^{-1})$','fontsize',16,'interpreter','latex');
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 10, 'Interpreter','latex')
|
||||
|
||||
% Adjust layout to minimize space
|
||||
t.TileSpacing = 'compact'; % Minimize space between tiles
|
||||
t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
% Convert to units relevant to experiment
|
||||
|
||||
% Create a tiled layout with tighter spacing
|
||||
figure(18)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1800 500])
|
||||
t = tiledlayout(1, 3, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x2 grid
|
||||
|
||||
% First subplot
|
||||
nexttile; % Equivalent to subplot(2, 2, 1)
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
eps_dd_values = data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, (1 ./ eps_dd_values) * (add / BohrRadius), '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$a_s (\times a_o)$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'southeast', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Second subplot
|
||||
nexttile; % Equivalent to subplot(2, 2, 2)
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
n_values = data_struct(idx).n_values;
|
||||
Lx = 10e-6;
|
||||
Ly = 10e-6;
|
||||
AtomNumber = n_values .* Lx * Ly;
|
||||
plot(theta_values, AtomNumber * 1e-5, '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('Atom number in a trap of area 100 $\mu m^2 (\times 10^{5})$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northeast', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Third subplot
|
||||
nexttile; % Equivalent to subplot(2, 2, 3)
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
lambda_roton_values = (2 * pi) ./ data_struct(idx).k_roton_values;
|
||||
plot(theta_values, lambda_roton_values * 1E6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$\lambda_{roton} (\mu m)$','fontsize',16,'interpreter','latex');
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 10, 'Interpreter','latex')
|
||||
|
||||
% Adjust layout to minimize space
|
||||
t.TileSpacing = 'compact'; % Minimize space between tiles
|
||||
t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
%% Fixed Density results
|
||||
|
||||
load('.\Results\ExtractingKRoton_Result_FixedDensity_phi0.mat')
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
|
||||
% Create a tiled layout with tighter spacing
|
||||
figure(19)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1200 500])
|
||||
t = tiledlayout(1, 2, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x2 grid
|
||||
|
||||
% First subplot
|
||||
nexttile;
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
eps_dd_values = data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, eps_dd_values, '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$\epsilon_{dd}$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northeast', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Second subplot
|
||||
nexttile;
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
k_roton_values = data_struct(idx).k_roton_values;
|
||||
plot(theta_values, k_roton_values * 1E-6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_{roton} (\mu m^{-1})$','fontsize',16,'interpreter','latex');
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 10, 'Interpreter','latex')
|
||||
|
||||
% Adjust layout to minimize space
|
||||
t.TileSpacing = 'compact'; % Minimize space between tiles
|
||||
t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
% Create a tiled layout with tighter spacing
|
||||
figure(20)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1200 500])
|
||||
t = tiledlayout(1, 2, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x2 grid
|
||||
|
||||
% First subplot
|
||||
nexttile;
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
eps_dd_values = data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, (1 ./ eps_dd_values) * (add / BohrRadius), '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$a_s (\times a_o)$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northwest', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Second subplot
|
||||
nexttile;
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
lambda_roton_values = (2 * pi) ./ data_struct(idx).k_roton_values;
|
||||
semilogy(theta_values, lambda_roton_values * 1E6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
% ylim([0 2])
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$\lambda_{roton} (\mu m)$','fontsize',16,'interpreter','latex');
|
||||
grid on
|
||||
legend('location', 'southeast','fontsize', 10, 'Interpreter','latex')
|
||||
|
||||
% Adjust layout to minimize space
|
||||
t.TileSpacing = 'compact'; % Minimize space between tiles
|
||||
t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
%% Fixed Density results - compare two orthogonal directions
|
||||
|
||||
data0 = load('.\Results\ExtractingKRoton_Result_FixedDensity_phi0.mat');
|
||||
data90 = load('.\Results\ExtractingKRoton_Result_FixedDensity_phi90.mat');
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
|
||||
% Create a tiled layout with tighter spacing
|
||||
figure(21)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1200 500])
|
||||
t = tiledlayout(1, 2, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x2 grid
|
||||
|
||||
idx = 4;
|
||||
|
||||
% First subplot
|
||||
nexttile;
|
||||
theta_values = data0.data_struct(idx).theta_values;
|
||||
eps_dd_values = data0.data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, eps_dd_values, '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data0.data_struct(idx).wz_value), ' Hz; $\phi = 0^\circ$']);
|
||||
hold on
|
||||
theta_values = data90.data_struct(idx).theta_values;
|
||||
eps_dd_values = data90.data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, eps_dd_values, '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data90.data_struct(idx).wz_value), ' Hz; $\phi = 90^\circ$']);
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$\epsilon_{dd}$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northeast', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Second subplot
|
||||
nexttile;
|
||||
theta_values = data0.data_struct(idx).theta_values;
|
||||
k_roton_values = data0.data_struct(idx).k_roton_values;
|
||||
plot(theta_values, k_roton_values * 1E-6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data0.data_struct(idx).wz_value), ' Hz; $\phi = 0^\circ$']);
|
||||
hold on
|
||||
theta_values = data90.data_struct(idx).theta_values;
|
||||
k_roton_values = data90.data_struct(idx).k_roton_values;
|
||||
plot(theta_values, k_roton_values * 1E-6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data90.data_struct(idx).wz_value), ' Hz; $\phi = 90^\circ$']);
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_{roton} (\mu m^{-1})$','fontsize',16,'interpreter','latex');
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 10, 'Interpreter','latex')
|
||||
|
||||
% Adjust layout to minimize space
|
||||
t.TileSpacing = 'compact'; % Minimize space between tiles
|
||||
t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
|
||||
% Create a tiled layout with tighter spacing
|
||||
figure(22)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1200 500])
|
||||
t = tiledlayout(1, 2, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x2 grid
|
||||
|
||||
% First subplot
|
||||
nexttile;
|
||||
theta_values = data0.data_struct(idx).theta_values;
|
||||
eps_dd_values = data0.data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, (1 ./ eps_dd_values) * (add / BohrRadius), '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data0.data_struct(idx).wz_value), ' Hz; $\phi = 0^\circ$']);
|
||||
hold on
|
||||
theta_values = data90.data_struct(idx).theta_values;
|
||||
eps_dd_values = data90.data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, (1 ./ eps_dd_values) * (add / BohrRadius), '-o', 'LineWidth', 2.0, 'DisplayName', ['$w_z = 2 \pi \times $', num2str(data90.data_struct(idx).wz_value), ' Hz; $\phi = 90^\circ$']);
|
||||
xlabel('$\theta$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
ylabel('$a_s (\times a_o)$', 'fontsize', 16, 'interpreter', 'latex');
|
||||
grid on
|
||||
legend('location', 'northwest', 'fontsize', 10, 'Interpreter', 'latex'); % Reduced font size
|
||||
|
||||
% Second subplot
|
||||
nexttile;
|
||||
theta_values = data0.data_struct(idx).theta_values;
|
||||
k_roton_values = data0.data_struct(idx).k_roton_values;
|
||||
lambda_roton_values = (2 * pi) ./ k_roton_values;
|
||||
semilogy(theta_values, lambda_roton_values * 1E6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data0.data_struct(idx).wz_value), ' Hz; $\phi = 0^\circ$']);
|
||||
hold on
|
||||
theta_values = data90.data_struct(idx).theta_values;
|
||||
k_roton_values = data90.data_struct(idx).k_roton_values;
|
||||
lambda_roton_values = (2 * pi) ./ k_roton_values;
|
||||
semilogy(theta_values, lambda_roton_values * 1E6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data90.data_struct(idx).wz_value), ' Hz; $\phi = 90^\circ$']);
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$\lambda_{roton} (\mu m)$','fontsize',16,'interpreter','latex');
|
||||
grid on
|
||||
legend('location', 'northwest','fontsize', 10, 'Interpreter','latex')
|
||||
|
||||
% Adjust layout to minimize space
|
||||
t.TileSpacing = 'compact'; % Minimize space between tiles
|
||||
t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
%%
|
||||
%{
|
||||
figure(13)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
eps_dd_values = data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, eps_dd_values, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$\epsilon_{dd}$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 16, 'Interpreter','latex')
|
||||
|
||||
figure(14)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
eps_dd_values = data_struct(idx).eps_dd_values;
|
||||
plot(theta_values, (1./eps_dd_values) * (add/BohrRadius), '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s (\times a_o)$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
legend('location', 'southeast','fontsize', 16, 'Interpreter','latex')
|
||||
|
||||
figure(15)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
n_values = data_struct(idx).n_values;
|
||||
plot(theta_values, n_values * 1E-15, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$n (\times 10^{3} \mu m^{-2})$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 16, 'Interpreter','latex')
|
||||
|
||||
figure(16)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
for idx = 1:length(data_struct)
|
||||
theta_values = data_struct(idx).theta_values;
|
||||
k_roton_values = data_struct(idx).k_roton_values;
|
||||
plot(theta_values, k_roton_values * 1E-6, '-o', LineWidth=2.0, DisplayName=['$w_z = 2 \pi \times $', num2str(data_struct(idx).wz_value), ' Hz']);
|
||||
hold on
|
||||
end
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_{roton} (\mu m^{-1})$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
legend('location', 'northeast','fontsize', 16, 'Interpreter','latex')
|
||||
%}
|
@ -1,251 +0,0 @@
|
||||
%% Physical constants
|
||||
PlanckConstant = 6.62607015E-34;
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
FineStructureConstant = 7.2973525698E-3;
|
||||
ElectronMass = 9.10938291E-31;
|
||||
GravitationalConstant = 6.67384E-11;
|
||||
ProtonMass = 1.672621777E-27;
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BoltzmannConstant = 1.38064852E-23;
|
||||
StandardGravityAcceleration = 9.80665;
|
||||
SpeedOfLight = 299792458;
|
||||
StefanBoltzmannConstant = 5.670373E-8;
|
||||
ElectronCharge = 1.602176634E-19;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
DielectricConstant = 8.8541878128E-12;
|
||||
ElectronGyromagneticFactor = -2.00231930436153;
|
||||
AvogadroConstant = 6.02214076E23;
|
||||
ZeroKelvin = 273.15;
|
||||
GravitationalAcceleration = 9.80553;
|
||||
VacuumPermittivity = 1 / (SpeedOfLight^2 * VacuumPermeability);
|
||||
HartreeEnergy = ElectronCharge^2 / (4 * pi * VacuumPermittivity * BohrRadius);
|
||||
AtomicUnitOfPolarizability = (ElectronCharge^2 * BohrRadius^2) / HartreeEnergy; % Or simply 4*pi*VacuumPermittivity*BohrRadius^3
|
||||
|
||||
% Dy specific constants
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
Dy164IsotopicAbundance = 0.2826;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
%% 2-D DDI Potential in k-space, with Gaussian ansatz width determined by constrained minimization
|
||||
% With user-defined values of interaction, density and tilt
|
||||
|
||||
% w0 = 2*pi*61.6316; % Angular frequency unit [s^-1]
|
||||
% l0 = sqrt(PlanckConstantReduced/(Dy164Mass*w0));
|
||||
% % Defining a harmonic oscillator length - heredue to the choice of w0, l0
|
||||
% is 1 micrometer
|
||||
|
||||
wz = 2 * pi * 300; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
|
||||
% Number of grid points in each direction
|
||||
Params.Nx = 128;
|
||||
Params.Ny = 128;
|
||||
Params.Lx = 150*1e-6;
|
||||
Params.Ly = 150*1e-6;
|
||||
[Transf] = setupSpace(Params);
|
||||
|
||||
nadd2s = 0.110; % Number density * add^2
|
||||
as_to_add = 0.782; % 1/edd
|
||||
Params.theta = 57; % Polar angle of dipole moment
|
||||
Params.eta = 0; % Azimuthal angle of dipole moment
|
||||
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
AtomNumberDensity = nadd2s / add^2; % Number density of atoms
|
||||
as = as_to_add * add; % Scattering length
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
|
||||
MeanWidth = sigma * lz;
|
||||
|
||||
% == 2-D DDI Potential in k-space == %
|
||||
VDk = compute2DPotentialInMomentumSpace(Transf, Params, MeanWidth);
|
||||
VDk_fftshifted = fftshift(VDk);
|
||||
|
||||
figure(8)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
imagesc(fftshift(Transf.kx)*1e-6, fftshift(Transf.ky)*1e-6, VDk_fftshifted); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
xlabel('$k_x l_o$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_y l_o$','fontsize',16,'interpreter','latex');
|
||||
title(['2-D DDI Potential: $\theta = ',num2str(Params.theta), '; \eta = ', num2str(Params.eta),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
EpsilonK = zeros(length(Transf.ky), length(Transf.kx));
|
||||
gs_tilde = gs / (sqrt(2*pi) * MeanWidth);
|
||||
|
||||
% == Dispersion relation == %
|
||||
for idx = 1:length(Transf.kx)
|
||||
for jdx = 1:length(Transf.ky)
|
||||
DeltaK = ((PlanckConstantReduced^2 .* (Transf.kx(idx).^2 + Transf.ky(jdx).^2)) ./ (2 * Dy164Mass)) + (2 * AtomNumberDensity * gs_tilde) + ((2 * AtomNumberDensity) .* VDk_fftshifted(jdx, idx)) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK(jdx, idx) = sqrt(((PlanckConstantReduced^2 .* (Transf.kx(idx).^2 + Transf.ky(jdx).^2)) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
end
|
||||
end
|
||||
|
||||
EpsilonK = double(imag(EpsilonK) ~= 0); % 'isreal' returns 0 for complex numbers and 1 for real numbers, so we negate it
|
||||
|
||||
figure(9)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
imagesc(fftshift(Transf.kx)*1e-6, fftshift(Transf.ky)*1e-6, EpsilonK); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
xlabel('$k_x l_o$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_y l_o$','fontsize',16,'interpreter','latex');
|
||||
title(['2-D Dispersion: $\theta = ',num2str(Params.theta), '; \eta = ', num2str(Params.eta),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
%% Cycle through angles
|
||||
|
||||
% Define values for theta and eta
|
||||
theta_values = 0:10:90; % Range of theta values (you can modify this)
|
||||
eta_values = 0:10:90; % Range of eta values (you can modify this)
|
||||
|
||||
% Set up VideoWriter object to produce a movie
|
||||
% v = VideoWriter('potential_movie', 'MPEG-4'); % Create a video object
|
||||
% v.FrameRate = 5; % Frame rate of the video
|
||||
% open(v); % Open the video file
|
||||
|
||||
% Loop over theta and eta values
|
||||
for theta = theta_values
|
||||
for eta = eta_values
|
||||
% Update Params with current theta and eta
|
||||
Params.theta = theta;
|
||||
Params.eta = eta;
|
||||
|
||||
% Compute the potential for the current theta and eta
|
||||
% == 2-D DDI Potential in k-space == %
|
||||
VDk = compute2DPotentialInMomentumSpace(Transf, Params, MeanWidth);
|
||||
VDk_fftshifted = fftshift(VDk);
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
EpsilonK = zeros(length(Transf.ky), length(Transf.kx));
|
||||
gs_tilde = gs / (sqrt(2*pi) * MeanWidth);
|
||||
|
||||
% == Dispersion relation == %
|
||||
for idx = 1:length(Transf.kx)
|
||||
for jdx = 1:length(Transf.ky)
|
||||
DeltaK = ((PlanckConstantReduced^2 .* (Transf.kx(idx).^2 + Transf.ky(jdx).^2)) ./ (2 * Dy164Mass)) + (2 * AtomNumberDensity * gs_tilde) + ((2 * AtomNumberDensity) .* VDk_fftshifted(jdx, idx)) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK(jdx, idx) = sqrt(((PlanckConstantReduced^2 .* (Transf.kx(idx).^2 + Transf.ky(jdx).^2)) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
end
|
||||
end
|
||||
|
||||
EpsilonK = double(imag(EpsilonK) ~= 0); % 'isreal' returns 0 for complex numbers and 1 for real numbers, so we negate it
|
||||
|
||||
% Plot the result
|
||||
figure(10)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
imagesc(fftshift(Transf.kx)*1e-6, fftshift(Transf.ky)*1e-6, EpsilonK); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
xlabel('$k_x l_o$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_y l_o$','fontsize',16,'interpreter','latex');
|
||||
title(['2-D Dispersion: $\theta = ',num2str(Params.theta), '; \eta = ', num2str(Params.eta),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
% Capture the frame and write to video
|
||||
% frame = getframe(gcf); % Capture the current figure
|
||||
% writeVideo(v, frame); % Write the frame to the video
|
||||
end
|
||||
end
|
||||
|
||||
% Close the video file
|
||||
% close(v);
|
||||
|
||||
%%
|
||||
function [Transf] = setupSpace(Params)
|
||||
|
||||
Transf.Xmax = 0.5*Params.Lx;
|
||||
Transf.Ymax = 0.5*Params.Ly;
|
||||
|
||||
Nx = Params.Nx;
|
||||
Ny = Params.Ny;
|
||||
|
||||
% Fourier grids
|
||||
x = linspace(-0.5*Params.Lx,0.5*Params.Lx-Params.Lx/Params.Nx,Params.Nx);
|
||||
Kmax = pi*Params.Nx/Params.Lx;
|
||||
kx = linspace(-Kmax,Kmax,Nx+1);
|
||||
kx = kx(1:end-1);
|
||||
dkx = kx(2)-kx(1);
|
||||
kx = fftshift(kx);
|
||||
|
||||
y = linspace(-0.5*Params.Ly,0.5*Params.Ly-Params.Ly/Params.Ny,Params.Ny);
|
||||
Kmax = pi*Params.Ny/Params.Ly;
|
||||
ky = linspace(-Kmax,Kmax,Ny+1);
|
||||
ky = ky(1:end-1);
|
||||
dky = ky(2)-ky(1);
|
||||
ky = fftshift(ky);
|
||||
|
||||
[Transf.X,Transf.Y] = ndgrid(x,y);
|
||||
[Transf.KX,Transf.KY] = ndgrid(kx,ky);
|
||||
Transf.x = x;
|
||||
Transf.y = y;
|
||||
Transf.kx = kx;
|
||||
Transf.ky = ky;
|
||||
Transf.dx = x(2)-x(1);
|
||||
Transf.dy = y(2)-y(1);
|
||||
Transf.dkx = dkx;
|
||||
Transf.dky = dky;
|
||||
end
|
||||
|
||||
function VDk = compute2DPotentialInMomentumSpace(Transf, Params, MeanWidth)
|
||||
% == Calculating the DDI potential in Fourier space with appropriate cutoff == %
|
||||
% Angles of the dipole moment are defined in and away from the X-Z plane
|
||||
% Interaction in K space
|
||||
QX = Transf.KX*MeanWidth/sqrt(2);
|
||||
QY = Transf.KY*MeanWidth/sqrt(2);
|
||||
|
||||
Qsq = QX.^2 + QY.^2;
|
||||
absQ = sqrt(Qsq);
|
||||
QDsq = QX.^2*cos(Params.eta)^2 + QY.^2*sin(Params.eta)^2; % eta here is the azimuthal angle of the dipole moment (angle from the x-axis)
|
||||
|
||||
% Bare interaction
|
||||
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); % theta here is the polar angle of the dipole moment (angle from the z-axis)
|
||||
end
|
||||
|
||||
function ret = computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced)
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
MeanWidth = x * lz;
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2)); % Quantum Fluctuations term
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
Energy_AxialComponent = (PlanckConstantReduced * wz) * ((lz^2/(4 * MeanWidth^2)) + (MeanWidth^2/(4 * lz^2)));
|
||||
Energy_TransverseComponent = (0.5 * (gs + (2*gdd)) * gamma4 * AtomNumberDensity) + ((2/5) * gQF * AtomNumberDensity^(3/2));
|
||||
ret = (Energy_AxialComponent + Energy_TransverseComponent) / (PlanckConstantReduced * wz);
|
||||
end
|
||||
|
||||
|
||||
|
@ -1,503 +0,0 @@
|
||||
%% Physical constants
|
||||
PlanckConstant = 6.62607015E-34;
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
FineStructureConstant = 7.2973525698E-3;
|
||||
ElectronMass = 9.10938291E-31;
|
||||
GravitationalConstant = 6.67384E-11;
|
||||
ProtonMass = 1.672621777E-27;
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BoltzmannConstant = 1.38064852E-23;
|
||||
StandardGravityAcceleration = 9.80665;
|
||||
SpeedOfLight = 299792458;
|
||||
StefanBoltzmannConstant = 5.670373E-8;
|
||||
ElectronCharge = 1.602176634E-19;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
DielectricConstant = 8.8541878128E-12;
|
||||
ElectronGyromagneticFactor = -2.00231930436153;
|
||||
AvogadroConstant = 6.02214076E23;
|
||||
ZeroKelvin = 273.15;
|
||||
GravitationalAcceleration = 9.80553;
|
||||
VacuumPermittivity = 1 / (SpeedOfLight^2 * VacuumPermeability);
|
||||
HartreeEnergy = ElectronCharge^2 / (4 * pi * VacuumPermittivity * BohrRadius);
|
||||
AtomicUnitOfPolarizability = (ElectronCharge^2 * BohrRadius^2) / HartreeEnergy; % Or simply 4*pi*VacuumPermittivity*BohrRadius^3
|
||||
|
||||
% Dy specific constants
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
Dy164IsotopicAbundance = 0.2826;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
%% Extracting values from the roton instability boundary for tilted dipoles
|
||||
|
||||
%-------TEST-------%
|
||||
% nadd2s = 0.05:0.005:0.25;
|
||||
% as_to_add = 0.76:0.001:0.81;
|
||||
|
||||
%-------DEPLOY-------%
|
||||
nadd2s = 0.005:0.005:0.5;
|
||||
as_to_add = 0.250:0.001:1.15;
|
||||
|
||||
data_struct = struct;
|
||||
|
||||
% wz_values = [150, 300, 500, 750];
|
||||
% kvec = linspace(0, 5e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
wz_values = [1000, 3000, 5000, 7000];
|
||||
kvec = linspace(0, 15e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
% wz_values = [10000, 13000, 15000];
|
||||
% kvec = linspace(0, 25e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
theta_values = 0:5:45; % Range of theta values
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
|
||||
for mainloop_idx = 1:length(wz_values)
|
||||
format long
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
wz = 2 * pi * wz_values(mainloop_idx); % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
var_widths = zeros(length(as_to_add), length(nadd2s));
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
var_widths(jdx, idx) = sigma;
|
||||
end
|
||||
end
|
||||
|
||||
eps_dd_values = zeros(length(theta_values), 1);
|
||||
n_values = zeros(length(theta_values), 1);
|
||||
k_roton_values = zeros(length(theta_values), 1);
|
||||
|
||||
for idx = 1:length(theta_values)
|
||||
theta = theta_values(idx);
|
||||
[eps_dd_values(idx), n_values(idx), k_roton_values(idx)] = extractFromBoundaryCurve(theta, phi, nadd2s, as_to_add, var_widths, wz, lz, kvec);
|
||||
end
|
||||
|
||||
data_struct(mainloop_idx).wz_value = wz / (2 * pi);
|
||||
data_struct(mainloop_idx).theta_values = theta_values;
|
||||
data_struct(mainloop_idx).eps_dd_values = eps_dd_values;
|
||||
data_struct(mainloop_idx).n_values = n_values;
|
||||
data_struct(mainloop_idx).k_roton_values = k_roton_values;
|
||||
|
||||
%{
|
||||
figure(13)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
plot(theta_values, eps_dd_values, '-o', LineWidth=2.0)
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$\epsilon_{dd}$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
|
||||
figure(14)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
plot(theta_values, (1./eps_dd_values) * (add/BohrRadius), '-o', LineWidth=2.0)
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s (\times a_o)$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
|
||||
figure(15)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
plot(theta_values, n_values * 1E-15, '-o', LineWidth=2.0)
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$n (\times 10^{3} \mu m^{-2})$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
|
||||
figure(16)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
plot(theta_values, k_roton_values * 1E-6, '-o', LineWidth=2.0)
|
||||
xlabel('$\theta$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$k_{roton} (\mu m^{-1})$','fontsize',16,'interpreter','latex');
|
||||
% title([''],'fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
%}
|
||||
end
|
||||
|
||||
save('.\Results\ExtractingKRoton_Result.mat', 'data_struct');
|
||||
|
||||
%% Extracting values from the roton instability boundary for tilted dipoles - fixed atom number, trap frequency
|
||||
|
||||
%-------DEPLOY-------%
|
||||
|
||||
N = 1E5;
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
area = 100; % in square micrometers
|
||||
ppmum = N / area;
|
||||
nadd2s = ppmum*1E12*add^2;
|
||||
as_to_add = 0.150:0.001:1.15;
|
||||
|
||||
data_struct = struct;
|
||||
|
||||
wz_values = [500, 750, 1000, 2000];
|
||||
kvec = linspace(0, 15e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
theta_values = 0:5:90; % Range of theta values
|
||||
phi = 90; % Azimuthal angle of momentum vector
|
||||
|
||||
for mainloop_idx = 1:length(wz_values)
|
||||
format long
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
wz = 2 * pi * wz_values(mainloop_idx); % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
var_widths = zeros(length(as_to_add), length(nadd2s));
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
var_widths(jdx, idx) = sigma;
|
||||
end
|
||||
end
|
||||
|
||||
eps_dd_values = zeros(length(theta_values), 1);
|
||||
k_roton_values = zeros(length(theta_values), 1);
|
||||
|
||||
for idx = 1:length(theta_values)
|
||||
theta = theta_values(idx);
|
||||
[eps_dd_values(idx), k_roton_values(idx)] = extractFromBoundaryPoint(theta, phi, nadd2s, as_to_add, var_widths, wz, lz, kvec);
|
||||
end
|
||||
|
||||
data_struct(mainloop_idx).wz_value = wz / (2 * pi);
|
||||
data_struct(mainloop_idx).theta_values = theta_values;
|
||||
data_struct(mainloop_idx).eps_dd_values = eps_dd_values;
|
||||
data_struct(mainloop_idx).k_roton_values = k_roton_values;
|
||||
|
||||
end
|
||||
|
||||
save('.\Results\ExtractingKRoton_Result_FixedDensity_phi90.mat', 'data_struct');
|
||||
%%
|
||||
function [Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi)
|
||||
Go = sqrt(pi) * (k * MeanWidth/sqrt(2)) .* exp((k * MeanWidth/sqrt(2)).^2) .* erfc((k * MeanWidth/sqrt(2)));
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
Fka = (3 * cos(deg2rad(theta))^2 - 1) + ((3 * Go) .* ((sin(deg2rad(theta))^2 .* sin(deg2rad(phi))^2) - cos(deg2rad(theta))^2));
|
||||
Ukk = (gs + (gdd * Fka)) * gamma4;
|
||||
end
|
||||
|
||||
function ret = computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced)
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
MeanWidth = x * lz;
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2)); % Quantum Fluctuations term
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
Energy_AxialComponent = (PlanckConstantReduced * wz) * ((lz^2/(4 * MeanWidth^2)) + (MeanWidth^2/(4 * lz^2)));
|
||||
Energy_TransverseComponent = (0.5 * (gs + (2*gdd)) * gamma4 * AtomNumberDensity) + ((2/5) * gQF * AtomNumberDensity^(3/2));
|
||||
ret = (Energy_AxialComponent + Energy_TransverseComponent) / (PlanckConstantReduced * wz);
|
||||
end
|
||||
|
||||
function [eps_dd, AtomNumberDensity, k_roton] = extractFromBoundaryCurve(theta, phi, nadd2s, as_to_add, var_widths, wz, lz, kvec)
|
||||
|
||||
format long
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
phase_diagram = zeros(length(as_to_add), length(nadd2s));
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(kvec, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
phase_diagram(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
%{
|
||||
figure(11)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
imagesc(nadd2s, as_to_add, phase_diagram); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
title(['$\theta = ',num2str(theta), '; \phi = 0','$', '(Along Y)'],'fontsize',16,'interpreter','latex')
|
||||
%}
|
||||
%-------------%
|
||||
|
||||
matrix = phase_diagram;
|
||||
|
||||
% Initialize arrays to store row and column indices of transitions
|
||||
row_indices = [];
|
||||
col_indices = [];
|
||||
|
||||
% Loop through the matrix to find transitions from 0 to 1
|
||||
[rows, cols] = size(matrix);
|
||||
for j = 1:cols
|
||||
for i = 2:rows
|
||||
if matrix(i-1, j) == 1 && matrix(i, j) == 0
|
||||
row_indices = [row_indices; i-1];
|
||||
col_indices = [col_indices; j];
|
||||
break; % Stop after the first transition in the column
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
% Now extract the values from the corresponding vectors
|
||||
xvals = zeros(length(col_indices), 1);
|
||||
yvals = zeros(length(row_indices), 1);
|
||||
for k = 1:length(row_indices)
|
||||
row = row_indices(k);
|
||||
col = col_indices(k);
|
||||
xvals(k) = nadd2s(col);
|
||||
yvals(k) = as_to_add(row);
|
||||
end
|
||||
|
||||
instability_boundary = [xvals, yvals];
|
||||
|
||||
%-------------%
|
||||
|
||||
% Degree of the polynomial to fit
|
||||
n = 5; % For a quadratic fit
|
||||
|
||||
% Fit the polynomial
|
||||
p = polyfit(xvals, yvals, n);
|
||||
|
||||
% Display the polynomial coefficients
|
||||
% disp('Polynomial coefficients:');
|
||||
% disp(p);
|
||||
|
||||
% Evaluate the polynomial at points in x
|
||||
y_fit = polyval(p, xvals);
|
||||
|
||||
%{
|
||||
% Plot the original data and the fitted polynomial curve
|
||||
figure(12);
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
plot(xvals, yvals, 'o', 'LineWidth', 2.0, 'DisplayName', 'Extracted boundary points'); % Original data
|
||||
hold on;
|
||||
plot(xvals, y_fit, '-r','LineWidth', 2.0, 'DisplayName', ['Polynomial Fit (degree ' num2str(n) ')']); % Fitted curve
|
||||
ylim([min(as_to_add) max(as_to_add)])
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex')
|
||||
title(['$\theta = ',num2str(theta), '; \phi = 0','$', '(Along Y)'],'fontsize',16,'interpreter','latex')
|
||||
legend('show');
|
||||
grid on;
|
||||
%}
|
||||
[val, idx] = max(y_fit);
|
||||
|
||||
% Round down to 4 decimal places
|
||||
rounded_val = floor(val * 10^4) / 10^4;
|
||||
% Find nearest from original vector of boundary points
|
||||
[~, nearest_idx] = min(abs(instability_boundary(:, 2) - rounded_val));
|
||||
nearest_val = instability_boundary(nearest_idx, 2);
|
||||
% Choose the scalar value between the two
|
||||
if ~isscalar(nearest_val)
|
||||
val = rounded_val;
|
||||
else
|
||||
val = nearest_val;
|
||||
idx = nearest_idx;
|
||||
end
|
||||
|
||||
AtomNumberDensity = xvals(idx) / add^2; % Areal density of atoms
|
||||
as = val * add; % Scattering length
|
||||
eps_dd = 1/val; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
MeanWidth = sigma * lz; % Mean width of Gaussian ansatz
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(kvec, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
DeltaK = ((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
k_roton_indices = find(imag(EpsilonK) ~= 0);
|
||||
if ~isempty(k_roton_indices)
|
||||
k_roton = median(kvec(k_roton_indices));
|
||||
else
|
||||
k_roton = NaN;
|
||||
end
|
||||
end
|
||||
|
||||
function [eps_dd, k_roton] = extractFromBoundaryPoint(theta, phi, nadd2s, as_to_add, var_widths, wz, lz, kvec)
|
||||
|
||||
format long
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
phase_diagram = zeros(length(as_to_add), length(nadd2s));
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(kvec, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
phase_diagram(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
matrix = phase_diagram;
|
||||
|
||||
% Initialize arrays to store row and column indices of transitions
|
||||
row_indices = [];
|
||||
col_indices = [];
|
||||
|
||||
% Loop through the matrix to find transitions from 0 to 1
|
||||
[rows, cols] = size(matrix);
|
||||
for j = 1:cols
|
||||
for i = 2:rows
|
||||
if matrix(i-1, j) == 1 && matrix(i, j) == 0
|
||||
row_indices = [row_indices; i-1];
|
||||
col_indices = [col_indices; j];
|
||||
break; % Stop after the first transition in the column
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
% Now extract the values from the corresponding vectors
|
||||
xvals = zeros(length(col_indices), 1);
|
||||
yvals = zeros(length(row_indices), 1);
|
||||
for k = 1:length(row_indices)
|
||||
row = row_indices(k);
|
||||
col = col_indices(k);
|
||||
xvals(k) = nadd2s(col);
|
||||
yvals(k) = as_to_add(row);
|
||||
end
|
||||
|
||||
instability_boundary = [xvals, yvals];
|
||||
|
||||
if ~isempty(instability_boundary)
|
||||
val = instability_boundary(2);
|
||||
AtomNumberDensity = instability_boundary(1) / add^2; % Areal density of atoms
|
||||
as = val * add; % Scattering length
|
||||
eps_dd = 1/val; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
MeanWidth = sigma * lz; % Mean width of Gaussian ansatz
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(kvec, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
DeltaK = ((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* kvec.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
k_roton_indices = find(imag(EpsilonK) ~= 0);
|
||||
if ~isempty(k_roton_indices)
|
||||
k_roton = median(kvec(k_roton_indices));
|
||||
else
|
||||
k_roton = NaN;
|
||||
end
|
||||
else
|
||||
eps_dd = NaN;
|
||||
k_roton = NaN;
|
||||
end
|
||||
end
|
File diff suppressed because it is too large
Load Diff
@ -1,146 +0,0 @@
|
||||
%% Physical constants
|
||||
PlanckConstant = 6.62607015E-34;
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
FineStructureConstant = 7.2973525698E-3;
|
||||
ElectronMass = 9.10938291E-31;
|
||||
GravitationalConstant = 6.67384E-11;
|
||||
ProtonMass = 1.672621777E-27;
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BoltzmannConstant = 1.38064852E-23;
|
||||
StandardGravityAcceleration = 9.80665;
|
||||
SpeedOfLight = 299792458;
|
||||
StefanBoltzmannConstant = 5.670373E-8;
|
||||
ElectronCharge = 1.602176634E-19;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
DielectricConstant = 8.8541878128E-12;
|
||||
ElectronGyromagneticFactor = -2.00231930436153;
|
||||
AvogadroConstant = 6.02214076E23;
|
||||
ZeroKelvin = 273.15;
|
||||
GravitationalAcceleration = 9.80553;
|
||||
VacuumPermittivity = 1 / (SpeedOfLight^2 * VacuumPermeability);
|
||||
HartreeEnergy = ElectronCharge^2 / (4 * pi * VacuumPermittivity * BohrRadius);
|
||||
AtomicUnitOfPolarizability = (ElectronCharge^2 * BohrRadius^2) / HartreeEnergy; % Or simply 4*pi*VacuumPermittivity*BohrRadius^3
|
||||
|
||||
% Dy specific constants
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
Dy164IsotopicAbundance = 0.2826;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
%% Roton instability boundary for tilted dipoles
|
||||
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
nadd2s = 0.05:0.001:0.25;
|
||||
as_to_add = 0.76:0.001:0.81;
|
||||
var_widths = zeros(length(as_to_add), length(nadd2s));
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
var_widths(jdx, idx) = sigma;
|
||||
end
|
||||
end
|
||||
|
||||
% ====================================================================================================================================================== %
|
||||
|
||||
theta = 0; % Polar angle of dipole moment
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
instability_boundary = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
instability_boundary(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
nadd2s_from_figure = [0.04974, 0.05383, 0.05655, 0.06609, 0.06916, 0.07291, 0.07836, 0.08517, 0.09063, 0.0978, 0.10459, 0.11345, 0.11822, 0.12231, 0.12674, 0.13117, 0.13560, 0.14003, 0.14548, 0.15127, 0.15775, 0.16660, 0.17546, 0.18364, 0.19557, 0.20579, 0.21839, 0.23850, 0.25144];
|
||||
as_to_add_from_figure = [0.76383, 0.76766, 0.76974, 0.77543, 0.77675, 0.77828, 0.78003, 0.78178, 0.78288, 0.7840, 0.78474, 0.78540, 0.78562, 0.78572, 0.78583, 0.78583, 0.78583, 0.78583, 0.78567, 0.78551, 0.78529, 0.78485, 0.78441, 0.78386, 0.78310, 0.78233, 0.78135, 0.77970, 0.77861];
|
||||
|
||||
figure(6)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
%
|
||||
|
||||
imagesc(nadd2s, as_to_add, instability_boundary); % Specify x and y data for axes
|
||||
hold on
|
||||
plot(nadd2s_from_figure, as_to_add_from_figure, 'r*-', 'LineWidth', 2); % Plot the curve (red line)
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
%{
|
||||
imagesc(AtomNumber*1E-5, ScatteringLengths, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
ylabel(cbar1,'$(\times 10^{-31})$','FontSize',16,'Rotation',270)
|
||||
xlabel(' Atom number for a trap area of 100$\mu m^2 ~ (\times 10^5)$','fontsize',16,'interpreter','latex');
|
||||
ylabel('Scattering length ($\times a_0$)','fontsize',16,'interpreter','latex');
|
||||
%}
|
||||
|
||||
title('Roton instability boundary','fontsize',16,'interpreter','latex')
|
||||
|
||||
%%
|
||||
function [Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi)
|
||||
Go = sqrt(pi) * (k * MeanWidth/sqrt(2)) .* exp((k * MeanWidth/sqrt(2)).^2) .* erfc((k * MeanWidth/sqrt(2)));
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
Fka = (3 * cos(deg2rad(theta))^2 - 1) + ((3 * Go) .* ((sin(deg2rad(theta))^2 .* sin(deg2rad(phi))^2) - cos(deg2rad(theta))^2));
|
||||
Ukk = (gs + (gdd * Fka)) * gamma4;
|
||||
end
|
||||
|
||||
function ret = computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced)
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
MeanWidth = x * lz;
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2)); % Quantum Fluctuations term
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
Energy_AxialComponent = (PlanckConstantReduced * wz) * ((lz^2/(4 * MeanWidth^2)) + (MeanWidth^2/(4 * lz^2)));
|
||||
Energy_TransverseComponent = (0.5 * (gs + (2*gdd)) * gamma4 * AtomNumberDensity) + ((2/5) * gQF * AtomNumberDensity^(3/2));
|
||||
ret = (Energy_AxialComponent + Energy_TransverseComponent) / (PlanckConstantReduced * wz);
|
||||
end
|
@ -1,318 +0,0 @@
|
||||
%% Physical constants
|
||||
PlanckConstant = 6.62607015E-34;
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
FineStructureConstant = 7.2973525698E-3;
|
||||
ElectronMass = 9.10938291E-31;
|
||||
GravitationalConstant = 6.67384E-11;
|
||||
ProtonMass = 1.672621777E-27;
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BoltzmannConstant = 1.38064852E-23;
|
||||
StandardGravityAcceleration = 9.80665;
|
||||
SpeedOfLight = 299792458;
|
||||
StefanBoltzmannConstant = 5.670373E-8;
|
||||
ElectronCharge = 1.602176634E-19;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
DielectricConstant = 8.8541878128E-12;
|
||||
ElectronGyromagneticFactor = -2.00231930436153;
|
||||
AvogadroConstant = 6.02214076E23;
|
||||
ZeroKelvin = 273.15;
|
||||
GravitationalAcceleration = 9.80553;
|
||||
VacuumPermittivity = 1 / (SpeedOfLight^2 * VacuumPermeability);
|
||||
HartreeEnergy = ElectronCharge^2 / (4 * pi * VacuumPermittivity * BohrRadius);
|
||||
AtomicUnitOfPolarizability = (ElectronCharge^2 * BohrRadius^2) / HartreeEnergy; % Or simply 4*pi*VacuumPermittivity*BohrRadius^3
|
||||
|
||||
% Dy specific constants
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
Dy164IsotopicAbundance = 0.2826;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
%% Roton instability boundary for tilted dipoles
|
||||
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
nadd2s = 0.005:0.0025:0.5;
|
||||
as_to_add = 0.3:0.025:0.95;
|
||||
var_widths = zeros(length(as_to_add), length(nadd2s));
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
var_widths(jdx, idx) = sigma;
|
||||
end
|
||||
end
|
||||
|
||||
%% ====================================================================================================================================================== %
|
||||
|
||||
figure(7)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1850 750])
|
||||
|
||||
theta = 66; % Polar angle of dipole moment
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
instability_boundary = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
instability_boundary(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
subplot(1, 2, 1); % 1 row, 2 columns, first subplot
|
||||
imagesc(nadd2s, as_to_add, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
caxis([0 1])
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
title(['Along Y: $\theta = ',num2str(theta), '; \phi = ', num2str(phi),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
theta = 66; % Polar angle of dipole moment
|
||||
phi = 90; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
instability_boundary = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
instability_boundary(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
% set(gcf,'Position',[50 50 950 750])
|
||||
subplot(1, 2, 2); % 1 row, 2 columns, first subplot
|
||||
imagesc(nadd2s, as_to_add, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
caxis([0 1])
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
title(['Along X: $\theta = ',num2str(theta), '; \phi = ', num2str(phi),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
%{
|
||||
imagesc(AtomNumber*1E-5, ScatteringLengths, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
caxis([0 1])
|
||||
% ylabel(cbar1,'$(\times 10^{-31})$','FontSize',16,'Rotation',270)
|
||||
xlabel(' Atom number for a trap area of 100$\mu m^2 ~ (\times 10^5)$','fontsize',16,'interpreter','latex');
|
||||
ylabel('Scattering length ($\times a_0$)','fontsize',16,'interpreter','latex');
|
||||
%}
|
||||
|
||||
sgtitle('Mean-field instability boundary','fontsize',16,'interpreter','latex')
|
||||
|
||||
%% Cycle through angles
|
||||
|
||||
% Define values for theta and phi
|
||||
theta_values = 0:2:90; % Range of theta values (you can modify this)
|
||||
|
||||
% Set up VideoWriter object to produce a movie
|
||||
v = VideoWriter('rib_movie', 'MPEG-4'); % Create a video object
|
||||
v.FrameRate = 5; % Frame rate of the video
|
||||
open(v); % Open the video file
|
||||
|
||||
for theta = theta_values
|
||||
figure(7)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 1850 750])
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
instability_boundary = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
instability_boundary(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
subplot(1, 2, 1); % 1 row, 2 columns, first subplot
|
||||
imagesc(nadd2s, as_to_add, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
caxis([0 1])
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
title(['Along Y: $\theta = ',num2str(theta), '; \phi = ', num2str(phi),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
phi = 90; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
instability_boundary = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
instability_boundary(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
% set(gcf,'Position',[50 50 950 750])
|
||||
subplot(1, 2, 2); % 1 row, 2 columns, first subplot
|
||||
imagesc(nadd2s, as_to_add, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
caxis([0 1])
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
title(['Along X: $\theta = ',num2str(theta), '; \phi = ', num2str(phi),'$'],'fontsize',16,'interpreter','latex')
|
||||
|
||||
%{
|
||||
imagesc(AtomNumber*1E-5, ScatteringLengths, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
caxis([0 1])
|
||||
% ylabel(cbar1,'$(\times 10^{-31})$','FontSize',16,'Rotation',270)
|
||||
xlabel(' Atom number for a trap area of 100$\mu m^2 ~ (\times 10^5)$','fontsize',16,'interpreter','latex');
|
||||
ylabel('Scattering length ($\times a_0$)','fontsize',16,'interpreter','latex');
|
||||
%}
|
||||
|
||||
% Capture the frame and write to video
|
||||
frame = getframe(gcf); % Capture the current figure
|
||||
writeVideo(v, frame); % Write the frame to the video
|
||||
|
||||
% sgtitle('Mean-field instability boundary','fontsize',16,'interpreter','latex')
|
||||
end
|
||||
|
||||
% Close the video file
|
||||
close(v);
|
||||
|
||||
%%
|
||||
function [Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi)
|
||||
Go = sqrt(pi) * (k * MeanWidth/sqrt(2)) .* exp((k * MeanWidth/sqrt(2)).^2) .* erfc((k * MeanWidth/sqrt(2)));
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
Fka = (3 * cos(deg2rad(theta))^2 - 1) + ((3 * Go) .* ((sin(deg2rad(theta))^2 .* sin(deg2rad(phi))^2) - cos(deg2rad(theta))^2));
|
||||
Ukk = (gs + (gdd * Fka)) * gamma4;
|
||||
end
|
||||
|
||||
function ret = computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced)
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
MeanWidth = x * lz;
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2)); % Quantum Fluctuations term
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
Energy_AxialComponent = (PlanckConstantReduced * wz) * ((lz^2/(4 * MeanWidth^2)) + (MeanWidth^2/(4 * lz^2)));
|
||||
Energy_TransverseComponent = (0.5 * (gs + (2*gdd)) * gamma4 * AtomNumberDensity) + ((2/5) * gQF * AtomNumberDensity^(3/2));
|
||||
ret = (Energy_AxialComponent + Energy_TransverseComponent) / (PlanckConstantReduced * wz);
|
||||
end
|
||||
|
||||
|
||||
|
@ -1,335 +0,0 @@
|
||||
%% Physical constants
|
||||
PlanckConstant = 6.62607015E-34;
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
FineStructureConstant = 7.2973525698E-3;
|
||||
ElectronMass = 9.10938291E-31;
|
||||
GravitationalConstant = 6.67384E-11;
|
||||
ProtonMass = 1.672621777E-27;
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BoltzmannConstant = 1.38064852E-23;
|
||||
StandardGravityAcceleration = 9.80665;
|
||||
SpeedOfLight = 299792458;
|
||||
StefanBoltzmannConstant = 5.670373E-8;
|
||||
ElectronCharge = 1.602176634E-19;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
DielectricConstant = 8.8541878128E-12;
|
||||
ElectronGyromagneticFactor = -2.00231930436153;
|
||||
AvogadroConstant = 6.02214076E23;
|
||||
ZeroKelvin = 273.15;
|
||||
GravitationalAcceleration = 9.80553;
|
||||
VacuumPermittivity = 1 / (SpeedOfLight^2 * VacuumPermeability);
|
||||
HartreeEnergy = ElectronCharge^2 / (4 * pi * VacuumPermittivity * BohrRadius);
|
||||
AtomicUnitOfPolarizability = (ElectronCharge^2 * BohrRadius^2) / HartreeEnergy; % Or simply 4*pi*VacuumPermittivity*BohrRadius^3
|
||||
|
||||
% Dy specific constants
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
Dy164IsotopicAbundance = 0.2826;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
%% Bogoliubov excitation spectrum for quasi-2D dipolar gas with QF correction
|
||||
AtomNumber = 1E5; % Total atom number in the system
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
as = 102.515 * BohrRadius; % Scattering length
|
||||
Trapsize = 7.5815 * lz; % Trap is assumed to be a box of finite extent , given here in units of the harmonic oscillator length
|
||||
theta = 0; % Polar angle of dipole moment
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
MeanWidth = 5.7304888515 * lz; % Mean width of Gaussian ansatz
|
||||
k = linspace(0, 2e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
% no = 2.0429e+15, eps_dd = 1.2755, as = 5.4249e-09
|
||||
|
||||
AtomNumberDensity = AtomNumber / Trapsize^2; % Areal density of atoms
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
|
||||
figure(1)
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
xvals = (k .* add);
|
||||
yvals = EpsilonK ./ PlanckConstant;
|
||||
plot(xvals, yvals,LineWidth=2.0)
|
||||
title(horzcat(['$a_s = ',num2str(round(1/eps_dd,3)),'a_{dd}, '], ['na_{dd}^2 = ',num2str(round(AtomNumberDensity * add^2,4)),'$']),'fontsize',16,'interpreter','latex')
|
||||
xlabel('$k_{\rho}a_{dd}$','fontsize',16,'interpreter','latex')
|
||||
ylabel('$\epsilon(k_{\rho})/h$ (Hz)','fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
|
||||
%% For different interaction strengths
|
||||
|
||||
AtomNumber = 1E5; % Total atom number in the system
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
Trapsize = 7.5815 * lz; % Trap is assumed to be a box of finite extent , given here in units of the harmonic oscillator length
|
||||
theta = 0; % Polar angle of dipole moment
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
MeanWidth = 5.7304888515 * lz; % Mean width of Gaussian ansatz
|
||||
k = linspace(0, 2e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
AtomNumberDensity = AtomNumber / Trapsize^2; % Areal density of atoms
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
|
||||
ScatteringLengths = [108.5, 105.9, 103.3, 102.5150];
|
||||
eps_dds = zeros(1, length(ScatteringLengths));
|
||||
EpsilonKs = zeros(length(k), length(ScatteringLengths));
|
||||
for idx = 1:length(ScatteringLengths)
|
||||
|
||||
as = ScatteringLengths(idx) * BohrRadius; % Scattering length
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
|
||||
eps_dds(idx) = eps_dd;
|
||||
EpsilonKs(:,idx) = EpsilonK;
|
||||
end
|
||||
|
||||
figure(2)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
xvals = (k .* add);
|
||||
yvals = EpsilonKs(:, 1) ./ PlanckConstant;
|
||||
plot(xvals, yvals,LineWidth=2.0, DisplayName=['$a_s = ',num2str(round(1/eps_dds(1),3)),'a_{dd}$'])
|
||||
hold on
|
||||
for idx = 2:length(ScatteringLengths)
|
||||
yvals = EpsilonKs(:, idx) ./ PlanckConstant;
|
||||
plot(xvals, yvals,LineWidth=2.0, DisplayName=['$a_s = ',num2str(round(1/eps_dds(idx),3)),'a_{dd}$'])
|
||||
end
|
||||
title(['$na_{dd}^2 = ',num2str(round(AtomNumberDensity * add^2,4)),'$'],'fontsize',16,'interpreter','latex')
|
||||
xlabel('$k_{\rho}a_{dd}$','fontsize',16,'interpreter','latex')
|
||||
ylabel('$\epsilon(k_{\rho})/h$ (Hz)','fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
legend('location', 'northwest','fontsize',16, 'Interpreter','latex')
|
||||
|
||||
%% For 3 points on the roton instability boundary
|
||||
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
theta = 0; % Polar angle of dipole moment
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
|
||||
nadd2s = [0.0844, 0.0978, 0.123];
|
||||
as_to_add = [0.7730, 0.7840, 0.7819];
|
||||
var_widths = [4.97165, 5.7296048721, 5.93178];
|
||||
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
EpsilonKs = zeros(length(k), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(idx) * add); % Scattering length
|
||||
ScatteringLengths(idx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
EpsilonKs(:,idx) = EpsilonK;
|
||||
end
|
||||
|
||||
figure(3)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
xvals = (k .* add);
|
||||
yvals = EpsilonKs(:, 1) ./ PlanckConstant;
|
||||
plot(xvals, yvals,LineWidth=2.0, DisplayName=['$a_s = ',num2str(round(as_to_add(1),4)),'a_{dd}, na_{dd}^2 = ',num2str(round(nadd2s(1),4)),'$'])
|
||||
hold on
|
||||
for idx = 2:length(nadd2s)
|
||||
yvals = EpsilonKs(:, idx) ./ PlanckConstant;
|
||||
plot(xvals, yvals,LineWidth=2.0, DisplayName=['$a_s = ',num2str(round(as_to_add(idx),4)),'a_{dd}, na_{dd}^2 = ',num2str(round(nadd2s(idx),4)),'$'])
|
||||
end
|
||||
xlabel('$k_{\rho}a_{dd}$','fontsize',16,'interpreter','latex')
|
||||
ylabel('$\epsilon(k_{\rho})/h$ (Hz)','fontsize',16,'interpreter','latex')
|
||||
grid on
|
||||
legend('location', 'northwest','fontsize',16, 'Interpreter','latex')
|
||||
|
||||
%% Mean widths of the variational Gaussian ansatz - extremize the total mean field energy per particle wrt to the variational parameter
|
||||
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
AtomNumberDensity = 0.0978 / add^2;
|
||||
as = 0.784 * add; % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [7];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
fprintf(['Variational width of Gaussian ansatz = ' num2str(sigma) ' * lz \n'])
|
||||
|
||||
%% Mean widths of the variational Gaussian ansatz - extremize the total mean field energy per particle wrt to the variational parameter
|
||||
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
nadd2s = 0.05:0.001:0.25;
|
||||
as_to_add = 0.74:0.001:0.79;
|
||||
var_widths = zeros(length(as_to_add), length(nadd2s));
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
var_widths(jdx, idx) = sigma;
|
||||
end
|
||||
end
|
||||
|
||||
figure(4)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
imagesc(nadd2s, as_to_add, var_widths); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
% ====================================================================================================================================================== %
|
||||
|
||||
theta = 0; % Polar angle of dipole moment
|
||||
phi = 0; % Azimuthal angle of momentum vector
|
||||
k = linspace(0, 2.25e6, 1000); % Vector of magnitudes of k vector
|
||||
instability_boundary = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
MeanWidth = var_widths(jdx, idx) * lz; % Mean width of Gaussian ansatz
|
||||
|
||||
[Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi); % DDI potential in k-space
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
|
||||
% == Dispersion relation == %
|
||||
DeltaK = ((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) + ((2 * AtomNumberDensity) .* Ukk) + (3 * gQF * AtomNumberDensity^(3/2));
|
||||
EpsilonK = sqrt(((PlanckConstantReduced^2 .* k.^2) ./ (2 * Dy164Mass)) .* DeltaK);
|
||||
instability_boundary(jdx, idx) = ~isreal(EpsilonK);
|
||||
end
|
||||
end
|
||||
|
||||
nadd2s_from_figure = [0.04974, 0.05383, 0.05655, 0.06609, 0.06916, 0.07291, 0.07836, 0.08517, 0.09063, 0.0978, 0.10459, 0.11345, 0.11822, 0.12231, 0.12674, 0.13117, 0.13560, 0.14003, 0.14548, 0.15127, 0.15775, 0.16660, 0.17546, 0.18364, 0.19557, 0.20579, 0.21839, 0.23850, 0.25144];
|
||||
as_to_add_from_figure = [0.76383, 0.76766, 0.76974, 0.77543, 0.77675, 0.77828, 0.78003, 0.78178, 0.78288, 0.7840, 0.78474, 0.78540, 0.78562, 0.78572, 0.78583, 0.78583, 0.78583, 0.78583, 0.78567, 0.78551, 0.78529, 0.78485, 0.78441, 0.78386, 0.78310, 0.78233, 0.78135, 0.77970, 0.77861];
|
||||
|
||||
figure(5)
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
|
||||
|
||||
imagesc(nadd2s, as_to_add, instability_boundary); % Specify x and y data for axes
|
||||
hold on
|
||||
plot(nadd2s_from_figure, as_to_add_from_figure, 'r*-', 'LineWidth', 2); % Plot the curve (red line)
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
colorbar; % Add a colorbar
|
||||
xlabel('$na_{dd}^2$','fontsize',16,'interpreter','latex');
|
||||
ylabel('$a_s/a_{dd}$','fontsize',16,'interpreter','latex');
|
||||
|
||||
%{
|
||||
imagesc(AtomNumber*1E-5, ScatteringLengths, instability_boundary); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
ylabel(cbar1,'$(\times 10^{-31})$','FontSize',16,'Rotation',270)
|
||||
xlabel(' Atom number for a trap area of 100$\mu m^2 ~ (\times 10^5)$','fontsize',16,'interpreter','latex');
|
||||
ylabel('Scattering length ($\times a_0$)','fontsize',16,'interpreter','latex');
|
||||
title('Roton instability boundary','fontsize',16,'interpreter','latex')
|
||||
%}
|
||||
|
||||
%%
|
||||
function [Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi)
|
||||
Go = sqrt(pi) * (k * MeanWidth/sqrt(2)) .* exp((k * MeanWidth/sqrt(2)).^2) .* erfc((k * MeanWidth/sqrt(2)));
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
Fka = (3 * cos(deg2rad(theta))^2 - 1) + ((3 * Go) .* ((sin(deg2rad(theta))^2 .* sin(deg2rad(phi))^2) - cos(deg2rad(theta))^2));
|
||||
Ukk = (gs + (gdd * Fka)) * gamma4;
|
||||
end
|
||||
|
||||
function ret = computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced)
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
MeanWidth = x * lz;
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2)); % Quantum Fluctuations term
|
||||
gamma4 = 1/(sqrt(2*pi) * MeanWidth);
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
Energy_AxialComponent = (PlanckConstantReduced * wz) * ((lz^2/(4 * MeanWidth^2)) + (MeanWidth^2/(4 * lz^2)));
|
||||
Energy_TransverseComponent = (0.5 * (gs + (2*gdd)) * gamma4 * AtomNumberDensity) + ((2/5) * gQF * AtomNumberDensity^(3/2));
|
||||
ret = (Energy_AxialComponent + Energy_TransverseComponent) / (PlanckConstantReduced * wz);
|
||||
end
|
||||
|
||||
|
||||
|
@ -1,89 +0,0 @@
|
||||
%% Physical constants
|
||||
PlanckConstant = 6.62607015E-34;
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
FineStructureConstant = 7.2973525698E-3;
|
||||
ElectronMass = 9.10938291E-31;
|
||||
GravitationalConstant = 6.67384E-11;
|
||||
ProtonMass = 1.672621777E-27;
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
BohrRadius = 5.2917721067E-11;
|
||||
BohrMagneton = 9.274009994E-24;
|
||||
BoltzmannConstant = 1.38064852E-23;
|
||||
StandardGravityAcceleration = 9.80665;
|
||||
SpeedOfLight = 299792458;
|
||||
StefanBoltzmannConstant = 5.670373E-8;
|
||||
ElectronCharge = 1.602176634E-19;
|
||||
VacuumPermeability = 1.25663706212E-6;
|
||||
DielectricConstant = 8.8541878128E-12;
|
||||
ElectronGyromagneticFactor = -2.00231930436153;
|
||||
AvogadroConstant = 6.02214076E23;
|
||||
ZeroKelvin = 273.15;
|
||||
GravitationalAcceleration = 9.80553;
|
||||
VacuumPermittivity = 1 / (SpeedOfLight^2 * VacuumPermeability);
|
||||
HartreeEnergy = ElectronCharge^2 / (4 * pi * VacuumPermittivity * BohrRadius);
|
||||
AtomicUnitOfPolarizability = (ElectronCharge^2 * BohrRadius^2) / HartreeEnergy; % Or simply 4*pi*VacuumPermittivity*BohrRadius^3
|
||||
|
||||
% Dy specific constants
|
||||
Dy164Mass = 163.929174751*AtomicMassUnit;
|
||||
Dy164IsotopicAbundance = 0.2826;
|
||||
DyMagneticMoment = 9.93*BohrMagneton;
|
||||
|
||||
%% Scaling of the QF term
|
||||
|
||||
wz = 2 * pi * 72.4; % Trap frequency in the tight confinement direction
|
||||
lz = sqrt(PlanckConstantReduced/(Dy164Mass * wz)); % Defining a harmonic oscillator length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
add = VacuumPermeability*DyMagneticMoment^2*Dy164Mass/(12*pi*PlanckConstantReduced^2); % Dipole length
|
||||
gdd = VacuumPermeability*DyMagneticMoment^2/3;
|
||||
|
||||
nadd2s = 0.05:0.01:0.25;
|
||||
as_to_add = 0.76:0.01:0.81;
|
||||
|
||||
QF = zeros(length(as_to_add), length(nadd2s));
|
||||
ScatteringLengths = zeros(length(as_to_add), 1);
|
||||
AtomNumber = zeros(length(nadd2s), 1);
|
||||
w0 = 2 * pi * 61.6316; % Trap frequency in the tight confinement direction
|
||||
l0 = sqrt(PlanckConstantReduced/(Dy164Mass * w0)); % Defining a harmonic oscillator length
|
||||
tsize = 10 * l0;
|
||||
|
||||
x0 = 5;
|
||||
Aineq = [];
|
||||
Bineq = [];
|
||||
Aeq = [];
|
||||
Beq = [];
|
||||
lb = [1];
|
||||
ub = [10];
|
||||
nonlcon = [];
|
||||
fminconopts = optimoptions(@fmincon,'Display','off', 'StepTolerance', 1.0000e-11, 'MaxIterations',1500);
|
||||
|
||||
for idx = 1:length(nadd2s)
|
||||
for jdx = 1:length(as_to_add)
|
||||
AtomNumberDensity = nadd2s(idx) / add^2; % Areal density of atoms
|
||||
AtomNumber(idx) = AtomNumberDensity*tsize^2;
|
||||
as = (as_to_add(jdx) * add); % Scattering length
|
||||
gs = 4 * pi * PlanckConstantReduced^2/Dy164Mass * as; % Contact interaction strength
|
||||
ScatteringLengths(jdx) = as/BohrRadius;
|
||||
TotalEnergyPerParticle = @(x) computeTotalEnergyPerParticle(x, as, AtomNumberDensity, wz, lz, gs, add, gdd, PlanckConstantReduced);
|
||||
sigma = fmincon(TotalEnergyPerParticle, x0, Aineq, Bineq, Aeq, Beq, lb, ub, nonlcon, fminconopts);
|
||||
eps_dd = add/as; % Relative interaction strength
|
||||
|
||||
% == Quantum Fluctuations term == %
|
||||
MeanWidth = sigma * lz;
|
||||
gammaQF = (32/3) * gs * (as^3/pi)^(1/2) * (1 + ((3/2) * eps_dd^2));
|
||||
gamma5 = sqrt(2/5) / (sqrt(pi) * MeanWidth)^(3/2);
|
||||
gQF = gamma5 * gammaQF;
|
||||
QF(jdx, idx) = 3 * gQF * AtomNumberDensity^(3/2);
|
||||
end
|
||||
end
|
||||
|
||||
figure
|
||||
clf
|
||||
set(gcf,'Position',[50 50 950 750])
|
||||
imagesc(AtomNumber*1E-5, ScatteringLengths, QF * 1E31); % Specify x and y data for axes
|
||||
set(gca, 'YDir', 'normal'); % Correct the y-axis direction
|
||||
cbar1 = colorbar;
|
||||
cbar1.Label.Interpreter = 'latex';
|
||||
ylabel(cbar1,'$(\times 10^{-31})$','FontSize',16,'Rotation',270)
|
||||
xlabel(' Atom number for a trap area of 100$\mu m^2 ~ (\times 10^5)$','fontsize',16,'interpreter','latex');
|
||||
ylabel('Scattering length ($\times a_0$)','fontsize',16,'interpreter','latex');
|
||||
title('Scaling of the quantum fluctuations term','fontsize',16,'interpreter','latex')
|
@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
########### Begin SLURM header ###########
|
||||
#Partition
|
||||
#SBATCH --partition=cpu-single
|
||||
# Request number of nodes and CPU cores per node for job
|
||||
#SBATCH --nodes=1
|
||||
#SBATCH --ntasks-per-node=1
|
||||
#SBATCH --cpus-per-task=10
|
||||
#SBATCH --mem=2G
|
||||
# Estimated wallclock time for job
|
||||
#SBATCH --time=00:30:00
|
||||
#SBATCH --job-name=simulation
|
||||
#SBATCH --error=simulation.err
|
||||
#SBATCH --output=simulation.out
|
||||
|
||||
########### End SLURM header ##########
|
||||
|
||||
echo "Working Directory: $PWD"
|
||||
echo "Running on host $HOSTNAME"
|
||||
echo "Job id: $SLURM_JOB_ID"
|
||||
echo "Job name: $SLURM_JOB_NAME"
|
||||
echo "Number of nodes allocated to job: $SLURM_JOB_NUM_NODES"
|
||||
echo "Number of cores allocated to job: $SLURM_JOB_CPUS_PER_NODE"
|
||||
|
||||
|
||||
# Load module
|
||||
module load math/matlab/R2023a
|
||||
|
||||
echo Directory is `pwd`
|
||||
echo "Initiating Job..."
|
||||
|
||||
# Start a Matlab program
|
||||
matlab -nodisplay -nosplash -r "ExtractingKRoton"
|
||||
|
||||
# notice for tests
|
||||
echo "Job terminated successfully"
|
||||
|
||||
exit
|
@ -1 +0,0 @@
|
||||
{"version":[4,2],"axesColl":[{"name":"XY","type":"XYAxes","isLogX":false,"isLogY":false,"noRotation":true,"calibrationPoints":[{"px":304.86283783783784,"py":633.6364864864864,"dx":"0.1","dy":"0.745","dz":null},{"px":694.7418918918919,"py":633.6364864864864,"dx":"0.2","dy":"0.745","dz":null},{"px":107.59864864864865,"py":573.8594594594595,"dx":"0.1","dy":"0.745","dz":null},{"px":107.59864864864865,"py":27.895945945945947,"dx":"0.2","dy":"0.79","dz":null}]}],"datasetColl":[{"name":"Default Dataset","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":108.92702702702702,"y":345.3783783783784,"value":[0.04974446337308348,0.7638321167883212]},{"x":124.86756756756756,"y":298.88513513513516,"value":[0.053833049403747876,0.7676642335766424]},{"x":135.4945945945946,"y":273.6459459459459,"value":[0.05655877342419081,0.7697445255474452]},{"x":172.6891891891892,"y":204.57027027027027,"value":[0.06609880749574107,0.7754379562043796]},{"x":564.5608108108108,"y":90.32972972972973,"value":[0.1666098807495741,0.7848540145985402]},{"x":630.9797297297297,"y":102.28513513513514,"value":[0.1836456558773424,0.7838686131386862]},{"x":677.472972972973,"y":111.58378378378379,"value":[0.19557069846678027,0.7831021897810219]},{"x":717.3243243243244,"y":120.88243243243244,"value":[0.20579216354344126,0.7823357664233577]},{"x":766.4743243243244,"y":132.83783783783784,"value":[0.2183986371379898,0.7813503649635036]},{"x":844.8486486486487,"y":152.76351351351352,"value":[0.2385008517887564,0.7797080291970803]},{"x":895.327027027027,"y":166.0472972972973,"value":[0.25144804088586037,0.7786131386861314]},{"x":184.6445945945946,"y":188.62972972972972,"value":[0.06916524701873936,0.7767518248175183]},{"x":199.25675675675674,"y":170.03243243243244,"value":[0.07291311754684839,0.7782846715328468]},{"x":220.51081081081082,"y":148.7783783783784,"value":[0.07836456558773425,0.780036496350365]},{"x":247.07837837837837,"y":127.52432432432433,"value":[0.08517887563884158,0.7817883211678832]},{"x":268.3324324324324,"y":114.24054054054054,"value":[0.09063032367972744,0.7828832116788321]},{"x":322.79594594594596,"y":91.65810810810811,"value":[0.10459965928449745,0.7847445255474452]},{"x":357.33378378378376,"y":83.68783783783783,"value":[0.11345826235093698,0.7854014598540147]},{"x":375.93108108108106,"y":81.03108108108108,"value":[0.1182282793867121,0.7856204379562044]},{"x":391.8716216216216,"y":79.70270270270271,"value":[0.1223168654173765,0.7857299270072993]},{"x":409.14054054054054,"y":78.37432432432432,"value":[0.12674616695059626,0.7858394160583941]},{"x":426.40945945945947,"y":78.37432432432432,"value":[0.13117546848381603,0.7858394160583941]},{"x":443.6783783783784,"y":78.37432432432432,"value":[0.1356047700170358,0.7858394160583941]},{"x":460.9472972972973,"y":78.37432432432433,"value":[0.14003407155025555,0.7858394160583941]},{"x":482.2013513513514,"y":80.3668918918919,"value":[0.14548551959114142,0.7856751824817518]},{"x":504.7837837837838,"y":82.35945945945946,"value":[0.15127768313458265,0.7855109489051095]},{"x":530.022972972973,"y":85.01621621621622,"value":[0.1577512776831346,0.7852919708029197]},{"x":599.0986486486487,"y":95.64324324324325,"value":[0.17546848381601365,0.7844160583941606]}],"autoDetectionData":null}],"measurementColl":[]}
|
Binary file not shown.
@ -1,8 +1,8 @@
|
||||
%% Across range of a_s, n
|
||||
|
||||
% load('.\Results\ExtractingKRoton_Result_Below1000.mat')
|
||||
% load('.\Results\ExtractingKRoton_Result_Above1000.mat')
|
||||
load('.\Results\ExtractingKRoton_Result_Above10000.mat')
|
||||
% load('.\Results\ExtractingParameters_Result_Below1000.mat')
|
||||
% load('.\Results\ExtractingParameters_Result_Above1000.mat')
|
||||
load('.\Results\ExtractingParameters_Result_Above10000.mat')
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
@ -119,7 +119,7 @@ t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
%% Fixed Density results
|
||||
|
||||
load('.\Results\ExtractingKRoton_Result_FixedDensity_phi0.mat')
|
||||
load('.\Results\ExtractingParameters_Result_FixedDensity_phi0.mat')
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
@ -206,8 +206,8 @@ t.Padding = 'compact'; % Minimize padding around the layout
|
||||
|
||||
%% Fixed Density results - compare two orthogonal directions
|
||||
|
||||
data0 = load('.\Results\ExtractingKRoton_Result_FixedDensity_phi0.mat');
|
||||
data90 = load('.\Results\ExtractingKRoton_Result_FixedDensity_phi90.mat');
|
||||
data0 = load('.\Results\ExtractingParameters_Result_FixedDensity_phi0.mat');
|
||||
data90 = load('.\Results\ExtractingParameters_Result_FixedDensity_phi90.mat');
|
||||
|
||||
PlanckConstantReduced = 6.62607015E-34/(2*pi);
|
||||
AtomicMassUnit = 1.660539066E-27;
|
||||
|
@ -143,7 +143,7 @@ for mainloop_idx = 1:length(wz_values)
|
||||
%}
|
||||
end
|
||||
|
||||
save('.\Results\ExtractingKRoton_Result.mat', 'data_struct');
|
||||
save('.\Results\ExtractingParameters_Result.mat', 'data_struct');
|
||||
|
||||
%% Extracting values from the roton instability boundary for tilted dipoles - fixed atom number, trap frequency
|
||||
|
||||
@ -216,7 +216,7 @@ for mainloop_idx = 1:length(wz_values)
|
||||
|
||||
end
|
||||
|
||||
save('.\Results\ExtractingKRoton_Result_FixedDensity_phi90.mat', 'data_struct');
|
||||
save('.\Results\ExtractingParameters_Result_FixedDensity_phi90.mat', 'data_struct');
|
||||
%%
|
||||
function [Go,gamma4,Fka,Ukk] = computePotentialInMomentumSpace(k, gs, gdd, MeanWidth, theta, phi)
|
||||
Go = sqrt(pi) * (k * MeanWidth/sqrt(2)) .* exp((k * MeanWidth/sqrt(2)).^2) .* erfc((k * MeanWidth/sqrt(2)));
|
Loading…
Reference in New Issue
Block a user