From 66c2a0dff8e682c01654a8c02d7d81ddf6e6a4de Mon Sep 17 00:00:00 2001 From: Daniel Brown <ddb@star.sr.bham.ac.uk> Date: Sun, 15 May 2016 12:47:54 -0700 Subject: [PATCH] adding lens power option --- pykat/__init__.py | 2 +- pykat/components.py | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/pykat/__init__.py b/pykat/__init__.py index e9f2f0f..05ad003 100644 --- a/pykat/__init__.py +++ b/pykat/__init__.py @@ -3,7 +3,7 @@ from __future__ import division from __future__ import print_function from __future__ import unicode_literals -__version__ = "1.0.6" +__version__ = "1.0.7" # This flag is used to switch on the gui features in pkat at import time USE_GUI = False diff --git a/pykat/components.py b/pykat/components.py index c1ee209..b6c1212 100644 --- a/pykat/components.py +++ b/pykat/components.py @@ -994,11 +994,30 @@ class lens(Component): self._requested_node_names.append(node2) self._svgItem = None self.__f = Param("f", self, SIfloat(f)) + self.__p = Param("p", self, None) @property - def f(self): return self.__f + def f(self): + if self.__f is not None: + return self.__f + else: + return 1/self.__p @f.setter - def f(self, value): self.__f.value = SIfloat(value) + def f(self, value): + self.__f.value = SIfloat(value) + self.__p.value = None + + @property + def p(self): + if self.__p is not None: + return self.__p + else: + return 1/self.__f + + @f.setter + def p(self, value): + self.__p.value = SIfloat(value) + self.__f.value = None @staticmethod def parseFinesseText(text): @@ -1015,7 +1034,10 @@ class lens(Component): raise pkex.BasePyKatException("Lens Finesse code format incorrect '{0}'".format(text)) def getFinesseText(self): - rtn = ['lens {0} {1} {2} {3}'.format(self.name, self.f.value, self.nodes[0].name, self.nodes[1].name)] + if self.__p is None: + rtn = ['lens {0} {1} {2} {3}'.format(self.name, self.f.value, self.nodes[0].name, self.nodes[1].name)] + else: + rtn = ['lens* {0} {1} {2} {3}'.format(self.name, self.p.value, self.nodes[0].name, self.nodes[1].name)] for p in self._params: rtn.extend(p.getFinesseText()) -- GitLab