165 lines
7.2 KiB
Matlab
165 lines
7.2 KiB
Matlab
% ----------------------------
|
|
% Experimental data
|
|
% ----------------------------
|
|
PixelSize = 5.86; % microns
|
|
|
|
AtomNumbers = [9.14950197, 8.6845907 , 8.82521245, 8.5899089 , 8.21675841, ...
|
|
8.96234044, 8.8636914 , 8.70332154, 8.82930706, 8.91869919, ...
|
|
8.58553165, 8.73391981, 8.71943552, 8.11717678, 8.59490351, ...
|
|
8.57514491, 8.81628891, 8.37211343, 8.76077699, 8.71297796, ...
|
|
9.17634469, 8.81424285, 8.61176745, 8.40555897, 8.97137861, ...
|
|
8.88393124, 8.66625724, 8.30688943, 9.02338201, 8.57729816, ...
|
|
8.50333458, 8.67617084, 8.8936879 , 9.02031475, 8.98459233, ...
|
|
8.76525048, 8.76801503, 8.58302559, 8.4617431 , 8.74479855, ...
|
|
8.83882896, 8.69091377, 8.79282459, 8.51785483, 8.75629649, ...
|
|
8.58994308, 8.36816564, 9.2429294 , 8.6583425 , 8.55827961];
|
|
|
|
EstimatedAtomNumber = mean(AtomNumbers) * 1E4;
|
|
|
|
TF_Radii_X_pixels = [48.44308968, 46.01326593, 46.45950681, 46.41644117, 45.56176919, ...
|
|
46.60816438, 46.85307478, 47.61086543, 46.66687703, 46.17986721, ...
|
|
46.67877165, 46.07789481, 46.42285497, 46.22167708, 45.95144492, ...
|
|
47.05400117, 49.03005788, 45.84588659, 46.85742777, 45.9824117 , ...
|
|
47.14731188, 47.4984484 , 45.9055646 , 47.31804553, 47.52321888, ...
|
|
47.76823968, 46.459749 , 45.4498851 , 45.38339308, 46.68736642, ...
|
|
45.76607233, 48.1796053 , 46.94291541, 47.54092708, 48.26130406, ...
|
|
47.44092616, 48.73463214, 46.39356452, 48.74120217, 45.57014182, ...
|
|
47.56467835, 46.62867035, 46.62322802, 46.03032919, 44.78559832, ...
|
|
46.31282562, 46.83537518, 47.68015029, 47.71093571, 47.34079816];
|
|
|
|
TF_Radii_Y_pixels = [113.52610841, 113.68862761, 112.84031747, 114.22062324, ...
|
|
112.45378285, 114.53863928, 111.39181472, 112.67024271, ...
|
|
113.65387448, 113.57576769, 110.22576589, 110.45091803, ...
|
|
109.97966067, 112.84785553, 109.3836049 , 111.22290862, ...
|
|
111.17028727, 110.71088554, 111.72973603, 112.39623635, ...
|
|
113.18160954, 112.00016346, 109.66542778, 111.98705097, ...
|
|
112.35983901, 110.21703075, 112.14565939, 111.2029942 , ...
|
|
110.74296 , 112.56607054, 112.58015318, 111.93031032, ...
|
|
111.59774288, 112.30723266, 112.79543793, 111.08288891, ...
|
|
113.85269603, 111.77349741, 113.58639434, 111.28694353, ...
|
|
112.1993445 , 111.72215918, 111.93271101, 112.17593036, ...
|
|
110.82246602, 113.61806907, 114.13693144, 114.27245731, ...
|
|
114.24223538, 112.61704196];
|
|
|
|
% ----------------------------
|
|
% Load simulation data for fitting
|
|
% ----------------------------
|
|
% baseDir = 'D:\Results - Numerics\Data_Full3D\PhaseDiagram\TFRadii\LowN';
|
|
baseDir = 'C:\Users\Karthik\Documents\GitRepositories\Calculations\Estimations\ThomasFermiRadius';
|
|
refData = load(fullfile(baseDir, 'TFFermi_Theta0.mat'));
|
|
|
|
% ----------------------------
|
|
% Find simulation values at the estimated atom number
|
|
% ----------------------------
|
|
[~, idxClosest] = min(abs(refData.NUM_ATOMS_LIST - EstimatedAtomNumber));
|
|
|
|
if ndims(refData.TF_Radii) > 2
|
|
TF_Radii = squeeze(refData.TF_Radii);
|
|
TF_X_target = TF_Radii(idxClosest, 1);
|
|
TF_Y_target = TF_Radii(idxClosest, 2);
|
|
else
|
|
TF_X_target = refData.TF_Radii(idxClosest, 1);
|
|
TF_Y_target = refData.TF_Radii(idxClosest, 2);
|
|
end
|
|
|
|
fprintf('Target radii from simulation at N = %.0f:\n', refData.NUM_ATOMS_LIST(idxClosest));
|
|
fprintf('TF_X_target = %.2f µm\n', TF_X_target);
|
|
fprintf('TF_Y_target = %.2f µm\n', TF_Y_target);
|
|
|
|
% ----------------------------
|
|
% Find optimal magnification
|
|
% ----------------------------
|
|
errorFunc = @(mag) ...
|
|
(mean(TF_Radii_X_pixels)*PixelSize/mag - TF_X_target)^2 + ...
|
|
(mean(TF_Radii_Y_pixels)*PixelSize/mag - TF_Y_target)^2;
|
|
|
|
Magnification = fminbnd(errorFunc, 10, 50);
|
|
fprintf('Best-fit magnification: %.4f\n', Magnification);
|
|
|
|
% ----------------------------
|
|
% Convert to real space and get stats
|
|
% ----------------------------
|
|
TF_Radii_X_Real = TF_Radii_X_pixels * PixelSize / Magnification;
|
|
TF_Radii_Y_Real = TF_Radii_Y_pixels * PixelSize / Magnification;
|
|
|
|
Avg_X = mean(TF_Radii_X_Real);
|
|
Avg_Y = mean(TF_Radii_Y_Real);
|
|
Std_X = std(TF_Radii_X_Real);
|
|
Std_Y = std(TF_Radii_Y_Real);
|
|
|
|
fprintf('TF Radius X = %.2f ± %.2f µm\n', Avg_X, Std_X);
|
|
fprintf('TF Radius Y = %.2f ± %.2f µm\n', Avg_Y, Std_Y);
|
|
|
|
% ----------------------------
|
|
% Plotting
|
|
% ----------------------------
|
|
fileList = {'TFFermi_Theta0.mat'};
|
|
thetaLabels = {'\theta = 0^\circ', '\theta = 20^\circ', '\theta = 40^\circ'};
|
|
|
|
fig = figure(1); clf;
|
|
set(gcf,'Position', [100, 100, 1200, 500])
|
|
t = tiledlayout(1, 2, 'TileSpacing', 'compact', 'Padding', 'compact');
|
|
colors = lines(length(fileList));
|
|
legendEntries = cell(1, length(fileList));
|
|
|
|
for j = 1:length(fileList)
|
|
data = load(fullfile(baseDir, fileList{j}));
|
|
|
|
aS = data.SCATTERING_LENGTH_RANGE;
|
|
NUM_ATOMS_LIST = data.NUM_ATOMS_LIST;
|
|
if ndims(data.TF_Radii) > 2
|
|
TF_Radii = squeeze(data.TF_Radii);
|
|
else
|
|
TF_Radii = data.TF_Radii;
|
|
end
|
|
|
|
legendEntries{j} = sprintf('%s, a_s = %.2f a_0', thetaLabels{j}, aS);
|
|
|
|
% Rx
|
|
nexttile(1);
|
|
plot(NUM_ATOMS_LIST, TF_Radii(:,1), '-', ...
|
|
'Color', colors(j,:), 'LineWidth', 1.5, ...
|
|
'DisplayName', legendEntries{j}); hold on;
|
|
|
|
% Ry
|
|
nexttile(2);
|
|
plot(NUM_ATOMS_LIST, TF_Radii(:,2), '-', ...
|
|
'Color', colors(j,:), 'LineWidth', 1.5, ...
|
|
'DisplayName', legendEntries{j}); hold on;
|
|
end
|
|
|
|
% ----------------------------
|
|
% Add experimental point w/ error bars and annotation
|
|
% ----------------------------
|
|
% TF Radius X
|
|
nexttile(1);
|
|
errorbar(EstimatedAtomNumber, Avg_X, Std_X, ...
|
|
'd', 'MarkerSize', 8, 'MarkerFaceColor', [0.2 0.2 0.8], ...
|
|
'MarkerEdgeColor', 'k', 'Color', 'k', 'LineWidth', 1.2, ...
|
|
'DisplayName', '\theta = 0^\circ, Experimental Value');
|
|
|
|
% TF Radius Y
|
|
nexttile(2);
|
|
errorbar(EstimatedAtomNumber, Avg_Y, Std_Y, ...
|
|
'd', 'MarkerSize', 8, 'MarkerFaceColor', [0.2 0.2 0.8], ...
|
|
'MarkerEdgeColor', 'k', 'Color', 'k', 'LineWidth', 1.2, ...
|
|
'DisplayName', '\theta = 0^\circ, Experimental Value');
|
|
|
|
% ----------------------------
|
|
% Finalize
|
|
% ----------------------------
|
|
nexttile(1);
|
|
xlabel('Number of Atoms', 'FontSize', 16);
|
|
ylabel('TF Radius - X ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 16);
|
|
legend('FontSize', 12, 'Interpreter', 'tex', 'Location', 'bestoutside');
|
|
axis square; grid on;
|
|
|
|
nexttile(2);
|
|
xlabel('Number of Atoms', 'FontSize', 16);
|
|
ylabel('TF Radius - Y ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 16);
|
|
legend('FontSize', 12, 'Interpreter', 'tex', 'Location', 'bestoutside');
|
|
axis square; grid on;
|
|
|
|
sgtitle('[ \omega_x, \omega_y, \omega_z ] = 2 \pi \times [ 50, 20, 150 ] Hz', ...
|
|
'Interpreter', 'tex', 'FontSize', 18);
|