Calculations/MOT Capture Process Simulation/@MOTSimulator/setInitialConditions.m

137 lines
8.7 KiB
Mathematica
Raw Normal View History

function setInitialConditions(this, varargin)
p = inputParser;
p.KeepUnmatched = true;
addParameter(p, 'NumberOfAtoms', 5000,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'BluePower', this.TotalPower,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'BlueDetuning', -1.39*Helper.PhysicsConstants.BlueLinewidth,...
@(x) assert(isnumeric(x) && isscalar(x)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'BlueBeamWaist', 16.6667e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'SidebandPower', 0.5*this.TotalPower,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'SidebandDetuning', -4.5*Helper.PhysicsConstants.BlueLinewidth,...
@(x) assert(isnumeric(x) && isscalar(x)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'SidebandBeamWaist', 15e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:51:49 +02:00
addParameter(p, 'PushBeamPower', 100e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'PushBeamDetuning', -5*Helper.PhysicsConstants.OrangeLinewidth,...
@(x) assert(isnumeric(x) && isscalar(x)));
2021-07-11 14:51:49 +02:00
addParameter(p, 'PushBeamWaist', 0.81e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
addParameter(p, 'OrangePower', 70e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
2021-07-11 14:42:09 +02:00
addParameter(p, 'OrangeDetuning', -1*Helper.PhysicsConstants.OrangeLinewidth,...
@(x) assert(isnumeric(x) && isscalar(x)));
addParameter(p, 'OrangeBeamWaist', 12e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
addParameter(p, 'ZeemanSlowerBeamPower', 200e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
addParameter(p, 'ZeemanSlowerBeamDetuning', -7*Helper.PhysicsConstants.BlueLinewidth,...
@(x) assert(isnumeric(x) && isscalar(x)));
addParameter(p, 'ZeemanSlowerBeamWaist', 7e-3,...
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
addParameter(p, 'MagneticGradient', 0.425,... % T/m
@(x) assert(isnumeric(x) && isscalar(x) && (x > 0)));
p.parse(varargin{:});
this.NumberOfAtoms = p.Results.NumberOfAtoms;
this.BluePower = p.Results.BluePower;
this.BlueDetuning = p.Results.BlueDetuning;
this.BlueBeamWaist = p.Results.BlueBeamWaist;
this.SidebandPower = p.Results.SidebandPower;
this.SidebandDetuning = p.Results.SidebandDetuning;
this.SidebandBeamWaist = p.Results.SidebandBeamWaist;
this.PushBeamPower = p.Results.PushBeamPower;
this.PushBeamDetuning = p.Results.PushBeamDetuning;
this.PushBeamWaist = p.Results.PushBeamWaist;
this.OrangePower = p.Results.OrangePower;
this.OrangeDetuning = p.Results.OrangeDetuning;
this.OrangeBeamWaist = p.Results.OrangeBeamWaist;
this.ZeemanSlowerBeamPower = p.Results.ZeemanSlowerBeamPower;
this.ZeemanSlowerBeamDetuning = p.Results.ZeemanSlowerBeamDetuning;
this.ZeemanSlowerBeamWaist = p.Results.ZeemanSlowerBeamWaist;
this.MagneticGradient = p.Results.MagneticGradient;
%% Set general parameters according to simulation mode
switch this.SimulationMode
case "2D"
this.CoolingBeamPower = this.BluePower;
this.CoolingBeamWaist = this.BlueBeamWaist;
this.CoolingBeamLinewidth = Helper.PhysicsConstants.BlueLinewidth;
2021-07-11 14:42:09 +02:00
this.CoolingBeamWaveNumber = this.BlueWaveNumber;
this.CoolingBeamDetuning = this.BlueDetuning;
this.CoolingBeamRadius = this.BlueBeamRadius;
this.CoolingBeamWaist = this.BlueBeamWaist;
this.CoolingBeamSaturationIntensity = this.BlueSaturationIntensity;
this.SidebandBeamRadius = this.BlueBeamRadius;
this.SidebandBeamSaturationIntensity = this.BlueSaturationIntensity;
this.LandegFactor = Helper.PhysicsConstants.BlueLandegFactor;
this.MagneticSubLevel = 1;
case "3D"
% Development In progress
end
%% - store in struct
this.SimulationParameters = struct;
this.SimulationParameters.SimulationMode = this.SimulationMode;
this.SimulationParameters.TimeStep = this.TimeStep;
this.SimulationParameters.SimulationTime = this.SimulationTime;
this.SimulationParameters.NumberOfAtoms = this.NumberOfAtoms;
this.SimulationParameters.NozzleLength = this.NozzleLength;
this.SimulationParameters.NozzleRadius = this.NozzleRadius;
this.SimulationParameters.Beta = this.Beta;
this.SimulationParameters.ApertureCut = this.ApertureCut;
this.SimulationParameters.OvenDistance = this.OvenDistance;
this.SimulationParameters.OvenTemperature = this.OvenTemperature;
this.SimulationParameters.MagneticGradient = this.MagneticGradient;
this.SimulationParameters.NozzleExitDivergence = this.NozzleExitDivergence;
this.SimulationParameters.MOTExitDivergence = this.MOTExitDivergence;
this.SimulationParameters.MOTDistance = this.MOTDistance;
this.SimulationParameters.BluePower = this.BluePower;
this.SimulationParameters.BlueDetuning = this.BlueDetuning;
this.SimulationParameters.BlueBeamRadius = this.BlueBeamRadius;
this.SimulationParameters.BlueBeamWaist = this.BlueBeamWaist;
this.SimulationParameters.BlueSaturationIntensity = this.BlueSaturationIntensity;
this.SimulationParameters.OrangePower = this.OrangePower;
this.SimulationParameters.OrangeDetuning = this.OrangeDetuning;
this.SimulationParameters.OrangeBeamRadius = this.OrangeBeamRadius;
this.SimulationParameters.OrangeBeamWaist = this.OrangeBeamWaist;
this.SimulationParameters.OrangeSaturationIntensity = this.OrangeSaturationIntensity;
this.SimulationParameters.SidebandPower = this.SidebandPower;
this.SimulationParameters.SidebandDetuning = this.SidebandDetuning;
this.SimulationParameters.SidebandBeamRadius = this.SidebandBeamRadius;
this.SimulationParameters.SidebandBeamWaist = this.SidebandBeamWaist;
this.SimulationParameters.SidebandBeamSaturationIntensity = this.SidebandBeamSaturationIntensity;
this.SimulationParameters.PushBeamPower = this.PushBeamPower;
this.SimulationParameters.PushBeamDetuning = this.PushBeamDetuning;
this.SimulationParameters.PushBeamRadius = this.PushBeamRadius;
this.SimulationParameters.PushBeamWaist = this.PushBeamWaist;
this.SimulationParameters.PushBeamDistance = this.PushBeamDistance;
this.SimulationParameters.DistanceBetweenPushBeamAnd3DMOTCenter = this.DistanceBetweenPushBeamAnd3DMOTCenter;
this.SimulationParameters.PushBeamSaturationIntensity = this.PushBeamSaturationIntensity;
this.SimulationParameters.TotalPower = this.TotalPower;
this.SimulationParameters.LandegFactor = this.LandegFactor;
this.SimulationParameters.MagneticSubLevel = this.MagneticSubLevel;
this.SimulationParameters.CoolingBeamSaturationParameter = this.CoolingBeamSaturationParameter;
this.SimulationParameters.SidebandSaturationParameter = this.SidebandSaturationParameter;
this.SimulationParameters.PushBeamSaturationParameter = this.PushBeamSaturationParameter;
this.SimulationParameters.OvenTemperatureinKelvin = this.OvenTemperatureinKelvin;
this.SimulationParameters.AverageVelocity = this.AverageVelocity;
this.SimulationParameters.AtomicBeamDensity = this.AtomicBeamDensity;
this.SimulationParameters.MeanFreePath = this.MeanFreePath;
this.SimulationParameters.CollisionTime = this.CollisionTime;
if strcmpi(this.SimulationMode, '3D')
this.SimulationParameters.ZeemanSlowerBeamPower = this.ZeemanSlowerBeamPower;
this.SimulationParameters.ZeemanSlowerBeamDetuning = this.ZeemanSlowerBeamDetuning;
this.SimulationParameters.ZeemanSlowerBeamRadius = this.ZeemanSlowerBeamRadius;
this.SimulationParameters.ZeemanSlowerBeamBeamWaist = this.ZeemanSlowerBeamWaist;
this.SimulationParameters.ZeemanSlowerBeamSaturationIntensity = this.ZeemanSlowerBeamSaturationIntensity;
this.SimulationParameters.ZeemanSlowerBeamSaturationParameter = this.ZeemanSlowerBeamSaturationParameter;
end
end