Skip to content
Snippets Groups Projects
Commit 952fcf6b authored by Charlotte Bond's avatar Charlotte Bond
Browse files

tidying and conforming to vinet09 layout

parent fbe75350
Branches
Tags
No related merge requests found
......@@ -6,6 +6,8 @@
% returns the lens as well as the approximate (Gaussian weighted)
% paraboloid.
%
% N.B. Currently only valid for an incident LG00 mode.
%
% beam: Structure containing beam parameters (FT_init_thermal_beam.m)
% mirror: Structure containing mirror parameters
% (FT_init_thermal_mirror.m)
......@@ -32,7 +34,7 @@ function [Z,c,p] = FT_thermal_lens(beam,mirror,r,option,num_terms)
[Z,coeffs] = FT_thermal_lens_from_coating_absorption(beam,mirror,r,num_terms);
[c,p] = FT_approximate_paraboloid_for_thermal_lens(coeffs,mirror.X,mirror.a,beam.w);
% thermal lens from bulk absorption
% Thermal lens from bulk absorption
elseif strcmp(option,'bulk')
[Z,coeffs] = FT_thermal_lens_from_bulk_absorption(beam,mirror,r,num_terms);
......
......@@ -33,14 +33,13 @@ function [Z_bulk,coeffs] = FT_thermal_lens_from_bulk_absorption(beam,mirror,r,nu
% Currently only valid for LG00
p = 0;
l = 0;
a = mirror.a;
h = mirror.h;
K = mirror.K;
dn_dT = mirror.dn_dT;
Babs = mirror.Babs;
X = mirror.X;
P = beam.P;
Power = beam.P;
lambda = beam.lambda;
w = beam.w;
......@@ -48,21 +47,23 @@ function [Z_bulk,coeffs] = FT_thermal_lens_from_bulk_absorption(beam,mirror,r,nu
r_abs = abs(r);
% Constant
c = dn_dT * Babs*P*h / (pi*K);
c = dn_dT * Babs*Power*h / (pi*K);
% Calculating coefficients
zeta_0s = FT_bessel_zeros(0,X,num_terms);
p_0s = FT_calculate_fourier_bessel_coefficients(0,0,X,w,a,num_terms);
zeta_n = FT_bessel_zeros(2*l,X,num_terms);
pn = FT_calculate_fourier_bessel_coefficients(p,l,X,w,a,num_terms);
% Calculating sum of terms to approximate thermal lens
Z_bulk=0;
for s=1:num_terms
coeffs(s) = c * (1 - (2*X*a/(zeta_0s(s)*h) * sinh(zeta_0s(s)*h/(2*a))) / (zeta_0s(s)*sinh(zeta_0s(s)*h/(2*a)) + X*cosh(zeta_0s(s)*h/(2*a))));
coeffs(s) = coeffs(s) * exp(-zeta_0s(s)^2*w^2/(8*a^2)) / ((zeta_0s(s)^2+X^2) * (besselj(0,zeta_0s(s))^2));
gamma_n = zeta_n(s)*h/(2*a);
d1n = zeta_n(s)*sinh(gamma_n)+X*cosh(gamma_n);
coeffs(s) = c * pn(s)/(zeta_n(s)^2) * (1-(X/gamma_n)*sin(gamma_n)/d1n);
Z_bulk = Z_bulk + coeffs(s)*besselj(0,zeta_0s(s)*r_abs/a);
Z_bulk = Z_bulk + coeffs(s)*besselj(2*l,zeta_n(s)*r_abs/a);
end
......
......@@ -38,28 +38,33 @@ function [Z_coat,coeffs] = FT_thermal_lens_from_coating_absorption(beam,mirror,r
K = mirror.K;
dn_dT = mirror.dn_dT;
Cabs = mirror.Cabs;
X = mirror.X
P = beam.P;
X = mirror.X;
Power = beam.P;
lambda = beam.lambda;
w = beam.w;
% Lens is axis-symmetric
r_abs = abs(r);
% Constant
c = dn_dT * Cabs*P / (pi*K);
c = dn_dT * Cabs*Power / (pi*K);
% Calculating coefficients
zeta_0s = FT_bessel_zeros(0,X,num_terms);
p_0s = FT_calculate_fourier_bessel_coefficients(0,0,X,w,a,num_terms);
zeta_n = FT_bessel_zeros(2*l,X,num_terms);
pn = FT_calculate_fourier_bessel_coefficients(p,l,X,w,a,num_terms);
% Calculating sum of terms to approximate thermal lens
Z_coat=0;
for s=1:num_terms
coeffs(s) = c*p_0s(s)*(1/zeta_0s(s)) * (1-exp(-zeta_0s(s)*h/a))/(zeta_0s(s)+X-(zeta_0s(s)-X)*exp(-zeta_0s(s)*h/a));
Z_coat = Z_coat + coeffs(s)*besselj(0,zeta_0s(s)*r_abs/a);
% Coefficients
gamma_n = zeta_n(s)*h/(2*a);
d1n = zeta_n(s)*sinh(gamma_n)+X*cosh(gamma_n);
coeffs(s) = c*pn(s)*(1/zeta_n(s)) * sinh(gamma_n)/d1n;
Z_coat = Z_coat + coeffs(s)*besselj(2*l,zeta_n(s)*r_abs/a);
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment