aboutsummaryrefslogtreecommitdiff
path: root/cavity_abcd2its_waist_and_position.m
blob: ac6f2a2bb7aa760e6dcea96fe0fdabc226678f0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function [w0, z0] = cavity_abcd2its_waist_and_position( abcd_cavity, lambda,  cavity_length )
display('WARNING: cavity_abcd2its_waist_and_position sometimes it gives crazy results');
display('WARNING: it is sensitive to lens, mirrors order.');
display('WARNING: You better double check results or better fix the logic of this code');


% Notation follows
%
% "Laser resonators with several mirrors  and lenses with the bow-tie laser
% resonator with compensation for astigmatism  and thermal lens effects as an
% example" by Haim Abitan and Torben Skettrup 2005 J. Opt. A: Pure Appl. Opt. 7 7
% doi:10.1088/1464-4258/7/1/002
% http://dx.doi.org/10.1088/1464-4258/7/1/002

% spelling out abcd coefficients
[A, B, C, D] = abcd2ABCD( abcd_cavity );

if ~isCavityStable(abcd_cavity)
    display('Cavity is unstable !');
    display('We should stop now. There is no stable mode in this cavity');
    error('Not possible to calculate a cavity mode in the unstable cavity');
end

% stability parameter see eq.4
u = (A+D+2)/4;

% resonator waist eq.10
w0 = sqrt ( 2*lambda/(pi*abs(C))*sqrt(u*(1-u)) );

% resonator waist location along 1st arm eq.11
z0 = (A-D)/(2*C);

% Everything is periodic with respect to cavity length
% so by taking modulus with respect to its length
% we get rid of nasty virtual waist condition
z0 = mod(z0, cavity_length);

end