From 58fc2dae02e5410de6f34d32fd890faf9f899627 Mon Sep 17 00:00:00 2001 From: Karthik Chandrashekara Date: Fri, 31 Jan 2025 19:54:53 +0100 Subject: [PATCH] New script to determine where the transition to stripes happens when tilting the dipole moments. --- .../run_on_cluster_transition_angle.m | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m diff --git a/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m new file mode 100644 index 0000000..ff784b2 --- /dev/null +++ b/Dipolar-Gas-Simulator/+Scripts/run_on_cluster_transition_angle.m @@ -0,0 +1,196 @@ +%% Tilting of the dipoles +% System size = [5 * l_rot, 5 * l_rot] + +theta_values = 1:1:14; + +%% v_z = 500 + +as_values_500 = [76.41, 76.54, 76.54, 76.54, 76.54, 76.67, 76.67, 76.80, 76.80, 76.93, 77.06, 77.06, 77.19, 77.32]; +num_iterations = length(theta_values); + +for i = 1:num_iterations + OptionsStruct = struct; + + OptionsStruct.NumberOfAtoms = 101250; + OptionsStruct.DipolarPolarAngle = deg2rad(theta_values(i)); + OptionsStruct.DipolarAzimuthAngle = 0; + OptionsStruct.ScatteringLength = as_values_500(i); + + OptionsStruct.TrapFrequencies = [0, 0, 500]; + OptionsStruct.TrapPotentialType = 'None'; + + OptionsStruct.NumberOfGridPoints = [128, 128]; + OptionsStruct.Dimensions = [9, 9]; + OptionsStruct.TimeStepSize = 0.005; % in s + OptionsStruct.MinimumTimeStepSize = 1E-5; % in s + OptionsStruct.TimeCutOff = 2E6; % 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 = i; % Assign a unique JobNumber per iteration + OptionsStruct.RunOnGPU = true; + OptionsStruct.SaveData = true; + OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/TransitionAngle/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 + +%% v_z = 750 + +as_values_750 = [70.52, 70.52, 70.52, 70.52, 70.52, 70.65, 70.65, 70.78, 70.79, 70.92, 71.05, 71.05, 71.18, 71.31, 71.44, 71.70]; +num_iterations = length(theta_values); + +for i = 1:num_iterations + OptionsStruct = struct; + + OptionsStruct.NumberOfAtoms = 61250; + OptionsStruct.DipolarPolarAngle = deg2rad(theta_values(i)); + OptionsStruct.DipolarAzimuthAngle = 0; + OptionsStruct.ScatteringLength = as_values_750(i); + + OptionsStruct.TrapFrequencies = [0, 0, 750]; + OptionsStruct.TrapPotentialType = 'None'; + + OptionsStruct.NumberOfGridPoints = [128, 128]; + OptionsStruct.Dimensions = [7, 7]; + OptionsStruct.TimeStepSize = 0.005; % in s + OptionsStruct.MinimumTimeStepSize = 1E-5; % in s + OptionsStruct.TimeCutOff = 2E6; % in s + OptionsStruct.EnergyTolerance = 5E-10; + OptionsStruct.ResidualTolerance = 1E-05; + OptionsStruct.NoiseScaleFactor = 0.05; + + OptionsStruct.MaxIterations = 10; + OptionsStruct.VariationalWidth = 0.85; + OptionsStruct.WidthLowerBound = 0.01; + OptionsStruct.WidthUpperBound = 12; + OptionsStruct.WidthCutoff = 5e-3; + + OptionsStruct.PlotLive = false; + OptionsStruct.JobNumber = i; % Assign a unique JobNumber per iteration + OptionsStruct.RunOnGPU = true; + OptionsStruct.SaveData = true; + OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/TransitionAngle/Hz750'; + + 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 + +%% v_z = 1000 + +as_values_1000 = [65.95, 65.95, 65.95, 65.95, 66.08, 66.08, 66.08, 66.21, 66.34, 66.34, 66.47, 66.60, 66.73, 66.86, 66.99, 67.26]; +num_iterations = length(theta_values); + +for i = 1:num_iterations + OptionsStruct = struct; + + OptionsStruct.NumberOfAtoms = 45000; + OptionsStruct.DipolarPolarAngle = deg2rad(theta_values(i)); + OptionsStruct.DipolarAzimuthAngle = 0; + OptionsStruct.ScatteringLength = as_values_1000(i); + + OptionsStruct.TrapFrequencies = [0, 0, 1000]; + OptionsStruct.TrapPotentialType = 'None'; + + OptionsStruct.NumberOfGridPoints = [128, 128]; + OptionsStruct.Dimensions = [6, 6]; + OptionsStruct.TimeStepSize = 0.005; % in s + OptionsStruct.MinimumTimeStepSize = 1E-5; % in s + OptionsStruct.TimeCutOff = 2E6; % 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 = i; % Assign a unique JobNumber per iteration + OptionsStruct.RunOnGPU = true; + OptionsStruct.SaveData = true; + OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/TransitionAngle/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(); +end + +%% v_z = 2000 + +as_values_2000 = [53.92, 53.92, 53.92, 54.05, 54.05, 54.05, 54.18, 54.31, 54.31, 54.44, 54.57, 54.70, 54.96, 55.1, 55.23, 55.49]; +num_iterations = length(theta_values); + +for i = 1:num_iterations + OptionsStruct = struct; + + OptionsStruct.NumberOfAtoms = 31250; + OptionsStruct.DipolarPolarAngle = deg2rad(theta_values(i)); + OptionsStruct.DipolarAzimuthAngle = 0; + OptionsStruct.ScatteringLength = as_values_2000(i); + + OptionsStruct.TrapFrequencies = [0, 0, 2000]; + OptionsStruct.TrapPotentialType = 'None'; + + OptionsStruct.NumberOfGridPoints = [128, 128]; + OptionsStruct.Dimensions = [5, 5]; + OptionsStruct.TimeStepSize = 0.005; % in s + OptionsStruct.MinimumTimeStepSize = 1E-5; % in s + OptionsStruct.TimeCutOff = 2E6; % 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 = i; % Assign a unique JobNumber per iteration + OptionsStruct.RunOnGPU = true; + OptionsStruct.SaveData = true; + OptionsStruct.SaveDirectory = './Results/Data_TiltingOfDipoles/TransitionAngle/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(); +end \ No newline at end of file