Change of variable names, new properties included along with their getters and setters, increased limit on number of trajectories to be computed, corrections to formulae calculating saturation parameters and average velocity.

This commit is contained in:
Karthik 2021-07-11 14:34:19 +02:00
parent e16ac42415
commit 058fa0fb19

View File

@ -24,18 +24,18 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
BlueDetuning; BlueDetuning;
BlueBeamRadius; BlueBeamRadius;
BlueBeamWaist; BlueBeamWaist;
BlueWaveVector; BlueWaveNumber;
BlueSaturationIntensity; BlueSaturationIntensity;
OrangePower; OrangePower;
OrangeDetuning; OrangeDetuning;
OrangeBeamRadius; OrangeBeamRadius;
OrangeBeamWaist; OrangeBeamWaist;
OrangeWaveVector; OrangeWaveNumber;
OrangeSaturationIntensity; OrangeSaturationIntensity;
CoolingBeamPower; CoolingBeamPower;
CoolingBeamWaveVector; CoolingBeamWaveNumber;
CoolingBeamLinewidth; CoolingBeamLinewidth;
CoolingBeamDetuning; CoolingBeamDetuning;
CoolingBeamRadius; CoolingBeamRadius;
@ -49,7 +49,7 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
SidebandBeamSaturationIntensity; SidebandBeamSaturationIntensity;
PushBeamPower; PushBeamPower;
PushBeamWaveVector; PushBeamWaveNumber;
PushBeamLinewidth; PushBeamLinewidth;
PushBeamDetuning; PushBeamDetuning;
PushBeamRadius; PushBeamRadius;
@ -71,16 +71,16 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
CaptureVelocity; CaptureVelocity;
VelocityCutoff; VelocityCutoff;
ClausingFactor; ClausingFactor;
ThetaArray; ReducedClausingFactor;
AngularDistribution; ReducedFlux;
NormalizationConstantForAngularDistribution; TimeSpentInInteractionRegion;
%Flags %Flags
SpontaneousEmission; SpontaneousEmission;
Sideband; Sideband;
ZeemanSlowerBeam; ZeemanSlowerBeam;
Gravity; Gravity;
AtomicBeamCollision; BackgroundCollision;
DebugMode; DebugMode;
DoSave; DoSave;
@ -124,7 +124,7 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
@islogical); @islogical);
addParameter(p, 'Gravity', false,... addParameter(p, 'Gravity', false,...
@islogical); @islogical);
addParameter(p, 'AtomicBeamCollision', true,... addParameter(p, 'BackgroundCollision', false,...
@islogical); @islogical);
addParameter(p, 'DebugMode', false,... addParameter(p, 'DebugMode', false,...
@islogical); @islogical);
@ -144,7 +144,7 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
s.Sideband = p.Results.Sideband; s.Sideband = p.Results.Sideband;
s.ZeemanSlowerBeam = p.Results.ZeemanSlowerBeam; s.ZeemanSlowerBeam = p.Results.ZeemanSlowerBeam;
s.Gravity = p.Results.Gravity; s.Gravity = p.Results.Gravity;
s.AtomicBeamCollision = p.Results.AtomicBeamCollision; s.BackgroundCollision = p.Results.BackgroundCollision;
s.DebugMode = p.Results.DebugMode; s.DebugMode = p.Results.DebugMode;
s.DoSave = p.Results.SaveData; s.DoSave = p.Results.SaveData;
@ -177,7 +177,7 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
ret = this.SimulationTime; ret = this.SimulationTime;
end end
function set.NumberOfAtoms(this, val) function set.NumberOfAtoms(this, val)
assert(val <= 10000, 'Not time efficient to compute for atom numbers larger than 10,000!'); assert(val <= 20000, 'Not time efficient to compute for atom numbers larger than 20,000!');
this.NumberOfAtoms = val; this.NumberOfAtoms = val;
end end
function ret = get.NumberOfAtoms(this) function ret = get.NumberOfAtoms(this)
@ -282,11 +282,11 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
function ret = get.BlueBeamWaist(this) function ret = get.BlueBeamWaist(this)
ret = this.BlueBeamWaist; ret = this.BlueBeamWaist;
end end
function set.BlueWaveVector(this, val) function set.BlueWaveNumber(this, val)
this.BlueWaveVector = val; this.BlueWaveNumber = val;
end end
function ret = get.BlueWaveVector(this) function ret = get.BlueWaveNumber(this)
ret = this.BlueWaveVector; ret = this.BlueWaveNumber;
end end
function set.BlueSaturationIntensity(this, val) function set.BlueSaturationIntensity(this, val)
this.BlueSaturationIntensity = val; this.BlueSaturationIntensity = val;
@ -319,11 +319,11 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
function ret = get.OrangeBeamWaist(this) function ret = get.OrangeBeamWaist(this)
ret = this.OrangeBeamWaist; ret = this.OrangeBeamWaist;
end end
function set.OrangeWaveVector(this, val) function set.OrangeWaveNumber(this, val)
this.OrangeWaveVector = val; this.OrangeWaveNumber = val;
end end
function ret = get.OrangeWaveVector(this) function ret = get.OrangeWaveNumber(this)
ret = this.OrangeWaveVector; ret = this.OrangeWaveNumber;
end end
function set.OrangeSaturationIntensity(this, val) function set.OrangeSaturationIntensity(this, val)
this.OrangeSaturationIntensity = val; this.OrangeSaturationIntensity = val;
@ -356,11 +356,11 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
function ret = get.CoolingBeamWaist(this) function ret = get.CoolingBeamWaist(this)
ret = this.CoolingBeamWaist; ret = this.CoolingBeamWaist;
end end
function set.CoolingBeamWaveVector(this, val) function set.CoolingBeamWaveNumber(this, val)
this.CoolingBeamWaveVector = val; this.CoolingBeamWaveNumber = val;
end end
function ret = get.CoolingBeamWaveVector(this) function ret = get.CoolingBeamWaveNumber(this)
ret = this.CoolingBeamWaveVector; ret = this.CoolingBeamWaveNumber;
end end
function set.CoolingBeamLinewidth(this, val) function set.CoolingBeamLinewidth(this, val)
this.CoolingBeamLinewidth = val; this.CoolingBeamLinewidth = val;
@ -430,11 +430,11 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
function ret = get.PushBeamWaist(this) function ret = get.PushBeamWaist(this)
ret = this.PushBeamWaist; ret = this.PushBeamWaist;
end end
function set.PushBeamWaveVector(this, val) function set.PushBeamWaveNumber(this, val)
this.PushBeamWaveVector = val; this.PushBeamWaveNumber= val;
end end
function ret = get.PushBeamWaveVector(this) function ret = get.PushBeamWaveNumber(this)
ret = this.PushBeamWaveVector; ret = this.PushBeamWaveNumber;
end end
function set.PushBeamLinewidth(this, val) function set.PushBeamLinewidth(this, val)
this.PushBeamLinewidth = val; this.PushBeamLinewidth = val;
@ -529,31 +529,23 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
function ret = get.ClausingFactor(this) function ret = get.ClausingFactor(this)
ret = this.ClausingFactor; ret = this.ClausingFactor;
end end
function set.AngularDistribution(this,val) function set.ReducedClausingFactor(this,val)
this.AngularDistribution = val; this.ReducedClausingFactor = val;
end end
function ret = get.AngularDistribution(this) function ret = get.ReducedClausingFactor(this)
ret = this.AngularDistribution; ret = this.ReducedClausingFactor;
end end
function set.ThetaArray(this,val) function set.ReducedFlux(this,val)
this.ThetaArray = val; this.ReducedFlux = val;
end end
function ret = get.ThetaArray(this) function ret = get.ReducedFlux(this)
ret = this.ThetaArray; ret = this.ReducedFlux;
end end
function set.NormalizationConstantForAngularDistribution(this,val) function set.TimeSpentInInteractionRegion(this,val)
this.NormalizationConstantForAngularDistribution = val; this.TimeSpentInInteractionRegion = val;
end end
function ret = get.NormalizationConstantForAngularDistribution(this) function ret = get.TimeSpentInInteractionRegion(this)
ret = this.NormalizationConstantForAngularDistribution; ret = this.TimeSpentInInteractionRegion;
end
function set.AtomicBeamCollision(this,val)
this.AtomicBeamCollision=val;
end
function ret=get.AtomicBeamCollision(this)
ret=this.AtomicBeamCollision;
end end
function set.DebugMode(this, val) function set.DebugMode(this, val)
@ -586,19 +578,19 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
methods methods
function ret = get.CoolingBeamSaturationParameter(this) function ret = get.CoolingBeamSaturationParameter(this)
ret = 4* this.CoolingBeamPower/(pi*this.CoolingBeamWaist^2)/this.CoolingBeamSaturationIntensity/10; % two beams are reflected ret = 0.1 * (4 * this.CoolingBeamPower) / (pi*this.CoolingBeamWaist^2 * this.CoolingBeamSaturationIntensity); % two beams are reflected
end end
function ret = get.SidebandSaturationParameter(this) function ret = get.SidebandSaturationParameter(this)
ret = 4*this.SidebandPower/(pi*this.SidebandBeamWaist^2)/this.SidebandBeamSaturationIntensity/10; ret = 0.1 * (4 * this.SidebandPower) / (pi*this.SidebandBeamWaist^2 * this.SidebandBeamSaturationIntensity);
end end
function ret = get.PushBeamSaturationParameter(this) function ret = get.PushBeamSaturationParameter(this)
ret = this.PushBeamPower/(pi*this.PushBeamWaist^2)/this.PushBeamSaturationIntensity/10; ret = 0.1 * this.PushBeamPower/(pi * this.PushBeamWaist^2 * this.PushBeamSaturationIntensity);
end end
function ret = get.ZeemanSlowerBeamSaturationParameter(this) function ret = get.ZeemanSlowerBeamSaturationParameter(this)
ret = this.ZeemanSlowerBeamPower/(pi*this.ZeemanSlowerBeamWaist^2)/this.ZeemanSlowerBeamSaturationIntensity/10; ret = 0.1 * this.ZeemanSlowerBeamPower / (pi * this.ZeemanSlowerBeamWaist^2 * this.ZeemanSlowerBeamSaturationIntensity);
end end
function ret = get.OvenTemperatureinKelvin(this) function ret = get.OvenTemperatureinKelvin(this)
@ -607,7 +599,7 @@ classdef MOTSimulator < handle & matlab.mixin.Copyable
function ret = get.AverageVelocity(this) function ret = get.AverageVelocity(this)
%See Background collision probability section in Barbiero %See Background collision probability section in Barbiero
ret = sqrt(((8*pi)/9) * ((Helper.PhysicsConstants.BoltzmannConstant * this.OvenTemperatureinKelvin)/Helper.PhysicsConstants.Dy164Mass)); ret = sqrt((8*Helper.PhysicsConstants.BoltzmannConstant*this.OvenTemperatureinKelvin)/ (pi*Helper.PhysicsConstants.Dy164Mass));
end end
function ret = get.AtomicBeamDensity(this) function ret = get.AtomicBeamDensity(this)