36 lines
1.7 KiB
Matlab
36 lines
1.7 KiB
Matlab
function ret = accelerationDueToPushBeam(this, PositionVector, VelocityVector)
|
|
% is the distance between the chamber center and the cross point of push beam and z-axis (along the gravity)
|
|
WaveVectorEndPoint = [0, 1, this.DistanceBetweenPushBeamAnd3DMOTCenter/this.PushBeamDistance];
|
|
WaveVectorEndPoint = WaveVectorEndPoint./norm(WaveVectorEndPoint);
|
|
Origin=[0,0,0];
|
|
|
|
PushBeamObj = this.Beams{cellfun(@(x) strcmpi(x.Alias, 'Push'), this.Beams)};
|
|
PushBeamDetuning = PushBeamObj.Detuning;
|
|
PushBeamRadius = PushBeamObj.Radius;
|
|
PushBeamWaist = PushBeamObj.Waist;
|
|
PushBeamWaveNumber = PushBeamObj.WaveNumber;
|
|
PushBeamLinewidth = PushBeamObj.Linewidth;
|
|
PushBeamSaturationParameter = 0.25 * PushBeamObj.SaturationParameter;
|
|
|
|
SaturationIntensity = this.calculateLocalSaturationIntensity(PushBeamSaturationParameter, PositionVector, Origin, WaveVectorEndPoint, PushBeamRadius, PushBeamWaist);
|
|
|
|
DopplerShift = dot(WaveVectorEndPoint(:), VelocityVector) * PushBeamWaveNumber;
|
|
|
|
Detuning = PushBeamDetuning - DopplerShift;
|
|
|
|
s_push = SaturationIntensity/(1 + SaturationIntensity + (4 * (Detuning./PushBeamLinewidth).^2));
|
|
a_sat = (Helper.PhysicsConstants.PlanckConstantReduced * PushBeamWaveNumber * WaveVectorEndPoint(:)/Helper.PhysicsConstants.Dy164Mass).*(PushBeamLinewidth * 0.5);
|
|
a_push = a_sat .* (s_push/(1+s_push));
|
|
|
|
if this.SpontaneousEmission
|
|
a_scatter = this.accelerationDueToSpontaneousEmissionProcess(s_push, s_push, PushBeamLinewidth, PushBeamWaveNumber);
|
|
else
|
|
a_scatter = [0,0,0];
|
|
end
|
|
|
|
a_total = a_push + a_scatter;
|
|
|
|
ret = a_total(1:3);
|
|
end
|
|
|