24 lines
1.0 KiB
Matlab
24 lines
1.0 KiB
Matlab
function U = generateSingleGaussianBeamPotential(positions, waists, P, options)
|
|
|
|
alpha = options.Polarizability;
|
|
wavelength = options.Wavelength;
|
|
|
|
% Define constants
|
|
eps0 = 8.854187817e-12; % Permittivity of free space (F/m)
|
|
c = 299792458; % Speed of light in vacuum (m/s)
|
|
a0 = 5.29177210903e-11; % Bohr radius (m)
|
|
|
|
% Calculate the beam waist at each position (assuming positions is 3 x N matrix)
|
|
w_x = Calculator.calculateWaist(positions(2, :), waists(1), wavelength); % Waist in x direction
|
|
w_z = Calculator.calculateWaist(positions(2, :), waists(2), wavelength); % Waist in z direction
|
|
|
|
% Calculate amplitude A
|
|
A = 2 * P ./ (pi * w_x .* w_z);
|
|
|
|
% U_tilde is a constant term (relating to polarizability, permittivity, and speed of light)
|
|
U_tilde = (1 / (2 * eps0 * c)) * alpha * (4 * pi * eps0 * a0^3);
|
|
|
|
% Gaussian potential calculation
|
|
U = - U_tilde * A .* exp(-2 * ((positions(1, :) ./ w_x).^2 + (positions(3, :) ./ w_z).^2));
|
|
end
|