%% - Aspect Ratio: 2.8

OptionsStruct = struct;

OptionsStruct.NumberOfAtoms           = 5E5;
OptionsStruct.DipolarPolarAngle       = deg2rad(0);
OptionsStruct.DipolarAzimuthAngle     = 0;
OptionsStruct.ScatteringLength        = 85;

AspectRatio                           = 2.8;
HorizontalTrapFrequency               = 125;
VerticalTrapFrequency                 = AspectRatio * HorizontalTrapFrequency;
OptionsStruct.TrapFrequencies         = [HorizontalTrapFrequency, HorizontalTrapFrequency, VerticalTrapFrequency];
OptionsStruct.TrapPotentialType       = 'Harmonic';

OptionsStruct.NumberOfGridPoints      = [128, 128, 64];
OptionsStruct.Dimensions              = [18, 18, 18];
OptionsStruct.UseApproximationForLHY  = true;
OptionsStruct.IncludeDDICutOff        = true;
OptionsStruct.CutoffType              = 'Cylindrical';
OptionsStruct.SimulationMode          = 'ImaginaryTimeEvolution'; % 'ImaginaryTimeEvolution' | 'RealTimeEvolution'
OptionsStruct.TimeStepSize            = 1E-4;            % in s
OptionsStruct.MinimumTimeStepSize     = 2E-10;           % in s
OptionsStruct.TimeCutOff              = 2E6;             % in s
OptionsStruct.EnergyTolerance         = 5E-10;
OptionsStruct.ResidualTolerance       = 1E-08;
OptionsStruct.NoiseScaleFactor        = 0.01;

OptionsStruct.PlotLive                = false;
OptionsStruct.JobNumber               = 0;
OptionsStruct.RunOnGPU                = true;
OptionsStruct.SaveData                = true;
OptionsStruct.SaveDirectory           = sprintf('./Results/Data_3D/AspectRatio%s', strrep(num2str(AspectRatio), '.', '_'));
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();

%% - Aspect Ratio: 3.7

OptionsStruct = struct;

OptionsStruct.NumberOfAtoms           = 5E5;
OptionsStruct.DipolarPolarAngle       = deg2rad(0);
OptionsStruct.DipolarAzimuthAngle     = 0;
OptionsStruct.ScatteringLength        = 85;

AspectRatio                           = 3.7;
HorizontalTrapFrequency               = 125;
VerticalTrapFrequency                 = AspectRatio * HorizontalTrapFrequency;
OptionsStruct.TrapFrequencies         = [HorizontalTrapFrequency, HorizontalTrapFrequency, VerticalTrapFrequency];
OptionsStruct.TrapPotentialType       = 'Harmonic';

OptionsStruct.NumberOfGridPoints      = [128, 128, 64];
OptionsStruct.Dimensions              = [18, 18, 18];
OptionsStruct.UseApproximationForLHY  = true;
OptionsStruct.IncludeDDICutOff        = true;
OptionsStruct.CutoffType              = 'Cylindrical';
OptionsStruct.SimulationMode          = 'ImaginaryTimeEvolution'; % 'ImaginaryTimeEvolution' | 'RealTimeEvolution'
OptionsStruct.TimeStepSize            = 1E-4;            % in s
OptionsStruct.MinimumTimeStepSize     = 2E-10;           % in s
OptionsStruct.TimeCutOff              = 2E6;             % in s
OptionsStruct.EnergyTolerance         = 5E-10;
OptionsStruct.ResidualTolerance       = 1E-08;
OptionsStruct.NoiseScaleFactor        = 0.01;

OptionsStruct.PlotLive                = false;
OptionsStruct.JobNumber               = 0;
OptionsStruct.RunOnGPU                = true;
OptionsStruct.SaveData                = true;
OptionsStruct.SaveDirectory           = sprintf('./Results/Data_3D/AspectRatio%s', strrep(num2str(AspectRatio), '.', '_'));
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();

%% - Aspect Ratio: 3.8

OptionsStruct = struct;

OptionsStruct.NumberOfAtoms           = 5E5;
OptionsStruct.DipolarPolarAngle       = deg2rad(0);
OptionsStruct.DipolarAzimuthAngle     = 0;
OptionsStruct.ScatteringLength        = 85;

AspectRatio                           = 3.8;
HorizontalTrapFrequency               = 125;
VerticalTrapFrequency                 = AspectRatio * HorizontalTrapFrequency;
OptionsStruct.TrapFrequencies         = [HorizontalTrapFrequency, HorizontalTrapFrequency, VerticalTrapFrequency];
OptionsStruct.TrapPotentialType       = 'Harmonic';

OptionsStruct.NumberOfGridPoints      = [128, 128, 64];
OptionsStruct.Dimensions              = [18, 18, 18];
OptionsStruct.UseApproximationForLHY  = true;
OptionsStruct.IncludeDDICutOff        = true;
OptionsStruct.CutoffType              = 'Cylindrical';
OptionsStruct.SimulationMode          = 'ImaginaryTimeEvolution'; % 'ImaginaryTimeEvolution' | 'RealTimeEvolution'
OptionsStruct.TimeStepSize            = 1E-4;            % in s
OptionsStruct.MinimumTimeStepSize     = 2E-10;           % in s
OptionsStruct.TimeCutOff              = 2E6;             % in s
OptionsStruct.EnergyTolerance         = 5E-10;
OptionsStruct.ResidualTolerance       = 1E-08;
OptionsStruct.NoiseScaleFactor        = 0.01;

OptionsStruct.PlotLive                = false;
OptionsStruct.JobNumber               = 0;
OptionsStruct.RunOnGPU                = true;
OptionsStruct.SaveData                = true;
OptionsStruct.SaveDirectory           = sprintf('./Results/Data_3D/AspectRatio%s', strrep(num2str(AspectRatio), '.', '_'));
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();