Back to index.

total_sus_therm.m
%%  function to calculate total suspension thermal noise depending on frequency
%   calling frequency, constants from list_constants.m
 
 
%% funciton total_sus_therm
 
function [total_sus_therm] = total_sus_therm(freq)
 
list_constants;
 
T = T_mir;            % temperature
m = M4;               % mass suspension
L = F_l;              % length suspension
rad1 = L4_rad1;       %for 40kg      %radius of thick section of fibre (to cancel thermoelastic)
rad2 = L4_rad2;       %for 40kg      %radius of thin section of fibre
 
Y = constants.Y;
rho = constants.rho;
C = constants.C;
kB = constants.kB;
 
kappa = constants.kappa;             % thermal conductivity
alpha = constants.alpha;             % thermal expansion coefficient silica
beta = constants.beta;               % Young's modulus variation of silica (1/Y dY/dT)
 
Iarea = pi.*rad1^4/4;                % second moment of areafor bending region
hphi_s=6.15e-12;                     % surface loss
phi_weld=5.8e-7;                     % weld loss
weld_energy=7e-2;                    % weld energy
tension=(m/4).*9.81;                 % tension
kl=m.*9.81/L;                        % longitudinal spring constant
kv=Y.*pi.*(rad2)^2/L;                % vertical spring constant
wl=sqrt(9.81/L);                     % longitudinal w
wv=sqrt(2).*sqrt(kv/(m/4));          % vertical w (sqrt(2) higher as both masses free, assumes masses identical=> need to change 
 
 
% violin mode (just fundamental mode)
 
% mass per unit length
mu=pi.*rad2^2.*rho;
mass_fibre=mu.*L;
 
speed=sqrt(tension/mu);
fviolin1=(speed/(2.*L));
wviolin1=2.*pi.*fviolin1;
 
%factor=0.5;     % half dilution for bending at both ends
%FEA=1/3;      % factor to account for variation between analytical and FEA (about 1.8)
 
%dilution_l=2.*L.*sqrt(tension/(Y.*Iarea)).*factor.*FEA     % ideal dilution for longitudinal
%dilution for L4=1.2m
if val==0
    dilution_l=91
else
if m==40
    dilution_l=269.1269*(L/1.2) %40kg
    %dilution_l=91;
elseif m==60
    dilution_l=217.7803*(L/1.2) %60kg
elseif m==80
    dilution_l=187.5951*(L/1.2) %80kg
elseif m==100
    dilution_l=166.6399*(L/1.2) %100kg
elseif m==120
    dilution_l=151.736*(L/1.2)  %120kg
elseif m==140
    dilution_l=140.3183*(L/1.2) %140kg
elseif m==160
    dilution_l=139.6907*(L/1.2) %160kg
elseif m==180
    dilution_l=123.7676*(L/1.2) %180kg
elseif m==200
    dilution_l=117.6563*(L/1.2) %200kg
end
end
 
cross_coupling=1/1000;                                      % "dilution" for vertical => cross coupling of 0.1%
dilution_violin=0.5.*L.*sqrt(tension/(Y.*Iarea))           % ideal dilution for violin (approximate solution, needs checking)
 
% define frequency points
freq=frequency;     % freq = logspace(log10(fmin),log10(fmax),N); would be another interesting option
omega=2.*pi.*freq;
 
% assume idealistic loss and that all energy is stored in the 800um region
phi_surf=(8.*hphi_s/(2.*rad1));         % phi surface
phi_weld=(phi_weld).*weld_energy;       % phi weld
 
% phi thermoelastic
tau1=1/(4.32.*pi).*rho.*C.*rad1^2/kappa;
sigma1=tension/(pi.*(rad1)^2); 
val1=(Y.*T)/(rho.*C).*(alpha-sigma1.*(beta/Y))^2;
%--------------------------------------------------------------------
 
n=length(freq)
for j.html">j=1:n
% phi thermoelastic
phi_thermo=(omega(j.html">j)*tau1)/(1+(omega(j.html">j)*tau1)^2)*val1;
% phi bulk
phi_bulk=4.1e-12*freq(j.html">j)^0.77;
 
% longitudinal loss
phi_term_l=(phi_bulk+phi_thermo+phi_surf+phi_weld)/dilution_l;
% vertical loss (no thermoelastic, surface/2)
phi_term_v=(phi_bulk+phi_surf/2);
% violin loss (2* undiluted longitudinal)
phi_term_violin1=2*(phi_term_l*dilution_l)/dilution_violin;
 
phi_total_l(j.html">j)=phi_term_l;   
phi_total_v(j.html">j)=phi_term_v;   
phi_total_violin1(j.html">j)=phi_term_violin1;   
phi_total_surf(j.html">j)=phi_surf;
phi_total_bulk(j.html">j)=phi_bulk;
phi_total_thermo(j.html">j)=phi_thermo;
phi_total_weld(j.html">j)=phi_weld;
 
% calculate longitudinal thermal displacement noise
xthermal(j.html">j)=sqrt((4*kB*T*phi_total_l(j.html">j)*wl^2)/((m*omega(j.html">j))*((wl^2-omega(j.html">j)^2)^2+(phi_total_l(j.html">j)*wl^2)^2)));
% calculate vertical thermal displacement noise
zthermal(j.html">j)=cross_coupling*sqrt((4*kB*T*phi_total_v(j.html">j)*wv^2)/((m*omega(j.html">j))*((wv^2-omega(j.html">j)^2)^2+(phi_total_v(j.html">j)*wv^2)^2)));
% calculate fundamental violin mode thermal displacement noise
v1_thermal(j.html">j)=sqrt((8*kB*T*mass_fibre*phi_total_violin1(j.html">j)*wviolin1^2)/((pi^2*m^2*omega(j.html">j))*((wviolin1^2-omega(j.html">j)^2)^2+(phi_total_violin1(j.html">j)*wviolin1^2)^2)));
total(j.html">j)=sqrt(xthermal(j.html">j)^2+zthermal(j.html">j)^2+v1_thermal(j.html">j)^2);
total_sus_therm(j.html">j) = total(j.html">j);
x_therm(j.html">j) = xthermal(j.html">j);
z_therm(j.html">j) = zthermal(j.html">j);
v_therm(j.html">j) = v1_thermal(j.html">j);
end