diff --git a/pykat/components.py b/pykat/components.py index 5ae2630aae9d3ecc7dceaf3e68f9a8f911926bf1..d6a62ff7b3cdcd7b040b48533b0851b46c3f5fcf 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 f196cf75850a544165c71c5b8f458cb3e7ccee1a..f920cda09055aec82abc959d87089b05d47a08f2 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 798535afd103226921d0cd5eec9e19f3663e8b7d..c6e0ba0a381ae5c5e05462d9424577123adcac24 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 8179373756a527dc66ac62972145d46791351025..ea2fa94ade9c8815f36be9b41a8c03d8b375b153 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))