diff --git a/pykat/finesse.py b/pykat/finesse.py index 8a244f3507cdd0d8116cf77796ca6c59de053dfd..76570ff1172173a6c2192de66b23b32f73e0ce83 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -30,6 +30,7 @@ import subprocess import tempfile import numpy as np import datetime +import time import pickle import pykat import warnings @@ -153,7 +154,8 @@ def f__lkat_trace_callback(lkat, trace_info, getCavities, getNodes, getSpaces): class katRun(object): def __init__(self): - self.runDateTime = datetime.datetime.now() + self.runtime = None + self.StartDateTime = datetime.datetime.now() self.x = None self.y = None self.xlabel = None @@ -162,11 +164,12 @@ class katRun(object): self.katVersion = None self.yaxis = None - def plot(self): + def plot(self, logy=False): import pylab pylab.plot(self.x, self.y) - pylab.legend(self.ylabels,0) + + pylab.legend(self.ylabels, 0) pylab.xlabel(self.xlabel) pylab.show() @@ -209,7 +212,8 @@ class katRun(object): class katRun2D(object): def __init__(self): - self.runDateTime = datetime.datetime.now() + self.runtime + self.startDateTime = datetime.datetime.now() self.x = None self.y = None self.z = None @@ -956,7 +960,8 @@ class kat(object): r.yaxis = self.yaxis r.katScript = "".join(self.generateKatScript()) - + r.katScript += "time\n" + if (plot==None): # ensure we don't do any plotting. That should be handled # by user themselves @@ -1022,13 +1027,18 @@ class kat(object): if printerr == 1: sys.stdout.write("\r{0} {1}".format(action, prc)) - else: err += line [out,errpipe] = p.communicate() + _out = out.split("\n") + + for line in _out[::-1]: + if line.lstrip().startswith('computation time:'): + r.runtime = float(line.split(":")[1].replace("s","")) + if printout == 1: print(out) else: @@ -1039,8 +1049,6 @@ class kat(object): ix2 = out.find(')',ix) r.katVersion = out[ix:ix2] - r.runDateTime = datetime.datetime.now() - # If Finesse returned an error, just print that and exit! if p.returncode != 0: print(err) diff --git a/pykat/optics/knm.py b/pykat/optics/knm.py index 626335e9f7d5c6567d495df8473162078a52b2c7..b75ad51103841b307bd2bdf6e2b49a26caf01528 100644 --- a/pykat/optics/knm.py +++ b/pykat/optics/knm.py @@ -311,15 +311,15 @@ def ROM_HG_knm(weights, mode_in, mode_out, q1, q2, q1y=None, q2y=None, cache=Non elif n_mod_2 != m_mod_2: if npr_mod_2 == mpr_mod_2: - k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q1Q4) + np.einsum('ij,ij', -u_xy_nodes, w_ij_Q2Q3) + k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q1Q4) - np.einsum('ij,ij', u_xy_nodes, w_ij_Q2Q3) else: - k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q2Q4) + np.einsum('ij,ij', -u_xy_nodes, w_ij_Q1Q3) + k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q2Q4) - np.einsum('ij,ij', u_xy_nodes, w_ij_Q1Q3) elif npr_mod_2 != mpr_mod_2: if n_mod_2 == m_mod_2: - k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q3Q4) + np.einsum('ij,ij', -u_xy_nodes, w_ij_Q1Q2) + k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q3Q4) - np.einsum('ij,ij', u_xy_nodes, w_ij_Q1Q2) else: - k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q2Q4) + np.einsum('ij,ij', -u_xy_nodes, w_ij_Q1Q3) + k_ROQ = np.einsum('ij,ij', u_xy_nodes, w_ij_Q2Q4) - np.einsum('ij,ij', u_xy_nodes, w_ij_Q1Q3) return k_ROQ diff --git a/pykat/optics/maps.py b/pykat/optics/maps.py index 8bdf6f90f64ba7b1dbd5e6c746c9091f76ff82d5..0eb5422faa58cbbb8211c712b89b37a3b5b012c5 100644 --- a/pykat/optics/maps.py +++ b/pykat/optics/maps.py @@ -293,7 +293,7 @@ class curvedmap(surfacemap): class tiltmap(surfacemap): def __init__(self, name, size, step_size, tilt): - surfacemap.__init__(self, name, "phase", size, (np.array(size)+1)/2.0, step_size, 1e-9) + surfacemap.__init__(self, name, "phase reflection", size, (np.array(size)+1)/2.0, step_size, 1e-9) self.tilt = tilt @property @@ -311,7 +311,7 @@ class tiltmap(surfacemap): class zernikemap(surfacemap): def __init__(self, name, size, step_size, radius, scaling=1e-9): - surfacemap.__init__(self, name, "phase", size, (np.array(size)+1)/2.0, step_size, scaling) + surfacemap.__init__(self, name, "phase reflection", size, (np.array(size)+1)/2.0, step_size, scaling) self.__zernikes = {} self.radius = radius diff --git a/pykat/optics/romhom.py b/pykat/optics/romhom.py index ac12c673509615a2431a4b85d0ed93b1aed50f9d..1766b8308ef9d97ec2bb743e855a0b242b36a7d4 100644 --- a/pykat/optics/romhom.py +++ b/pykat/optics/romhom.py @@ -2,7 +2,7 @@ import math import os.path import pykat import collections - + from pykat.external.progressbar import ProgressBar, ETA, Percentage, Bar from itertools import combinations_with_replacement as combinations from pykat.optics.gaussian_beams import beam_param, HG_beam