Code covered by the BSD License  

Highlights from
OSCAR

image thumbnail

OSCAR

by

 

08 Jul 2008 (Updated )

An optical FFT code to simulate Fabry Perot cavities with arbitrary mirror profiles

Example_Mirror_as_input.m
% Create a cavity with a thick input mirror
% this cavity example follows the parameters of an Advanced Virgo arm
% cavity.

% We will check the etalon effect

clear all; close all; clear classes
addpath(genpath('Classes'));

disp('---------------------------------------------------------------------------')
disp('                  OSCAR V3.14  - The cavities with thick mirror       ')
disp('  ')

G1 = Grid(128,0.5);

E_input = E_Field(G1,'w',0.0491,'R',-1431);


% Arm cavity of Advanced Virgo
% Define the input mirror
% Define the AR side of the ITM, reflection of the AR coating = 100 ppm
IM_AR = Interface(G1,'RoC',-1420,'CA',0.33,'T',1-100E-6,'L',0,'n1',1,'n2',1.45);
% Define the HR side
IM_HR = Interface(G1,'RoC',1420,'CA',0.33,'T',0.014,'L',0,'n1',1,'n2',1.45);
% Finally define a mirror of thickness 20 cm
IM = Mirror(IM_HR,IM_AR,0.2);

% Define the end mirror, only as an interface
EM_HR = Interface(G1,'Roc',1683,'CA',0.33,'T',75E-6,'L',0);

% Create the cavity
C_NA = Cavity1(IM,EM_HR,3000,E_input);

C_NA.Check_stability()

C_NA = Cavity_resonance_phase(C_NA);

C_NA = Calculate_fields_AC(C_NA);
C_NA.Display_results


%% Now, scan the thickness of the input mirror over one wavelength

disp('---------------------------------------------------------------------------')
disp('                  Simulate the etalon effect    ')
disp('  ')



Nb_points = 20;
Scan_length = 1064E-9;

Vec_length = linspace(0,Scan_length,Nb_points);
Vec_ref_power = zeros(Nb_points,1);

for ii = 1:Nb_points
    IM = Mirror(IM_HR,IM_AR,0.2+Vec_length(ii));   % Change the length of the substrate
    IM.RT_inside = 3;                                         % Do several round trip inside the mirror
    
    C_NA = Cavity1(IM,EM_HR,3000,E_input);
    C_NA = Cavity_resonance_phase(C_NA);
    
    C_NA = Calculate_fields_AC(C_NA);
    
    Vec_ref_power(ii) = Calculate_power(C_NA.Field_ref);
    
    fprintf(' %-3.0i %% \n ',round(100 * ii / Nb_points))
    
end
figure(4)
plot(Vec_length,Vec_ref_power)

Contact us