diff --git a/examples/gauss_param.py b/examples/gauss_param.py new file mode 100644 index 0000000000000000000000000000000000000000..a08e4629461a0a0de157c73ab76fffece96fa1cc --- /dev/null +++ b/examples/gauss_param.py @@ -0,0 +1,15 @@ +from pykat.utilities.optics.ABCD import apply, mirror_trans +from pykat.utilities.optics.gaussian_beams import gauss_param + +nr1 = 1 +nr2 = 1.44963098985906 +q1 = gauss_param(q=5.96343 + 3.04713j) +abcd = mirror_trans(nr1, nr2, float("inf")) +# into material +q2 = apply(abcd, q1, nr1, nr2) +# and out again +q3 = apply(abcd, q2, nr2, nr1) + +print "q1 =", q1, " w0 =", q1.w0, " wz =", q1.wz, " z =", q1.z +print "q2 =", q2, " w0 =", q2.w0, " wz =", q2.wz, " z =", q2.z +print "q3 =", q3, " w0 =", q3.w0, " wz =", q3.wz, " z =", q3.z diff --git a/pykat/utilities/optics/ABCD.py b/pykat/utilities/optics/ABCD.py index 1b9f348fba2aaa54b7689ab79bd97178f95d2b1a..ffd6d42fc89c717b2565c58bf8365808f47addde 100644 --- a/pykat/utilities/optics/ABCD.py +++ b/pykat/utilities/optics/ABCD.py @@ -1,7 +1,8 @@ import numpy as np +from pykat.utilities.optics.gaussian_beams import gauss_param def apply(ABCD, q1, n1, n2): - return n2 * (ABCD[0,0] * q1/n1 + ABCD[0,1]) / (ABCD[1,0] * q1/n1 + ABCD[1,1]) + return gauss_param(nr=n2, q=n2 * (ABCD[0,0] * q1/n1 + ABCD[0,1]) / (ABCD[1,0] * q1/n1 + ABCD[1,1])) def mirror_trans(n1, n2, Rc): return np.matrix([[1,0],[(n2-n1)/Rc,1]]) diff --git a/pykat/utilities/optics/gaussian_beams.py b/pykat/utilities/optics/gaussian_beams.py index 93dd035cdf4b765b7afd7ff73d47712299c28836..d0977e5ec32ebdcd0e406e9b9cbc74f643a0b1f3 100644 --- a/pykat/utilities/optics/gaussian_beams.py +++ b/pykat/utilities/optics/gaussian_beams.py @@ -68,7 +68,7 @@ class gauss_param(object): @property def wz(self): - return math.sqrt(self.__lambda /(self.__nr * math.pi) * abs(self.__q) / self.__q.imag) + return self.w0 * math.sqrt(1 + (self.__q.real/self.__q.imag)**2) @property def w0(self):