From ad7ef75a0848d0f6e05e761755a3d02dc85d860e Mon Sep 17 00:00:00 2001 From: Daniel Brown <ddb@star.sr.bham.ac.uk> Date: Wed, 12 Feb 2014 18:49:33 +0100 Subject: [PATCH] fixing loss parsing/inputs and fixing rsub on Param and gaussbeam --- pykat/components.py | 25 +++++++++++------------- pykat/finesse.py | 8 ++++---- pykat/param.py | 3 ++- pykat/utilities/optics/gaussian_beams.py | 3 ++- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/pykat/components.py b/pykat/components.py index 5ae2630..d6a62ff 100644 --- a/pykat/components.py +++ b/pykat/components.py @@ -159,7 +159,7 @@ class AbstractMirrorComponent(Component): super(AbstractMirrorComponent, self).__init__(name) if (L != None and R != None and T != None) and SIfloat(R)+SIfloat(T)+SIfloat(L) != 1: - raise pkex.BasePyKatException('L+R+T must equal 1 if all are specified') + raise pkex.BasePyKatException('L+R+T must equal 1 if all are specified at {0}'.format(self.name)) elif (R != None and L is None and T != None): L = 1- (SIfloat(R)+SIfloat(T)) elif (R is None and L != None and T != None): @@ -320,20 +320,17 @@ class beamSplitter(AbstractMirrorComponent): if len(values[0])==2: values.pop(0) # remove initial value - return beamSplitter(values[0], values[5], values[6], values[7], values[8], values[1], values[2], values[3], values[4]) + return beamSplitter(values[0], values[5], values[6], values[7], values[8], values[1], values[2], None, values[3], values[4]) + elif values[0][2]=="1": + values.pop(0) # remove initial value + return beamSplitter(values[0], values[5], values[6], + values[7], values[8], None, values[1], values[2], values[3], values[4]) else: - if values[0][2]=="1": - values.pop(0) # remove initial value - return beamSplitter(values[0], values[5], values[6], - values[7], values[8], 1.0 - SIfloat(values[1]) - - SIfloat(values[2]), values[1], values[3], values[4]) - else: - values.pop(0) # remove initial value - return beamSplitter(values[0], values[5], values[6], - values[7], values[8], values[1], 1.0 - - SIfloat(values[1]) - SIfloat(values[2]), values[3], - values[4]) - + values.pop(0) # remove initial value + return beamSplitter(values[0], values[5], values[6], + values[7], values[8], values[1], None, values[3], + values[4]) + def getFinesseText(self): if self.R+self.T+self.L > 1: raise pkex.BasePyKatException("Beamsplitter {0} has R+T+L > 1".format(self.name)) diff --git a/pykat/finesse.py b/pykat/finesse.py index f196cf7..f920cda 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -507,11 +507,11 @@ class kat(object): if component_name in self.__detectors : self.__detectors[component_name].scale = SIfloat(v[1]) else: - raise pkex.BasePyKatException("scale command `{0}` refers to non-existing output".format(text)) + raise pkex.BasePyKatException("scale command `{0}` refers to non-existing output".format(component_name)) elif len(values) == 2: self.scale = SIfloat(v[1]) else: - raise pkex.BasePyKatException("scale command `{0}` is incorrect.".format(text)) + raise pkex.BasePyKatException("scale command `{0}` is incorrect.".format(line)) elif (first == "pdtype"): v = line.split() if len(v) == 3: @@ -519,9 +519,9 @@ class kat(object): if component_name in self.__detectors : self.__detectors[component_name].pdtype = v[2] else: - raise pkex.BasePyKatException("pdtype command `{0}` refers to non-existing detector".format(text)) + raise pkex.BasePyKatException("pdtype command `{0}` refers to non-existing detector".format(component_name)) else: - raise pkex.BasePyKatException("pdtype command `{0}` is incorrect.".format(text)) + raise pkex.BasePyKatException("pdtype command `{0}` is incorrect.".format(line)) self.__currentTag = NO_BLOCK diff --git a/pykat/param.py b/pykat/param.py index 798535a..c6e0ba0 100644 --- a/pykat/param.py +++ b/pykat/param.py @@ -138,7 +138,8 @@ class Param(putable, putter): def __isub__(self, a): return self.value - (a) - __rsub__ = __sub__ + def __rsub__(self, a): + return (a) - self.value def __div__(self, a): return self.value / (a) diff --git a/pykat/utilities/optics/gaussian_beams.py b/pykat/utilities/optics/gaussian_beams.py index 8179373..ea2fa94 100644 --- a/pykat/utilities/optics/gaussian_beams.py +++ b/pykat/utilities/optics/gaussian_beams.py @@ -117,7 +117,8 @@ class gauss_param(object): self.__q -= complex(a) return self - __rsub__ = __sub__ + def __rsub__(self, a): + return gauss_param(self.__lambda, self.__nr, complex(a) - self.__q) def __div__(self, a): return gauss_param(self.__lambda, self.__nr, self.__q / complex(a)) -- GitLab