aboutsummaryrefslogtreecommitdiff
path: root/cavity_abcd2its_waist_and_position.m
diff options
context:
space:
mode:
Diffstat (limited to 'cavity_abcd2its_waist_and_position.m')
-rw-r--r--cavity_abcd2its_waist_and_position.m39
1 files changed, 39 insertions, 0 deletions
diff --git a/cavity_abcd2its_waist_and_position.m b/cavity_abcd2its_waist_and_position.m
new file mode 100644
index 0000000..ac6f2a2
--- /dev/null
+++ b/cavity_abcd2its_waist_and_position.m
@@ -0,0 +1,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
+