diff --git a/+Scripts/optimizingForSidebandEnhancement.m b/+Scripts/optimizingForSidebandEnhancement.m new file mode 100644 index 0000000..fbe76d5 --- /dev/null +++ b/+Scripts/optimizingForSidebandEnhancement.m @@ -0,0 +1,48 @@ +OptionsStruct = struct; +OptionsStruct.ErrorEstimationMethod = 'bootstrap'; % 'jackknife' | 'bootstrap' +OptionsStruct.NumberOfAtoms = 5000; +OptionsStruct.TimeStep = 50e-06; % in s +OptionsStruct.SimulationTime = 4e-03; % in s +OptionsStruct.SpontaneousEmission = true; +OptionsStruct.SidebandBeam = true; +OptionsStruct.PushBeam = true; +OptionsStruct.Gravity = true; +OptionsStruct.BackgroundCollision = true; +OptionsStruct.SaveData = true; +% OptionsStruct.SaveDirectory = ''; +options = Helper.convertstruct2cell(OptionsStruct); +clear OptionsStruct + +Oven = Simulator.Oven(options{:}); +MOT2D = Simulator.TwoDimensionalMOT(options{:}); + +%% +MOT2D.NumberOfAtoms = 5000; +MOT2D.TotalPower = 0.4; +MOT2D.SidebandBeam = true; +NumberOfPointsForFirstParam = 10; %iterations of the simulation +NumberOfPointsForSecondParam = 10; +DetuningArray = linspace(-0.5, -5.0, NumberOfPointsForFirstParam) * Helper.PhysicsConstants.BlueLinewidth; +PowerArray = linspace(0.1, 1.0, NumberOfPointsForSecondParam) * MOT2D.TotalPower; + +tStart = tic; +[LoadingRateArray, ~, ~] = Scripts.scanForSidebandEnhancement(Oven, MOT2D, 'Blue', 'BlueSideband', DetuningArray, PowerArray); +tEnd = toc(tStart); +fprintf('Total Computational Time: %0.1f seconds. \n', tEnd); + +% - Plot results + +OptionsStruct = struct; +OptionsStruct.RescalingFactorForFirstParameter = (Helper.PhysicsConstants.BlueLinewidth)^-1; +OptionsStruct.XLabelString = 'Sideband Beam Detuning (\Delta/\Gamma)'; +OptionsStruct.RescalingFactorForSecondParameter = 1000; +OptionsStruct.YLabelString = 'Sideband Beam Power (mW)'; +OptionsStruct.RescalingFactorForQuantityOfInterest = 1e-9; +OptionsStruct.ZLabelString = 'Loading rate (x 10^{9} atoms/s)'; +OptionsStruct.TitleString = sprintf('Magnetic Gradient = %.0f (G/cm)', MOT2D.MagneticGradient * 100); + +options = Helper.convertstruct2cell(OptionsStruct); + +Plotter.plotResultForTwoParameterScan(DetuningArray, PowerArray, LoadingRateArray, options{:}) + +clear OptionsStruct \ No newline at end of file diff --git a/+Scripts/scanForSidebandEnhancement.m b/+Scripts/scanForSidebandEnhancement.m new file mode 100644 index 0000000..2b13fb7 --- /dev/null +++ b/+Scripts/scanForSidebandEnhancement.m @@ -0,0 +1,33 @@ +function [LoadingRateArray, StandardErrorArray, ConfidenceIntervalArray] = scanForSidebandEnhancement(ovenObj, MOTobj, CBBeamName, SBBeamName, SBDetuningArray, SBPowerArray) + + Beams = MOTobj.Beams; + CoolingBeam = Beams{cellfun(@(x) strcmpi(x.Alias, CBBeamName), Beams)}; + SidebandBeam = Beams{cellfun(@(x) strcmpi(x.Alias, SBBeamName), Beams)}; + NumberOfPointsForFirstParam = length(SBDetuningArray); + NumberOfPointsForSecondParam = length(SBPowerArray); + LoadingRateArray = zeros(NumberOfPointsForFirstParam, NumberOfPointsForSecondParam); + StandardErrorArray = zeros(NumberOfPointsForFirstParam, NumberOfPointsForSecondParam); + ConfidenceIntervalArray = zeros(NumberOfPointsForFirstParam, NumberOfPointsForSecondParam, 2); + + for i=1:NumberOfPointsForFirstParam + eval(sprintf('SidebandBeam.%s = %d;', 'Detuning', SBDetuningArray(i))); + for j=1:NumberOfPointsForSecondParam + eval(sprintf('SidebandBeam.%s = %d;', 'Power', SBPowerArray(j))); + eval(sprintf('CoolingBeam.%s = %d;', 'Power', MOTobj.TotalPower - SBPowerArray(j))); + [LoadingRateArray(i,j), StandardErrorArray(i,j), ConfidenceIntervalArray(i,j,:)] = MOTobj.runSimulation(ovenObj); + end + end + + if MOTobj.DoSave + LoadingRate = struct; + LoadingRate.Values = LoadingRateArray; + LoadingRate.Errors = StandardErrorArray; + LoadingRate.CI = ConfidenceIntervalArray; + MOTobj.Results = LoadingRate; + SaveFolder = [MOTobj.SaveDirectory filesep 'Results']; + Filename = ['TwoParameterScan_' datestr(now,'yyyymmdd_HHMM')]; + eval([sprintf('%s_Object', Filename) ' = MOTobj;']); + mkdir(SaveFolder); + save([SaveFolder filesep Filename], sprintf('%s_Object', Filename)); + end +end \ No newline at end of file