summaryrefslogtreecommitdiff
path: root/cavity_design_demo.m
diff options
context:
space:
mode:
Diffstat (limited to 'cavity_design_demo.m')
-rw-r--r--cavity_design_demo.m85
1 files changed, 85 insertions, 0 deletions
diff --git a/cavity_design_demo.m b/cavity_design_demo.m
new file mode 100644
index 0000000..7bddf35
--- /dev/null
+++ b/cavity_design_demo.m
@@ -0,0 +1,85 @@
+% Design of a laser cavity with focus on 2 bow-tie resonator
+% 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
+
+
+% The cavity defined by two flat mirrors and distance between them dm
+% two concave mirrors with curvatures R1 and R2, and the shortest distance between them d1
+% d2 is the beam path length from concave mirror -> flat -> flat -> concave mirror.
+% dm is part of d2
+
+% let's set some parameters
+R1=0.8;
+R2=1;
+d1=3;
+d2=1;
+Ltot = d1+d2; % total resonator length
+
+% operational wavelength
+lambda = 795e-9;
+
+%% let's create cavity abcd matrix
+% follow figure 4: elements goes as d1, f1, d3, f2
+% where f1 and f2 lens mirror equivalent with f_i=R_i/2
+
+abcd_cavity = abcd_mirror(R2)*abcd_free_space(d2)*abcd_mirror(R1)* abcd_free_space(d1);
+
+% spelling out abcd coefficients
+A = abcd_cavity(1,1);
+B = abcd_cavity(1,2);
+C = abcd_cavity(2,1);
+D = abcd_cavity(2,2);
+
+
+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
+
+display('Cavity is stable');
+
+% 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,Ltot);
+
+% naturally the Gaussian beam curvature radius is huge i.e. wavefront is flat
+q0=wr2q(w0, inf, lambda); %Calculate initial q
+
+% time to build the optics set
+mirror1.abcd = abcd_mirror( R1 ) ;
+mirror1.x = d1;
+mirror2.abcd = abcd_mirror( R2 ) ;
+mirror2.x = d1 + d2;
+optics={mirror1, mirror2};
+
+% display properties setup
+lens_width = .03; %Lens width
+show_lens_width = 1; %Set to 1 to enable display of lens width on solution propagation plot
+show_lens_position = 1; %Set to 1 to enable display of position of center of lens on solution propagation plot
+display_prop = [show_lens_width, show_lens_position];
+
+
+zstart = 0;
+qstart = gbeam_propagation(zstart, q0, z0, optics);
+zfinal = Ltot;
+qfinal = gbeam_propagation(zfinal, q0, z0, optics);
+
+% show beam in the resonator
+[waste_at_the_end, radius_at_the_end, waist_at_mirrors] = solution_visualization(qstart,zstart, qfinal, zfinal, optics, lambda, lens_width, display_prop)
+