From 05bffb768bbee31246ed5f6a151cf2ee9f61c3fd Mon Sep 17 00:00:00 2001 From: Karthik Date: Sat, 3 May 2025 14:06:38 +0200 Subject: [PATCH] Modified script to create and visualize phase diagram --- .../+Scripts/createPhaseDiagram.m | 17 +++++++----- Dipolar-Gas-Simulator/+Scripts/run_locally.m | 26 ++++++++++++++++++- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Dipolar-Gas-Simulator/+Scripts/createPhaseDiagram.m b/Dipolar-Gas-Simulator/+Scripts/createPhaseDiagram.m index 4a53c33..6097ca9 100644 --- a/Dipolar-Gas-Simulator/+Scripts/createPhaseDiagram.m +++ b/Dipolar-Gas-Simulator/+Scripts/createPhaseDiagram.m @@ -1,9 +1,12 @@ function createPhaseDiagram() % Define axis values SCATTERING_LENGTH_RANGE = [79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0]; - NUM_ATOMS_LIST = [50000 60000 70000 80000]; - - M = zeros(12, 4); % Phase diagram matrix + NUM_ATOMS_LIST = 50000:5000:105000; + + xlen = length(NUM_ATOMS_LIST); + ylen = length(SCATTERING_LENGTH_RANGE); + + M = zeros(xlen,ylen); % Phase diagram matrix fig = figure('Name', 'Manual Phase Diagram Input', ... 'NumberTitle', 'off', ... @@ -14,14 +17,14 @@ function createPhaseDiagram() colormap(parula); colorbar; axis equal tight; - xticks(1:4); - yticks(1:12); + xticks(1:xlen); + yticks(1:ylen); xticklabels(string(NUM_ATOMS_LIST)); yticklabels(string(SCATTERING_LENGTH_RANGE)); xlabel('Number of Atoms'); ylabel('Scattering Length (a0)'); grid on; - title('Click a cell to label it. Press "q" to quit.'); + title('Click a cell to label it. Press "q" to quit.'); % Zero-temperature Phase Diagram set(fig, 'WindowButtonDownFcn', @clickCallback); uiwait(fig); % Wait until user quits @@ -36,7 +39,7 @@ function createPhaseDiagram() C = get(gca, 'CurrentPoint'); col = round(C(1,1)); row = round(C(1,2)); - if row >= 1 && row <= 12 && col >= 1 && col <= 4 + if row >= 1 && row <= ylen && col >= 1 && col <= xlen prompt = sprintf('Enter label for scattering length %.1f and N = %d:', ... SCATTERING_LENGTH_RANGE(row), NUM_ATOMS_LIST(col)); answer = inputdlg(prompt, 'Input Label', 1); diff --git a/Dipolar-Gas-Simulator/+Scripts/run_locally.m b/Dipolar-Gas-Simulator/+Scripts/run_locally.m index a2a9f9e..3f5fb3e 100644 --- a/Dipolar-Gas-Simulator/+Scripts/run_locally.m +++ b/Dipolar-Gas-Simulator/+Scripts/run_locally.m @@ -599,4 +599,28 @@ Plotter.visualizeGSWavefunction(SaveDirectory, JobNumber) %% SaveDirectory = './Results/Data_3D/GradientDescent/'; JobNumber = 1; -Plotter.visualizeGSWavefunction(SaveDirectory, JobNumber) \ No newline at end of file +Plotter.visualizeGSWavefunction(SaveDirectory, JobNumber) +%% Visualize phase diagram +load('phase_diagram_matrix.mat') +PhaseDiagramMatrix = M; +ScatteringLengths = SCATTERING_LENGTH_RANGE; +NumberOfAtoms = NUM_ATOMS_LIST * 1E-5; +xlen = length(ScatteringLengths); +ylen = length(NumberOfAtoms); + +figure(1); +set(gcf,'Position',[100 100 950 750]) +set(gca,'FontSize',16,'Box','On','Linewidth',2); +hImg = imagesc(M); +set(gca, 'YDir', 'normal'); +colormap(parula); +% colorbar; +axis equal tight; +xticks(1:xlen); +yticks(1:ylen); +xticklabels(string(NumberOfAtoms)); +yticklabels(string(ScatteringLengths)); +xlabel('Number of Atoms (x 10^5)', FontSize=16); +ylabel('Scattering Length (a0)', FontSize=16); +title('Zero-temperature Phase Diagram for \theta = 0', 'Interpreter', 'tex', FontSize=16); +grid on; \ No newline at end of file