diff --git a/pykat/commands.py b/pykat/commands.py index 602c423f270113f9e8b55c47483da4c068813513..d8f80cd5e51068108594c61bcbf4cf56ce2cfcfa 100644 --- a/pykat/commands.py +++ b/pykat/commands.py @@ -61,6 +61,8 @@ class cavity(Command): class gauss(object): @staticmethod def parseFinesseText(text, kat): + print "parsing gauss", kat.lambda0 + values = text.split() if not values[0].startswith("gauss") or (len(values) != 6 and len(values) != 8): raise pkex.BasePyKatException("'{0}' not a valid Finesse gauss command".format(text)) @@ -69,24 +71,24 @@ class gauss(object): component = values[2] node = values[3] - if values[0]: + if not values[0].endswith("*"): if len(values) == 6: - gp = gauss_param(w0=values[-2], z=values[-1]) + gp = gauss_param(kat.lambda0, w0=values[-2], z=values[-1]) elif len(values) == 8: - gpx = gauss_param(w0=values[-4], z=values[-3]) - gpy = gauss_param(w0=values[-2], z=values[-1]) + gpx = gauss_param(kat.lambda0, w0=values[-4], z=values[-3]) + gpy = gauss_param(kat.lambda0, w0=values[-2], z=values[-1]) elif values[0].endswith("*"): if len(values) == 6: - gp = gauss_param(z=values[-2], zr=values[-1]) + gp = gauss_param(kat.lambda0, z=values[-2], zr=values[-1]) elif len(values) == 8: - gpx = gauss_param(z=values[-4], zr=values[-3]) - gpy = gauss_param(z=values[-2], zr=values[-1]) + gpx = gauss_param(kat.lambda0, z=values[-4], zr=values[-3]) + gpy = gauss_param(kat.lambda0, z=values[-2], zr=values[-1]) elif values[0].endswith("**"): if len(values) == 6: - gp = gauss_param(w=values[-2], rc=values[-1]) + gp = gauss_param(kat.lambda0, w=values[-2], rc=values[-1]) elif len(values) == 8: - gpx = gauss_param(w=values[-4], rc=values[-3]) - gpy = gauss_param(w=values[-2], rc=values[-1]) + gpx = gauss_param(kat.lambda0, w=values[-4], rc=values[-3]) + gpy = gauss_param(kat.lambda0, w=values[-2], rc=values[-1]) else: raise pkex.BasePyKatException("Unexpected ending to gauss command '{0}'".format(text)) diff --git a/pykat/finesse.py b/pykat/finesse.py index 7513b043d8e3b5aa5c9b0318312564c2cb8881bf..ac9e05cbf0c35b8d29cea2bba722dfc1e14ca890 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -390,6 +390,7 @@ class kat(object): self.__noxaxis = None self.__time_code = None self.__yaxis = "abs" # default yaxis + self.__lambda0 = 1064e-9 if kat_code != None and kat_file != None: raise pkex.BasePyKatException("Specify either a Kat file or some Kat code, not both.") @@ -428,6 +429,16 @@ class kat(object): else: self.__trace = value + @property + def lambda0(self): return self.__lambda0 + @lambda0.setter + def lambda0(self, value): + self.__lambda0 = SIfloat(value) + + for node in self.nodes.getNodes(): + if self.nodes[node].q != None: + self.nodes[node].q.wavelength = self.__lambda0 + @property def maxtem(self): return self.__maxtem @maxtem.setter @@ -610,6 +621,9 @@ class kat(object): after_process.append(line) elif(first == "noxaxis"): self.noxaxis = True + elif(first == "lambda"): + v = line.split() + self.lambda0 = SIfloat(v[-1]) elif(first == "yaxis"): v = line.split() diff --git a/pykat/node_network.py b/pykat/node_network.py index 64b875a63e3a83aa7f71ca65c0e16e4d2865de8a..a0047929ee2d8e5ec2448855f5493ac3191ddb39 100644 --- a/pykat/node_network.py +++ b/pykat/node_network.py @@ -22,6 +22,9 @@ class NodeNetwork(object): cls = type(self) self.__class__ = type(cls.__name__, (cls,), {}) + + @property + def kat(self): return self.__kat def registerComponentNodes(self, comp, node_names, change_callback): """ @@ -273,11 +276,11 @@ class Node(object): self.__q_comp = component if len(args) == 1: - self.__q_x = gauss_param(q=args[0]) - self.__q_y = gauss_param(q=args[0]) + self.__q_x = gauss_param(self._network.kat.lambda0, q=args[0]) + self.__q_y = gauss_param(self._network.kat.lambda0, q=args[0]) elif len(args) == 2: - self.__q_x = gauss_param(q=args[0]) - self.__q_y = gauss_param(q=args[1]) + self.__q_x = gauss_param(self._network.kat.lambda0, q=args[0]) + self.__q_y = gauss_param(self._network.kat.lambda0, q=args[1]) else: raise pkex.BasePyKatException("Must specify either 1 Gaussian beam parameter or 2 for astigmatic beams") diff --git a/pykat/utilities/optics/gaussian_beams.py b/pykat/utilities/optics/gaussian_beams.py index e49e704c9c12b40c7a2f184e8faeeb3a3783b17c..20e8fcb834755261eadc71ff2ee2cce5653151fe 100644 --- a/pykat/utilities/optics/gaussian_beams.py +++ b/pykat/utilities/optics/gaussian_beams.py @@ -25,8 +25,9 @@ class gauss_param(object): def __init__(self, wavelength=1064e-9, nr=1, *args, **kwargs): self.__q = None - self.__lambda = float(wavelength) - self.__nr = float(nr) + print "wavelength", wavelength, kwargs + self.__lambda = SIfloat(wavelength) + self.__nr = SIfloat(nr) if len(args) == 1: self.__q = complex(args[0]) @@ -55,6 +56,8 @@ class gauss_param(object): @property def wavelength(self): return self.__lambda + @wavelength.setter + def wavelength(self,value): self.__lambda = SIfloat(value) @property def nr(self): return self.__nr