From a3b42649a8b77f78e495a7c19fa5464901543ec6 Mon Sep 17 00:00:00 2001 From: Karthik Chandrashekara Date: Tue, 11 Feb 2025 20:25:15 +0100 Subject: [PATCH] Adjusted parameters, addition of comments, new script to loop over dimensions to determine appropriate system size. --- .../+Scripts/analyzeGSWavefunction.m | 2 +- .../analyzeGSWavefunction_in_plane_trap.m | 2 +- .../+Scripts/extractLatticeProperties.m | 67 ++++--- Dipolar-Gas-Simulator/+Scripts/run_locally.m | 17 +- .../+Scripts/run_on_cluster.m | 24 +-- .../run_on_cluster_determine_system_size.m | 52 +++++ .../+Scripts/run_on_cluster_in_plane_trap.m | 182 +----------------- .../run_on_cluster_transition_angle.m | 4 +- 8 files changed, 126 insertions(+), 224 deletions(-) create mode 100644 Dipolar-Gas-Simulator/+Scripts/run_on_cluster_determine_system_size.m diff --git a/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction.m b/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction.m index af1ba73..5ca1071 100644 --- a/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction.m +++ b/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction.m @@ -56,7 +56,7 @@ function [contrast, periodX, periodY] = analyzeGSWavefunction(folder_path, run_i %------------------ Lattice Properties ------------------ % - [kx, ky, fftMagnitude, lattice_type, periodX, periodY, freq_x, freq_y] = Scripts.extractLatticeProperties(nxyScaled, x, y); + [fftMagnitude, lattice_type, periodX, periodY, freq_x, freq_y, kx, ky] = Scripts.extractLatticeProperties(nxyScaled, x, y); %------------------ Plotting ------------------ % diff --git a/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction_in_plane_trap.m b/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction_in_plane_trap.m index 8eab17d..1228b22 100644 --- a/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction_in_plane_trap.m +++ b/Dipolar-Gas-Simulator/+Scripts/analyzeGSWavefunction_in_plane_trap.m @@ -56,7 +56,7 @@ function [contrast, periodX, periodY] = analyzeGSWavefunction(folder_path, run_i %------------------ Lattice Properties ------------------ % - [kx, ky, fftMagnitude, lattice_type, periodX, periodY, freq_x, freq_y] = Scripts.extractLatticeProperties(nxyScaled, x, y); + [fftMagnitude, lattice_type, periodX, periodY, freq_x, freq_y, kx, ky] = Scripts.extractLatticeProperties(nxyScaled, x, y); %------------------ Plotting ------------------ % diff --git a/Dipolar-Gas-Simulator/+Scripts/extractLatticeProperties.m b/Dipolar-Gas-Simulator/+Scripts/extractLatticeProperties.m index 74c90c3..d82edc9 100644 --- a/Dipolar-Gas-Simulator/+Scripts/extractLatticeProperties.m +++ b/Dipolar-Gas-Simulator/+Scripts/extractLatticeProperties.m @@ -1,4 +1,4 @@ -function [kx, ky, fftMagnitude, lattice_type, dx_um, dy_um, freq_x, freq_y] = extractLatticeProperties(I, x, y) +function [fftMagnitude, lattice_type, dx_um, dy_um, freq_x, freq_y, kx, ky] = extractLatticeProperties(I, x, y) % Detects lattice geometry, extracts periodic spacings, and reconstructs real-space lattice vectors. % Handles arbitrary lattice geometries % @@ -8,63 +8,66 @@ function [kx, ky, fftMagnitude, lattice_type, dx_um, dy_um, freq_x, freq_y] = ex % y - Y-coordinates in micrometers. % % Outputs: + % fftMagnitude - 2D FFT of image % lattice_type - Identified lattice type (Square, Rectangular, Hexagonal, Oblique, or Unknown) - % dx_um - Spacing along x-axis in micrometers. - % dy_um - Spacing along y-axis in micrometers. - % real_lattice_vectors - [2x2] matrix of lattice vectors in micrometers. - % angle_in_reciprocal_space - Angle of the reciprocal lattice primitive vectors in degrees. + % dx_um - Spacing along x-axis in micrometers. + % dy_um - Spacing along y-axis in micrometers. + % freq_x - x component of two smallest non-zero frequency peaks in micrometers^-1 + % freq_y - y component of two smallest non-zero frequency peaks in micrometers^-1 + % kx - 2 * pi * Frequency axis in X + % ky - 2 * pi * Frequency axis in Y % Compute 2D Fourier Transform F = fft2(double(I)); fftMagnitude = abs(fftshift(F))'; % Shift zero frequency to center % Calculate frequency increment (frequency axes) - Nx = length(x); % grid size along X - Ny = length(y); % grid size along Y - dx = mean(diff(x)); % real space increment in the X direction (in micrometers) - dy = mean(diff(y)); % real space increment in the Y direction (in micrometers) - dvx = 1 / (Nx * dx); % reciprocal space increment in the X direction (in micrometers^-1) - dvy = 1 / (Ny * dy); % reciprocal space increment in the Y direction (in micrometers^-1) + Nx = length(x); % grid size along X + Ny = length(y); % grid size along Y + dx = mean(diff(x)); % real space increment in the X direction (in micrometers) + dy = mean(diff(y)); % real space increment in the Y direction (in micrometers) + dvx = 1 / (Nx * dx); % reciprocal space increment in the X direction (in micrometers^-1) + dvy = 1 / (Ny * dy); % reciprocal space increment in the Y direction (in micrometers^-1) % Create the frequency axes - vx = (-Nx/2:Nx/2-1) * dvx; % Frequency axis in X (micrometers^-1) - vy = (-Ny/2:Ny/2-1) * dvy; % Frequency axis in Y (micrometers^-1) + vx = (-Nx/2:Nx/2-1) * dvx; % Frequency axis in X (micrometers^-1) + vy = (-Ny/2:Ny/2-1) * dvy; % Frequency axis in Y (micrometers^-1) % Calculate maximum frequencies - % kx_max = pi / dx; - % ky_max = pi / dy; + % kx_max = pi / dx; + % ky_max = pi / dy; % Generate reciprocal axes - % kx = linspace(-kx_max, kx_max * (Nx-2)/Nx, Nx); - % ky = linspace(-ky_max, ky_max * (Ny-2)/Ny, Ny); + % kx = linspace(-kx_max, kx_max * (Nx-2)/Nx, Nx); + % ky = linspace(-ky_max, ky_max * (Ny-2)/Ny, Ny); % Create the Wavenumber axes - kx = 2*pi*vx; % Wavenumber axis in X - ky = 2*pi*vy; % Wavenumber axis in Y + kx = 2*pi*vx; % Wavenumber axis in X + ky = 2*pi*vy; % Wavenumber axis in Y % Find peaks in Fourier domain - peak_mask = imregionalmax(fftMagnitude); % Detect local maxima - threshold = max(fftMagnitude(:)) * 0.1; % Adaptive threshold - peak_mask = peak_mask & (fftMagnitude > threshold); + peak_mask = imregionalmax(fftMagnitude); % Detect local maxima + threshold = max(fftMagnitude(:)) * 0.1; % Adaptive threshold + peak_mask = peak_mask & (fftMagnitude > threshold); % Extract peak positions [rows, cols] = find(peak_mask); % Convert indices to frequency values - freq_x = vx(cols); - freq_y = vy(rows); - distances = sqrt(freq_x.^2 + freq_y.^2); + freq_x = vx(cols); + freq_y = vy(rows); + distances = sqrt(freq_x.^2 + freq_y.^2); % Remove DC component (center peak) - valid_idx = distances > 1e-3; - freq_x = freq_x(valid_idx); - freq_y = freq_y(valid_idx); - distances = distances(valid_idx); + valid_idx = distances > 1e-3; + freq_x = freq_x(valid_idx); + freq_y = freq_y(valid_idx); + distances = distances(valid_idx); % Sort by frequency magnitude - [~, idx] = sort(distances); - freq_x = freq_x(idx); - freq_y = freq_y(idx); + [~, idx] = sort(distances); + freq_x = freq_x(idx); + freq_y = freq_y(idx); % Select first two unique peaks as lattice vectors unique_vectors = unique([freq_x', freq_y'], 'rows', 'stable'); diff --git a/Dipolar-Gas-Simulator/+Scripts/run_locally.m b/Dipolar-Gas-Simulator/+Scripts/run_locally.m index a2b4a5b..fd1980d 100644 --- a/Dipolar-Gas-Simulator/+Scripts/run_locally.m +++ b/Dipolar-Gas-Simulator/+Scripts/run_locally.m @@ -303,6 +303,21 @@ JobNumber = 0; [contrast, period_X, period_Y] = Scripts.analyzeGSWavefunction(SaveDirectory, JobNumber); %% - Analysis SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz500'; -JobNumber = 1; +JobNumber = 0; % Plotter.visualizeGSWavefunction2D(SaveDirectory, JobNumber) [contrast, period_X, period_Y] = Scripts.analyzeGSWavefunction_in_plane_trap(SaveDirectory, JobNumber); +%% - Analysis +SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz750'; +JobNumber = 0; +% Plotter.visualizeGSWavefunction2D(SaveDirectory, JobNumber) +[contrast, period_X, period_Y] = Scripts.analyzeGSWavefunction_in_plane_trap(SaveDirectory, JobNumber); +%% - Analysis +SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz1000'; +JobNumber = 0; +% Plotter.visualizeGSWavefunction2D(SaveDirectory, JobNumber) +[contrast, period_X, period_Y] = Scripts.analyzeGSWavefunction_in_plane_trap(SaveDirectory, JobNumber); +%% - Analysis +SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz2000'; +JobNumber = 0; +% Plotter.visualizeGSWavefunction2D(SaveDirectory, JobNumber) +[contrast, period_X, period_Y] = Scripts.analyzeGSWavefunction_in_plane_trap(SaveDirectory, JobNumber); \ No newline at end of file diff --git a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster.m b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster.m index fe38444..bb49b4f 100644 --- a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster.m +++ b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster.m @@ -1,16 +1,16 @@ %% Tilting of the dipoles % With an in-plane harmonic trap -%% v_z = 500, theta = 0 +%% v_z = 1000, theta = 0 OptionsStruct = struct; -OptionsStruct.NumberOfAtoms = 101250; +OptionsStruct.NumberOfAtoms = 45000; OptionsStruct.DipolarPolarAngle = 0; OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 70.00; +OptionsStruct.ScatteringLength = 50.0; -OptionsStruct.TrapFrequencies = [50, 50, 500]; +OptionsStruct.TrapFrequencies = [100, 100, 1000]; OptionsStruct.TrapPotentialType = 'Harmonic'; OptionsStruct.NumberOfGridPoints = [256, 256]; @@ -23,7 +23,7 @@ OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.05; OptionsStruct.MaxIterations = 10; -OptionsStruct.VariationalWidth = 1.5; +OptionsStruct.VariationalWidth = 0.7; OptionsStruct.WidthLowerBound = 0.01; OptionsStruct.WidthUpperBound = 12; OptionsStruct.WidthCutoff = 5e-3; @@ -32,7 +32,7 @@ OptionsStruct.PlotLive = false; OptionsStruct.JobNumber = 0; OptionsStruct.RunOnGPU = true; OptionsStruct.SaveData = true; -OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz500'; +OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz1000'; options = Helper.convertstruct2cell(OptionsStruct); clear OptionsStruct @@ -43,16 +43,16 @@ solver.Potential = pot.trap(); %-% Run Solver %-% [Params, Transf, psi, V, VDk] = solver.run(); -%% v_z = 500, theta = 15 +%% v_z = 1000, theta = 15 OptionsStruct = struct; -OptionsStruct.NumberOfAtoms = 101250; +OptionsStruct.NumberOfAtoms = 45000; OptionsStruct.DipolarPolarAngle = deg2rad(15); OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 71.00; +OptionsStruct.ScatteringLength = 50.0; -OptionsStruct.TrapFrequencies = [50, 50, 500]; +OptionsStruct.TrapFrequencies = [100, 100, 1000]; OptionsStruct.TrapPotentialType = 'Harmonic'; OptionsStruct.NumberOfGridPoints = [256, 256]; @@ -65,7 +65,7 @@ OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.05; OptionsStruct.MaxIterations = 10; -OptionsStruct.VariationalWidth = 1.5; +OptionsStruct.VariationalWidth = 0.7; OptionsStruct.WidthLowerBound = 0.01; OptionsStruct.WidthUpperBound = 12; OptionsStruct.WidthCutoff = 5e-3; @@ -74,7 +74,7 @@ OptionsStruct.PlotLive = false; OptionsStruct.JobNumber = 1; OptionsStruct.RunOnGPU = true; OptionsStruct.SaveData = true; -OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz500'; +OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz1000'; options = Helper.convertstruct2cell(OptionsStruct); clear OptionsStruct diff --git a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_determine_system_size.m b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_determine_system_size.m new file mode 100644 index 0000000..e41bb7f --- /dev/null +++ b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_determine_system_size.m @@ -0,0 +1,52 @@ +%% Tilting of the dipoles +% Atom Number Density <= 1250 ppum + +%% v_z = 500 + +% Loop over Lx and Ly values +for Lx = 5:1:10 + for Ly = 5:1:10 + % Initialize OptionsStruct + OptionsStruct = struct; + + % Assign values to OptionsStruct + OptionsStruct.NumberOfAtoms = 101250; + OptionsStruct.DipolarPolarAngle = deg2rad(5); + OptionsStruct.DipolarAzimuthAngle = 0; + OptionsStruct.ScatteringLength = 75.00; + + OptionsStruct.TrapFrequencies = [0, 0, 500]; + OptionsStruct.TrapPotentialType = 'None'; + + OptionsStruct.NumberOfGridPoints = [128, 128]; + OptionsStruct.Dimensions = [Lx, Ly]; + OptionsStruct.TimeStepSize = 0.005; % in s + OptionsStruct.MinimumTimeStepSize = 1E-5; % in s + OptionsStruct.TimeCutOff = 1E5; % in s + OptionsStruct.EnergyTolerance = 5E-10; + OptionsStruct.ResidualTolerance = 1E-05; + OptionsStruct.NoiseScaleFactor = 0.05; + + OptionsStruct.MaxIterations = 10; + OptionsStruct.VariationalWidth = 1.2; + OptionsStruct.WidthLowerBound = 0.01; + OptionsStruct.WidthUpperBound = 12; + OptionsStruct.WidthCutoff = 5e-3; + + OptionsStruct.PlotLive = false; + OptionsStruct.JobNumber = (Lx - 5) * (10 - 5 + 1) + (Ly - 4); % Unique JobNumber based on Lx and Ly + OptionsStruct.RunOnGPU = true; + OptionsStruct.SaveData = true; + OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/TransitionAngle/FindSystemSize/Hz500/'; + + options = Helper.convertstruct2cell(OptionsStruct); + clear OptionsStruct + + solver = VariationalSolver2D.DipolarGas(options{:}); + pot = VariationalSolver2D.Potentials(options{:}); + solver.Potential = pot.trap(); + + % Run Solver + [Params, Transf, psi, V, VDk] = solver.run(); + end +end diff --git a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_in_plane_trap.m b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_in_plane_trap.m index 25df0c5..f9704b4 100644 --- a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_in_plane_trap.m +++ b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_in_plane_trap.m @@ -17,7 +17,7 @@ OptionsStruct.NumberOfGridPoints = [256, 256]; OptionsStruct.Dimensions = [35, 35]; OptionsStruct.TimeStepSize = 0.005; % in s OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 2E6; % in s +OptionsStruct.TimeCutOff = 1E6; % in s OptionsStruct.EnergyTolerance = 5E-10; OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.05; @@ -50,7 +50,7 @@ OptionsStruct = struct; OptionsStruct.NumberOfAtoms = 101250; OptionsStruct.DipolarPolarAngle = deg2rad(15); OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 71.00; +OptionsStruct.ScatteringLength = 70.00; OptionsStruct.TrapFrequencies = [100, 100, 500]; OptionsStruct.TrapPotentialType = 'Harmonic'; @@ -59,7 +59,7 @@ OptionsStruct.NumberOfGridPoints = [256, 256]; OptionsStruct.Dimensions = [35, 35]; OptionsStruct.TimeStepSize = 0.005; % in s OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 2E6; % in s +OptionsStruct.TimeCutOff = 1E6; % in s OptionsStruct.EnergyTolerance = 5E-10; OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.05; @@ -92,7 +92,7 @@ OptionsStruct = struct; OptionsStruct.NumberOfAtoms = 61250; OptionsStruct.DipolarPolarAngle = 0; OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 64.0; +OptionsStruct.ScatteringLength = 60.0; OptionsStruct.TrapFrequencies = [100, 100, 750]; OptionsStruct.TrapPotentialType = 'Harmonic'; @@ -101,7 +101,7 @@ OptionsStruct.NumberOfGridPoints = [256, 256]; OptionsStruct.Dimensions = [35, 35]; OptionsStruct.TimeStepSize = 0.005; % in s OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 1E5; % in s +OptionsStruct.TimeCutOff = 1E6; % in s OptionsStruct.EnergyTolerance = 5E-10; OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.05; @@ -134,7 +134,7 @@ OptionsStruct = struct; OptionsStruct.NumberOfAtoms = 61250; OptionsStruct.DipolarPolarAngle = deg2rad(15); OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 64.0; +OptionsStruct.ScatteringLength = 60.0; OptionsStruct.TrapFrequencies = [100, 100, 750]; OptionsStruct.TrapPotentialType = 'Harmonic'; @@ -143,7 +143,7 @@ OptionsStruct.NumberOfGridPoints = [256, 256]; OptionsStruct.Dimensions = [35, 35]; OptionsStruct.TimeStepSize = 0.005; % in s OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 1E5; % in s +OptionsStruct.TimeCutOff = 1E6; % in s OptionsStruct.EnergyTolerance = 5E-10; OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.05; @@ -166,173 +166,5 @@ solver = VariationalSolver2D.DipolarGas(options{: pot = VariationalSolver2D.Potentials(options{:}); solver.Potential = pot.trap(); -%-% Run Solver %-% -[Params, Transf, psi, V, VDk] = solver.run(); - -%% v_z = 1000, theta = 0 - -OptionsStruct = struct; - -OptionsStruct.NumberOfAtoms = 45000; -OptionsStruct.DipolarPolarAngle = 0; -OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 59.0; - -OptionsStruct.TrapFrequencies = [100, 100, 1000]; -OptionsStruct.TrapPotentialType = 'Harmonic'; - -OptionsStruct.NumberOfGridPoints = [256, 256]; -OptionsStruct.Dimensions = [35, 35]; -OptionsStruct.TimeStepSize = 0.005; % in s -OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 1E5; % in s -OptionsStruct.EnergyTolerance = 5E-10; -OptionsStruct.ResidualTolerance = 1E-05; -OptionsStruct.NoiseScaleFactor = 0.05; - -OptionsStruct.MaxIterations = 10; -OptionsStruct.VariationalWidth = 0.7; -OptionsStruct.WidthLowerBound = 0.01; -OptionsStruct.WidthUpperBound = 12; -OptionsStruct.WidthCutoff = 5e-3; - -OptionsStruct.PlotLive = false; -OptionsStruct.JobNumber = 0; -OptionsStruct.RunOnGPU = true; -OptionsStruct.SaveData = true; -OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz1000'; -options = Helper.convertstruct2cell(OptionsStruct); -clear OptionsStruct - -solver = VariationalSolver2D.DipolarGas(options{:}); -pot = VariationalSolver2D.Potentials(options{:}); -solver.Potential = pot.trap(); - -%-% Run Solver %-% -[Params, Transf, psi, V, VDk] = solver.run(); - -%% v_z = 1000, theta = 15 - -OptionsStruct = struct; - -OptionsStruct.NumberOfAtoms = 45000; -OptionsStruct.DipolarPolarAngle = deg2rad(15); -OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 60.0; - -OptionsStruct.TrapFrequencies = [100, 100, 1000]; -OptionsStruct.TrapPotentialType = 'Harmonic'; - -OptionsStruct.NumberOfGridPoints = [256, 256]; -OptionsStruct.Dimensions = [35, 35]; -OptionsStruct.TimeStepSize = 0.005; % in s -OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 1E5; % in s -OptionsStruct.EnergyTolerance = 5E-10; -OptionsStruct.ResidualTolerance = 1E-05; -OptionsStruct.NoiseScaleFactor = 0.05; - -OptionsStruct.MaxIterations = 10; -OptionsStruct.VariationalWidth = 0.7; -OptionsStruct.WidthLowerBound = 0.01; -OptionsStruct.WidthUpperBound = 12; -OptionsStruct.WidthCutoff = 5e-3; - -OptionsStruct.PlotLive = false; -OptionsStruct.JobNumber = 1; -OptionsStruct.RunOnGPU = true; -OptionsStruct.SaveData = true; -OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz1000'; -options = Helper.convertstruct2cell(OptionsStruct); -clear OptionsStruct - -solver = VariationalSolver2D.DipolarGas(options{:}); -pot = VariationalSolver2D.Potentials(options{:}); -solver.Potential = pot.trap(); - -%-% Run Solver %-% -[Params, Transf, psi, V, VDk] = solver.run(); - -%% v_z = 2000, theta = 0 - -OptionsStruct = struct; - -OptionsStruct.NumberOfAtoms = 31250; -OptionsStruct.DipolarPolarAngle = 0; -OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 47; - -OptionsStruct.TrapFrequencies = [100, 100, 2000]; -OptionsStruct.TrapPotentialType = 'Harmonic'; - -OptionsStruct.NumberOfGridPoints = [256, 256]; -OptionsStruct.Dimensions = [35, 35]; -OptionsStruct.TimeStepSize = 0.005; % in s -OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 1E5; % in s -OptionsStruct.EnergyTolerance = 5E-10; -OptionsStruct.ResidualTolerance = 1E-05; -OptionsStruct.NoiseScaleFactor = 0.05; - -OptionsStruct.MaxIterations = 10; -OptionsStruct.VariationalWidth = 0.5; -OptionsStruct.WidthLowerBound = 0.01; -OptionsStruct.WidthUpperBound = 12; -OptionsStruct.WidthCutoff = 5e-3; - -OptionsStruct.PlotLive = false; -OptionsStruct.JobNumber = 0; -OptionsStruct.RunOnGPU = true; -OptionsStruct.SaveData = true; -OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz2000'; -options = Helper.convertstruct2cell(OptionsStruct); -clear OptionsStruct - -solver = VariationalSolver2D.DipolarGas(options{:}); -pot = VariationalSolver2D.Potentials(options{:}); -solver.Potential = pot.trap(); - -%-% Run Solver %-% -[Params, Transf, psi, V, VDk] = solver.run(); - -%% v_z = 2000, theta = 15 - -OptionsStruct = struct; - -OptionsStruct.NumberOfAtoms = 31250; -OptionsStruct.DipolarPolarAngle = deg2rad(15); -OptionsStruct.DipolarAzimuthAngle = 0; -OptionsStruct.ScatteringLength = 48; - -OptionsStruct.TrapFrequencies = [100, 100, 2000]; -OptionsStruct.TrapPotentialType = 'Harmonic'; - -OptionsStruct.NumberOfGridPoints = [256, 256]; -OptionsStruct.Dimensions = [35, 35]; -OptionsStruct.TimeStepSize = 0.005; % in s -OptionsStruct.MinimumTimeStepSize = 1E-5; % in s -OptionsStruct.TimeCutOff = 1E5; % in s -OptionsStruct.EnergyTolerance = 5E-10; -OptionsStruct.ResidualTolerance = 1E-05; -OptionsStruct.NoiseScaleFactor = 0.05; - -OptionsStruct.MaxIterations = 10; -OptionsStruct.VariationalWidth = 0.5; -OptionsStruct.WidthLowerBound = 0.01; -OptionsStruct.WidthUpperBound = 12; -OptionsStruct.WidthCutoff = 5e-3; - -OptionsStruct.PlotLive = false; -OptionsStruct.JobNumber = 1; -OptionsStruct.RunOnGPU = true; -OptionsStruct.SaveData = true; -OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/HarmonicTrap/Hz2000'; -options = Helper.convertstruct2cell(OptionsStruct); -clear OptionsStruct - -solver = VariationalSolver2D.DipolarGas(options{:}); -pot = VariationalSolver2D.Potentials(options{:}); -solver.Potential = pot.trap(); - %-% Run Solver %-% [Params, Transf, psi, V, VDk] = solver.run(); \ No newline at end of file diff --git a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m index 25f4c30..78b1a03 100644 --- a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m +++ b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m @@ -1,6 +1,6 @@ %% Tilting of the dipoles -% Atom Number = 1250 ppum -% System size = [5 * l_rot, 5 * l_rot] +% Atom Number Density = 1250 ppum +% System size = [5 * l_rot, 5 * l_rot] theta_values = 0:1:7;