From 31995ed801fdd51eefbecf9f34f12d1ce6e7e7be Mon Sep 17 00:00:00 2001
From: Daniel Brown <ddb@star.sr.bham.ac.uk>
Date: Mon, 16 May 2016 13:16:54 -0700
Subject: [PATCH] Fixes #1 - warning on negative or zero fsig

---
 pykat/finesse.py | 41 ++++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/pykat/finesse.py b/pykat/finesse.py
index 08d1fae..cdb5a2a 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())
-- 
GitLab