def mode_waist(self, dir='h', waist=1): if self.q0[dir]: if waist == 1: return abcd.q2w(self.q0[dir], self.nc) else: q = abcd.qpropagate(0, self.q0[dir], self.elements[dir], self.L1 / 2 + self._L12 + self.L2 / 2) return abcd.q2w(q) else: return np.nan
def mode_width_at(self, z, dir='h'): """ Get mode radius at arbitrary location. """ if self.q0[dir] == None: return np.nan q = abcd.qpropagate(0, self.q0[dir], self.elements[dir], z) if -self.Lc / 2 <= z < self.Lc / 2: return abcd.q2w(q, self.nc) else: return abcd.q2w(q)