theta = 15; OptionsStruct = struct; OptionsStruct.NumberOfAtoms = 1E5; OptionsStruct.DipolarPolarAngle = deg2rad(theta); OptionsStruct.DipolarAzimuthAngle = deg2rad(0); OptionsStruct.ScatteringLength = 88; OptionsStruct.TrapFrequencies = [50, 20, 150]; OptionsStruct.TrapPotentialType = 'Harmonic'; OptionsStruct.NumberOfGridPoints = [128, 256, 64]; OptionsStruct.Dimensions = [50, 50, 10]; OptionsStruct.UseApproximationForLHY = true; OptionsStruct.IncludeDDICutOff = true; OptionsStruct.CutoffType = 'CustomCylindrical'; OptionsStruct.CustomCylindricalCutOffRadius = 20.0; OptionsStruct.CustomCylindricalCutOffHeight = 4.0; OptionsStruct.SimulationMode = 'ImaginaryTimeEvolution'; % 'ImaginaryTimeEvolution' | 'RealTimeEvolution' OptionsStruct.TimeStepSize = 1E-3; % in s OptionsStruct.MinimumTimeStepSize = 2E-6; % in s OptionsStruct.TimeCutOff = 2E6; % in s OptionsStruct.EnergyTolerance = 5E-10; OptionsStruct.ResidualTolerance = 1E-05; OptionsStruct.NoiseScaleFactor = 0.01; OptionsStruct.PlotLive = false; OptionsStruct.JobNumber = 0; OptionsStruct.RunOnGPU = true; OptionsStruct.SaveData = true; OptionsStruct.SaveDirectory = sprintf('./Results/Data_3D/TiltedDipoles%s', strrep(num2str(round(rad2deg(OptionsStruct.DipolarPolarAngle),2)), '.', '_')); options = Helper.convertstruct2cell(OptionsStruct); clear OptionsStruct sim = Simulator.DipolarGas(options{:}); pot = Simulator.Potentials(options{:}); sim.Potential = pot.trap(); %-% Run Simulation %-% [Params, Transf, psi, V, VDk] = sim.run(); %{ %% Imaginary-Time followed by Real-time % - Imaginary-Time OptionsStruct = struct; OptionsStruct.NumberOfAtoms = 1E5; OptionsStruct.DipolarPolarAngle = deg2rad(0); OptionsStruct.DipolarAzimuthAngle = deg2rad(0); OptionsStruct.ScatteringLength = 88; OptionsStruct.TrapFrequencies = [50, 20, 150]; OptionsStruct.TrapPotentialType = 'Harmonic'; OptionsStruct.NumberOfGridPoints = [128, 256, 64]; OptionsStruct.Dimensions = [50, 50, 10]; OptionsStruct.UseApproximationForLHY = true; OptionsStruct.IncludeDDICutOff = true; OptionsStruct.CutoffType = 'CustomCylindrical'; OptionsStruct.CustomCylindricalCutOffRadius = 20.0; OptionsStruct.CustomCylindricalCutOffHeight = 4.0; OptionsStruct.SimulationMode = 'ImaginaryTimeEvolution'; % 'ImaginaryTimeEvolution' | 'RealTimeEvolution' | 'EnergyMinimization' OptionsStruct.TimeStepSize = 5E-3; % in s OptionsStruct.MinimumTimeStepSize = 1E-6; % in s OptionsStruct.TimeCutOff = 1E2; % in s OptionsStruct.EnergyTolerance = 5E-10; OptionsStruct.ResidualTolerance = 1E-08; OptionsStruct.NoiseScaleFactor = 0.05; OptionsStruct.PlotLive = false; OptionsStruct.JobNumber = 0; OptionsStruct.RunOnGPU = true; OptionsStruct.SaveData = false; OptionsStruct.SaveDirectory = './Results/Data_3D/RealTimeDynamics'; options = Helper.convertstruct2cell(OptionsStruct); sim = Simulator.DipolarGas(options{:}); pot = Simulator.Potentials(options{:}); sim.Potential = pot.trap(); %-% Run Simulation %-% [Params, Transf, psi, V, VDk] = sim.run(); % Save only final state as initial wavefunction for real-time propagation mkdir(sprintf(OptionsStruct.SaveDirectory)) save(sprintf(strcat(OptionsStruct.SaveDirectory, '/psi_init.mat'),Params.njob),'psi','Transf','Params','VDk','V'); OptionsStruct.SimulationMode = 'RealTimeEvolution'; % 'ImaginaryTimeEvolution' | 'RealTimeEvolution' | 'EnergyMinimization' OptionsStruct.EquilibrationTime = 10E-3; OptionsStruct.QuenchTime = 30E-3; OptionsStruct.HoldTime = 50E-3; OptionsStruct.QuenchScatteringLength = false; OptionsStruct.RotateDipoles = true; OptionsStruct.FinalScatteringLength = 88; OptionsStruct.FinalDipolarPolarAngle = deg2rad(40); OptionsStruct.FinalDipolarAzimuthAngle = deg2rad(0); OptionsStruct.TimeStepSize = 1E-3; % in s OptionsStruct.NoiseScaleFactor = 0.010; OptionsStruct.PlotLive = false; OptionsStruct.JobNumber = 1; OptionsStruct.RunOnGPU = true; OptionsStruct.SaveData = true; options = Helper.convertstruct2cell(OptionsStruct); clear OptionsStruct sim = Simulator.DipolarGas(options{:}); pot = Simulator.Potentials(options{:}); sim.Potential = pot.trap(); %-% Run Simulation %-% [Params, Transf, psi, V, VDk] = sim.run(); %}