diff --git a/pykat/finesse.py b/pykat/finesse.py index 08d1fae817a28bf1c5f73462b03311550b94560c..cdb5a2ae1a44a2db553661393bfba3ee6229e0e3 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -642,13 +642,19 @@ class Signals(object): @property def f(self): return self.__f @f.setter - def f(self,value): self.__f.value = SIfloat(value) + def f(self,value): + v = SIfloat(value) + + if v <= 0: + raise pkex.BasePyKatException("Signal frequency must be greater than 0.") + + self.__f.value = SIfloat(value) def __init__(self, kat): self._default_name = "fsignal" self.targets = [] self._params = [] - self.__f = Param("f", self, 0) + self.__f = Param("f", self, None) self._kat = kat def _register_param(self, param): @@ -667,21 +673,22 @@ class Signals(object): def getFinesseText(self): rtn = [] - if len(self.targets) == 0 and (self.f != 0 and self.f is not None): - rtn.append("fsig {name} {frequency}" - .format(name = self.name, - frequency=str(self.f))) - else: - for t in self.targets: - rtn.extend(t.getFinesseText()) - - rtn.append("fsig {name} {comp} {target} {frequency} {phase} {amplitude}" - .format(name = t.name, - comp=t.owner, - target=t.target, - frequency=str(self.f), - phase=str(t.phase), - amplitude=str(t.amplitude if t.amplitude != None else ""))) + if self.f.value is not None and self.f is not None: + if len(self.targets) == 0: + rtn.append("fsig {name} {frequency}" + .format(name = self.name, + frequency=str(self.f.value))) + else: + for t in self.targets: + rtn.extend(t.getFinesseText()) + + rtn.append("fsig {name} {comp} {target} {frequency} {phase} {amplitude}" + .format(name = t.name, + comp=t.owner, + target=t.target, + frequency=str(self.f.value), + phase=str(t.phase), + amplitude=str(t.amplitude if t.amplitude != None else ""))) for p in self._params: rtn.extend(p.getFinesseText())