proteus  1.8.1
C/C++/Fortran libraries
WaveTools.cpp
Go to the documentation of this file.
1 /* Generated by Cython 0.29.30 */
2 
3 #ifndef PY_SSIZE_T_CLEAN
4 #define PY_SSIZE_T_CLEAN
5 #endif /* PY_SSIZE_T_CLEAN */
6 #include "Python.h"
7 #ifndef Py_PYTHON_H
8  #error Python headers needed to compile C extensions, please install development version of Python.
9 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
10  #error Cython requires Python 2.6+ or Python 3.3+.
11 #else
12 #define CYTHON_ABI "0_29_30"
13 #define CYTHON_HEX_VERSION 0x001D1EF0
14 #define CYTHON_FUTURE_DIVISION 1
15 #include <stddef.h>
16 #ifndef offsetof
17  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
18 #endif
19 #if !defined(WIN32) && !defined(MS_WINDOWS)
20  #ifndef __stdcall
21  #define __stdcall
22  #endif
23  #ifndef __cdecl
24  #define __cdecl
25  #endif
26  #ifndef __fastcall
27  #define __fastcall
28  #endif
29 #endif
30 #ifndef DL_IMPORT
31  #define DL_IMPORT(t) t
32 #endif
33 #ifndef DL_EXPORT
34  #define DL_EXPORT(t) t
35 #endif
36 #define __PYX_COMMA ,
37 #ifndef HAVE_LONG_LONG
38  #if PY_VERSION_HEX >= 0x02070000
39  #define HAVE_LONG_LONG
40  #endif
41 #endif
42 #ifndef PY_LONG_LONG
43  #define PY_LONG_LONG LONG_LONG
44 #endif
45 #ifndef Py_HUGE_VAL
46  #define Py_HUGE_VAL HUGE_VAL
47 #endif
48 #ifdef PYPY_VERSION
49  #define CYTHON_COMPILING_IN_PYPY 1
50  #define CYTHON_COMPILING_IN_PYSTON 0
51  #define CYTHON_COMPILING_IN_CPYTHON 0
52  #undef CYTHON_USE_TYPE_SLOTS
53  #define CYTHON_USE_TYPE_SLOTS 0
54  #undef CYTHON_USE_PYTYPE_LOOKUP
55  #define CYTHON_USE_PYTYPE_LOOKUP 0
56  #if PY_VERSION_HEX < 0x03050000
57  #undef CYTHON_USE_ASYNC_SLOTS
58  #define CYTHON_USE_ASYNC_SLOTS 0
59  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
60  #define CYTHON_USE_ASYNC_SLOTS 1
61  #endif
62  #undef CYTHON_USE_PYLIST_INTERNALS
63  #define CYTHON_USE_PYLIST_INTERNALS 0
64  #undef CYTHON_USE_UNICODE_INTERNALS
65  #define CYTHON_USE_UNICODE_INTERNALS 0
66  #undef CYTHON_USE_UNICODE_WRITER
67  #define CYTHON_USE_UNICODE_WRITER 0
68  #undef CYTHON_USE_PYLONG_INTERNALS
69  #define CYTHON_USE_PYLONG_INTERNALS 0
70  #undef CYTHON_AVOID_BORROWED_REFS
71  #define CYTHON_AVOID_BORROWED_REFS 1
72  #undef CYTHON_ASSUME_SAFE_MACROS
73  #define CYTHON_ASSUME_SAFE_MACROS 0
74  #undef CYTHON_UNPACK_METHODS
75  #define CYTHON_UNPACK_METHODS 0
76  #undef CYTHON_FAST_THREAD_STATE
77  #define CYTHON_FAST_THREAD_STATE 0
78  #undef CYTHON_FAST_PYCALL
79  #define CYTHON_FAST_PYCALL 0
80  #undef CYTHON_PEP489_MULTI_PHASE_INIT
81  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
82  #undef CYTHON_USE_TP_FINALIZE
83  #define CYTHON_USE_TP_FINALIZE 0
84  #undef CYTHON_USE_DICT_VERSIONS
85  #define CYTHON_USE_DICT_VERSIONS 0
86  #undef CYTHON_USE_EXC_INFO_STACK
87  #define CYTHON_USE_EXC_INFO_STACK 0
88  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
89  #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900)
90  #endif
91 #elif defined(PYSTON_VERSION)
92  #define CYTHON_COMPILING_IN_PYPY 0
93  #define CYTHON_COMPILING_IN_PYSTON 1
94  #define CYTHON_COMPILING_IN_CPYTHON 0
95  #ifndef CYTHON_USE_TYPE_SLOTS
96  #define CYTHON_USE_TYPE_SLOTS 1
97  #endif
98  #undef CYTHON_USE_PYTYPE_LOOKUP
99  #define CYTHON_USE_PYTYPE_LOOKUP 0
100  #undef CYTHON_USE_ASYNC_SLOTS
101  #define CYTHON_USE_ASYNC_SLOTS 0
102  #undef CYTHON_USE_PYLIST_INTERNALS
103  #define CYTHON_USE_PYLIST_INTERNALS 0
104  #ifndef CYTHON_USE_UNICODE_INTERNALS
105  #define CYTHON_USE_UNICODE_INTERNALS 1
106  #endif
107  #undef CYTHON_USE_UNICODE_WRITER
108  #define CYTHON_USE_UNICODE_WRITER 0
109  #undef CYTHON_USE_PYLONG_INTERNALS
110  #define CYTHON_USE_PYLONG_INTERNALS 0
111  #ifndef CYTHON_AVOID_BORROWED_REFS
112  #define CYTHON_AVOID_BORROWED_REFS 0
113  #endif
114  #ifndef CYTHON_ASSUME_SAFE_MACROS
115  #define CYTHON_ASSUME_SAFE_MACROS 1
116  #endif
117  #ifndef CYTHON_UNPACK_METHODS
118  #define CYTHON_UNPACK_METHODS 1
119  #endif
120  #undef CYTHON_FAST_THREAD_STATE
121  #define CYTHON_FAST_THREAD_STATE 0
122  #undef CYTHON_FAST_PYCALL
123  #define CYTHON_FAST_PYCALL 0
124  #undef CYTHON_PEP489_MULTI_PHASE_INIT
125  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
126  #undef CYTHON_USE_TP_FINALIZE
127  #define CYTHON_USE_TP_FINALIZE 0
128  #undef CYTHON_USE_DICT_VERSIONS
129  #define CYTHON_USE_DICT_VERSIONS 0
130  #undef CYTHON_USE_EXC_INFO_STACK
131  #define CYTHON_USE_EXC_INFO_STACK 0
132  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
133  #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
134  #endif
135 #else
136  #define CYTHON_COMPILING_IN_PYPY 0
137  #define CYTHON_COMPILING_IN_PYSTON 0
138  #define CYTHON_COMPILING_IN_CPYTHON 1
139  #ifndef CYTHON_USE_TYPE_SLOTS
140  #define CYTHON_USE_TYPE_SLOTS 1
141  #endif
142  #if PY_VERSION_HEX < 0x02070000
143  #undef CYTHON_USE_PYTYPE_LOOKUP
144  #define CYTHON_USE_PYTYPE_LOOKUP 0
145  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
146  #define CYTHON_USE_PYTYPE_LOOKUP 1
147  #endif
148  #if PY_MAJOR_VERSION < 3
149  #undef CYTHON_USE_ASYNC_SLOTS
150  #define CYTHON_USE_ASYNC_SLOTS 0
151  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
152  #define CYTHON_USE_ASYNC_SLOTS 1
153  #endif
154  #if PY_VERSION_HEX < 0x02070000
155  #undef CYTHON_USE_PYLONG_INTERNALS
156  #define CYTHON_USE_PYLONG_INTERNALS 0
157  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
158  #define CYTHON_USE_PYLONG_INTERNALS 1
159  #endif
160  #ifndef CYTHON_USE_PYLIST_INTERNALS
161  #define CYTHON_USE_PYLIST_INTERNALS 1
162  #endif
163  #ifndef CYTHON_USE_UNICODE_INTERNALS
164  #define CYTHON_USE_UNICODE_INTERNALS 1
165  #endif
166  #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
167  #undef CYTHON_USE_UNICODE_WRITER
168  #define CYTHON_USE_UNICODE_WRITER 0
169  #elif !defined(CYTHON_USE_UNICODE_WRITER)
170  #define CYTHON_USE_UNICODE_WRITER 1
171  #endif
172  #ifndef CYTHON_AVOID_BORROWED_REFS
173  #define CYTHON_AVOID_BORROWED_REFS 0
174  #endif
175  #ifndef CYTHON_ASSUME_SAFE_MACROS
176  #define CYTHON_ASSUME_SAFE_MACROS 1
177  #endif
178  #ifndef CYTHON_UNPACK_METHODS
179  #define CYTHON_UNPACK_METHODS 1
180  #endif
181  #if PY_VERSION_HEX >= 0x030B00A4
182  #undef CYTHON_FAST_THREAD_STATE
183  #define CYTHON_FAST_THREAD_STATE 0
184  #elif !defined(CYTHON_FAST_THREAD_STATE)
185  #define CYTHON_FAST_THREAD_STATE 1
186  #endif
187  #ifndef CYTHON_FAST_PYCALL
188  #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000)
189  #endif
190  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
191  #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
192  #endif
193  #ifndef CYTHON_USE_TP_FINALIZE
194  #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
195  #endif
196  #ifndef CYTHON_USE_DICT_VERSIONS
197  #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
198  #endif
199  #if PY_VERSION_HEX >= 0x030B00A4
200  #undef CYTHON_USE_EXC_INFO_STACK
201  #define CYTHON_USE_EXC_INFO_STACK 0
202  #elif !defined(CYTHON_USE_EXC_INFO_STACK)
203  #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
204  #endif
205  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
206  #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
207  #endif
208 #endif
209 #if !defined(CYTHON_FAST_PYCCALL)
210 #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
211 #endif
212 #if CYTHON_USE_PYLONG_INTERNALS
213  #if PY_MAJOR_VERSION < 3
214  #include "longintrepr.h"
215  #endif
216  #undef SHIFT
217  #undef BASE
218  #undef MASK
219  #ifdef SIZEOF_VOID_P
220  enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
221  #endif
222 #endif
223 #ifndef __has_attribute
224  #define __has_attribute(x) 0
225 #endif
226 #ifndef __has_cpp_attribute
227  #define __has_cpp_attribute(x) 0
228 #endif
229 #ifndef CYTHON_RESTRICT
230  #if defined(__GNUC__)
231  #define CYTHON_RESTRICT __restrict__
232  #elif defined(_MSC_VER) && _MSC_VER >= 1400
233  #define CYTHON_RESTRICT __restrict
234  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
235  #define CYTHON_RESTRICT restrict
236  #else
237  #define CYTHON_RESTRICT
238  #endif
239 #endif
240 #ifndef CYTHON_UNUSED
241 # if defined(__GNUC__)
242 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
243 # define CYTHON_UNUSED __attribute__ ((__unused__))
244 # else
245 # define CYTHON_UNUSED
246 # endif
247 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
248 # define CYTHON_UNUSED __attribute__ ((__unused__))
249 # else
250 # define CYTHON_UNUSED
251 # endif
252 #endif
253 #ifndef CYTHON_MAYBE_UNUSED_VAR
254 # if defined(__cplusplus)
255  template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
256 # else
257 # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
258 # endif
259 #endif
260 #ifndef CYTHON_NCP_UNUSED
261 # if CYTHON_COMPILING_IN_CPYTHON
262 # define CYTHON_NCP_UNUSED
263 # else
264 # define CYTHON_NCP_UNUSED CYTHON_UNUSED
265 # endif
266 #endif
267 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
268 #ifdef _MSC_VER
269  #ifndef _MSC_STDINT_H_
270  #if _MSC_VER < 1300
271  typedef unsigned char uint8_t;
272  typedef unsigned int uint32_t;
273  #else
274  typedef unsigned __int8 uint8_t;
275  typedef unsigned __int32 uint32_t;
276  #endif
277  #endif
278 #else
279  #include <stdint.h>
280 #endif
281 #ifndef CYTHON_FALLTHROUGH
282  #if defined(__cplusplus) && __cplusplus >= 201103L
283  #if __has_cpp_attribute(fallthrough)
284  #define CYTHON_FALLTHROUGH [[fallthrough]]
285  #elif __has_cpp_attribute(clang::fallthrough)
286  #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
287  #elif __has_cpp_attribute(gnu::fallthrough)
288  #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
289  #endif
290  #endif
291  #ifndef CYTHON_FALLTHROUGH
292  #if __has_attribute(fallthrough)
293  #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
294  #else
295  #define CYTHON_FALLTHROUGH
296  #endif
297  #endif
298  #if defined(__clang__ ) && defined(__apple_build_version__)
299  #if __apple_build_version__ < 7000000
300  #undef CYTHON_FALLTHROUGH
301  #define CYTHON_FALLTHROUGH
302  #endif
303  #endif
304 #endif
305 
306 #ifndef __cplusplus
307  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
308 #endif
309 #ifndef CYTHON_INLINE
310  #if defined(__clang__)
311  #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
312  #else
313  #define CYTHON_INLINE inline
314  #endif
315 #endif
316 template<typename T>
317 void __Pyx_call_destructor(T& x) {
318  x.~T();
319 }
320 template<typename T>
321 class __Pyx_FakeReference {
322  public:
323  __Pyx_FakeReference() : ptr(NULL) { }
324  __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
325  T *operator->() { return ptr; }
326  T *operator&() { return ptr; }
327  operator T&() { return *ptr; }
328  template<typename U> bool operator ==(U other) { return *ptr == other; }
329  template<typename U> bool operator !=(U other) { return *ptr != other; }
330  private:
331  T *ptr;
332 };
333 
334 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
335  #define Py_OptimizeFlag 0
336 #endif
337 #define __PYX_BUILD_PY_SSIZE_T "n"
338 #define CYTHON_FORMAT_SSIZE_T "z"
339 #if PY_MAJOR_VERSION < 3
340  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
341  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
342  PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
343  #define __Pyx_DefaultClassType PyClass_Type
344 #else
345  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
346  #define __Pyx_DefaultClassType PyType_Type
347 #if PY_VERSION_HEX >= 0x030B00A1
348  static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
349  PyObject *code, PyObject *c, PyObject* n, PyObject *v,
350  PyObject *fv, PyObject *cell, PyObject* fn,
351  PyObject *name, int fline, PyObject *lnos) {
352  PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
353  PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
354  const char *fn_cstr=NULL;
355  const char *name_cstr=NULL;
356  PyCodeObject* co=NULL;
357  PyObject *type, *value, *traceback;
358  PyErr_Fetch(&type, &value, &traceback);
359  if (!(kwds=PyDict_New())) goto end;
360  if (!(argcount=PyLong_FromLong(a))) goto end;
361  if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
362  if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
363  if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
364  if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
365  if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
366  if (!(nlocals=PyLong_FromLong(l))) goto end;
367  if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
368  if (!(stacksize=PyLong_FromLong(s))) goto end;
369  if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
370  if (!(flags=PyLong_FromLong(f))) goto end;
371  if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
372  if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
373  if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
374  if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
375  if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
376  if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
377  if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
378  if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
379  if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
380  if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
381  if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
382  if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
383  if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
384  if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
385  Py_XDECREF((PyObject*)co);
386  co = (PyCodeObject*)call_result;
387  call_result = NULL;
388  if (0) {
389  cleanup_code_too:
390  Py_XDECREF((PyObject*)co);
391  co = NULL;
392  }
393  end:
394  Py_XDECREF(kwds);
395  Py_XDECREF(argcount);
396  Py_XDECREF(posonlyargcount);
397  Py_XDECREF(kwonlyargcount);
398  Py_XDECREF(nlocals);
399  Py_XDECREF(stacksize);
400  Py_XDECREF(replace);
401  Py_XDECREF(call_result);
402  Py_XDECREF(empty);
403  if (type) {
404  PyErr_Restore(type, value, traceback);
405  }
406  return co;
407  }
408 #else
409  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
410  PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
411 #endif
412  #define __Pyx_DefaultClassType PyType_Type
413 #endif
414 #ifndef Py_TPFLAGS_CHECKTYPES
415  #define Py_TPFLAGS_CHECKTYPES 0
416 #endif
417 #ifndef Py_TPFLAGS_HAVE_INDEX
418  #define Py_TPFLAGS_HAVE_INDEX 0
419 #endif
420 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
421  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
422 #endif
423 #ifndef Py_TPFLAGS_HAVE_FINALIZE
424  #define Py_TPFLAGS_HAVE_FINALIZE 0
425 #endif
426 #ifndef METH_STACKLESS
427  #define METH_STACKLESS 0
428 #endif
429 #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
430  #ifndef METH_FASTCALL
431  #define METH_FASTCALL 0x80
432  #endif
433  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
434  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
435  Py_ssize_t nargs, PyObject *kwnames);
436 #else
437  #define __Pyx_PyCFunctionFast _PyCFunctionFast
438  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
439 #endif
440 #if CYTHON_FAST_PYCCALL
441 #define __Pyx_PyFastCFunction_Check(func)\
442  ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
443 #else
444 #define __Pyx_PyFastCFunction_Check(func) 0
445 #endif
446 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
447  #define PyObject_Malloc(s) PyMem_Malloc(s)
448  #define PyObject_Free(p) PyMem_Free(p)
449  #define PyObject_Realloc(p) PyMem_Realloc(p)
450 #endif
451 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
452  #define PyMem_RawMalloc(n) PyMem_Malloc(n)
453  #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
454  #define PyMem_RawFree(p) PyMem_Free(p)
455 #endif
456 #if CYTHON_COMPILING_IN_PYSTON
457  #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
458  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
459 #else
460  #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
461  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
462 #endif
463 #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
464  #define __Pyx_PyThreadState_Current PyThreadState_GET()
465 #elif PY_VERSION_HEX >= 0x03060000
466  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
467 #elif PY_VERSION_HEX >= 0x03000000
468  #define __Pyx_PyThreadState_Current PyThreadState_GET()
469 #else
470  #define __Pyx_PyThreadState_Current _PyThreadState_Current
471 #endif
472 #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
473 #include "pythread.h"
474 #define Py_tss_NEEDS_INIT 0
475 typedef int Py_tss_t;
476 static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
477  *key = PyThread_create_key();
478  return 0;
479 }
480 static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
481  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
482  *key = Py_tss_NEEDS_INIT;
483  return key;
484 }
485 static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
486  PyObject_Free(key);
487 }
488 static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
489  return *key != Py_tss_NEEDS_INIT;
490 }
491 static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
492  PyThread_delete_key(*key);
493  *key = Py_tss_NEEDS_INIT;
494 }
495 static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
496  return PyThread_set_key_value(*key, value);
497 }
498 static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
499  return PyThread_get_key_value(*key);
500 }
501 #endif
502 #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
503 #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
504 #else
505 #define __Pyx_PyDict_NewPresized(n) PyDict_New()
506 #endif
507 #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
508  #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
509  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
510 #else
511  #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
512  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
513 #endif
514 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
515 #define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
516 #else
517 #define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
518 #endif
519 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
520  #define CYTHON_PEP393_ENABLED 1
521  #if defined(PyUnicode_IS_READY)
522  #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
523  0 : _PyUnicode_Ready((PyObject *)(op)))
524  #else
525  #define __Pyx_PyUnicode_READY(op) (0)
526  #endif
527  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
528  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
529  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
530  #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
531  #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
532  #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
533  #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
534  #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
535  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
536  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
537  #else
538  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
539  #endif
540  #else
541  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
542  #endif
543 #else
544  #define CYTHON_PEP393_ENABLED 0
545  #define PyUnicode_1BYTE_KIND 1
546  #define PyUnicode_2BYTE_KIND 2
547  #define PyUnicode_4BYTE_KIND 4
548  #define __Pyx_PyUnicode_READY(op) (0)
549  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
550  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
551  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
552  #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
553  #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
554  #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
555  #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
556  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
557 #endif
558 #if CYTHON_COMPILING_IN_PYPY
559  #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
560  #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
561 #else
562  #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
563  #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
564  PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
565 #endif
566 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
567  #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
568 #endif
569 #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
570  #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
571 #endif
572 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
573  #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
574 #endif
575 #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
576 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
577 #if PY_MAJOR_VERSION >= 3
578  #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
579 #else
580  #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
581 #endif
582 #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
583  #define PyObject_ASCII(o) PyObject_Repr(o)
584 #endif
585 #if PY_MAJOR_VERSION >= 3
586  #define PyBaseString_Type PyUnicode_Type
587  #define PyStringObject PyUnicodeObject
588  #define PyString_Type PyUnicode_Type
589  #define PyString_Check PyUnicode_Check
590  #define PyString_CheckExact PyUnicode_CheckExact
591 #ifndef PyObject_Unicode
592  #define PyObject_Unicode PyObject_Str
593 #endif
594 #endif
595 #if PY_MAJOR_VERSION >= 3
596  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
597  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
598 #else
599  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
600  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
601 #endif
602 #ifndef PySet_CheckExact
603  #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
604 #endif
605 #if PY_VERSION_HEX >= 0x030900A4
606  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
607  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
608 #else
609  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
610  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
611 #endif
612 #if CYTHON_ASSUME_SAFE_MACROS
613  #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
614 #else
615  #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
616 #endif
617 #if PY_MAJOR_VERSION >= 3
618  #define PyIntObject PyLongObject
619  #define PyInt_Type PyLong_Type
620  #define PyInt_Check(op) PyLong_Check(op)
621  #define PyInt_CheckExact(op) PyLong_CheckExact(op)
622  #define PyInt_FromString PyLong_FromString
623  #define PyInt_FromUnicode PyLong_FromUnicode
624  #define PyInt_FromLong PyLong_FromLong
625  #define PyInt_FromSize_t PyLong_FromSize_t
626  #define PyInt_FromSsize_t PyLong_FromSsize_t
627  #define PyInt_AsLong PyLong_AsLong
628  #define PyInt_AS_LONG PyLong_AS_LONG
629  #define PyInt_AsSsize_t PyLong_AsSsize_t
630  #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
631  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
632  #define PyNumber_Int PyNumber_Long
633 #endif
634 #if PY_MAJOR_VERSION >= 3
635  #define PyBoolObject PyLongObject
636 #endif
637 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
638  #ifndef PyUnicode_InternFromString
639  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
640  #endif
641 #endif
642 #if PY_VERSION_HEX < 0x030200A4
643  typedef long Py_hash_t;
644  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
645  #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
646 #else
647  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
648  #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
649 #endif
650 #if PY_MAJOR_VERSION >= 3
651  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
652 #else
653  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
654 #endif
655 #if CYTHON_USE_ASYNC_SLOTS
656  #if PY_VERSION_HEX >= 0x030500B1
657  #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
658  #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
659  #else
660  #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
661  #endif
662 #else
663  #define __Pyx_PyType_AsAsync(obj) NULL
664 #endif
665 #ifndef __Pyx_PyAsyncMethodsStruct
666  typedef struct {
667  unaryfunc am_await;
668  unaryfunc am_aiter;
669  unaryfunc am_anext;
670  } __Pyx_PyAsyncMethodsStruct;
671 #endif
672 
673 #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
674  #if !defined(_USE_MATH_DEFINES)
675  #define _USE_MATH_DEFINES
676  #endif
677 #endif
678 #include <math.h>
679 #ifdef NAN
680 #define __PYX_NAN() ((float) NAN)
681 #else
682 static CYTHON_INLINE float __PYX_NAN() {
683  float value;
684  memset(&value, 0xFF, sizeof(value));
685  return value;
686 }
687 #endif
688 #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
689 #define __Pyx_truncl trunc
690 #else
691 #define __Pyx_truncl truncl
692 #endif
693 
694 #define __PYX_MARK_ERR_POS(f_index, lineno) \
695  { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
696 #define __PYX_ERR(f_index, lineno, Ln_error) \
697  { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
698 
699 #ifndef __PYX_EXTERN_C
700  #ifdef __cplusplus
701  #define __PYX_EXTERN_C extern "C"
702  #else
703  #define __PYX_EXTERN_C extern
704  #endif
705 #endif
706 
707 #define __PYX_HAVE__WaveTools
708 #define __PYX_HAVE_API__WaveTools
709 /* Early includes */
710 #include <math.h>
711 #include <string.h>
712 #include <stdio.h>
713 #include "numpy/arrayobject.h"
714 #include "numpy/ndarrayobject.h"
715 #include "numpy/ndarraytypes.h"
716 #include "numpy/arrayscalars.h"
717 #include "numpy/ufuncobject.h"
718 
719  /* NumPy API declarations from "numpy/__init__.pxd" */
720 
721 #include "WaveTools.h"
722 #ifdef _OPENMP
723 #include <omp.h>
724 #endif /* _OPENMP */
725 
726 #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
727 #define CYTHON_WITHOUT_ASSERTIONS
728 #endif
729 
730 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
731  const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
732 
733 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
734 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
735 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
736 #define __PYX_DEFAULT_STRING_ENCODING ""
737 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
738 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
739 #define __Pyx_uchar_cast(c) ((unsigned char)c)
740 #define __Pyx_long_cast(x) ((long)x)
741 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
742  (sizeof(type) < sizeof(Py_ssize_t)) ||\
743  (sizeof(type) > sizeof(Py_ssize_t) &&\
744  likely(v < (type)PY_SSIZE_T_MAX ||\
745  v == (type)PY_SSIZE_T_MAX) &&\
746  (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
747  v == (type)PY_SSIZE_T_MIN))) ||\
748  (sizeof(type) == sizeof(Py_ssize_t) &&\
749  (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
750  v == (type)PY_SSIZE_T_MAX))) )
751 static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
752  return (size_t) i < (size_t) limit;
753 }
754 #if defined (__cplusplus) && __cplusplus >= 201103L
755  #include <cstdlib>
756  #define __Pyx_sst_abs(value) std::abs(value)
757 #elif SIZEOF_INT >= SIZEOF_SIZE_T
758  #define __Pyx_sst_abs(value) abs(value)
759 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
760  #define __Pyx_sst_abs(value) labs(value)
761 #elif defined (_MSC_VER)
762  #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
763 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
764  #define __Pyx_sst_abs(value) llabs(value)
765 #elif defined (__GNUC__)
766  #define __Pyx_sst_abs(value) __builtin_llabs(value)
767 #else
768  #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
769 #endif
770 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
771 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
772 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
773 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
774 #define __Pyx_PyBytes_FromString PyBytes_FromString
775 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
776 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
777 #if PY_MAJOR_VERSION < 3
778  #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
779  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
780 #else
781  #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
782  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
783 #endif
784 #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
785 #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
786 #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
787 #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
788 #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
789 #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
790 #define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
791 #define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
792 #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
793 #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
794 #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
795 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
796 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
797 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
798 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
799 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
800 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
801  const Py_UNICODE *u_end = u;
802  while (*u_end++) ;
803  return (size_t)(u_end - u - 1);
804 }
805 #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
806 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
807 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
808 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
809 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
810 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
811 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
812 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
813 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
814 #define __Pyx_PySequence_Tuple(obj)\
815  (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
816 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
817 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
818 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
819 #if CYTHON_ASSUME_SAFE_MACROS
820 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
821 #else
822 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
823 #endif
824 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
825 #if PY_MAJOR_VERSION >= 3
826 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
827 #else
828 #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
829 #endif
830 #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
831 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
832 static int __Pyx_sys_getdefaultencoding_not_ascii;
833 static int __Pyx_init_sys_getdefaultencoding_params(void) {
834  PyObject* sys;
835  PyObject* default_encoding = NULL;
836  PyObject* ascii_chars_u = NULL;
837  PyObject* ascii_chars_b = NULL;
838  const char* default_encoding_c;
839  sys = PyImport_ImportModule("sys");
840  if (!sys) goto bad;
841  default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
842  Py_DECREF(sys);
843  if (!default_encoding) goto bad;
844  default_encoding_c = PyBytes_AsString(default_encoding);
845  if (!default_encoding_c) goto bad;
846  if (strcmp(default_encoding_c, "ascii") == 0) {
847  __Pyx_sys_getdefaultencoding_not_ascii = 0;
848  } else {
849  char ascii_chars[128];
850  int c;
851  for (c = 0; c < 128; c++) {
852  ascii_chars[c] = c;
853  }
854  __Pyx_sys_getdefaultencoding_not_ascii = 1;
855  ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
856  if (!ascii_chars_u) goto bad;
857  ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
858  if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
859  PyErr_Format(
860  PyExc_ValueError,
861  "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
862  default_encoding_c);
863  goto bad;
864  }
865  Py_DECREF(ascii_chars_u);
866  Py_DECREF(ascii_chars_b);
867  }
868  Py_DECREF(default_encoding);
869  return 0;
870 bad:
871  Py_XDECREF(default_encoding);
872  Py_XDECREF(ascii_chars_u);
873  Py_XDECREF(ascii_chars_b);
874  return -1;
875 }
876 #endif
877 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
878 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
879 #else
880 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
881 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
882 static char* __PYX_DEFAULT_STRING_ENCODING;
883 static int __Pyx_init_sys_getdefaultencoding_params(void) {
884  PyObject* sys;
885  PyObject* default_encoding = NULL;
886  char* default_encoding_c;
887  sys = PyImport_ImportModule("sys");
888  if (!sys) goto bad;
889  default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
890  Py_DECREF(sys);
891  if (!default_encoding) goto bad;
892  default_encoding_c = PyBytes_AsString(default_encoding);
893  if (!default_encoding_c) goto bad;
894  __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
895  if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
896  strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
897  Py_DECREF(default_encoding);
898  return 0;
899 bad:
900  Py_XDECREF(default_encoding);
901  return -1;
902 }
903 #endif
904 #endif
905 
906 
907 /* Test for GCC > 2.95 */
908 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
909  #define likely(x) __builtin_expect(!!(x), 1)
910  #define unlikely(x) __builtin_expect(!!(x), 0)
911 #else /* !__GNUC__ or GCC < 2.95 */
912  #define likely(x) (x)
913  #define unlikely(x) (x)
914 #endif /* __GNUC__ */
915 static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
916 
917 static PyObject *__pyx_m = NULL;
918 static PyObject *__pyx_d;
919 static PyObject *__pyx_b;
920 static PyObject *__pyx_cython_runtime = NULL;
921 static PyObject *__pyx_empty_tuple;
922 static PyObject *__pyx_empty_bytes;
923 static PyObject *__pyx_empty_unicode;
924 static int __pyx_lineno;
925 static int __pyx_clineno = 0;
926 static const char * __pyx_cfilenm= __FILE__;
927 static const char *__pyx_filename;
928 
929 /* Header.proto */
930 #if !defined(CYTHON_CCOMPLEX)
931  #if defined(__cplusplus)
932  #define CYTHON_CCOMPLEX 1
933  #elif defined(_Complex_I)
934  #define CYTHON_CCOMPLEX 1
935  #else
936  #define CYTHON_CCOMPLEX 0
937  #endif
938 #endif
939 #if CYTHON_CCOMPLEX
940  #ifdef __cplusplus
941  #include <complex>
942  #else
943  #include <complex.h>
944  #endif
945 #endif
946 #if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
947  #undef _Complex_I
948  #define _Complex_I 1.0fj
949 #endif
950 
951 
952 static const char *__pyx_f[] = {
953  "proteus/WaveTools.py",
954  "stringsource",
955  "proteus/WaveTools.pxd",
956  "__init__.pxd",
957  "type.pxd",
958 };
959 
960 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":690
961  * # in Cython to enable them only on the right systems.
962  *
963  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
964  * ctypedef npy_int16 int16_t
965  * ctypedef npy_int32 int32_t
966  */
967 typedef npy_int8 __pyx_t_5numpy_int8_t;
968 
969 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":691
970  *
971  * ctypedef npy_int8 int8_t
972  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
973  * ctypedef npy_int32 int32_t
974  * ctypedef npy_int64 int64_t
975  */
976 typedef npy_int16 __pyx_t_5numpy_int16_t;
977 
978 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":692
979  * ctypedef npy_int8 int8_t
980  * ctypedef npy_int16 int16_t
981  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
982  * ctypedef npy_int64 int64_t
983  * #ctypedef npy_int96 int96_t
984  */
985 typedef npy_int32 __pyx_t_5numpy_int32_t;
986 
987 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":693
988  * ctypedef npy_int16 int16_t
989  * ctypedef npy_int32 int32_t
990  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
991  * #ctypedef npy_int96 int96_t
992  * #ctypedef npy_int128 int128_t
993  */
994 typedef npy_int64 __pyx_t_5numpy_int64_t;
995 
996 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":697
997  * #ctypedef npy_int128 int128_t
998  *
999  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
1000  * ctypedef npy_uint16 uint16_t
1001  * ctypedef npy_uint32 uint32_t
1002  */
1003 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1004 
1005 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":698
1006  *
1007  * ctypedef npy_uint8 uint8_t
1008  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
1009  * ctypedef npy_uint32 uint32_t
1010  * ctypedef npy_uint64 uint64_t
1011  */
1012 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1013 
1014 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":699
1015  * ctypedef npy_uint8 uint8_t
1016  * ctypedef npy_uint16 uint16_t
1017  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
1018  * ctypedef npy_uint64 uint64_t
1019  * #ctypedef npy_uint96 uint96_t
1020  */
1021 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1022 
1023 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":700
1024  * ctypedef npy_uint16 uint16_t
1025  * ctypedef npy_uint32 uint32_t
1026  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
1027  * #ctypedef npy_uint96 uint96_t
1028  * #ctypedef npy_uint128 uint128_t
1029  */
1030 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1031 
1032 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":704
1033  * #ctypedef npy_uint128 uint128_t
1034  *
1035  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
1036  * ctypedef npy_float64 float64_t
1037  * #ctypedef npy_float80 float80_t
1038  */
1039 typedef npy_float32 __pyx_t_5numpy_float32_t;
1040 
1041 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":705
1042  *
1043  * ctypedef npy_float32 float32_t
1044  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
1045  * #ctypedef npy_float80 float80_t
1046  * #ctypedef npy_float128 float128_t
1047  */
1048 typedef npy_float64 __pyx_t_5numpy_float64_t;
1049 
1050 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":714
1051  * # The int types are mapped a bit surprising --
1052  * # numpy.int corresponds to 'l' and numpy.long to 'q'
1053  * ctypedef npy_long int_t # <<<<<<<<<<<<<<
1054  * ctypedef npy_longlong long_t
1055  * ctypedef npy_longlong longlong_t
1056  */
1057 typedef npy_long __pyx_t_5numpy_int_t;
1058 
1059 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":715
1060  * # numpy.int corresponds to 'l' and numpy.long to 'q'
1061  * ctypedef npy_long int_t
1062  * ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
1063  * ctypedef npy_longlong longlong_t
1064  *
1065  */
1066 typedef npy_longlong __pyx_t_5numpy_long_t;
1067 
1068 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":716
1069  * ctypedef npy_long int_t
1070  * ctypedef npy_longlong long_t
1071  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
1072  *
1073  * ctypedef npy_ulong uint_t
1074  */
1075 typedef npy_longlong __pyx_t_5numpy_longlong_t;
1076 
1077 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":718
1078  * ctypedef npy_longlong longlong_t
1079  *
1080  * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
1081  * ctypedef npy_ulonglong ulong_t
1082  * ctypedef npy_ulonglong ulonglong_t
1083  */
1084 typedef npy_ulong __pyx_t_5numpy_uint_t;
1085 
1086 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":719
1087  *
1088  * ctypedef npy_ulong uint_t
1089  * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
1090  * ctypedef npy_ulonglong ulonglong_t
1091  *
1092  */
1093 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
1094 
1095 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":720
1096  * ctypedef npy_ulong uint_t
1097  * ctypedef npy_ulonglong ulong_t
1098  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
1099  *
1100  * ctypedef npy_intp intp_t
1101  */
1102 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1103 
1104 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":722
1105  * ctypedef npy_ulonglong ulonglong_t
1106  *
1107  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
1108  * ctypedef npy_uintp uintp_t
1109  *
1110  */
1111 typedef npy_intp __pyx_t_5numpy_intp_t;
1112 
1113 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":723
1114  *
1115  * ctypedef npy_intp intp_t
1116  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
1117  *
1118  * ctypedef npy_double float_t
1119  */
1120 typedef npy_uintp __pyx_t_5numpy_uintp_t;
1121 
1122 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":725
1123  * ctypedef npy_uintp uintp_t
1124  *
1125  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
1126  * ctypedef npy_double double_t
1127  * ctypedef npy_longdouble longdouble_t
1128  */
1129 typedef npy_double __pyx_t_5numpy_float_t;
1130 
1131 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":726
1132  *
1133  * ctypedef npy_double float_t
1134  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
1135  * ctypedef npy_longdouble longdouble_t
1136  *
1137  */
1138 typedef npy_double __pyx_t_5numpy_double_t;
1139 
1140 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":727
1141  * ctypedef npy_double float_t
1142  * ctypedef npy_double double_t
1143  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
1144  *
1145  * ctypedef npy_cfloat cfloat_t
1146  */
1147 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
1148 /* Declarations.proto */
1149 #if CYTHON_CCOMPLEX
1150  #ifdef __cplusplus
1151  typedef ::std::complex< float > __pyx_t_float_complex;
1152  #else
1153  typedef float _Complex __pyx_t_float_complex;
1154  #endif
1155 #else
1156  typedef struct { float real, imag; } __pyx_t_float_complex;
1157 #endif
1158 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
1159 
1160 /* Declarations.proto */
1161 #if CYTHON_CCOMPLEX
1162  #ifdef __cplusplus
1163  typedef ::std::complex< double > __pyx_t_double_complex;
1164  #else
1165  typedef double _Complex __pyx_t_double_complex;
1166  #endif
1167 #else
1168  typedef struct { double real, imag; } __pyx_t_double_complex;
1169 #endif
1170 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
1171 
1172 
1173 /*--- Type declarations ---*/
1174 struct __pyx_obj_9WaveTools_SteadyCurrent;
1175 struct __pyx_obj_9WaveTools_SolitaryWave;
1176 struct __pyx_obj_9WaveTools_MonochromaticWaves;
1177 struct __pyx_obj_9WaveTools_NewWave;
1178 struct __pyx_obj_9WaveTools_RandomWaves;
1179 struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves;
1180 struct __pyx_obj_9WaveTools_DirectionalWaves;
1181 struct __pyx_obj_9WaveTools_TimeSeries;
1182 struct __pyx_obj_9WaveTools_RandomNLWaves;
1183 struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__;
1184 struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr;
1185 
1186 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":729
1187  * ctypedef npy_longdouble longdouble_t
1188  *
1189  * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
1190  * ctypedef npy_cdouble cdouble_t
1191  * ctypedef npy_clongdouble clongdouble_t
1192  */
1193 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
1194 
1195 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":730
1196  *
1197  * ctypedef npy_cfloat cfloat_t
1198  * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
1199  * ctypedef npy_clongdouble clongdouble_t
1200  *
1201  */
1202 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
1203 
1204 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":731
1205  * ctypedef npy_cfloat cfloat_t
1206  * ctypedef npy_cdouble cdouble_t
1207  * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
1208  *
1209  * ctypedef npy_cdouble complex_t
1210  */
1211 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
1212 
1213 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":733
1214  * ctypedef npy_clongdouble clongdouble_t
1215  *
1216  * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
1217  *
1218  * cdef inline object PyArray_MultiIterNew1(a):
1219  */
1220 typedef npy_cdouble __pyx_t_5numpy_complex_t;
1221 struct __pyx_defaults;
1222 typedef struct __pyx_defaults __pyx_defaults;
1223 
1224 /* "WaveTools.pxd":31
1225  *
1226  * # pointer to eta function
1227  * ctypedef double (*cfeta) (MonochromaticWaves, double* , double ) # <<<<<<<<<<<<<<
1228  *
1229  * # pointer to velocity function
1230  */
1231 typedef double (*__pyx_t_9WaveTools_cfeta)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double);
1232 
1233 /* "WaveTools.pxd":34
1234  *
1235  * # pointer to velocity function
1236  * ctypedef void (*cfvel) (MonochromaticWaves, double*, double* , double ) # <<<<<<<<<<<<<<
1237  *
1238  *
1239  */
1240 typedef void (*__pyx_t_9WaveTools_cfvel)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double);
1241 
1242 /* "WaveTools.pxd":186
1243  *
1244  * # pointer to eta function
1245  * ctypedef double (*cfeta2) (TimeSeries, double* , double ) # <<<<<<<<<<<<<<
1246  *
1247  * # pointer to velocity function
1248  */
1249 typedef double (*__pyx_t_9WaveTools_cfeta2)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double);
1250 
1251 /* "WaveTools.pxd":189
1252  *
1253  * # pointer to velocity function
1254  * ctypedef void (*cfvel2) (TimeSeries, double*, double* , double ) # <<<<<<<<<<<<<<
1255  *
1256  * cdef class TimeSeries:
1257  */
1258 typedef void (*__pyx_t_9WaveTools_cfvel2)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double);
1259 struct __pyx_defaults {
1260  PyObject *__pyx_arg_Lgen;
1261 };
1262 
1263 /* "WaveTools.pxd":37
1264  *
1265  *
1266  * cdef class SteadyCurrent: # <<<<<<<<<<<<<<
1267  * cdef public:
1268  * double mwl
1269  */
1270 struct __pyx_obj_9WaveTools_SteadyCurrent {
1271  PyObject_HEAD
1272  double mwl;
1273  PyArrayObject *U;
1274  double ramp;
1275 };
1276 
1277 
1278 /* "WaveTools.pxd":42
1279  * cdef np.ndarray U
1280  * cdef double ramp
1281  * cdef class SolitaryWave: # <<<<<<<<<<<<<<
1282  * cdef double H,gAbs,K,depth,d2,d3
1283  * cdef public:
1284  */
1285 struct __pyx_obj_9WaveTools_SolitaryWave {
1286  PyObject_HEAD
1287  double H;
1288  double gAbs;
1289  double K;
1290  double depth;
1291  double d2;
1292  double d3;
1293  double mwl;
1294  double c;
1295  PyArrayObject *g;
1296  PyArrayObject *waveDir;
1297  PyArrayObject *vDir;
1298  PyArrayObject *trans;
1299  bool fast;
1300 };
1301 
1302 
1303 /* "WaveTools.pxd":49
1304  * cdef bool fast
1305  *
1306  * cdef class MonochromaticWaves: # <<<<<<<<<<<<<<
1307  * cdef bool fast
1308  * cdef np.ndarray g,waveDir,vDir,Ycoeff,Bcoeff,kDir,tanhF,mV
1309  */
1310 struct __pyx_obj_9WaveTools_MonochromaticWaves {
1311  PyObject_HEAD
1312  struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *__pyx_vtab;
1313  bool fast;
1314  PyArrayObject *g;
1315  PyArrayObject *waveDir;
1316  PyArrayObject *vDir;
1317  PyArrayObject *Ycoeff;
1318  PyArrayObject *Bcoeff;
1319  PyArrayObject *kDir;
1320  PyArrayObject *tanhF;
1321  PyArrayObject *mV;
1322  double gAbs;
1323  double phi;
1324  double depth;
1325  double omega;
1326  double k;
1327  double phi0;
1328  double tanhL;
1329  double amplitude;
1330  int Nf;
1331  double *kDir_;
1332  double *waveDir_;
1333  double *vDir_;
1334  double *mV_;
1335  double *Ycoeff_;
1336  double *Bcoeff_;
1337  double *tanhF_;
1338  double kDir_c[3];
1339  double waveDir_c[3];
1340  double vDir_c[3];
1341  double mV_c[3];
1342  double Ycoeff_c[0x3E8];
1343  double Bcoeff_c[0x3E8];
1344  double tanh_c[0x3E8];
1345  double wavelength;
1346  double mwl;
1347  __pyx_t_9WaveTools_cfeta _cpp_eta;
1348  __pyx_t_9WaveTools_cfvel _cpp_u;
1349  PyObject *waveType;
1350 };
1351 
1352 
1353 /* "WaveTools.pxd":79
1354  * cdef void uFenton(self, double* U, double* x, double t)
1355  *
1356  * cdef class NewWave: # <<<<<<<<<<<<<<
1357  * cdef bool fast
1358  * cdef double* waveDir_
1359  */
1360 struct __pyx_obj_9WaveTools_NewWave {
1361  PyObject_HEAD
1362  struct __pyx_vtabstruct_9WaveTools_NewWave *__pyx_vtab;
1363  bool fast;
1364  double *waveDir_;
1365  double *vDir_;
1366  double *tanh_;
1367  double *ai_;
1368  double *phi_;
1369  double *omega_;
1370  double *kDir_;
1371  double *ki_;
1372  double waveDir_c[3];
1373  double vDir_c[3];
1374  double kDir_c[0x7530];
1375  double omega_c[0x2710];
1376  double ki_c[0x2710];
1377  double ai_c[0x2710];
1378  double tanh_c[0x2710];
1379  double phi_c[0x2710];
1380  double mwl;
1381  double depth;
1382  double gAbs;
1383  double Tlag;
1384  double Hs;
1385  double Tp;
1386  double fp;
1387  double bandFactor;
1388  double df;
1389  double focus;
1390  double tfocus;
1391  int N;
1392  PyArrayObject *fi;
1393  PyArrayObject *fim;
1394  PyArrayObject *Si_Jm;
1395  PyArrayObject *ki;
1396  PyArrayObject *omega;
1397  PyArrayObject *tanhF;
1398  PyArrayObject *g;
1399  PyArrayObject *waveDir;
1400  PyArrayObject *vDir;
1401  PyArrayObject *kDir;
1402  PyArrayObject *ai;
1403  PyObject *phi;
1404 };
1405 
1406 
1407 /* "WaveTools.pxd":104
1408  * cdef double _cpp_eta(self , double* x, double t)
1409  * cdef void _cpp_u(self, double *U, double* x, double t)
1410  * cdef class RandomWaves: # <<<<<<<<<<<<<<
1411  * cdef bool fast
1412  * cdef double* waveDir_
1413  */
1414 struct __pyx_obj_9WaveTools_RandomWaves {
1415  PyObject_HEAD
1416  struct __pyx_vtabstruct_9WaveTools_RandomWaves *__pyx_vtab;
1417  bool fast;
1418  double *waveDir_;
1419  double *vDir_;
1420  double *tanh_;
1421  double *ai_;
1422  double *phi_;
1423  double *omega_;
1424  double *kDir_;
1425  double *ki_;
1426  double waveDir_c[3];
1427  double vDir_c[3];
1428  double kDir_c[0x7530];
1429  double omega_c[0x2710];
1430  double ki_c[0x2710];
1431  double ai_c[0x2710];
1432  double tanh_c[0x2710];
1433  double phi_c[0x2710];
1434  double mwl;
1435  double depth;
1436  double gAbs;
1437  double Tlag;
1438  double Hs;
1439  double Tp;
1440  double fp;
1441  double bandFactor;
1442  double df;
1443  double wavelength;
1444  int N;
1445  PyArrayObject *fi;
1446  PyArrayObject *fim;
1447  PyArrayObject *Si_Jm;
1448  PyArrayObject *ki;
1449  PyArrayObject *omega;
1450  PyArrayObject *tanhF;
1451  PyArrayObject *g;
1452  PyArrayObject *waveDir;
1453  PyArrayObject *vDir;
1454  PyArrayObject *kDir;
1455  PyArrayObject *ai;
1456  PyObject *phi;
1457 };
1458 
1459 
1460 /* "WaveTools.pxd":132
1461  *
1462  *
1463  * cdef class MultiSpectraRandomWaves: # <<<<<<<<<<<<<<
1464  * cdef bool fast
1465  * cdef double gAbs
1466  */
1467 struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves {
1468  PyObject_HEAD
1469  struct __pyx_vtabstruct_9WaveTools_MultiSpectraRandomWaves *__pyx_vtab;
1470  bool fast;
1471  double gAbs;
1472  int Nall;
1473  int N;
1474  PyArrayObject *g;
1475  PyArrayObject *vDir;
1476  PyArrayObject *waveDir;
1477  PyArrayObject *omegaM;
1478  PyArrayObject *phiM;
1479  PyArrayObject *kiM;
1480  PyArrayObject *kDirM;
1481  PyArrayObject *tanhFM;
1482  PyArrayObject *aiM;
1483  double *vDir_;
1484  double *omegaM_;
1485  double *phiM_;
1486  double *kiM_;
1487  double *kDirM_;
1488  double *tanhM_;
1489  double *waveDirM_;
1490  double *aiM_;
1491  double vDir_c[3];
1492  double kDir_cM[0x7530];
1493  double waveDir_cM[0x7530];
1494  double omega_cM[0x2710];
1495  double ki_cM[0x2710];
1496  double ai_cM[0x2710];
1497  double tanh_cM[0x2710];
1498  double phi_cM[0x2710];
1499  double mwl;
1500  double depth;
1501 };
1502 
1503 
1504 /* "WaveTools.pxd":158
1505  * cdef void _cpp_u(self, double* U, double* x, double t)
1506  *
1507  * cdef class DirectionalWaves: # <<<<<<<<<<<<<<
1508  * cdef bool fast
1509  * cdef double gAbs
1510  */
1511 struct __pyx_obj_9WaveTools_DirectionalWaves {
1512  PyObject_HEAD
1513  struct __pyx_vtabstruct_9WaveTools_DirectionalWaves *__pyx_vtab;
1514  bool fast;
1515  double gAbs;
1516  int Nall;
1517  int Mtot;
1518  int N;
1519  PyArrayObject *vDir;
1520  PyArrayObject *omega;
1521  PyArrayObject *tanh;
1522  PyArrayObject *waveDir0;
1523  PyArrayObject *waveDirs;
1524  PyArrayObject *phiDirs;
1525  PyArrayObject *aiDirs;
1526  PyArrayObject *ki;
1527  PyArrayObject *kDirs;
1528  PyArrayObject *tanhF;
1529  double *vDir_;
1530  double *omega_;
1531  double *phi_;
1532  double *ki_;
1533  double *kDir_;
1534  double *tanh_;
1535  double *waveDir_;
1536  double *ai_;
1537  double vDir_c[3];
1538  double kDir_c[0x493E0];
1539  double waveDir_c[0x493E0];
1540  double omega_c[0x186A0];
1541  double ki_c[0x186A0];
1542  double ai_c[0x186A0];
1543  double tanh_c[0x186A0];
1544  double phi_c[0x186A0];
1545  double mwl;
1546  double depth;
1547 };
1548 
1549 
1550 /* "WaveTools.pxd":191
1551  * ctypedef void (*cfvel2) (TimeSeries, double*, double* , double )
1552  *
1553  * cdef class TimeSeries: # <<<<<<<<<<<<<<
1554  * cdef bool fast,rec_direct
1555  * cdef np.ndarray g,waveDir,vDir,x0,kDir,tanhF,time,etaS,ai,omega,phi,ki
1556  */
1557 struct __pyx_obj_9WaveTools_TimeSeries {
1558  PyObject_HEAD
1559  struct __pyx_vtabstruct_9WaveTools_TimeSeries *__pyx_vtab;
1560  bool fast;
1561  bool rec_direct;
1562  PyArrayObject *g;
1563  PyArrayObject *waveDir;
1564  PyArrayObject *vDir;
1565  PyArrayObject *x0;
1566  PyArrayObject *kDir;
1567  PyArrayObject *tanhF;
1568  PyArrayObject *time;
1569  PyArrayObject *etaS;
1570  PyArrayObject *ai;
1571  PyArrayObject *omega;
1572  PyArrayObject *phi;
1573  PyArrayObject *ki;
1574  double gAbs;
1575  double depth;
1576  double Tm;
1577  double overlap;
1578  double cutoff;
1579  double setup;
1580  double handover;
1581  double Twindow;
1582  double Tlag;
1583  double Toverlap;
1584  double dt;
1585  double t0;
1586  double tlength;
1587  int N;
1588  int Nall;
1589  int Nf;
1590  int Nwaves;
1591  int Nwindows;
1592  PyObject *windows_handover;
1593  PyObject *windows_rec;
1594  PyObject *decompose_window;
1595  double *kDir_;
1596  double *waveDir_;
1597  double *vDir_;
1598  double *tanh_;
1599  double *whand_;
1600  double *ai_;
1601  double *omega_;
1602  double *phi_;
1603  double *ki_;
1604  double *T0_;
1605  double x0_[3];
1606  double kDir_c[0x2DC6C0];
1607  double ki_c[0xF4240];
1608  double ai_c[0xF4240];
1609  double omega_c[0xF4240];
1610  double phi_c[0xF4240];
1611  double tanh_c[0xF4240];
1612  double waveDir_c[3];
1613  double vDir_c[3];
1614  double x0_c[3];
1615  double whand_c[0xF4240];
1616  double T0[0xF4240];
1617  double wavelength;
1618  double mwl;
1619  PyObject *eta;
1620  PyObject *u;
1621  __pyx_t_9WaveTools_cfeta2 _cpp_eta;
1622  __pyx_t_9WaveTools_cfvel2 _cpp_u;
1623 };
1624 
1625 
1626 /* "WaveTools.pxd":229
1627  * cdef void _cpp_uWindow(self, double* U, double* x, double t)
1628  *
1629  * cdef class RandomNLWaves: # <<<<<<<<<<<<<<
1630  * cdef bool fast
1631  * cdef np.ndarray omega,ki,kDir,phi,tanhKd,sinhKd,waveDir,ai
1632  */
1633 struct __pyx_obj_9WaveTools_RandomNLWaves {
1634  PyObject_HEAD
1635  struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *__pyx_vtab;
1636  bool fast;
1637  PyArrayObject *omega;
1638  PyArrayObject *ki;
1639  PyArrayObject *kDir;
1640  PyArrayObject *phi;
1641  PyArrayObject *tanhKd;
1642  PyArrayObject *sinhKd;
1643  PyArrayObject *waveDir;
1644  PyArrayObject *ai;
1645  int N;
1646  double depth;
1647  double gAbs;
1648  double *tanhKd_;
1649  double *sinhKd_;
1650  double *ai_;
1651  double *phi_;
1652  double *omega_;
1653  double *kDir_;
1654  double *ki_;
1655  double kDir_c[0x7530];
1656  double omega_c[0x2710];
1657  double ki_c[0x2710];
1658  double ai_c[0x2710];
1659  double tanh_c[0x2710];
1660  double sinh_c[0x2710];
1661  double phi_c[0x2710];
1662  PyObject *eta;
1663  PyObject *u;
1664  PyObject *eta_linear;
1665 };
1666 
1667 
1668 /* "WaveTools.py":1204
1669  * Switch for optimised functions
1670  * """
1671  * def __cinit__(self, # <<<<<<<<<<<<<<
1672  * Tp,
1673  * Hs,
1674  */
1675 struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ {
1676  PyObject_HEAD
1677  struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self;
1678  PyObject *__pyx_v_xfocus;
1679 };
1680 
1681 
1682 /* "WaveTools.py":1268
1683  * if(self.N > 10000):
1684  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
1685  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega # <<<<<<<<<<<<<<
1686  *
1687  *
1688  */
1689 struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr {
1690  PyObject_HEAD
1691  struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *__pyx_outer_scope;
1692  PyObject *__pyx_v_j;
1693  PyObject *__pyx_t_0;
1694  Py_ssize_t __pyx_t_1;
1695  PyObject *(*__pyx_t_2)(PyObject *);
1696 };
1697 
1698 
1699 
1700 /* "WaveTools.py":889
1701  *
1702  *
1703  * class MonochromaticWaves(object): # <<<<<<<<<<<<<<
1704  * """
1705  * This class is used for generating regular waves in both linear and nonlinear regimes. See Dean and Dalrymple 1994 for equations.
1706  */
1707 
1708 struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves {
1709  double (*etaLinear)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double);
1710  double (*etaFenton)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double);
1711  void (*uLinear)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double);
1712  void (*uFenton)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double);
1713 };
1714 static struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *__pyx_vtabptr_9WaveTools_MonochromaticWaves;
1715 
1716 
1717 /* "WaveTools.py":1165
1718  * return U
1719  *
1720  * class NewWave(object): # <<<<<<<<<<<<<<
1721  * """
1722  * This class is used for generating the NewWave theory (see Tromans et al. 1991)
1723  */
1724 
1725 struct __pyx_vtabstruct_9WaveTools_NewWave {
1726  double (*_cpp_eta)(struct __pyx_obj_9WaveTools_NewWave *, double *, double);
1727  void (*_cpp_u)(struct __pyx_obj_9WaveTools_NewWave *, double *, double *, double);
1728 };
1729 static struct __pyx_vtabstruct_9WaveTools_NewWave *__pyx_vtabptr_9WaveTools_NewWave;
1730 
1731 
1732 /* "WaveTools.py":1398
1733  * return series
1734  *
1735  * class RandomWaves(object): # <<<<<<<<<<<<<<
1736  * """
1737  * This class is used for generating plane random waves using linear reconstruction of components from a
1738  */
1739 
1740 struct __pyx_vtabstruct_9WaveTools_RandomWaves {
1741  double (*_cpp_eta)(struct __pyx_obj_9WaveTools_RandomWaves *, double *, double);
1742  void (*_cpp_u)(struct __pyx_obj_9WaveTools_RandomWaves *, double *, double *, double);
1743 };
1744 static struct __pyx_vtabstruct_9WaveTools_RandomWaves *__pyx_vtabptr_9WaveTools_RandomWaves;
1745 
1746 
1747 /* "WaveTools.py":1658
1748  *
1749  *
1750  * class MultiSpectraRandomWaves(object): # <<<<<<<<<<<<<<
1751  * """This class is used for generating random waves by combining
1752  * multiple spectra with different distributions and directions
1753  */
1754 
1755 struct __pyx_vtabstruct_9WaveTools_MultiSpectraRandomWaves {
1756  double (*_cpp_eta)(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *, double *, double);
1757  void (*_cpp_u)(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *, double *, double *, double);
1758 };
1759 static struct __pyx_vtabstruct_9WaveTools_MultiSpectraRandomWaves *__pyx_vtabptr_9WaveTools_MultiSpectraRandomWaves;
1760 
1761 
1762 /* "WaveTools.py":1853
1763  *
1764  *
1765  * class DirectionalWaves(object): # <<<<<<<<<<<<<<
1766  * """
1767  * This class is used for generating directional random waves using linear reconstruction of components from a
1768  */
1769 
1770 struct __pyx_vtabstruct_9WaveTools_DirectionalWaves {
1771  double (*_cpp_eta)(struct __pyx_obj_9WaveTools_DirectionalWaves *, double *, double);
1772  void (*_cpp_u)(struct __pyx_obj_9WaveTools_DirectionalWaves *, double *, double *, double);
1773 };
1774 static struct __pyx_vtabstruct_9WaveTools_DirectionalWaves *__pyx_vtabptr_9WaveTools_DirectionalWaves;
1775 
1776 
1777 /* "WaveTools.py":2096
1778  *
1779  *
1780  * class TimeSeries(object): # <<<<<<<<<<<<<<
1781  * """This class is used for generating waves from an arbirtrary free-surface elevation time series
1782  *
1783  */
1784 
1785 struct __pyx_vtabstruct_9WaveTools_TimeSeries {
1786  double (*_cpp_etaDirect)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double);
1787  double (*_cpp_etaWindow)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double);
1788  void (*_cpp_uDirect)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double);
1789  void (*_cpp_uWindow)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double);
1790 };
1791 static struct __pyx_vtabstruct_9WaveTools_TimeSeries *__pyx_vtabptr_9WaveTools_TimeSeries;
1792 
1793 
1794 /* "WaveTools.py":2764
1795  *
1796  *
1797  * class RandomNLWaves(object): # <<<<<<<<<<<<<<
1798  * """
1799  * This class is contains functions for calculating random waves with 2nd order corrections
1800  */
1801 
1802 struct __pyx_vtabstruct_9WaveTools_RandomNLWaves {
1803  double (*_cpp_eta_2ndOrder)(struct __pyx_obj_9WaveTools_RandomNLWaves *, double *, double);
1804  double (*_cpp_eta_short)(struct __pyx_obj_9WaveTools_RandomNLWaves *, double *, double);
1805  double (*_cpp_eta_long)(struct __pyx_obj_9WaveTools_RandomNLWaves *, double *, double);
1806 };
1807 static struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *__pyx_vtabptr_9WaveTools_RandomNLWaves;
1808 
1809 /* --- Runtime support code (head) --- */
1810 /* Refnanny.proto */
1811 #ifndef CYTHON_REFNANNY
1812  #define CYTHON_REFNANNY 0
1813 #endif
1814 #if CYTHON_REFNANNY
1815  typedef struct {
1816  void (*INCREF)(void*, PyObject*, int);
1817  void (*DECREF)(void*, PyObject*, int);
1818  void (*GOTREF)(void*, PyObject*, int);
1819  void (*GIVEREF)(void*, PyObject*, int);
1820  void* (*SetupContext)(const char*, int, const char*);
1821  void (*FinishContext)(void**);
1822  } __Pyx_RefNannyAPIStruct;
1823  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
1824  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
1825  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
1826 #ifdef WITH_THREAD
1827  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1828  if (acquire_gil) {\
1829  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1830  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1831  PyGILState_Release(__pyx_gilstate_save);\
1832  } else {\
1833  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1834  }
1835 #else
1836  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1837  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
1838 #endif
1839  #define __Pyx_RefNannyFinishContext()\
1840  __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
1841  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1842  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1843  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1844  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1845  #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
1846  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
1847  #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
1848  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
1849 #else
1850  #define __Pyx_RefNannyDeclarations
1851  #define __Pyx_RefNannySetupContext(name, acquire_gil)
1852  #define __Pyx_RefNannyFinishContext()
1853  #define __Pyx_INCREF(r) Py_INCREF(r)
1854  #define __Pyx_DECREF(r) Py_DECREF(r)
1855  #define __Pyx_GOTREF(r)
1856  #define __Pyx_GIVEREF(r)
1857  #define __Pyx_XINCREF(r) Py_XINCREF(r)
1858  #define __Pyx_XDECREF(r) Py_XDECREF(r)
1859  #define __Pyx_XGOTREF(r)
1860  #define __Pyx_XGIVEREF(r)
1861 #endif
1862 #define __Pyx_XDECREF_SET(r, v) do {\
1863  PyObject *tmp = (PyObject *) r;\
1864  r = v; __Pyx_XDECREF(tmp);\
1865  } while (0)
1866 #define __Pyx_DECREF_SET(r, v) do {\
1867  PyObject *tmp = (PyObject *) r;\
1868  r = v; __Pyx_DECREF(tmp);\
1869  } while (0)
1870 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
1871 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
1872 
1873 /* PyObjectGetAttrStr.proto */
1874 #if CYTHON_USE_TYPE_SLOTS
1875 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
1876 #else
1877 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
1878 #endif
1879 
1880 /* GetBuiltinName.proto */
1881 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
1882 
1883 /* RaiseDoubleKeywords.proto */
1884 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
1885 
1886 /* ParseKeywords.proto */
1887 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
1888  PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
1889  const char* function_name);
1890 
1891 /* RaiseArgTupleInvalid.proto */
1892 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
1893  Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
1894 
1895 /* PyDictVersioning.proto */
1896 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
1897 #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
1898 #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
1899 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
1900  (version_var) = __PYX_GET_DICT_VERSION(dict);\
1901  (cache_var) = (value);
1902 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
1903  static PY_UINT64_T __pyx_dict_version = 0;\
1904  static PyObject *__pyx_dict_cached_value = NULL;\
1905  if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
1906  (VAR) = __pyx_dict_cached_value;\
1907  } else {\
1908  (VAR) = __pyx_dict_cached_value = (LOOKUP);\
1909  __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
1910  }\
1911 }
1912 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
1913 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
1914 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
1915 #else
1916 #define __PYX_GET_DICT_VERSION(dict) (0)
1917 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
1918 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
1919 #endif
1920 
1921 /* GetModuleGlobalName.proto */
1922 #if CYTHON_USE_DICT_VERSIONS
1923 #define __Pyx_GetModuleGlobalName(var, name) {\
1924  static PY_UINT64_T __pyx_dict_version = 0;\
1925  static PyObject *__pyx_dict_cached_value = NULL;\
1926  (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
1927  (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
1928  __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
1929 }
1930 #define __Pyx_GetModuleGlobalNameUncached(var, name) {\
1931  PY_UINT64_T __pyx_dict_version;\
1932  PyObject *__pyx_dict_cached_value;\
1933  (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
1934 }
1935 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
1936 #else
1937 #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
1938 #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
1939 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
1940 #endif
1941 
1942 /* PyFunctionFastCall.proto */
1943 #if CYTHON_FAST_PYCALL
1944 #define __Pyx_PyFunction_FastCall(func, args, nargs)\
1945  __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
1946 #if 1 || PY_VERSION_HEX < 0x030600B1
1947 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
1948 #else
1949 #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
1950 #endif
1951 #define __Pyx_BUILD_ASSERT_EXPR(cond)\
1952  (sizeof(char [1 - 2*!(cond)]) - 1)
1953 #ifndef Py_MEMBER_SIZE
1954 #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
1955 #endif
1956 #if CYTHON_FAST_PYCALL
1957  static size_t __pyx_pyframe_localsplus_offset = 0;
1958  #include "frameobject.h"
1959 #if PY_VERSION_HEX >= 0x030b00a6
1960  #ifndef Py_BUILD_CORE
1961  #define Py_BUILD_CORE 1
1962  #endif
1963  #include "internal/pycore_frame.h"
1964 #endif
1965  #define __Pxy_PyFrame_Initialize_Offsets()\
1966  ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
1967  (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
1968  #define __Pyx_PyFrame_GetLocalsplus(frame)\
1969  (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
1970 #endif // CYTHON_FAST_PYCALL
1971 #endif
1972 
1973 /* PyCFunctionFastCall.proto */
1974 #if CYTHON_FAST_PYCCALL
1975 static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
1976 #else
1977 #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
1978 #endif
1979 
1980 /* PyObjectCall.proto */
1981 #if CYTHON_COMPILING_IN_CPYTHON
1982 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
1983 #else
1984 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
1985 #endif
1986 
1987 /* PyObjectCall2Args.proto */
1988 static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
1989 
1990 /* PyObjectCallMethO.proto */
1991 #if CYTHON_COMPILING_IN_CPYTHON
1992 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
1993 #endif
1994 
1995 /* PyObjectCallOneArg.proto */
1996 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
1997 
1998 /* ListAppend.proto */
1999 #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
2000 static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
2001  PyListObject* L = (PyListObject*) list;
2002  Py_ssize_t len = Py_SIZE(list);
2003  if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
2004  Py_INCREF(x);
2005  PyList_SET_ITEM(list, len, x);
2006  __Pyx_SET_SIZE(list, len + 1);
2007  return 0;
2008  }
2009  return PyList_Append(list, x);
2010 }
2011 #else
2012 #define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
2013 #endif
2014 
2015 /* PySequenceContains.proto */
2016 static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
2017  int result = PySequence_Contains(seq, item);
2018  return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
2019 }
2020 
2021 /* None.proto */
2022 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
2023 
2024 /* GetItemInt.proto */
2025 #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
2026  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
2027  __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
2028  (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
2029  __Pyx_GetItemInt_Generic(o, to_py_func(i))))
2030 #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
2031  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
2032  __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
2033  (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
2034 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
2035  int wraparound, int boundscheck);
2036 #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
2037  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
2038  __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
2039  (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
2040 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
2041  int wraparound, int boundscheck);
2042 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
2043 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
2044  int is_list, int wraparound, int boundscheck);
2045 
2046 /* py_abs.proto */
2047 #if CYTHON_USE_PYLONG_INTERNALS
2048 static PyObject *__Pyx_PyLong_AbsNeg(PyObject *num);
2049 #define __Pyx_PyNumber_Absolute(x)\
2050  ((likely(PyLong_CheckExact(x))) ?\
2051  (likely(Py_SIZE(x) >= 0) ? (Py_INCREF(x), (x)) : __Pyx_PyLong_AbsNeg(x)) :\
2052  PyNumber_Absolute(x))
2053 #else
2054 #define __Pyx_PyNumber_Absolute(x) PyNumber_Absolute(x)
2055 #endif
2056 
2057 /* SliceObject.proto */
2058 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
2059  PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
2060  PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
2061  int has_cstart, int has_cstop, int wraparound);
2062 
2063 /* PyObjectCallNoArg.proto */
2064 #if CYTHON_COMPILING_IN_CPYTHON
2065 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
2066 #else
2067 #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
2068 #endif
2069 
2070 /* ObjectGetItem.proto */
2071 #if CYTHON_USE_TYPE_SLOTS
2072 static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
2073 #else
2074 #define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
2075 #endif
2076 
2077 /* PyFloatBinop.proto */
2078 #if !CYTHON_COMPILING_IN_PYPY
2079 static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
2080 #else
2081 #define __Pyx_PyFloat_AddCObj(op1, op2, floatval, inplace, zerodivision_check)\
2082  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
2083 #endif
2084 
2085 /* PyFloatBinop.proto */
2086 #if !CYTHON_COMPILING_IN_PYPY
2087 static PyObject* __Pyx_PyFloat_SubtractObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
2088 #else
2089 #define __Pyx_PyFloat_SubtractObjC(op1, op2, floatval, inplace, zerodivision_check)\
2090  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
2091 #endif
2092 
2093 /* SliceObject.proto */
2094 #define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
2095  __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
2096 static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
2097  PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
2098  PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
2099  int has_cstart, int has_cstop, int wraparound);
2100 
2101 /* pyobject_as_double.proto */
2102 static double __Pyx__PyObject_AsDouble(PyObject* obj);
2103 #if CYTHON_COMPILING_IN_PYPY
2104 #define __Pyx_PyObject_AsDouble(obj)\
2105 (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\
2106  likely(PyInt_CheckExact(obj)) ?\
2107  PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
2108 #else
2109 #define __Pyx_PyObject_AsDouble(obj)\
2110 ((likely(PyFloat_CheckExact(obj))) ?\
2111  PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj))
2112 #endif
2113 
2114 /* PyIntBinop.proto */
2115 #if !CYTHON_COMPILING_IN_PYPY
2116 static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
2117 #else
2118 #define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
2119  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
2120 #endif
2121 
2122 /* GetTopmostException.proto */
2123 #if CYTHON_USE_EXC_INFO_STACK
2124 static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
2125 #endif
2126 
2127 /* PyThreadStateGet.proto */
2128 #if CYTHON_FAST_THREAD_STATE
2129 #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
2130 #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
2131 #define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
2132 #else
2133 #define __Pyx_PyThreadState_declare
2134 #define __Pyx_PyThreadState_assign
2135 #define __Pyx_PyErr_Occurred() PyErr_Occurred()
2136 #endif
2137 
2138 /* SaveResetException.proto */
2139 #if CYTHON_FAST_THREAD_STATE
2140 #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
2141 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2142 #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
2143 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
2144 #else
2145 #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
2146 #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
2147 #endif
2148 
2149 /* GetException.proto */
2150 #if CYTHON_FAST_THREAD_STATE
2151 #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
2152 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2153 #else
2154 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
2155 #endif
2156 
2157 /* ExtTypeTest.proto */
2158 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
2159 
2160 /* PyErrExceptionMatches.proto */
2161 #if CYTHON_FAST_THREAD_STATE
2162 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
2163 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
2164 #else
2165 #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
2166 #endif
2167 
2168 /* PyErrFetchRestore.proto */
2169 #if CYTHON_FAST_THREAD_STATE
2170 #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
2171 #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
2172 #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
2173 #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
2174 #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
2175 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
2176 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2177 #if CYTHON_COMPILING_IN_CPYTHON
2178 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
2179 #else
2180 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
2181 #endif
2182 #else
2183 #define __Pyx_PyErr_Clear() PyErr_Clear()
2184 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
2185 #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
2186 #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
2187 #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
2188 #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
2189 #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
2190 #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
2191 #endif
2192 
2193 /* GetAttr.proto */
2194 static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
2195 
2196 /* GetAttr3.proto */
2197 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
2198 
2199 /* PyFloatBinop.proto */
2200 #if !CYTHON_COMPILING_IN_PYPY
2201 static PyObject* __Pyx_PyFloat_TrueDivideCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
2202 #else
2203 #define __Pyx_PyFloat_TrueDivideCObj(op1, op2, floatval, inplace, zerodivision_check)\
2204  (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2))
2205 #endif
2206 
2207 /* IncludeStringH.proto */
2208 #include <string.h>
2209 
2210 /* BytesEquals.proto */
2211 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
2212 
2213 /* UnicodeEquals.proto */
2214 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
2215 
2216 /* StrEquals.proto */
2217 #if PY_MAJOR_VERSION >= 3
2218 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
2219 #else
2220 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
2221 #endif
2222 
2223 /* PyFloatBinop.proto */
2224 #if !CYTHON_COMPILING_IN_PYPY
2225 static PyObject* __Pyx_PyFloat_EqObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
2226 #else
2227 #define __Pyx_PyFloat_EqObjC(op1, op2, floatval, inplace, zerodivision_check)\
2228  (PyObject_RichCompare(op1, op2, Py_EQ))
2229  #endif
2230 
2231 /* PyIntBinop.proto */
2232 #if !CYTHON_COMPILING_IN_PYPY
2233 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
2234 #else
2235 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
2236  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
2237 #endif
2238 
2239 /* Import.proto */
2240 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
2241 
2242 /* ImportFrom.proto */
2243 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
2244 
2245 /* DictGetItem.proto */
2246 #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
2247 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
2248 #define __Pyx_PyObject_Dict_GetItem(obj, name)\
2249  (likely(PyDict_CheckExact(obj)) ?\
2250  __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
2251 #else
2252 #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
2253 #define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name)
2254 #endif
2255 
2256 /* RaiseTooManyValuesToUnpack.proto */
2257 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
2258 
2259 /* RaiseNeedMoreValuesToUnpack.proto */
2260 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
2261 
2262 /* IterFinish.proto */
2263 static CYTHON_INLINE int __Pyx_IterFinish(void);
2264 
2265 /* UnpackItemEndCheck.proto */
2266 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
2267 
2268 /* SetItemInt.proto */
2269 #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
2270  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
2271  __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
2272  (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
2273  __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
2274 static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
2275 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
2276  int is_list, int wraparound, int boundscheck);
2277 
2278 /* RaiseException.proto */
2279 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
2280 
2281 /* None.proto */
2282 static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
2283 
2284 /* PyFloatBinop.proto */
2285 #if !CYTHON_COMPILING_IN_PYPY
2286 static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
2287 #else
2288 #define __Pyx_PyFloat_TrueDivideObjC(op1, op2, floatval, inplace, zerodivision_check)\
2289  (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2))
2290 #endif
2291 
2292 /* PyIntCompare.proto */
2293 static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
2294 
2295 /* PyObjectGetMethod.proto */
2296 static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
2297 
2298 /* PyObjectCallMethod1.proto */
2299 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
2300 
2301 /* append.proto */
2302 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
2303 
2304 /* PyObjectSetAttrStr.proto */
2305 #if CYTHON_USE_TYPE_SLOTS
2306 #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
2307 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
2308 #else
2309 #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n)
2310 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
2311 #endif
2312 
2313 /* HasAttr.proto */
2314 static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
2315 
2316 /* PyObject_GenericGetAttrNoDict.proto */
2317 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
2318 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
2319 #else
2320 #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
2321 #endif
2322 
2323 /* PyObject_GenericGetAttr.proto */
2324 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
2325 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
2326 #else
2327 #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
2328 #endif
2329 
2330 /* PyObjectGetAttrStrNoError.proto */
2331 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);
2332 
2333 /* SetupReduce.proto */
2334 static int __Pyx_setup_reduce(PyObject* type_obj);
2335 
2336 /* SetVTable.proto */
2337 static int __Pyx_SetVtable(PyObject *dict, void *vtable);
2338 
2339 /* TypeImport.proto */
2340 #ifndef __PYX_HAVE_RT_ImportType_proto
2341 #define __PYX_HAVE_RT_ImportType_proto
2342 enum __Pyx_ImportType_CheckSize {
2343  __Pyx_ImportType_CheckSize_Error = 0,
2344  __Pyx_ImportType_CheckSize_Warn = 1,
2345  __Pyx_ImportType_CheckSize_Ignore = 2
2346 };
2347 static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
2348 #endif
2349 
2350 /* FetchCommonType.proto */
2351 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
2352 
2353 /* CythonFunctionShared.proto */
2354 #define __Pyx_CyFunction_USED 1
2355 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01
2356 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
2357 #define __Pyx_CYFUNCTION_CCLASS 0x04
2358 #define __Pyx_CyFunction_GetClosure(f)\
2359  (((__pyx_CyFunctionObject *) (f))->func_closure)
2360 #define __Pyx_CyFunction_GetClassObj(f)\
2361  (((__pyx_CyFunctionObject *) (f))->func_classobj)
2362 #define __Pyx_CyFunction_Defaults(type, f)\
2363  ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
2364 #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
2365  ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
2366 typedef struct {
2367  PyCFunctionObject func;
2368 #if PY_VERSION_HEX < 0x030500A0
2369  PyObject *func_weakreflist;
2370 #endif
2371  PyObject *func_dict;
2372  PyObject *func_name;
2373  PyObject *func_qualname;
2374  PyObject *func_doc;
2375  PyObject *func_globals;
2376  PyObject *func_code;
2377  PyObject *func_closure;
2378  PyObject *func_classobj;
2379  void *defaults;
2380  int defaults_pyobjects;
2381  size_t defaults_size; // used by FusedFunction for copying defaults
2382  int flags;
2383  PyObject *defaults_tuple;
2384  PyObject *defaults_kwdict;
2385  PyObject *(*defaults_getter)(PyObject *);
2386  PyObject *func_annotations;
2387 } __pyx_CyFunctionObject;
2388 static PyTypeObject *__pyx_CyFunctionType = 0;
2389 #define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
2390 static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
2391  int flags, PyObject* qualname,
2392  PyObject *self,
2393  PyObject *module, PyObject *globals,
2394  PyObject* code);
2395 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
2396  size_t size,
2397  int pyobjects);
2398 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
2399  PyObject *tuple);
2400 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
2401  PyObject *dict);
2402 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
2403  PyObject *dict);
2404 static int __pyx_CyFunction_init(void);
2405 
2406 /* CythonFunction.proto */
2407 static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
2408  int flags, PyObject* qualname,
2409  PyObject *closure,
2410  PyObject *module, PyObject *globals,
2411  PyObject* code);
2412 
2413 /* CalculateMetaclass.proto */
2414 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
2415 
2416 /* SetNameInClass.proto */
2417 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
2418 #define __Pyx_SetNameInClass(ns, name, value)\
2419  (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
2420 #elif CYTHON_COMPILING_IN_CPYTHON
2421 #define __Pyx_SetNameInClass(ns, name, value)\
2422  (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
2423 #else
2424 #define __Pyx_SetNameInClass(ns, name, value) PyObject_SetItem(ns, name, value)
2425 #endif
2426 
2427 /* Py3ClassCreate.proto */
2428 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
2429  PyObject *mkw, PyObject *modname, PyObject *doc);
2430 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
2431  PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
2432 
2433 /* CLineInTraceback.proto */
2434 #ifdef CYTHON_CLINE_IN_TRACEBACK
2435 #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
2436 #else
2437 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
2438 #endif
2439 
2440 /* CodeObjectCache.proto */
2441 typedef struct {
2442  PyCodeObject* code_object;
2443  int code_line;
2444 } __Pyx_CodeObjectCacheEntry;
2445 struct __Pyx_CodeObjectCache {
2446  int count;
2447  int max_count;
2448  __Pyx_CodeObjectCacheEntry* entries;
2449 };
2450 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
2451 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
2452 static PyCodeObject *__pyx_find_code_object(int code_line);
2453 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
2454 
2455 /* AddTraceback.proto */
2456 static void __Pyx_AddTraceback(const char *funcname, int c_line,
2457  int py_line, const char *filename);
2458 
2459 /* GCCDiagnostics.proto */
2460 #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
2461 #define __Pyx_HAS_GCC_DIAGNOSTIC
2462 #endif
2463 
2464 /* RealImag.proto */
2465 #if CYTHON_CCOMPLEX
2466  #ifdef __cplusplus
2467  #define __Pyx_CREAL(z) ((z).real())
2468  #define __Pyx_CIMAG(z) ((z).imag())
2469  #else
2470  #define __Pyx_CREAL(z) (__real__(z))
2471  #define __Pyx_CIMAG(z) (__imag__(z))
2472  #endif
2473 #else
2474  #define __Pyx_CREAL(z) ((z).real)
2475  #define __Pyx_CIMAG(z) ((z).imag)
2476 #endif
2477 #if defined(__cplusplus) && CYTHON_CCOMPLEX\
2478  && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
2479  #define __Pyx_SET_CREAL(z,x) ((z).real(x))
2480  #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
2481 #else
2482  #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
2483  #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
2484 #endif
2485 
2486 /* Arithmetic.proto */
2487 #if CYTHON_CCOMPLEX
2488  #define __Pyx_c_eq_float(a, b) ((a)==(b))
2489  #define __Pyx_c_sum_float(a, b) ((a)+(b))
2490  #define __Pyx_c_diff_float(a, b) ((a)-(b))
2491  #define __Pyx_c_prod_float(a, b) ((a)*(b))
2492  #define __Pyx_c_quot_float(a, b) ((a)/(b))
2493  #define __Pyx_c_neg_float(a) (-(a))
2494  #ifdef __cplusplus
2495  #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
2496  #define __Pyx_c_conj_float(z) (::std::conj(z))
2497  #if 1
2498  #define __Pyx_c_abs_float(z) (::std::abs(z))
2499  #define __Pyx_c_pow_float(a, b) (::std::pow(a, b))
2500  #endif
2501  #else
2502  #define __Pyx_c_is_zero_float(z) ((z)==0)
2503  #define __Pyx_c_conj_float(z) (conjf(z))
2504  #if 1
2505  #define __Pyx_c_abs_float(z) (cabsf(z))
2506  #define __Pyx_c_pow_float(a, b) (cpowf(a, b))
2507  #endif
2508  #endif
2509 #else
2510  static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
2511  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
2512  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
2513  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
2514  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
2515  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
2516  static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
2517  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
2518  #if 1
2519  static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
2520  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
2521  #endif
2522 #endif
2523 
2524 /* Arithmetic.proto */
2525 #if CYTHON_CCOMPLEX
2526  #define __Pyx_c_eq_double(a, b) ((a)==(b))
2527  #define __Pyx_c_sum_double(a, b) ((a)+(b))
2528  #define __Pyx_c_diff_double(a, b) ((a)-(b))
2529  #define __Pyx_c_prod_double(a, b) ((a)*(b))
2530  #define __Pyx_c_quot_double(a, b) ((a)/(b))
2531  #define __Pyx_c_neg_double(a) (-(a))
2532  #ifdef __cplusplus
2533  #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
2534  #define __Pyx_c_conj_double(z) (::std::conj(z))
2535  #if 1
2536  #define __Pyx_c_abs_double(z) (::std::abs(z))
2537  #define __Pyx_c_pow_double(a, b) (::std::pow(a, b))
2538  #endif
2539  #else
2540  #define __Pyx_c_is_zero_double(z) ((z)==0)
2541  #define __Pyx_c_conj_double(z) (conj(z))
2542  #if 1
2543  #define __Pyx_c_abs_double(z) (cabs(z))
2544  #define __Pyx_c_pow_double(a, b) (cpow(a, b))
2545  #endif
2546  #endif
2547 #else
2548  static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
2549  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
2550  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
2551  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
2552  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
2553  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
2554  static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
2555  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
2556  #if 1
2557  static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
2558  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
2559  #endif
2560 #endif
2561 
2562 /* CIntFromPy.proto */
2563 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
2564 
2565 /* CIntToPy.proto */
2566 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
2567 
2568 /* CIntFromPy.proto */
2569 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
2570 
2571 /* CIntToPy.proto */
2572 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
2573 
2574 /* CIntToPy.proto */
2575 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value);
2576 
2577 /* CIntFromPy.proto */
2578 static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
2579 
2580 /* FastTypeChecks.proto */
2581 #if CYTHON_COMPILING_IN_CPYTHON
2582 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
2583 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
2584 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
2585 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
2586 #else
2587 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
2588 #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
2589 #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
2590 #endif
2591 #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
2592 
2593 /* SwapException.proto */
2594 #if CYTHON_FAST_THREAD_STATE
2595 #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
2596 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
2597 #else
2598 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
2599 #endif
2600 
2601 /* CoroutineBase.proto */
2602 typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
2603 #if CYTHON_USE_EXC_INFO_STACK
2604 #define __Pyx_ExcInfoStruct _PyErr_StackItem
2605 #else
2606 typedef struct {
2607  PyObject *exc_type;
2608  PyObject *exc_value;
2609  PyObject *exc_traceback;
2610 } __Pyx_ExcInfoStruct;
2611 #endif
2612 typedef struct {
2613  PyObject_HEAD
2614  __pyx_coroutine_body_t body;
2615  PyObject *closure;
2616  __Pyx_ExcInfoStruct gi_exc_state;
2617  PyObject *gi_weakreflist;
2618  PyObject *classobj;
2619  PyObject *yieldfrom;
2620  PyObject *gi_name;
2621  PyObject *gi_qualname;
2622  PyObject *gi_modulename;
2623  PyObject *gi_code;
2624  PyObject *gi_frame;
2625  int resume_label;
2626  char is_running;
2627 } __pyx_CoroutineObject;
2628 static __pyx_CoroutineObject *__Pyx__Coroutine_New(
2629  PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
2630  PyObject *name, PyObject *qualname, PyObject *module_name);
2631 static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
2632  __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
2633  PyObject *name, PyObject *qualname, PyObject *module_name);
2634 static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
2635 static int __Pyx_Coroutine_clear(PyObject *self);
2636 static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
2637 static PyObject *__Pyx_Coroutine_Close(PyObject *self);
2638 static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
2639 #if CYTHON_USE_EXC_INFO_STACK
2640 #define __Pyx_Coroutine_SwapException(self)
2641 #define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
2642 #else
2643 #define __Pyx_Coroutine_SwapException(self) {\
2644  __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
2645  __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
2646  }
2647 #define __Pyx_Coroutine_ResetAndClearException(self) {\
2648  __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
2649  (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
2650  }
2651 #endif
2652 #if CYTHON_FAST_THREAD_STATE
2653 #define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
2654  __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
2655 #else
2656 #define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
2657  __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
2658 #endif
2659 static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
2660 static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
2661 
2662 /* PatchModuleWithCoroutine.proto */
2663 static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
2664 
2665 /* PatchGeneratorABC.proto */
2666 static int __Pyx_patch_abc(void);
2667 
2668 /* Generator.proto */
2669 #define __Pyx_Generator_USED
2670 static PyTypeObject *__pyx_GeneratorType = 0;
2671 #define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
2672 #define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
2673  __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
2674 static PyObject *__Pyx_Generator_Next(PyObject *self);
2675 static int __pyx_Generator_init(void);
2676 
2677 /* CheckBinaryVersion.proto */
2678 static int __Pyx_check_binary_version(void);
2679 
2680 /* InitStrings.proto */
2681 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
2682 
2683 static double __pyx_f_9WaveTools_18MonochromaticWaves_etaLinear(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2684 static double __pyx_f_9WaveTools_18MonochromaticWaves_etaFenton(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2685 static void __pyx_f_9WaveTools_18MonochromaticWaves_uLinear(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2686 static void __pyx_f_9WaveTools_18MonochromaticWaves_uFenton(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2687 static double __pyx_f_9WaveTools_7NewWave__cpp_eta(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2688 static void __pyx_f_9WaveTools_7NewWave__cpp_u(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2689 static double __pyx_f_9WaveTools_11RandomWaves__cpp_eta(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2690 static void __pyx_f_9WaveTools_11RandomWaves__cpp_u(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2691 static double __pyx_f_9WaveTools_23MultiSpectraRandomWaves__cpp_eta(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2692 static void __pyx_f_9WaveTools_23MultiSpectraRandomWaves__cpp_u(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2693 static double __pyx_f_9WaveTools_16DirectionalWaves__cpp_eta(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2694 static void __pyx_f_9WaveTools_16DirectionalWaves__cpp_u(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2695 static double __pyx_f_9WaveTools_10TimeSeries__cpp_etaDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2696 static void __pyx_f_9WaveTools_10TimeSeries__cpp_uDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2697 static double __pyx_f_9WaveTools_10TimeSeries__cpp_etaWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2698 static void __pyx_f_9WaveTools_10TimeSeries__cpp_uWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2699 static double __pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_2ndOrder(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2700 static double __pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_short(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2701 static double __pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_long(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t); /* proto*/
2702 
2703 /* Module declarations from 'cython' */
2704 
2705 /* Module declarations from 'libc.math' */
2706 
2707 /* Module declarations from 'cpython.buffer' */
2708 
2709 /* Module declarations from 'libc.string' */
2710 
2711 /* Module declarations from 'libc.stdio' */
2712 
2713 /* Module declarations from '__builtin__' */
2714 
2715 /* Module declarations from 'cpython.type' */
2716 static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
2717 
2718 /* Module declarations from 'cpython' */
2719 
2720 /* Module declarations from 'cpython.object' */
2721 
2722 /* Module declarations from 'cpython.ref' */
2723 
2724 /* Module declarations from 'cpython.mem' */
2725 
2726 /* Module declarations from 'numpy' */
2727 
2728 /* Module declarations from 'numpy' */
2729 static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
2730 static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
2731 static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
2732 static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
2733 static PyTypeObject *__pyx_ptype_5numpy_generic = 0;
2734 static PyTypeObject *__pyx_ptype_5numpy_number = 0;
2735 static PyTypeObject *__pyx_ptype_5numpy_integer = 0;
2736 static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0;
2737 static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0;
2738 static PyTypeObject *__pyx_ptype_5numpy_inexact = 0;
2739 static PyTypeObject *__pyx_ptype_5numpy_floating = 0;
2740 static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0;
2741 static PyTypeObject *__pyx_ptype_5numpy_flexible = 0;
2742 static PyTypeObject *__pyx_ptype_5numpy_character = 0;
2743 static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
2744 
2745 /* Module declarations from 'libcpp' */
2746 
2747 /* Module declarations from 'WaveTools' */
2748 static PyTypeObject *__pyx_ptype_9WaveTools_SteadyCurrent = 0;
2749 static PyTypeObject *__pyx_ptype_9WaveTools_SolitaryWave = 0;
2750 static PyTypeObject *__pyx_ptype_9WaveTools_MonochromaticWaves = 0;
2751 static PyTypeObject *__pyx_ptype_9WaveTools_NewWave = 0;
2752 static PyTypeObject *__pyx_ptype_9WaveTools_RandomWaves = 0;
2753 static PyTypeObject *__pyx_ptype_9WaveTools_MultiSpectraRandomWaves = 0;
2754 static PyTypeObject *__pyx_ptype_9WaveTools_DirectionalWaves = 0;
2755 static PyTypeObject *__pyx_ptype_9WaveTools_TimeSeries = 0;
2756 static PyTypeObject *__pyx_ptype_9WaveTools_RandomNLWaves = 0;
2757 static PyTypeObject *__pyx_ptype_9WaveTools___pyx_scope_struct____cinit__ = 0;
2758 static PyTypeObject *__pyx_ptype_9WaveTools___pyx_scope_struct_1_genexpr = 0;
2759 static PyObject *__pyx_f_9WaveTools___pyx_unpickle_SteadyCurrent__set_state(struct __pyx_obj_9WaveTools_SteadyCurrent *, PyObject *); /*proto*/
2760 static PyObject *__pyx_f_9WaveTools___pyx_unpickle_SolitaryWave__set_state(struct __pyx_obj_9WaveTools_SolitaryWave *, PyObject *); /*proto*/
2761 static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double(double *, Py_ssize_t); /*proto*/
2762 static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double(double *, Py_ssize_t); /*proto*/
2763 #define __Pyx_MODULE_NAME "WaveTools"
2764 extern int __pyx_module_is_main_WaveTools;
2765 int __pyx_module_is_main_WaveTools = 0;
2766 
2767 /* Implementation of 'WaveTools' */
2768 static PyObject *__pyx_builtin_object;
2769 static PyObject *__pyx_builtin_sum;
2770 static PyObject *__pyx_builtin_TypeError;
2771 static PyObject *__pyx_builtin_max;
2772 static PyObject *__pyx_builtin_open;
2773 static PyObject *__pyx_builtin_round;
2774 static PyObject *__pyx_builtin_print;
2775 static PyObject *__pyx_builtin_ImportError;
2776 static const char __pyx_k_K[] = "K";
2777 static const char __pyx_k_M[] = "M";
2778 static const char __pyx_k_N[] = "N";
2779 static const char __pyx_k_U[] = "U";
2780 static const char __pyx_k_V[] = "V";
2781 static const char __pyx_k_Z[] = "Z";
2782 static const char __pyx_k_a[] = "a";
2783 static const char __pyx_k_c[] = "c";
2784 static const char __pyx_k_d[] = "d";
2785 static const char __pyx_k_f[] = "f";
2786 static const char __pyx_k_g[] = "g";
2787 static const char __pyx_k_i[] = "i";
2788 static const char __pyx_k_j[] = "j";
2789 static const char __pyx_k_k[] = "k";
2790 static const char __pyx_k_l[] = "l";
2791 static const char __pyx_k_r[] = "r";
2792 static const char __pyx_k_s[] = "s";
2793 static const char __pyx_k_t[] = "t";
2794 static const char __pyx_k_u[] = "u";
2795 static const char __pyx_k_w[] = "w";
2796 static const char __pyx_k_x[] = "x";
2797 static const char __pyx_k_y[] = "y";
2798 static const char __pyx_k_G0[] = "G0";
2799 static const char __pyx_k_Hs[] = "Hs";
2800 static const char __pyx_k_Nf[] = "Nf";
2801 static const char __pyx_k_Np[] = "Np";
2802 static const char __pyx_k_RW[] = "RW";
2803 static const char __pyx_k_TS[] = "TS";
2804 static const char __pyx_k_Tm[] = "Tm";
2805 static const char __pyx_k_Tp[] = "Tp";
2806 static const char __pyx_k_UH[] = "UH";
2807 static const char __pyx_k_UV[] = "UV";
2808 static const char __pyx_k_a1[] = "a1";
2809 static const char __pyx_k_a2[] = "a2";
2810 static const char __pyx_k_aR[] = "aR";
2811 static const char __pyx_k_aa[] = "aa";
2812 static const char __pyx_k_ai[] = "ai";
2813 static const char __pyx_k_bj[] = "bj";
2814 static const char __pyx_k_df[] = "df";
2815 static const char __pyx_k_dt[] = "dt";
2816 static const char __pyx_k_f0[] = "f0";
2817 static const char __pyx_k_fi[] = "fi";
2818 static const char __pyx_k_ho[] = "ho";
2819 static const char __pyx_k_i1[] = "i1";
2820 static const char __pyx_k_i2[] = "i2";
2821 static const char __pyx_k_ii[] = "ii";
2822 static const char __pyx_k_jj[] = "jj";
2823 static const char __pyx_k_np[] = "np";
2824 static const char __pyx_k_pi[] = "pi";
2825 static const char __pyx_k_pp[] = "pp";
2826 static const char __pyx_k_te[] = "te";
2827 static const char __pyx_k_ts[] = "ts";
2828 static const char __pyx_k_tt[] = "tt";
2829 static const char __pyx_k_uR[] = "uR";
2830 static const char __pyx_k_v1[] = "v1";
2831 static const char __pyx_k_v2[] = "v2";
2832 static const char __pyx_k_ww[] = "ww";
2833 static const char __pyx_k_x0[] = "x0";
2834 static const char __pyx_k_xx[] = "xx";
2835 static const char __pyx_k_Er1[] = "Er1 =";
2836 static const char __pyx_k_TMA[] = "TMA";
2837 static const char __pyx_k__43[] = ",";
2838 static const char __pyx_k__52[] = " ";
2839 static const char __pyx_k_aRN[] = "aRN";
2840 static const char __pyx_k_all[] = "all";
2841 static const char __pyx_k_amp[] = "amp";
2842 static const char __pyx_k_cos[] = "cos";
2843 static const char __pyx_k_csv[] = ".csv";
2844 static const char __pyx_k_cut[] = "cut";
2845 static const char __pyx_k_doc[] = "__doc__";
2846 static const char __pyx_k_dom[] = "dom";
2847 static const char __pyx_k_er1[] = "er1";
2848 static const char __pyx_k_eta[] = "eta";
2849 static const char __pyx_k_exp[] = "exp";
2850 static const char __pyx_k_fft[] = "fft";
2851 static const char __pyx_k_fun[] = "fun";
2852 static const char __pyx_k_get[] = "get";
2853 static const char __pyx_k_log[] = "log";
2854 static const char __pyx_k_max[] = "max";
2855 static const char __pyx_k_mwl[] = "mwl";
2856 static const char __pyx_k_new[] = "__new__";
2857 static const char __pyx_k_phi[] = "phi";
2858 static const char __pyx_k_str[] = "str";
2859 static const char __pyx_k_sum[] = "sum";
2860 static const char __pyx_k_sys[] = "sys";
2861 static const char __pyx_k_tma[] = "tma";
2862 static const char __pyx_k_txt[] = ".txt";
2863 static const char __pyx_k_zip[] = "zip";
2864 static const char __pyx_k_Comm[] = "Comm";
2865 static const char __pyx_k_Hs_2[] = "_Hs_";
2866 static const char __pyx_k_Lgen[] = "Lgen";
2867 static const char __pyx_k_Nmax[] = "Nmax";
2868 static const char __pyx_k_Tend[] = "Tend";
2869 static const char __pyx_k_Tlag[] = "Tlag";
2870 static const char __pyx_k_Tmax[] = "Tmax";
2871 static const char __pyx_k_Tp_2[] = "_Tp_";
2872 static const char __pyx_k_args[] = "args";
2873 static const char __pyx_k_cmat[] = "cmat";
2874 static const char __pyx_k_cond[] = "cond";
2875 static const char __pyx_k_cppU[] = "cppU";
2876 static const char __pyx_k_dict[] = "__dict__";
2877 static const char __pyx_k_etaR[] = "etaR";
2878 static const char __pyx_k_exit[] = "exit";
2879 static const char __pyx_k_fast[] = "fast";
2880 static const char __pyx_k_freq[] = "freq";
2881 static const char __pyx_k_func[] = "func";
2882 static const char __pyx_k_gAbs[] = "gAbs";
2883 static const char __pyx_k_iend[] = "iend";
2884 static const char __pyx_k_init[] = "__init__";
2885 static const char __pyx_k_kAbs[] = "kAbs";
2886 static const char __pyx_k_kDir[] = "kDir";
2887 static const char __pyx_k_long[] = "long";
2888 static const char __pyx_k_main[] = "__main__";
2889 static const char __pyx_k_mean[] = "mean";
2890 static const char __pyx_k_mode[] = "mode";
2891 static const char __pyx_k_name[] = "__name__";
2892 static const char __pyx_k_nfft[] = "nfft";
2893 static const char __pyx_k_norm[] = "norm";
2894 static const char __pyx_k_ones[] = "ones";
2895 static const char __pyx_k_open[] = "open";
2896 static const char __pyx_k_phi0[] = "phi0";
2897 static const char __pyx_k_rand[] = "rand";
2898 static const char __pyx_k_real[] = "real";
2899 static const char __pyx_k_self[] = "self";
2900 static const char __pyx_k_send[] = "send";
2901 static const char __pyx_k_sinh[] = "sinh";
2902 static const char __pyx_k_smax[] = "smax";
2903 static const char __pyx_k_sqrt[] = "sqrt";
2904 static const char __pyx_k_tanh[] = "tanh";
2905 static const char __pyx_k_test[] = "__test__";
2906 static const char __pyx_k_time[] = "time";
2907 static const char __pyx_k_vDir[] = "vDir";
2908 static const char __pyx_k_wind[] = "wind";
2909 static const char __pyx_k_Nfreq[] = "Nfreq";
2910 static const char __pyx_k_Nwind[] = "Nwind";
2911 static const char __pyx_k_Uhorz[] = "Uhorz";
2912 static const char __pyx_k_Uvert[] = "Uvert";
2913 static const char __pyx_k_all_2[] = "__all__";
2914 static const char __pyx_k_array[] = "array";
2915 static const char __pyx_k_close[] = "close";
2916 static const char __pyx_k_cmath[] = "cmath";
2917 static const char __pyx_k_cos2s[] = "cos2s";
2918 static const char __pyx_k_depth[] = "depth";
2919 static const char __pyx_k_fft_x[] = "fft_x";
2920 static const char __pyx_k_fname[] = "fname";
2921 static const char __pyx_k_gamma[] = "gamma";
2922 static const char __pyx_k_level[] = "level";
2923 static const char __pyx_k_modes[] = "modes";
2924 static const char __pyx_k_niter[] = "niter";
2925 static const char __pyx_k_numpy[] = "numpy";
2926 static const char __pyx_k_omega[] = "omega";
2927 static const char __pyx_k_overl[] = "overl";
2928 static const char __pyx_k_phase[] = "phase";
2929 static const char __pyx_k_print[] = "print";
2930 static const char __pyx_k_range[] = "range";
2931 static const char __pyx_k_rec_d[] = "rec_d";
2932 static const char __pyx_k_round[] = "round";
2933 static const char __pyx_k_setUp[] = "setUp";
2934 static const char __pyx_k_setup[] = "setup";
2935 static const char __pyx_k_shape[] = "shape";
2936 static const char __pyx_k_short[] = "short";
2937 static const char __pyx_k_sigma[] = "sigma";
2938 static const char __pyx_k_sinus[] = "sinus";
2939 static const char __pyx_k_state[] = "state";
2940 static const char __pyx_k_theta[] = "theta";
2941 static const char __pyx_k_throw[] = "throw";
2942 static const char __pyx_k_trans[] = "trans";
2943 static const char __pyx_k_w_aux[] = "w_aux";
2944 static const char __pyx_k_where[] = "where";
2945 static const char __pyx_k_zeros[] = "zeros";
2946 static const char __pyx_k_Bcoeff[] = "Bcoeff";
2947 static const char __pyx_k_Cutoff[] = "Cutoff";
2948 static const char __pyx_k_Fenton[] = "Fenton";
2949 static const char __pyx_k_Linear[] = "Linear";
2950 static const char __pyx_k_NLongW[] = "NLongW";
2951 static const char __pyx_k_Nwaves[] = "Nwaves";
2952 static const char __pyx_k_PM_mod[] = "PM_mod";
2953 static const char __pyx_k_Period[] = "Period";
2954 static const char __pyx_k_Tstart[] = "Tstart";
2955 static const char __pyx_k_Udrift[] = "Udrift";
2956 static const char __pyx_k_Window[] = "Window";
2957 static const char __pyx_k_Ycoeff[] = "Ycoeff";
2958 static const char __pyx_k_append[] = "append";
2959 static const char __pyx_k_costap[] = "costap";
2960 static const char __pyx_k_custom[] = "custom";
2961 static const char __pyx_k_cutoff[] = "cutoff";
2962 static const char __pyx_k_dict_2[] = "_dict";
2963 static const char __pyx_k_errors[] = "errors";
2964 static const char __pyx_k_freq_S[] = "freq_S";
2965 static const char __pyx_k_import[] = "__import__";
2966 static const char __pyx_k_interp[] = "interp";
2967 static const char __pyx_k_linalg[] = "linalg";
2968 static const char __pyx_k_linear[] = "linear";
2969 static const char __pyx_k_module[] = "__module__";
2970 static const char __pyx_k_object[] = "object";
2971 static const char __pyx_k_omega0[] = "omega0";
2972 static const char __pyx_k_period[] = "period";
2973 static const char __pyx_k_pickle[] = "pickle";
2974 static const char __pyx_k_random[] = "random";
2975 static const char __pyx_k_reduce[] = "__reduce__";
2976 static const char __pyx_k_series[] = "series";
2977 static const char __pyx_k_tfocus[] = "tfocus";
2978 static const char __pyx_k_tolist[] = "tolist";
2979 static const char __pyx_k_tophat[] = "tophat";
2980 static const char __pyx_k_uCheck[] = "uCheck";
2981 static const char __pyx_k_update[] = "update";
2982 static const char __pyx_k_vector[] = "vector";
2983 static const char __pyx_k_xfocus[] = "xfocus";
2984 static const char __pyx_k_JONSWAP[] = "JONSWAP";
2985 static const char __pyx_k_NewWave[] = "NewWave";
2986 static const char __pyx_k_Nseries[] = "Nseries";
2987 static const char __pyx_k_Overlap[] = "Overlap";
2988 static const char __pyx_k_TWindow[] = "TWindow";
2989 static const char __pyx_k_barrier[] = "barrier";
2990 static const char __pyx_k_depth_2[] = "_depth_";
2991 static const char __pyx_k_fftfreq[] = "fftfreq";
2992 static const char __pyx_k_fim_tmp[] = "fim_tmp";
2993 static const char __pyx_k_genexpr[] = "genexpr";
2994 static const char __pyx_k_loadtxt[] = "loadtxt";
2995 static const char __pyx_k_logFile[] = "logFile";
2996 static const char __pyx_k_ncoeffs[] = "ncoeffs";
2997 static const char __pyx_k_npoints[] = "npoints";
2998 static const char __pyx_k_old_div[] = "old_div";
2999 static const char __pyx_k_periods[] = "periods";
3000 static const char __pyx_k_phiSymm[] = "phiSymm";
3001 static const char __pyx_k_prepare[] = "__prepare__";
3002 static const char __pyx_k_proteus[] = "proteus";
3003 static const char __pyx_k_results[] = "results";
3004 static const char __pyx_k_savetxt[] = "savetxt";
3005 static const char __pyx_k_timelst[] = "timelst";
3006 static const char __pyx_k_uDirect[] = "uDirect";
3007 static const char __pyx_k_uWindow[] = "uWindow";
3008 static const char __pyx_k_waveDir[] = "waveDir";
3009 static const char __pyx_k_windOut[] = "windOut";
3010 static const char __pyx_k_windows[] = "windows";
3011 static const char __pyx_k_wtError[] = "wtError";
3012 static const char __pyx_k_Cutoff_2[] = "Cutoff=";
3013 static const char __pyx_k_End_time[] = "End time= ";
3014 static const char __pyx_k_EtasetUp[] = "EtasetUp";
3015 static const char __pyx_k_Nspectra[] = "Nspectra";
3016 static const char __pyx_k_TOverlap[] = "TOverlap";
3017 static const char __pyx_k_builtins[] = "builtins";
3018 static const char __pyx_k_checkAcc[] = "checkAcc";
3019 static const char __pyx_k_dirCheck[] = "dirCheck";
3020 static const char __pyx_k_dircheck[] = "dircheck";
3021 static const char __pyx_k_duration[] = "duration";
3022 static const char __pyx_k_etaCheck[] = "etaCheck";
3023 static const char __pyx_k_eta_long[] = "eta_long";
3024 static const char __pyx_k_eta_mode[] = "eta_mode";
3025 static const char __pyx_k_funcName[] = "funcName";
3026 static const char __pyx_k_func_ret[] = "func_ret";
3027 static const char __pyx_k_getstate[] = "__getstate__";
3028 static const char __pyx_k_isMaster[] = "isMaster";
3029 static const char __pyx_k_linspace[] = "linspace";
3030 static const char __pyx_k_logEvent[] = "logEvent";
3031 static const char __pyx_k_printOut[] = "printOut";
3032 static const char __pyx_k_pyx_type[] = "__pyx_type";
3033 static const char __pyx_k_qualname[] = "__qualname__";
3034 static const char __pyx_k_rampTime[] = "rampTime";
3035 static const char __pyx_k_setstate[] = "__setstate__";
3036 static const char __pyx_k_skiprows[] = "skiprows";
3037 static const char __pyx_k_vel_mode[] = "vel_mode";
3038 static const char __pyx_k_waveDir0[] = "waveDir0";
3039 static const char __pyx_k_waveList[] = "waveList";
3040 static const char __pyx_k_waveType[] = "waveType";
3041 static const char __pyx_k_NewWave_u[] = "NewWave.u";
3042 static const char __pyx_k_Profiling[] = "Profiling";
3043 static const char __pyx_k_TypeError[] = "TypeError";
3044 static const char __pyx_k_WaveTools[] = "WaveTools";
3045 static const char __pyx_k_amplitude[] = "amplitude";
3046 static const char __pyx_k_arrayData[] = "arrayData";
3047 static const char __pyx_k_condition[] = "condition";
3048 static const char __pyx_k_conv_crit[] = "conv_crit";
3049 static const char __pyx_k_copyFiles[] = "copyFiles";
3050 static const char __pyx_k_delimiter[] = "delimiter";
3051 static const char __pyx_k_etaDirect[] = "etaDirect";
3052 static const char __pyx_k_etaWindow[] = "etaWindow";
3053 static const char __pyx_k_eta_setUp[] = "eta_setUp";
3054 static const char __pyx_k_eta_short[] = "eta_short";
3055 static const char __pyx_k_funcNames[] = "funcNames";
3056 static const char __pyx_k_metaclass[] = "__metaclass__";
3057 static const char __pyx_k_mitsuyasu[] = "mitsuyasu";
3058 static const char __pyx_k_pyx_state[] = "__pyx_state";
3059 static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
3060 static const char __pyx_k_spectName[] = "spectName";
3061 static const char __pyx_k_wwi_setUp[] = "wwi_setUp";
3062 static const char __pyx_k_Etaoverall[] = "Etaoverall";
3063 static const char __pyx_k_Nwaves_tot[] = "Nwaves_tot";
3064 static const char __pyx_k_Start_Time[] = "Start Time =";
3065 static const char __pyx_k_TimeSeries[] = "TimeSeries";
3066 static const char __pyx_k_autoFenton[] = "autoFenton";
3067 static const char __pyx_k_bandFactor[] = "bandFactor";
3068 static const char __pyx_k_crestFocus[] = "crestFocus";
3069 static const char __pyx_k_cutoff_win[] = "cutoff_win";
3070 static const char __pyx_k_dispersion[] = "dispersion";
3071 static const char __pyx_k_findWindow[] = "findWindow";
3072 static const char __pyx_k_freq_array[] = "freq_array";
3073 static const char __pyx_k_past_utils[] = "past.utils";
3074 static const char __pyx_k_pyx_result[] = "__pyx_result";
3075 static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
3076 static const char __pyx_k_rec_direct[] = "rec_direct";
3077 static const char __pyx_k_rotation3D[] = "rotation3D";
3078 static const char __pyx_k_runFourier[] = "runFourier";
3079 static const char __pyx_k_setVertDir[] = "setVertDir";
3080 static const char __pyx_k_spreadName[] = "spreadName";
3081 static const char __pyx_k_waveHeight[] = "waveHeight";
3082 static const char __pyx_k_waveheight[] = "waveheight";
3083 static const char __pyx_k_wavelength[] = "wavelength";
3084 static const char __pyx_k_writeInput[] = "writeInput";
3085 static const char __pyx_k_ImportError[] = "ImportError";
3086 static const char __pyx_k_NewWave_eta[] = "NewWave.eta";
3087 static const char __pyx_k_PickleError[] = "PickleError";
3088 static const char __pyx_k_RandomWaves[] = "RandomWaves";
3089 static const char __pyx_k_Tstart_temp[] = "Tstart_temp";
3090 static const char __pyx_k_cutoffTotal[] = "cutoffTotal";
3091 static const char __pyx_k_eta_overall[] = "eta_overall";
3092 static const char __pyx_k_getBYCoeffs[] = "getBYCoeffs";
3093 static const char __pyx_k_seriesArray[] = "seriesArray";
3094 static const char __pyx_k_sigmaReturn[] = "sigmaReturn";
3095 static const char __pyx_k_CombineWaves[] = "CombineWaves";
3096 static const char __pyx_k_RandomSeries[] = "RandomSeries";
3097 static const char __pyx_k_SolitaryWave[] = "SolitaryWave";
3098 static const char __pyx_k_SpatialTools[] = "SpatialTools";
3099 static const char __pyx_k_coshkzd_test[] = "coshkzd_test";
3100 static const char __pyx_k_eta_2ndOrder[] = "eta_2ndOrder";
3101 static const char __pyx_k_fastcos_test[] = "fastcos_test";
3102 static const char __pyx_k_height_steps[] = "height_steps";
3103 static const char __pyx_k_meanVelocity[] = "meanVelocity";
3104 static const char __pyx_k_normIntegral[] = "normIntegral";
3105 static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
3106 static const char __pyx_k_setDirVector[] = "setDirVector";
3107 static const char __pyx_k_sinhkzd_test[] = "sinhkzd_test";
3108 static const char __pyx_k_stringsource[] = "stringsource";
3109 static const char __pyx_k_use_setstate[] = "use_setstate";
3110 static const char __pyx_k_RandomNLWaves[] = "RandomNLWaves";
3111 static const char __pyx_k_RandomWaves_u[] = "RandomWaves.u";
3112 static const char __pyx_k_SteadyCurrent[] = "SteadyCurrent";
3113 static const char __pyx_k_fastcosh_test[] = "fastcosh_test";
3114 static const char __pyx_k_fastsinh_test[] = "fastsinh_test";
3115 static const char __pyx_k_getWavelength[] = "getWavelength";
3116 static const char __pyx_k_randomNLWaves[] = "randomNLWaves_";
3117 static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
3118 static const char __pyx_k_spread_params[] = "spread_params";
3119 static const char __pyx_k_window_params[] = "window_params";
3120 static const char __pyx_k_CombineWaves_u[] = "CombineWaves.u";
3121 static const char __pyx_k_SolitaryWave_u[] = "SolitaryWave.u";
3122 static const char __pyx_k_autoFentonOpts[] = "autoFentonOpts";
3123 static const char __pyx_k_proteus_fenton[] = "proteus.fenton";
3124 static const char __pyx_k_timeSeriesFile[] = "timeSeriesFile";
3125 static const char __pyx_k_validFunctions[] = "validFunctions";
3126 static const char __pyx_k_writeEtaSeries[] = "writeEtaSeries";
3127 static const char __pyx_k_RandomWavesFast[] = "RandomWavesFast";
3128 static const char __pyx_k_RandomWaves_eta[] = "RandomWaves.eta";
3129 static const char __pyx_k_SteadyCurrent_u[] = "SteadyCurrent.u";
3130 static const char __pyx_k_points_velocity[] = "points_velocity";
3131 static const char __pyx_k_points_vertical[] = "points_vertical";
3132 static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
3133 static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
3134 static const char __pyx_k_spectral_params[] = "spectral_params";
3135 static const char __pyx_k_CombineWaves_eta[] = "CombineWaves.eta";
3136 static const char __pyx_k_DirectionalWaves[] = "DirectionalWaves";
3137 static const char __pyx_k_SolitaryWave_eta[] = "SolitaryWave.eta";
3138 static const char __pyx_k_returnRectangles[] = "returnRectangles";
3139 static const char __pyx_k_Number_of_windows[] = "Number of windows=";
3140 static const char __pyx_k_RandomNLWavesFast[] = "RandomNLWavesFast";
3141 static const char __pyx_k_SteadyCurrent_eta[] = "SteadyCurrent.eta";
3142 static const char __pyx_k_current_criterion[] = "current_criterion";
3143 static const char __pyx_k_current_magnitude[] = "current_magnitude";
3144 static const char __pyx_k_decompose_tseries[] = "decompose_tseries";
3145 static const char __pyx_k_reduceToIntervals[] = "reduceToIntervals";
3146 static const char __pyx_k_DirectionalWaves_u[] = "DirectionalWaves.u";
3147 static const char __pyx_k_MonochromaticWaves[] = "MonochromaticWaves";
3148 static const char __pyx_k_TimeSeries_uDirect[] = "TimeSeries.uDirect";
3149 static const char __pyx_k_TimeSeries_uWindow[] = "TimeSeries.uWindow";
3150 static const char __pyx_k_TimeSeries_windOut[] = "TimeSeries.windOut";
3151 static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
3152 static const char __pyx_k_points_freesurface[] = "points_freesurface";
3153 static const char __pyx_k_returnRectangles3D[] = "returnRectangles3D";
3154 static const char __pyx_k_timeSeriesPosition[] = "timeSeriesPosition";
3155 static const char __pyx_k_CombineWaves___init[] = "CombineWaves.__init__";
3156 static const char __pyx_k_RandomNLWavesFast_u[] = "RandomNLWavesFast.u";
3157 static const char __pyx_k_DirectionalWaves_eta[] = "DirectionalWaves.eta";
3158 static const char __pyx_k_MonochromaticWaves_u[] = "MonochromaticWaves.u";
3159 static const char __pyx_k_TimeSeries_etaDirect[] = "TimeSeries.etaDirect";
3160 static const char __pyx_k_TimeSeries_etaWindow[] = "TimeSeries.etaWindow";
3161 static const char __pyx_k_loadExistingFunction[] = "loadExistingFunction";
3162 static const char __pyx_k_proteus_WaveTools_py[] = "proteus/WaveTools.py";
3163 static const char __pyx_k_Direct_reconstruction[] = "Direct reconstruction? ";
3164 static const char __pyx_k_RandomNLWavesFast_eta[] = "RandomNLWavesFast.eta";
3165 static const char __pyx_k_RandomNLWaves_wtError[] = "RandomNLWaves.wtError";
3166 static const char __pyx_k_TimeSeries_findWindow[] = "TimeSeries.findWindow";
3167 static const char __pyx_k_MonochromaticWaves_eta[] = "MonochromaticWaves.eta";
3168 static const char __pyx_k_NewWave_writeEtaSeries[] = "NewWave.writeEtaSeries";
3169 static const char __pyx_k_RandomNLWaves_eta_long[] = "RandomNLWaves.eta_long";
3170 static const char __pyx_k_RandomWavesFast___init[] = "RandomWavesFast.__init__";
3171 static const char __pyx_k_cinit___locals_genexpr[] = "__cinit__.<locals>.genexpr";
3172 static const char __pyx_k_MultiSpectraRandomWaves[] = "MultiSpectraRandomWaves";
3173 static const char __pyx_k_NewWave___reduce_cython[] = "NewWave.__reduce_cython__";
3174 static const char __pyx_k_RandomNLWaves_eta_setUp[] = "RandomNLWaves.eta_setUp";
3175 static const char __pyx_k_RandomNLWaves_eta_short[] = "RandomNLWaves.eta_short";
3176 static const char __pyx_k_RandomNLWavesFast___init[] = "RandomNLWavesFast.__init__";
3177 static const char __pyx_k_RandomWavesFast_printOut[] = "RandomWavesFast.printOut";
3178 static const char __pyx_k_MultiSpectraRandomWaves_u[] = "MultiSpectraRandomWaves.u";
3179 static const char __pyx_k_NewWave___setstate_cython[] = "NewWave.__setstate_cython__";
3180 static const char __pyx_k_RandomNLWaves_eta_overall[] = "RandomNLWaves.eta_overall";
3181 static const char __pyx_k_pyx_unpickle_SolitaryWave[] = "__pyx_unpickle_SolitaryWave";
3182 static const char __pyx_k_RandomNLWaves_eta_2ndOrder[] = "RandomNLWaves.eta_2ndOrder";
3183 static const char __pyx_k_RandomWaves_writeEtaSeries[] = "RandomWaves.writeEtaSeries";
3184 static const char __pyx_k_TimeSeries___reduce_cython[] = "TimeSeries.__reduce_cython__";
3185 static const char __pyx_k_pyx_unpickle_SteadyCurrent[] = "__pyx_unpickle_SteadyCurrent";
3186 static const char __pyx_k_MultiSpectraRandomWaves_eta[] = "MultiSpectraRandomWaves.eta";
3187 static const char __pyx_k_RandomWaves___reduce_cython[] = "RandomWaves.__reduce_cython__";
3188 static const char __pyx_k_waves_This_may_take_a_while[] = " waves. This may take a while";
3189 static const char __pyx_k_RandomNLWaves_writeEtaSeries[] = "RandomNLWaves.writeEtaSeries";
3190 static const char __pyx_k_SolitaryWave___reduce_cython[] = "SolitaryWave.__reduce_cython__";
3191 static const char __pyx_k_TimeSeries___setstate_cython[] = "TimeSeries.__setstate_cython__";
3192 static const char __pyx_k_RandomNLWaves___reduce_cython[] = "RandomNLWaves.__reduce_cython__";
3193 static const char __pyx_k_RandomWaves___setstate_cython[] = "RandomWaves.__setstate_cython__";
3194 static const char __pyx_k_SteadyCurrent___reduce_cython[] = "SteadyCurrent.__reduce_cython__";
3195 static const char __pyx_k_SolitaryWave___setstate_cython[] = "SolitaryWave.__setstate_cython__";
3196 static const char __pyx_k_self_Bcoeff__self_Ycoeff__self[] = "self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling";
3197 static const char __pyx_k_ERROR_Custom_parameters_not_set[] = "ERROR!: Custom parameters not set";
3198 static const char __pyx_k_ERROR_Wavetools_py_meanVelocity[] = "ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ";
3199 static const char __pyx_k_ERROR_Wavetools_py_phi_argument[] = "ERROR! Wavetools.py: phi argument must be an array with N elements";
3200 static const char __pyx_k_INFO_WaveTools_py_Overlap_entry[] = "INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)";
3201 static const char __pyx_k_RandomNLWaves___setstate_cython[] = "RandomNLWaves.__setstate_cython__";
3202 static const char __pyx_k_SteadyCurrent___setstate_cython[] = "SteadyCurrent.__setstate_cython__";
3203 static const char __pyx_k_This_class_is_used_for_combinin[] = "\n This class is used for combining multiple waveTools classes, thus allowing for the generation of complex wave conditions\n\n Parameters\n ----------\n waveList : list\n List of wave classes\n ";
3204 static const char __pyx_k_This_class_is_used_for_generati[] = "\n This class is used for generating plane random waves in an optimised manner\n using linear reconstruction of components from a wave spectrum\n\n Parameters\n ----------\n Tstart : float\n Start time \n Tend : float\n End time \n x0 : numpy.ndarray\n Position vector for the time series \n Tp : float\n Peak wave period\n Hs : float\n Significant wave height\n mwl : float\n Still water level\n depth : float\n Water depth\n waveDir : numpy.ndarray\n Wave direction vector\n g : Numpy array\n Gravitational acceleration vector\n N : int\n Number of frequency components\n bandFactor : float\n Spectral band factor. fmax = bandFactor/Tp, fmin = 1/(bandFactor*Tp) \n spectName : string\n Name of spectral distribution\n spectral_params : dict\n Dictionary of arguments specific to the spectral distribution\n Example for JONSWAP = {\"gamma\": 3.3, \"TMA\":True,\"depth\": depth}\n TMA=True activates the TMA modification, which in turn needs the depth as a parameter\n phi : numpy.ndarray\n Component phases (if set to None, phases are picked at random)\n Lgen : numpy.ndarray\n Length of the generation zone (np.array([0., 0., 0.]) by default\n Nwaves : int\n Number of waves per window\n Nfreq : int\n Number of Fourier components per window\n checkAcc : bool\n Switch for enabling accuracy checks\n fast : bool\n Switch for enabling optimised functions \n \n\n ";
3205 static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
3206 static const char __pyx_k_DirectionalWaves___reduce_cython[] = "DirectionalWaves.__reduce_cython__";
3207 static const char __pyx_k_DirectionalWaves___setstate_cyth[] = "DirectionalWaves.__setstate_cython__";
3208 static const char __pyx_k_ERROR_Each_input_list_entry_shou[] = "ERROR!: Each input list entry should be a waveTools function with an eta function";
3209 static const char __pyx_k_ERROR_Number_of_Fourier_modes_is[] = "ERROR!!: Number of Fourier modes is not set, please define a reasonable number of Fourier modes e.g. Nf = 12";
3210 static const char __pyx_k_ERROR_WaveTools_py_Dictionary_ke[] = "ERROR! WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary";
3211 static const char __pyx_k_ERROR_WaveTools_py_Found_large_e[] = "ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors";
3212 static const char __pyx_k_ERROR_WaveTools_py_Found_not_con[] = "ERROR! WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically";
3213 static const char __pyx_k_ERROR_WaveTools_py_Found_too_few[] = "ERROR!: WaveTools.py: Found too few windows in RandomWavesFast. Consider increasing Tend (this is independent from the duration of the simulation)";
3214 static const char __pyx_k_ERROR_WaveTools_py_Reconstructio[] = "ERROR! WaveTools.py: Reconstruction is expected to have two windows or more. Plese reduce the number of waves per window or switch to direct decomposition )";
3215 static const char __pyx_k_ERROR_WaveTools_py_Relaxation_zo[] = "ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone";
3216 static const char __pyx_k_ERROR_WaveTools_py_Set_parameter[] = "ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary";
3217 static const char __pyx_k_ERROR_Wavetools_py_Additional_sp[] = "ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum";
3218 static const char __pyx_k_ERROR_Wavetools_py_File_s_must_b[] = "ERROR! Wavetools.py: File %s must be given in .txt or .csv format";
3219 static const char __pyx_k_ERROR_Wavetools_py_Location_vect[] = "ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction";
3220 static const char __pyx_k_ERROR_Wavetools_py_Maximum_numbe[] = "ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ";
3221 static const char __pyx_k_ERROR_Wavetools_py_Parameters_pa[] = "ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ";
3222 static const char __pyx_k_ERROR_Wavetools_py_Phase_array_m[] = "ERROR! Wavetools.py: Phase array must have N elements";
3223 static const char __pyx_k_ERROR_Wavetools_py_SteadyCurrent[] = "ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3";
3224 static const char __pyx_k_ERROR_Wavetools_py_Timeseries_fi[] = "ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]";
3225 static const char __pyx_k_ERROR_Wavetools_py_Wavelenght_is[] = "ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments";
3226 static const char __pyx_k_ERROR_Wavetools_py_Window_handov[] = "ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap";
3227 static const char __pyx_k_ERROR_Wavetools_py_Wrong_functio[] = "ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s";
3228 static const char __pyx_k_ERROR_Wavetools_py_Ycoeff_and_Bc[] = "ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero";
3229 static const char __pyx_k_ERROR_Wavetools_py_You_are_not_r[] = "ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ";
3230 static const char __pyx_k_ERROR_Wavetools_py_eta_and_u_fun[] = "ERROR! Wavetools.py: eta and u functions not available for this class. Please use RandomNLWavesFast for generating random waves with nonlinear correction";
3231 static const char __pyx_k_ERROR_Wavetools_py_phi_in_Direct[] = "ERROR! Wavetools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N";
3232 static const char __pyx_k_ERROR_Wavetools_pyx_Argument_mod[] = "ERROR! Wavetools.pyx: Argument mode in RandomNLWaves.writeEtaSeries should be \"all\", \"setup\", \"short\", \"long\" or \"linear\"";
3233 static const char __pyx_k_ERROR_Wrong_wavetype_given_Valid[] = "ERROR!!: Wrong wavetype given: Valid wavetypes are %s";
3234 static const char __pyx_k_INFO_Calculating_nonlinear_corre[] = "INFO: Calculating nonlinear corrections for ";
3235 static const char __pyx_k_INFO_WaveTools_py_Cutoff_entry_i[] = "INFO WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)";
3236 static const char __pyx_k_INFO_WaveTools_py_Not_constant_s[] = "INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate";
3237 static const char __pyx_k_INFO_WaveTools_py_performing_a_d[] = "INFO: WaveTools.py: performing a direct series decomposition";
3238 static const char __pyx_k_INFO_WaveTools_py_performing_ser[] = "INFO WaveTools.py: performing series decomposition with spectral windows";
3239 static const char __pyx_k_INFO_Wavetools_py_Checking_durat[] = "INFO: Wavetools.py: Checking duration of windowed time series: %s per cent difference from original duration";
3240 static const char __pyx_k_INFO_Wavetools_py_Correcting_win[] = "INFO: Wavetools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx.";
3241 static const char __pyx_k_INFO_Wavetools_py_No_phase_array[] = "INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves";
3242 static const char __pyx_k_INFO_Wavetools_py_Reading_spectr[] = "INFO Wavetools.py: Reading spectra No %s";
3243 static const char __pyx_k_INFO_Wavetools_py_Using_s_window[] = "INFO: Wavetools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap";
3244 static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))";
3245 static const char __pyx_k_MonochromaticWaves___reduce_cyth[] = "MonochromaticWaves.__reduce_cython__";
3246 static const char __pyx_k_MonochromaticWaves___setstate_cy[] = "MonochromaticWaves.__setstate_cython__";
3247 static const char __pyx_k_MultiSpectraRandomWaves___reduce[] = "MultiSpectraRandomWaves.__reduce_cython__";
3248 static const char __pyx_k_MultiSpectraRandomWaves___setsta[] = "MultiSpectraRandomWaves.__setstate_cython__";
3249 static const char __pyx_k_Tools_for_working_with_water_wav[] = "Tools for working with water waves.\n\nThe primary objective of this module is to provide solutions (exact and\napproximate) for the free surface deformation and subsurface velocity\ncomponents of water waves. These can be used as boundary conditions, wave\ngeneration sources, and validation solutions for numerical wave codes.\n";
3250 static const char __pyx_k_Wave_direction_is_not_perpendicu[] = "Wave direction is not perpendicular to gravity vector. Check input";
3251 static const char __pyx_k_Wavetools_py_Provide_valid_depth[] = "Wavetools:py. Provide valid depth definition definition for TMA spectrum";
3252 static const char __pyx_k_Wavetools_py_Stopping_simulation[] = "Wavetools:py. Stopping simulation";
3253 static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
3254 static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import";
3255 static const char __pyx_k_self_T0__self__cpp_eta_self__cpp[] = "self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling";
3256 static const char __pyx_k_self_ai__self_kDir__self_ki__sel[] = "self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling";
3257 static const char __pyx_k_This_class_is_used_for_generati_2[] = "\n This class is used for generating plane random waves with 2ns order correction in an optimised manner\n using linear reconstruction of components from a wave spectrum\n\n Parameters\n ----------\n Tstart : float\n Start time \n Tend : float\n End time \n x0 : numpy.ndarray\n Position vector for the time series \n Tp : float\n Peak wave period \n Hs : float\n Significant wave height \n mwl : float\n Still water level \n depth : float\n Water depth \n waveDir : np.ndarray\n Wave direction vector \n g : Numpy array\n Gravitational acceleration vector \n N : int\n Number of frequency components\n bandFactor : float\n Spectral band factor. fmax = bandFactor/Tp, fmin = 1/(bandFactor*Tp) \n spectName : string\n Name of spectral distribution\n spectral_params : dict\n Dictionary of arguments specific to the spectral distribution\n Example for JONSWAP = {\"gamma\": 3.3, \"TMA\":True,\"depth\": depth}\n TMA=True activates the TMA modification, which in turn needs the depth as a parameter \n phi : numpy.ndarray\n Component phases (if set to None, phases are picked at random)\n \n Lgen : numpy.ndarray\n Length of the generation zone (np.array([0., 0., 0.]) by default\n \n Nwaves : int\n Number of waves per window\n Nfreq : int\n Number of Fourier components per window\n NLongw : int\n Estmated ratio of long wave period to Tp\n fast : bool\n Switch for enabling optimised functions \n ";
3258 static const char __pyx_k_ERROR_Each_input_list_entry_shou_2[] = "ERROR!: Each input list entry should be a waveTools function with a u function";
3259 static const char __pyx_k_ERROR_WaveTools_py_Dictionary_ke_2[] = "ERROR! WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary";
3260 static const char __pyx_k_ERROR_WaveTools_py_Dictionary_ke_3[] = "ERROR! WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary";
3261 static const char __pyx_k_ERROR_Wavetools_py_Additional_sp_2[] = "ERROR! Wavetools.py: Additional spread parameters are not valid for the %s spectrum";
3262 static const char __pyx_k_ERROR_Wavetools_py_Location_vect_2[] = "ERROR! Wavetools.py: Location vector for timeSeries must have three-components";
3263 static const char __pyx_k_ERROR_Wavetools_py_Maximum_numbe_2[] = "ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for MultispectraRandomWaves is 10000 ";
3264 static const char __pyx_k_ERROR_Wavetools_py_Maximum_numbe_3[] = "ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for DirectionalWaves is 100000 ";
3265 static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))";
3266 static PyObject *__pyx_n_s_Bcoeff;
3267 static PyObject *__pyx_n_s_CombineWaves;
3268 static PyObject *__pyx_n_s_CombineWaves___init;
3269 static PyObject *__pyx_n_s_CombineWaves_eta;
3270 static PyObject *__pyx_n_s_CombineWaves_u;
3271 static PyObject *__pyx_n_s_Comm;
3272 static PyObject *__pyx_n_s_Cutoff;
3273 static PyObject *__pyx_kp_s_Cutoff_2;
3274 static PyObject *__pyx_kp_s_Direct_reconstruction;
3275 static PyObject *__pyx_n_s_DirectionalWaves;
3276 static PyObject *__pyx_n_s_DirectionalWaves___reduce_cython;
3277 static PyObject *__pyx_n_s_DirectionalWaves___setstate_cyth;
3278 static PyObject *__pyx_n_s_DirectionalWaves_eta;
3279 static PyObject *__pyx_n_s_DirectionalWaves_u;
3280 static PyObject *__pyx_kp_s_ERROR_Custom_parameters_not_set;
3281 static PyObject *__pyx_kp_s_ERROR_Each_input_list_entry_shou;
3282 static PyObject *__pyx_kp_s_ERROR_Each_input_list_entry_shou_2;
3283 static PyObject *__pyx_kp_s_ERROR_Number_of_Fourier_modes_is;
3284 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke;
3285 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_2;
3286 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_3;
3287 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Found_large_e;
3288 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Found_not_con;
3289 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Found_too_few;
3290 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Reconstructio;
3291 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Relaxation_zo;
3292 static PyObject *__pyx_kp_s_ERROR_WaveTools_py_Set_parameter;
3293 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Additional_sp;
3294 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Additional_sp_2;
3295 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_File_s_must_b;
3296 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Location_vect;
3297 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Location_vect_2;
3298 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe;
3299 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe_2;
3300 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe_3;
3301 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Parameters_pa;
3302 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Phase_array_m;
3303 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_SteadyCurrent;
3304 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Timeseries_fi;
3305 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Wavelenght_is;
3306 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Window_handov;
3307 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Wrong_functio;
3308 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_Ycoeff_and_Bc;
3309 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_You_are_not_r;
3310 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_eta_and_u_fun;
3311 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_meanVelocity;
3312 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_phi_argument;
3313 static PyObject *__pyx_kp_s_ERROR_Wavetools_py_phi_in_Direct;
3314 static PyObject *__pyx_kp_s_ERROR_Wavetools_pyx_Argument_mod;
3315 static PyObject *__pyx_kp_s_ERROR_Wrong_wavetype_given_Valid;
3316 static PyObject *__pyx_kp_s_End_time;
3317 static PyObject *__pyx_kp_s_Er1;
3318 static PyObject *__pyx_n_s_Etaoverall;
3319 static PyObject *__pyx_n_s_EtasetUp;
3320 static PyObject *__pyx_n_s_Fenton;
3321 static PyObject *__pyx_n_s_G0;
3322 static PyObject *__pyx_n_s_Hs;
3323 static PyObject *__pyx_n_s_Hs_2;
3324 static PyObject *__pyx_kp_s_INFO_Calculating_nonlinear_corre;
3325 static PyObject *__pyx_kp_s_INFO_WaveTools_py_Cutoff_entry_i;
3326 static PyObject *__pyx_kp_s_INFO_WaveTools_py_Not_constant_s;
3327 static PyObject *__pyx_kp_s_INFO_WaveTools_py_Overlap_entry;
3328 static PyObject *__pyx_kp_s_INFO_WaveTools_py_performing_a_d;
3329 static PyObject *__pyx_kp_s_INFO_WaveTools_py_performing_ser;
3330 static PyObject *__pyx_kp_s_INFO_Wavetools_py_Checking_durat;
3331 static PyObject *__pyx_kp_s_INFO_Wavetools_py_Correcting_win;
3332 static PyObject *__pyx_kp_s_INFO_Wavetools_py_No_phase_array;
3333 static PyObject *__pyx_kp_s_INFO_Wavetools_py_Reading_spectr;
3334 static PyObject *__pyx_kp_s_INFO_Wavetools_py_Using_s_window;
3335 static PyObject *__pyx_n_s_ImportError;
3336 static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
3337 static PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
3338 static PyObject *__pyx_n_s_JONSWAP;
3339 static PyObject *__pyx_n_s_K;
3340 static PyObject *__pyx_n_s_Lgen;
3341 static PyObject *__pyx_n_s_Linear;
3342 static PyObject *__pyx_n_s_M;
3343 static PyObject *__pyx_n_s_MonochromaticWaves;
3344 static PyObject *__pyx_n_s_MonochromaticWaves___reduce_cyth;
3345 static PyObject *__pyx_n_s_MonochromaticWaves___setstate_cy;
3346 static PyObject *__pyx_n_s_MonochromaticWaves_eta;
3347 static PyObject *__pyx_n_s_MonochromaticWaves_u;
3348 static PyObject *__pyx_n_s_MultiSpectraRandomWaves;
3349 static PyObject *__pyx_n_s_MultiSpectraRandomWaves___reduce;
3350 static PyObject *__pyx_n_s_MultiSpectraRandomWaves___setsta;
3351 static PyObject *__pyx_n_s_MultiSpectraRandomWaves_eta;
3352 static PyObject *__pyx_n_s_MultiSpectraRandomWaves_u;
3353 static PyObject *__pyx_n_s_N;
3354 static PyObject *__pyx_n_s_NLongW;
3355 static PyObject *__pyx_n_s_NewWave;
3356 static PyObject *__pyx_n_s_NewWave___reduce_cython;
3357 static PyObject *__pyx_n_s_NewWave___setstate_cython;
3358 static PyObject *__pyx_n_s_NewWave_eta;
3359 static PyObject *__pyx_n_s_NewWave_u;
3360 static PyObject *__pyx_n_s_NewWave_writeEtaSeries;
3361 static PyObject *__pyx_n_s_Nf;
3362 static PyObject *__pyx_n_s_Nfreq;
3363 static PyObject *__pyx_n_s_Nmax;
3364 static PyObject *__pyx_n_s_Np;
3365 static PyObject *__pyx_n_s_Nseries;
3366 static PyObject *__pyx_n_s_Nspectra;
3367 static PyObject *__pyx_kp_s_Number_of_windows;
3368 static PyObject *__pyx_n_s_Nwaves;
3369 static PyObject *__pyx_n_s_Nwaves_tot;
3370 static PyObject *__pyx_n_s_Nwind;
3371 static PyObject *__pyx_n_s_Overlap;
3372 static PyObject *__pyx_n_s_PM_mod;
3373 static PyObject *__pyx_n_s_Period;
3374 static PyObject *__pyx_n_s_PickleError;
3375 static PyObject *__pyx_n_s_Profiling;
3376 static PyObject *__pyx_n_s_RW;
3377 static PyObject *__pyx_n_s_RandomNLWaves;
3378 static PyObject *__pyx_n_s_RandomNLWavesFast;
3379 static PyObject *__pyx_n_s_RandomNLWavesFast___init;
3380 static PyObject *__pyx_n_s_RandomNLWavesFast_eta;
3381 static PyObject *__pyx_n_s_RandomNLWavesFast_u;
3382 static PyObject *__pyx_n_s_RandomNLWaves___reduce_cython;
3383 static PyObject *__pyx_n_s_RandomNLWaves___setstate_cython;
3384 static PyObject *__pyx_n_s_RandomNLWaves_eta_2ndOrder;
3385 static PyObject *__pyx_n_s_RandomNLWaves_eta_long;
3386 static PyObject *__pyx_n_s_RandomNLWaves_eta_overall;
3387 static PyObject *__pyx_n_s_RandomNLWaves_eta_setUp;
3388 static PyObject *__pyx_n_s_RandomNLWaves_eta_short;
3389 static PyObject *__pyx_n_s_RandomNLWaves_writeEtaSeries;
3390 static PyObject *__pyx_n_s_RandomNLWaves_wtError;
3391 static PyObject *__pyx_n_s_RandomSeries;
3392 static PyObject *__pyx_n_s_RandomWaves;
3393 static PyObject *__pyx_n_s_RandomWavesFast;
3394 static PyObject *__pyx_n_s_RandomWavesFast___init;
3395 static PyObject *__pyx_n_s_RandomWavesFast_printOut;
3396 static PyObject *__pyx_n_s_RandomWaves___reduce_cython;
3397 static PyObject *__pyx_n_s_RandomWaves___setstate_cython;
3398 static PyObject *__pyx_n_s_RandomWaves_eta;
3399 static PyObject *__pyx_n_s_RandomWaves_u;
3400 static PyObject *__pyx_n_s_RandomWaves_writeEtaSeries;
3401 static PyObject *__pyx_n_s_SolitaryWave;
3402 static PyObject *__pyx_n_s_SolitaryWave___reduce_cython;
3403 static PyObject *__pyx_n_s_SolitaryWave___setstate_cython;
3404 static PyObject *__pyx_n_s_SolitaryWave_eta;
3405 static PyObject *__pyx_n_s_SolitaryWave_u;
3406 static PyObject *__pyx_n_s_SpatialTools;
3407 static PyObject *__pyx_kp_s_Start_Time;
3408 static PyObject *__pyx_n_s_SteadyCurrent;
3409 static PyObject *__pyx_n_s_SteadyCurrent___reduce_cython;
3410 static PyObject *__pyx_n_s_SteadyCurrent___setstate_cython;
3411 static PyObject *__pyx_n_s_SteadyCurrent_eta;
3412 static PyObject *__pyx_n_s_SteadyCurrent_u;
3413 static PyObject *__pyx_n_s_TMA;
3414 static PyObject *__pyx_n_s_TOverlap;
3415 static PyObject *__pyx_n_s_TS;
3416 static PyObject *__pyx_n_s_TWindow;
3417 static PyObject *__pyx_n_s_Tend;
3418 static PyObject *__pyx_kp_s_This_class_is_used_for_combinin;
3419 static PyObject *__pyx_kp_s_This_class_is_used_for_generati;
3420 static PyObject *__pyx_kp_s_This_class_is_used_for_generati_2;
3421 static PyObject *__pyx_n_s_TimeSeries;
3422 static PyObject *__pyx_n_s_TimeSeries___reduce_cython;
3423 static PyObject *__pyx_n_s_TimeSeries___setstate_cython;
3424 static PyObject *__pyx_n_s_TimeSeries_etaDirect;
3425 static PyObject *__pyx_n_s_TimeSeries_etaWindow;
3426 static PyObject *__pyx_n_s_TimeSeries_findWindow;
3427 static PyObject *__pyx_n_s_TimeSeries_uDirect;
3428 static PyObject *__pyx_n_s_TimeSeries_uWindow;
3429 static PyObject *__pyx_n_s_TimeSeries_windOut;
3430 static PyObject *__pyx_n_s_Tlag;
3431 static PyObject *__pyx_n_s_Tm;
3432 static PyObject *__pyx_n_s_Tmax;
3433 static PyObject *__pyx_n_s_Tp;
3434 static PyObject *__pyx_n_s_Tp_2;
3435 static PyObject *__pyx_n_s_Tstart;
3436 static PyObject *__pyx_n_s_Tstart_temp;
3437 static PyObject *__pyx_n_s_TypeError;
3438 static PyObject *__pyx_n_s_U;
3439 static PyObject *__pyx_n_s_UH;
3440 static PyObject *__pyx_n_s_UV;
3441 static PyObject *__pyx_n_s_Udrift;
3442 static PyObject *__pyx_n_s_Uhorz;
3443 static PyObject *__pyx_n_s_Uvert;
3444 static PyObject *__pyx_n_s_V;
3445 static PyObject *__pyx_n_s_WaveTools;
3446 static PyObject *__pyx_kp_s_Wave_direction_is_not_perpendicu;
3447 static PyObject *__pyx_kp_s_Wavetools_py_Provide_valid_depth;
3448 static PyObject *__pyx_kp_s_Wavetools_py_Stopping_simulation;
3449 static PyObject *__pyx_n_s_Window;
3450 static PyObject *__pyx_n_s_Ycoeff;
3451 static PyObject *__pyx_n_s_Z;
3452 static PyObject *__pyx_kp_s__43;
3453 static PyObject *__pyx_kp_s__52;
3454 static PyObject *__pyx_n_s_a;
3455 static PyObject *__pyx_n_s_a1;
3456 static PyObject *__pyx_n_s_a2;
3457 static PyObject *__pyx_n_s_aR;
3458 static PyObject *__pyx_n_s_aRN;
3459 static PyObject *__pyx_n_s_aa;
3460 static PyObject *__pyx_n_s_ai;
3461 static PyObject *__pyx_n_s_all;
3462 static PyObject *__pyx_n_s_all_2;
3463 static PyObject *__pyx_n_s_amp;
3464 static PyObject *__pyx_n_s_amplitude;
3465 static PyObject *__pyx_n_s_append;
3466 static PyObject *__pyx_n_s_args;
3467 static PyObject *__pyx_n_s_array;
3468 static PyObject *__pyx_n_s_arrayData;
3469 static PyObject *__pyx_n_s_autoFenton;
3470 static PyObject *__pyx_n_s_autoFentonOpts;
3471 static PyObject *__pyx_n_s_bandFactor;
3472 static PyObject *__pyx_n_s_barrier;
3473 static PyObject *__pyx_n_s_bj;
3474 static PyObject *__pyx_n_s_builtins;
3475 static PyObject *__pyx_n_s_c;
3476 static PyObject *__pyx_n_s_checkAcc;
3477 static PyObject *__pyx_n_s_cinit___locals_genexpr;
3478 static PyObject *__pyx_n_s_cline_in_traceback;
3479 static PyObject *__pyx_n_s_close;
3480 static PyObject *__pyx_n_s_cmat;
3481 static PyObject *__pyx_n_s_cmath;
3482 static PyObject *__pyx_n_s_cond;
3483 static PyObject *__pyx_n_s_condition;
3484 static PyObject *__pyx_n_s_conv_crit;
3485 static PyObject *__pyx_n_s_copyFiles;
3486 static PyObject *__pyx_n_s_cos;
3487 static PyObject *__pyx_n_s_cos2s;
3488 static PyObject *__pyx_n_s_coshkzd_test;
3489 static PyObject *__pyx_n_s_costap;
3490 static PyObject *__pyx_n_s_cppU;
3491 static PyObject *__pyx_n_s_crestFocus;
3492 static PyObject *__pyx_kp_s_csv;
3493 static PyObject *__pyx_n_s_current_criterion;
3494 static PyObject *__pyx_n_s_current_magnitude;
3495 static PyObject *__pyx_n_s_custom;
3496 static PyObject *__pyx_n_s_cut;
3497 static PyObject *__pyx_n_s_cutoff;
3498 static PyObject *__pyx_n_s_cutoffTotal;
3499 static PyObject *__pyx_n_s_cutoff_win;
3500 static PyObject *__pyx_n_s_d;
3501 static PyObject *__pyx_n_s_decompose_tseries;
3502 static PyObject *__pyx_n_s_delimiter;
3503 static PyObject *__pyx_n_s_depth;
3504 static PyObject *__pyx_n_s_depth_2;
3505 static PyObject *__pyx_n_s_df;
3506 static PyObject *__pyx_n_s_dict;
3507 static PyObject *__pyx_n_s_dict_2;
3508 static PyObject *__pyx_n_s_dirCheck;
3509 static PyObject *__pyx_n_s_dircheck;
3510 static PyObject *__pyx_n_s_dispersion;
3511 static PyObject *__pyx_n_s_doc;
3512 static PyObject *__pyx_n_s_dom;
3513 static PyObject *__pyx_n_s_dt;
3514 static PyObject *__pyx_n_s_duration;
3515 static PyObject *__pyx_n_s_er1;
3516 static PyObject *__pyx_n_s_errors;
3517 static PyObject *__pyx_n_s_eta;
3518 static PyObject *__pyx_n_s_etaCheck;
3519 static PyObject *__pyx_n_s_etaDirect;
3520 static PyObject *__pyx_n_s_etaR;
3521 static PyObject *__pyx_n_s_etaWindow;
3522 static PyObject *__pyx_n_s_eta_2ndOrder;
3523 static PyObject *__pyx_n_s_eta_long;
3524 static PyObject *__pyx_n_s_eta_mode;
3525 static PyObject *__pyx_n_s_eta_overall;
3526 static PyObject *__pyx_n_s_eta_setUp;
3527 static PyObject *__pyx_n_s_eta_short;
3528 static PyObject *__pyx_n_s_exit;
3529 static PyObject *__pyx_n_s_exp;
3530 static PyObject *__pyx_n_s_f;
3531 static PyObject *__pyx_n_s_f0;
3532 static PyObject *__pyx_n_s_fast;
3533 static PyObject *__pyx_n_s_fastcos_test;
3534 static PyObject *__pyx_n_s_fastcosh_test;
3535 static PyObject *__pyx_n_s_fastsinh_test;
3536 static PyObject *__pyx_n_s_fft;
3537 static PyObject *__pyx_n_s_fft_x;
3538 static PyObject *__pyx_n_s_fftfreq;
3539 static PyObject *__pyx_n_s_fi;
3540 static PyObject *__pyx_n_s_fim_tmp;
3541 static PyObject *__pyx_n_s_findWindow;
3542 static PyObject *__pyx_n_s_fname;
3543 static PyObject *__pyx_n_s_freq;
3544 static PyObject *__pyx_n_s_freq_S;
3545 static PyObject *__pyx_n_s_freq_array;
3546 static PyObject *__pyx_n_s_fun;
3547 static PyObject *__pyx_n_s_func;
3548 static PyObject *__pyx_n_s_funcName;
3549 static PyObject *__pyx_n_s_funcNames;
3550 static PyObject *__pyx_n_s_func_ret;
3551 static PyObject *__pyx_n_s_g;
3552 static PyObject *__pyx_n_s_gAbs;
3553 static PyObject *__pyx_n_s_gamma;
3554 static PyObject *__pyx_n_s_genexpr;
3555 static PyObject *__pyx_n_s_get;
3556 static PyObject *__pyx_n_s_getBYCoeffs;
3557 static PyObject *__pyx_n_s_getWavelength;
3558 static PyObject *__pyx_n_s_getstate;
3559 static PyObject *__pyx_n_s_height_steps;
3560 static PyObject *__pyx_n_s_ho;
3561 static PyObject *__pyx_n_s_i;
3562 static PyObject *__pyx_n_s_i1;
3563 static PyObject *__pyx_n_s_i2;
3564 static PyObject *__pyx_n_s_iend;
3565 static PyObject *__pyx_n_s_ii;
3566 static PyObject *__pyx_n_s_import;
3567 static PyObject *__pyx_n_s_init;
3568 static PyObject *__pyx_n_s_interp;
3569 static PyObject *__pyx_n_s_isMaster;
3570 static PyObject *__pyx_n_s_j;
3571 static PyObject *__pyx_n_s_jj;
3572 static PyObject *__pyx_n_s_k;
3573 static PyObject *__pyx_n_s_kAbs;
3574 static PyObject *__pyx_n_s_kDir;
3575 static PyObject *__pyx_n_s_l;
3576 static PyObject *__pyx_n_s_level;
3577 static PyObject *__pyx_n_s_linalg;
3578 static PyObject *__pyx_n_s_linear;
3579 static PyObject *__pyx_n_s_linspace;
3580 static PyObject *__pyx_n_s_loadExistingFunction;
3581 static PyObject *__pyx_n_s_loadtxt;
3582 static PyObject *__pyx_n_s_log;
3583 static PyObject *__pyx_n_s_logEvent;
3584 static PyObject *__pyx_n_s_logFile;
3585 static PyObject *__pyx_n_s_long;
3586 static PyObject *__pyx_n_s_main;
3587 static PyObject *__pyx_n_s_max;
3588 static PyObject *__pyx_n_s_mean;
3589 static PyObject *__pyx_n_s_meanVelocity;
3590 static PyObject *__pyx_n_s_metaclass;
3591 static PyObject *__pyx_n_s_mitsuyasu;
3592 static PyObject *__pyx_n_s_mode;
3593 static PyObject *__pyx_n_s_modes;
3594 static PyObject *__pyx_n_s_module;
3595 static PyObject *__pyx_n_s_mwl;
3596 static PyObject *__pyx_n_s_name;
3597 static PyObject *__pyx_n_s_ncoeffs;
3598 static PyObject *__pyx_n_s_new;
3599 static PyObject *__pyx_n_s_nfft;
3600 static PyObject *__pyx_n_s_niter;
3601 static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
3602 static PyObject *__pyx_n_s_norm;
3603 static PyObject *__pyx_n_s_normIntegral;
3604 static PyObject *__pyx_n_s_np;
3605 static PyObject *__pyx_n_s_npoints;
3606 static PyObject *__pyx_n_s_numpy;
3607 static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to;
3608 static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor;
3609 static PyObject *__pyx_n_s_object;
3610 static PyObject *__pyx_n_s_old_div;
3611 static PyObject *__pyx_n_s_omega;
3612 static PyObject *__pyx_n_s_omega0;
3613 static PyObject *__pyx_n_s_ones;
3614 static PyObject *__pyx_n_s_open;
3615 static PyObject *__pyx_n_s_overl;
3616 static PyObject *__pyx_n_s_past_utils;
3617 static PyObject *__pyx_n_s_period;
3618 static PyObject *__pyx_n_s_periods;
3619 static PyObject *__pyx_n_s_phase;
3620 static PyObject *__pyx_n_s_phi;
3621 static PyObject *__pyx_n_s_phi0;
3622 static PyObject *__pyx_n_s_phiSymm;
3623 static PyObject *__pyx_n_s_pi;
3624 static PyObject *__pyx_n_s_pickle;
3625 static PyObject *__pyx_n_s_points_freesurface;
3626 static PyObject *__pyx_n_s_points_velocity;
3627 static PyObject *__pyx_n_s_points_vertical;
3628 static PyObject *__pyx_n_s_pp;
3629 static PyObject *__pyx_n_s_prepare;
3630 static PyObject *__pyx_n_s_print;
3631 static PyObject *__pyx_n_s_printOut;
3632 static PyObject *__pyx_n_s_proteus;
3633 static PyObject *__pyx_kp_s_proteus_WaveTools_py;
3634 static PyObject *__pyx_n_s_proteus_fenton;
3635 static PyObject *__pyx_n_s_pyx_PickleError;
3636 static PyObject *__pyx_n_s_pyx_checksum;
3637 static PyObject *__pyx_n_s_pyx_result;
3638 static PyObject *__pyx_n_s_pyx_state;
3639 static PyObject *__pyx_n_s_pyx_type;
3640 static PyObject *__pyx_n_s_pyx_unpickle_SolitaryWave;
3641 static PyObject *__pyx_n_s_pyx_unpickle_SteadyCurrent;
3642 static PyObject *__pyx_n_s_pyx_vtable;
3643 static PyObject *__pyx_n_s_qualname;
3644 static PyObject *__pyx_n_s_r;
3645 static PyObject *__pyx_n_s_rampTime;
3646 static PyObject *__pyx_n_s_rand;
3647 static PyObject *__pyx_n_s_random;
3648 static PyObject *__pyx_n_s_randomNLWaves;
3649 static PyObject *__pyx_n_s_range;
3650 static PyObject *__pyx_n_s_real;
3651 static PyObject *__pyx_n_s_rec_d;
3652 static PyObject *__pyx_n_s_rec_direct;
3653 static PyObject *__pyx_n_s_reduce;
3654 static PyObject *__pyx_n_s_reduceToIntervals;
3655 static PyObject *__pyx_n_s_reduce_cython;
3656 static PyObject *__pyx_n_s_reduce_ex;
3657 static PyObject *__pyx_n_s_results;
3658 static PyObject *__pyx_n_s_returnRectangles;
3659 static PyObject *__pyx_n_s_returnRectangles3D;
3660 static PyObject *__pyx_n_s_rotation3D;
3661 static PyObject *__pyx_n_s_round;
3662 static PyObject *__pyx_n_s_runFourier;
3663 static PyObject *__pyx_n_s_s;
3664 static PyObject *__pyx_n_s_savetxt;
3665 static PyObject *__pyx_n_s_self;
3666 static PyObject *__pyx_kp_s_self_Bcoeff__self_Ycoeff__self;
3667 static PyObject *__pyx_kp_s_self_T0__self__cpp_eta_self__cpp;
3668 static PyObject *__pyx_kp_s_self_ai__self_kDir__self_ki__sel;
3669 static PyObject *__pyx_n_s_send;
3670 static PyObject *__pyx_n_s_series;
3671 static PyObject *__pyx_n_s_seriesArray;
3672 static PyObject *__pyx_n_s_setDirVector;
3673 static PyObject *__pyx_n_s_setUp;
3674 static PyObject *__pyx_n_s_setVertDir;
3675 static PyObject *__pyx_n_s_setstate;
3676 static PyObject *__pyx_n_s_setstate_cython;
3677 static PyObject *__pyx_n_s_setup;
3678 static PyObject *__pyx_n_s_shape;
3679 static PyObject *__pyx_n_s_short;
3680 static PyObject *__pyx_n_s_sigma;
3681 static PyObject *__pyx_n_s_sigmaReturn;
3682 static PyObject *__pyx_n_s_sinh;
3683 static PyObject *__pyx_n_s_sinhkzd_test;
3684 static PyObject *__pyx_n_s_sinus;
3685 static PyObject *__pyx_n_s_skiprows;
3686 static PyObject *__pyx_n_s_smax;
3687 static PyObject *__pyx_n_s_spectName;
3688 static PyObject *__pyx_n_s_spectral_params;
3689 static PyObject *__pyx_n_s_spreadName;
3690 static PyObject *__pyx_n_s_spread_params;
3691 static PyObject *__pyx_n_s_sqrt;
3692 static PyObject *__pyx_n_s_state;
3693 static PyObject *__pyx_n_s_str;
3694 static PyObject *__pyx_kp_s_stringsource;
3695 static PyObject *__pyx_n_s_sum;
3696 static PyObject *__pyx_n_s_sys;
3697 static PyObject *__pyx_n_s_t;
3698 static PyObject *__pyx_n_s_tanh;
3699 static PyObject *__pyx_n_s_te;
3700 static PyObject *__pyx_n_s_test;
3701 static PyObject *__pyx_n_s_tfocus;
3702 static PyObject *__pyx_n_s_theta;
3703 static PyObject *__pyx_n_s_throw;
3704 static PyObject *__pyx_n_s_time;
3705 static PyObject *__pyx_n_s_timeSeriesFile;
3706 static PyObject *__pyx_n_s_timeSeriesPosition;
3707 static PyObject *__pyx_n_s_timelst;
3708 static PyObject *__pyx_n_s_tma;
3709 static PyObject *__pyx_n_s_tolist;
3710 static PyObject *__pyx_n_s_tophat;
3711 static PyObject *__pyx_n_s_trans;
3712 static PyObject *__pyx_n_s_ts;
3713 static PyObject *__pyx_n_s_tt;
3714 static PyObject *__pyx_kp_s_txt;
3715 static PyObject *__pyx_n_s_u;
3716 static PyObject *__pyx_n_s_uCheck;
3717 static PyObject *__pyx_n_s_uDirect;
3718 static PyObject *__pyx_n_s_uR;
3719 static PyObject *__pyx_n_s_uWindow;
3720 static PyObject *__pyx_n_s_update;
3721 static PyObject *__pyx_n_s_use_setstate;
3722 static PyObject *__pyx_n_s_v1;
3723 static PyObject *__pyx_n_s_v2;
3724 static PyObject *__pyx_n_s_vDir;
3725 static PyObject *__pyx_n_s_validFunctions;
3726 static PyObject *__pyx_n_s_vector;
3727 static PyObject *__pyx_n_s_vel_mode;
3728 static PyObject *__pyx_n_s_w;
3729 static PyObject *__pyx_n_s_w_aux;
3730 static PyObject *__pyx_n_s_waveDir;
3731 static PyObject *__pyx_n_s_waveDir0;
3732 static PyObject *__pyx_n_s_waveHeight;
3733 static PyObject *__pyx_n_s_waveList;
3734 static PyObject *__pyx_n_s_waveType;
3735 static PyObject *__pyx_n_s_waveheight;
3736 static PyObject *__pyx_n_s_wavelength;
3737 static PyObject *__pyx_kp_s_waves_This_may_take_a_while;
3738 static PyObject *__pyx_n_s_where;
3739 static PyObject *__pyx_n_s_wind;
3740 static PyObject *__pyx_n_s_windOut;
3741 static PyObject *__pyx_n_s_window_params;
3742 static PyObject *__pyx_n_s_windows;
3743 static PyObject *__pyx_n_s_writeEtaSeries;
3744 static PyObject *__pyx_n_s_writeInput;
3745 static PyObject *__pyx_n_s_wtError;
3746 static PyObject *__pyx_n_s_ww;
3747 static PyObject *__pyx_n_s_wwi_setUp;
3748 static PyObject *__pyx_n_s_x;
3749 static PyObject *__pyx_n_s_x0;
3750 static PyObject *__pyx_n_s_xfocus;
3751 static PyObject *__pyx_n_s_xx;
3752 static PyObject *__pyx_n_s_y;
3753 static PyObject *__pyx_n_s_zeros;
3754 static PyObject *__pyx_n_s_zip;
3755 static PyObject *__pyx_pf_9WaveTools_fastcos_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_phase, PyObject *__pyx_v_sinus); /* proto */
3756 static PyObject *__pyx_pf_9WaveTools_2fastcosh_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_fast); /* proto */
3757 static PyObject *__pyx_pf_9WaveTools_4fastsinh_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_fast); /* proto */
3758 static PyObject *__pyx_pf_9WaveTools_6coshkzd_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_d, PyObject *__pyx_v_fast); /* proto */
3759 static PyObject *__pyx_pf_9WaveTools_8sinhkzd_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_d, PyObject *__pyx_v_fast); /* proto */
3760 static PyObject *__pyx_pf_9WaveTools_10loadExistingFunction(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_funcName, PyObject *__pyx_v_validFunctions); /* proto */
3761 static PyObject *__pyx_pf_9WaveTools_12setVertDir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_g); /* proto */
3762 static PyObject *__pyx_pf_9WaveTools_14setDirVector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vector); /* proto */
3763 static PyObject *__pyx_pf_9WaveTools_16dirCheck(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v1, PyObject *__pyx_v_v2); /* proto */
3764 static PyObject *__pyx_pf_9WaveTools_18reduceToIntervals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fi, PyObject *__pyx_v_df); /* proto */
3765 static PyObject *__pyx_pf_9WaveTools_20returnRectangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x); /* proto */
3766 static PyObject *__pyx_pf_9WaveTools_22returnRectangles3D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
3767 static PyObject *__pyx_pf_9WaveTools_24normIntegral(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_dom); /* proto */
3768 static PyObject *__pyx_pf_9WaveTools_26eta_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude); /* proto */
3769 static PyObject *__pyx_pf_9WaveTools_28Udrift(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_amp, PyObject *__pyx_v_gAbs, PyObject *__pyx_v_c, PyObject *__pyx_v_d); /* proto */
3770 static PyObject *__pyx_pf_9WaveTools_30vel_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_kAbs, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_vDir, PyObject *__pyx_v_gAbs); /* proto */
3771 static PyObject *__pyx_pf_9WaveTools_32sigma(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_omega, PyObject *__pyx_v_omega0); /* proto */
3772 static PyObject *__pyx_pf_9WaveTools_34custom(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
3773 static PyObject *__pyx_pf_9WaveTools_36JONSWAP(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs, PyObject *__pyx_v_gamma, PyObject *__pyx_v_TMA, PyObject *__pyx_v_depth); /* proto */
3774 static PyObject *__pyx_pf_9WaveTools_38PM_mod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs); /* proto */
3775 static PyObject *__pyx_pf_9WaveTools_40cos2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_f, PyObject *__pyx_v_s); /* proto */
3776 static PyObject *__pyx_pf_9WaveTools_42mitsuyasu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_fi, PyObject *__pyx_v_f0, PyObject *__pyx_v_smax); /* proto */
3777 static PyObject *__pyx_pf_9WaveTools_44dispersion(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_w, PyObject *__pyx_v_d, PyObject *__pyx_v_g, PyObject *__pyx_v_niter); /* proto */
3778 static PyObject *__pyx_pf_9WaveTools_46tophat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff); /* proto */
3779 static PyObject *__pyx_pf_9WaveTools_48costap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff); /* proto */
3780 static PyObject *__pyx_pf_9WaveTools_50decompose_tseries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_time, PyObject *__pyx_v_eta, PyObject *__pyx_v_dt); /* proto */
3781 static int __pyx_pf_9WaveTools_13SteadyCurrent___init__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, PyObject *__pyx_v_U, PyObject *__pyx_v_mwl, PyObject *__pyx_v_rampTime); /* proto */
3782 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_2eta(CYTHON_UNUSED struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, CYTHON_UNUSED PyObject *__pyx_v_t); /* proto */
3783 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_4u(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3784 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_3mwl___get__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self); /* proto */
3785 static int __pyx_pf_9WaveTools_13SteadyCurrent_3mwl_2__set__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3786 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_6__reduce_cython__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self); /* proto */
3787 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_8__setstate_cython__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
3788 static int __pyx_pf_9WaveTools_12SolitaryWave___init__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_trans, PyObject *__pyx_v_fast); /* proto */
3789 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_2eta(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3790 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_4u(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3791 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_3mwl___get__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self); /* proto */
3792 static int __pyx_pf_9WaveTools_12SolitaryWave_3mwl_2__set__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3793 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_1c___get__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self); /* proto */
3794 static int __pyx_pf_9WaveTools_12SolitaryWave_1c_2__set__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3795 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_6__reduce_cython__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self); /* proto */
3796 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_8__setstate_cython__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
3797 static int __pyx_pf_9WaveTools_18MonochromaticWaves___init__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_period, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_wavelength, PyObject *__pyx_v_waveType, PyObject *__pyx_v_autoFenton, PyObject *__pyx_v_autoFentonOpts, PyObject *__pyx_v_Ycoeff, PyObject *__pyx_v_Bcoeff, PyObject *__pyx_v_Nf, PyObject *__pyx_v_meanVelocity, PyObject *__pyx_v_phi0, PyObject *__pyx_v_fast); /* proto */
3798 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_2eta(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3799 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_4u(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3800 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_10wavelength___get__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self); /* proto */
3801 static int __pyx_pf_9WaveTools_18MonochromaticWaves_10wavelength_2__set__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3802 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_3mwl___get__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self); /* proto */
3803 static int __pyx_pf_9WaveTools_18MonochromaticWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3804 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self); /* proto */
3805 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3806 static PyObject *__pyx_pf_9WaveTools_7NewWave_9__cinit___genexpr(PyObject *__pyx_self); /* proto */
3807 static int __pyx_pf_9WaveTools_7NewWave___cinit__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, CYTHON_UNUSED PyObject *__pyx_v_crestFocus, PyObject *__pyx_v_xfocus, PyObject *__pyx_v_tfocus, PyObject *__pyx_v_fast, PyObject *__pyx_v_Nmax); /* proto */
3808 static PyObject *__pyx_pf_9WaveTools_7NewWave_2eta(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3809 static PyObject *__pyx_pf_9WaveTools_7NewWave_4u(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3810 static PyObject *__pyx_pf_9WaveTools_7NewWave_6writeEtaSeries(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_fname, PyObject *__pyx_v_Lgen); /* proto */
3811 static PyObject *__pyx_pf_9WaveTools_7NewWave_3mwl___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3812 static int __pyx_pf_9WaveTools_7NewWave_3mwl_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3813 static PyObject *__pyx_pf_9WaveTools_7NewWave_5depth___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3814 static int __pyx_pf_9WaveTools_7NewWave_5depth_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3815 static PyObject *__pyx_pf_9WaveTools_7NewWave_4gAbs___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3816 static int __pyx_pf_9WaveTools_7NewWave_4gAbs_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3817 static PyObject *__pyx_pf_9WaveTools_7NewWave_4Tlag___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3818 static int __pyx_pf_9WaveTools_7NewWave_4Tlag_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3819 static PyObject *__pyx_pf_9WaveTools_7NewWave_2Hs___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3820 static int __pyx_pf_9WaveTools_7NewWave_2Hs_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3821 static PyObject *__pyx_pf_9WaveTools_7NewWave_2Tp___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3822 static int __pyx_pf_9WaveTools_7NewWave_2Tp_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3823 static PyObject *__pyx_pf_9WaveTools_7NewWave_2fp___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3824 static int __pyx_pf_9WaveTools_7NewWave_2fp_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3825 static PyObject *__pyx_pf_9WaveTools_7NewWave_10bandFactor___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3826 static int __pyx_pf_9WaveTools_7NewWave_10bandFactor_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3827 static PyObject *__pyx_pf_9WaveTools_7NewWave_2df___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3828 static int __pyx_pf_9WaveTools_7NewWave_2df_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3829 static PyObject *__pyx_pf_9WaveTools_7NewWave_5focus___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3830 static int __pyx_pf_9WaveTools_7NewWave_5focus_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3831 static PyObject *__pyx_pf_9WaveTools_7NewWave_6tfocus___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3832 static int __pyx_pf_9WaveTools_7NewWave_6tfocus_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3833 static PyObject *__pyx_pf_9WaveTools_7NewWave_1N___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3834 static int __pyx_pf_9WaveTools_7NewWave_1N_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3835 static PyObject *__pyx_pf_9WaveTools_7NewWave_2fi___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3836 static int __pyx_pf_9WaveTools_7NewWave_2fi_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3837 static int __pyx_pf_9WaveTools_7NewWave_2fi_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3838 static PyObject *__pyx_pf_9WaveTools_7NewWave_3fim___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3839 static int __pyx_pf_9WaveTools_7NewWave_3fim_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3840 static int __pyx_pf_9WaveTools_7NewWave_3fim_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3841 static PyObject *__pyx_pf_9WaveTools_7NewWave_5Si_Jm___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3842 static int __pyx_pf_9WaveTools_7NewWave_5Si_Jm_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3843 static int __pyx_pf_9WaveTools_7NewWave_5Si_Jm_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3844 static PyObject *__pyx_pf_9WaveTools_7NewWave_2ki___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3845 static int __pyx_pf_9WaveTools_7NewWave_2ki_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3846 static int __pyx_pf_9WaveTools_7NewWave_2ki_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3847 static PyObject *__pyx_pf_9WaveTools_7NewWave_5omega___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3848 static int __pyx_pf_9WaveTools_7NewWave_5omega_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3849 static int __pyx_pf_9WaveTools_7NewWave_5omega_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3850 static PyObject *__pyx_pf_9WaveTools_7NewWave_5tanhF___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3851 static int __pyx_pf_9WaveTools_7NewWave_5tanhF_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3852 static int __pyx_pf_9WaveTools_7NewWave_5tanhF_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3853 static PyObject *__pyx_pf_9WaveTools_7NewWave_1g___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3854 static int __pyx_pf_9WaveTools_7NewWave_1g_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3855 static int __pyx_pf_9WaveTools_7NewWave_1g_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3856 static PyObject *__pyx_pf_9WaveTools_7NewWave_7waveDir___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3857 static int __pyx_pf_9WaveTools_7NewWave_7waveDir_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3858 static int __pyx_pf_9WaveTools_7NewWave_7waveDir_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3859 static PyObject *__pyx_pf_9WaveTools_7NewWave_4vDir___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3860 static int __pyx_pf_9WaveTools_7NewWave_4vDir_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3861 static int __pyx_pf_9WaveTools_7NewWave_4vDir_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3862 static PyObject *__pyx_pf_9WaveTools_7NewWave_4kDir___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3863 static int __pyx_pf_9WaveTools_7NewWave_4kDir_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3864 static int __pyx_pf_9WaveTools_7NewWave_4kDir_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3865 static PyObject *__pyx_pf_9WaveTools_7NewWave_2ai___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3866 static int __pyx_pf_9WaveTools_7NewWave_2ai_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3867 static int __pyx_pf_9WaveTools_7NewWave_2ai_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3868 static PyObject *__pyx_pf_9WaveTools_7NewWave_3phi___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3869 static int __pyx_pf_9WaveTools_7NewWave_3phi_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3870 static int __pyx_pf_9WaveTools_7NewWave_3phi_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3871 static PyObject *__pyx_pf_9WaveTools_7NewWave_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self); /* proto */
3872 static PyObject *__pyx_pf_9WaveTools_7NewWave_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3873 static int __pyx_pf_9WaveTools_11RandomWaves___cinit__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_fast); /* proto */
3874 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2eta(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3875 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4u(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3876 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_6writeEtaSeries(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_fname, PyObject *__pyx_v_Lgen); /* proto */
3877 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_3mwl___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3878 static int __pyx_pf_9WaveTools_11RandomWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3879 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5depth___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3880 static int __pyx_pf_9WaveTools_11RandomWaves_5depth_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3881 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4gAbs___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3882 static int __pyx_pf_9WaveTools_11RandomWaves_4gAbs_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3883 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4Tlag___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3884 static int __pyx_pf_9WaveTools_11RandomWaves_4Tlag_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3885 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2Hs___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3886 static int __pyx_pf_9WaveTools_11RandomWaves_2Hs_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3887 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2Tp___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3888 static int __pyx_pf_9WaveTools_11RandomWaves_2Tp_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3889 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2fp___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3890 static int __pyx_pf_9WaveTools_11RandomWaves_2fp_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3891 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_10bandFactor___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3892 static int __pyx_pf_9WaveTools_11RandomWaves_10bandFactor_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3893 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2df___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3894 static int __pyx_pf_9WaveTools_11RandomWaves_2df_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3895 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_10wavelength___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3896 static int __pyx_pf_9WaveTools_11RandomWaves_10wavelength_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3897 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_1N___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3898 static int __pyx_pf_9WaveTools_11RandomWaves_1N_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3899 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2fi___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3900 static int __pyx_pf_9WaveTools_11RandomWaves_2fi_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3901 static int __pyx_pf_9WaveTools_11RandomWaves_2fi_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3902 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_3fim___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3903 static int __pyx_pf_9WaveTools_11RandomWaves_3fim_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3904 static int __pyx_pf_9WaveTools_11RandomWaves_3fim_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3905 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5Si_Jm___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3906 static int __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3907 static int __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3908 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2ki___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3909 static int __pyx_pf_9WaveTools_11RandomWaves_2ki_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3910 static int __pyx_pf_9WaveTools_11RandomWaves_2ki_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3911 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5omega___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3912 static int __pyx_pf_9WaveTools_11RandomWaves_5omega_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3913 static int __pyx_pf_9WaveTools_11RandomWaves_5omega_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3914 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5tanhF___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3915 static int __pyx_pf_9WaveTools_11RandomWaves_5tanhF_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3916 static int __pyx_pf_9WaveTools_11RandomWaves_5tanhF_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3917 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_1g___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3918 static int __pyx_pf_9WaveTools_11RandomWaves_1g_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3919 static int __pyx_pf_9WaveTools_11RandomWaves_1g_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3920 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_7waveDir___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3921 static int __pyx_pf_9WaveTools_11RandomWaves_7waveDir_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3922 static int __pyx_pf_9WaveTools_11RandomWaves_7waveDir_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3923 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4vDir___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3924 static int __pyx_pf_9WaveTools_11RandomWaves_4vDir_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3925 static int __pyx_pf_9WaveTools_11RandomWaves_4vDir_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3926 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4kDir___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3927 static int __pyx_pf_9WaveTools_11RandomWaves_4kDir_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3928 static int __pyx_pf_9WaveTools_11RandomWaves_4kDir_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3929 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2ai___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3930 static int __pyx_pf_9WaveTools_11RandomWaves_2ai_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3931 static int __pyx_pf_9WaveTools_11RandomWaves_2ai_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3932 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_3phi___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3933 static int __pyx_pf_9WaveTools_11RandomWaves_3phi_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3934 static int __pyx_pf_9WaveTools_11RandomWaves_3phi_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3935 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self); /* proto */
3936 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3937 static int __pyx_pf_9WaveTools_23MultiSpectraRandomWaves___cinit__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_Nspectra, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_fast); /* proto */
3938 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3939 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3940 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_3mwl___get__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self); /* proto */
3941 static int __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3942 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_5depth___get__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self); /* proto */
3943 static int __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_5depth_2__set__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3944 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self); /* proto */
3945 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3946 static int __pyx_pf_9WaveTools_16DirectionalWaves___cinit__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_M, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir0, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spreadName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_spread_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_phiSymm, PyObject *__pyx_v_fast); /* proto */
3947 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_2eta(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3948 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_4u(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3949 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_3mwl___get__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self); /* proto */
3950 static int __pyx_pf_9WaveTools_16DirectionalWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3951 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_5depth___get__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self); /* proto */
3952 static int __pyx_pf_9WaveTools_16DirectionalWaves_5depth_2__set__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3953 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self); /* proto */
3954 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3955 static int __pyx_pf_9WaveTools_10TimeSeries___init__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_timeSeriesFile, PyObject *__pyx_v_skiprows, PyObject *__pyx_v_timeSeriesPosition, PyObject *__pyx_v_depth, PyObject *__pyx_v_N, PyObject *__pyx_v_mwl, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_cutoffTotal, PyObject *__pyx_v_rec_direct, PyObject *__pyx_v_window_params, PyObject *__pyx_v_arrayData, PyObject *__pyx_v_seriesArray, PyObject *__pyx_v_Lgen, PyObject *__pyx_v_fast); /* proto */
3956 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_2windOut(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3957 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_4etaDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3958 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_6uDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3959 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_8findWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_t); /* proto */
3960 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10etaWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3961 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_12uWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3962 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10wavelength___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3963 static int __pyx_pf_9WaveTools_10TimeSeries_10wavelength_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3964 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_3mwl___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3965 static int __pyx_pf_9WaveTools_10TimeSeries_3mwl_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3966 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_3eta___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3967 static int __pyx_pf_9WaveTools_10TimeSeries_3eta_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3968 static int __pyx_pf_9WaveTools_10TimeSeries_3eta_4__del__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3969 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_1u___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3970 static int __pyx_pf_9WaveTools_10TimeSeries_1u_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3971 static int __pyx_pf_9WaveTools_10TimeSeries_1u_4__del__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3972 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self); /* proto */
3973 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3974 static PyObject *__pyx_pf_9WaveTools_15RandomWavesFast___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_Lgen, PyObject *__pyx_v_Nwaves, PyObject *__pyx_v_Nfreq, PyObject *__pyx_v_checkAcc, PyObject *__pyx_v_fast); /* proto */
3975 static PyObject *__pyx_pf_9WaveTools_15RandomWavesFast_2printOut(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
3976 static int __pyx_pf_9WaveTools_13RandomNLWaves___init__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_Tstart, CYTHON_UNUSED PyObject *__pyx_v_Tend, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_fast); /* proto */
3977 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_2eta_2ndOrder(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3978 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_4eta_short(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3979 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_6eta_long(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3980 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_8eta_setUp(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, CYTHON_UNUSED PyObject *__pyx_v_t); /* proto */
3981 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_10eta_overall(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_setUp); /* proto */
3982 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_12writeEtaSeries(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_dt, PyObject *__pyx_v_x0, PyObject *__pyx_v_fname, PyObject *__pyx_v_mode, PyObject *__pyx_v_setUp, PyObject *__pyx_v_Lgen); /* proto */
3983 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_14wtError(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, CYTHON_UNUSED PyObject *__pyx_v_t); /* proto */
3984 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_3eta___get__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3985 static int __pyx_pf_9WaveTools_13RandomNLWaves_3eta_2__set__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3986 static int __pyx_pf_9WaveTools_13RandomNLWaves_3eta_4__del__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3987 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_1u___get__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3988 static int __pyx_pf_9WaveTools_13RandomNLWaves_1u_2__set__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3989 static int __pyx_pf_9WaveTools_13RandomNLWaves_1u_4__del__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3990 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear___get__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3991 static int __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear_2__set__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
3992 static int __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear_4__del__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3993 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_16__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self); /* proto */
3994 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_18__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
3995 static PyObject *__pyx_pf_9WaveTools_56__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
3996 static PyObject *__pyx_pf_9WaveTools_17RandomNLWavesFast___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_Lgen, PyObject *__pyx_v_Nwaves, PyObject *__pyx_v_Nfreq, PyObject *__pyx_v_NLongW, PyObject *__pyx_v_fast); /* proto */
3997 static PyObject *__pyx_pf_9WaveTools_17RandomNLWavesFast_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3998 static PyObject *__pyx_pf_9WaveTools_17RandomNLWavesFast_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
3999 static PyObject *__pyx_pf_9WaveTools_12CombineWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_waveList); /* proto */
4000 static PyObject *__pyx_pf_9WaveTools_12CombineWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
4001 static PyObject *__pyx_pf_9WaveTools_12CombineWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
4002 static PyObject *__pyx_pf_9WaveTools_52__pyx_unpickle_SteadyCurrent(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
4003 static PyObject *__pyx_pf_9WaveTools_54__pyx_unpickle_SolitaryWave(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
4004 static PyObject *__pyx_tp_new_9WaveTools_SteadyCurrent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4005 static PyObject *__pyx_tp_new_9WaveTools_SolitaryWave(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4006 static PyObject *__pyx_tp_new_9WaveTools_MonochromaticWaves(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4007 static PyObject *__pyx_tp_new_9WaveTools_NewWave(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4008 static PyObject *__pyx_tp_new_9WaveTools_RandomWaves(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4009 static PyObject *__pyx_tp_new_9WaveTools_MultiSpectraRandomWaves(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4010 static PyObject *__pyx_tp_new_9WaveTools_DirectionalWaves(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4011 static PyObject *__pyx_tp_new_9WaveTools_TimeSeries(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4012 static PyObject *__pyx_tp_new_9WaveTools_RandomNLWaves(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4013 static PyObject *__pyx_tp_new_9WaveTools___pyx_scope_struct____cinit__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4014 static PyObject *__pyx_tp_new_9WaveTools___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
4015 static PyObject *__pyx_float_0_;
4016 static PyObject *__pyx_float_1_;
4017 static PyObject *__pyx_float_2_;
4018 static PyObject *__pyx_float_4_;
4019 static PyObject *__pyx_float_0_1;
4020 static PyObject *__pyx_float_0_2;
4021 static PyObject *__pyx_float_0_5;
4022 static PyObject *__pyx_float_0_7;
4023 static PyObject *__pyx_float_1_0;
4024 static PyObject *__pyx_float_1_1;
4025 static PyObject *__pyx_float_1_5;
4026 static PyObject *__pyx_float_1_9;
4027 static PyObject *__pyx_float_10_;
4028 static PyObject *__pyx_float_16_;
4029 static PyObject *__pyx_float_2_0;
4030 static PyObject *__pyx_float_3_0;
4031 static PyObject *__pyx_float_3_3;
4032 static PyObject *__pyx_float_4_0;
4033 static PyObject *__pyx_float_5_0;
4034 static PyObject *__pyx_float_50_;
4035 static PyObject *__pyx_float_0_01;
4036 static PyObject *__pyx_float_0_07;
4037 static PyObject *__pyx_float_0_09;
4038 static PyObject *__pyx_float_0_23;
4039 static PyObject *__pyx_float_16_0;
4040 static PyObject *__pyx_float_9_81;
4041 static PyObject *__pyx_float_0_185;
4042 static PyObject *__pyx_float_1eneg_05;
4043 static PyObject *__pyx_float_1eneg_10;
4044 static PyObject *__pyx_float_0_0336;
4045 static PyObject *__pyx_float_neg_2_5;
4046 static PyObject *__pyx_float_neg_5_0;
4047 static PyObject *__pyx_float_neg_1_25;
4048 static PyObject *__pyx_int_0;
4049 static PyObject *__pyx_int_1;
4050 static PyObject *__pyx_int_2;
4051 static PyObject *__pyx_int_3;
4052 static PyObject *__pyx_int_4;
4053 static PyObject *__pyx_int_5;
4054 static PyObject *__pyx_int_10;
4055 static PyObject *__pyx_int_15;
4056 static PyObject *__pyx_int_16;
4057 static PyObject *__pyx_int_20;
4058 static PyObject *__pyx_int_32;
4059 static PyObject *__pyx_int_40;
4060 static PyObject *__pyx_int_50;
4061 static PyObject *__pyx_int_999;
4062 static PyObject *__pyx_int_1000;
4063 static PyObject *__pyx_int_68501386;
4064 static PyObject *__pyx_int_114894826;
4065 static PyObject *__pyx_int_161707632;
4066 static PyObject *__pyx_int_235956263;
4067 static PyObject *__pyx_int_237135047;
4068 static PyObject *__pyx_int_247220107;
4069 static PyObject *__pyx_int_neg_1;
4070 static PyObject *__pyx_int_neg_4;
4071 static PyObject *__pyx_k__12;
4072 static PyObject *__pyx_k__13;
4073 static PyObject *__pyx_k__14;
4074 static PyObject *__pyx_k__15;
4075 static PyObject *__pyx_k__22;
4076 static PyObject *__pyx_k__24;
4077 static PyObject *__pyx_k__29;
4078 static PyObject *__pyx_k__40;
4079 static PyObject *__pyx_k__51;
4080 static PyObject *__pyx_tuple_;
4081 static PyObject *__pyx_slice__2;
4082 static PyObject *__pyx_slice__3;
4083 static PyObject *__pyx_slice__4;
4084 static PyObject *__pyx_tuple__5;
4085 static PyObject *__pyx_tuple__6;
4086 static PyObject *__pyx_tuple__7;
4087 static PyObject *__pyx_tuple__8;
4088 static PyObject *__pyx_tuple__9;
4089 static PyObject *__pyx_slice__42;
4090 static PyObject *__pyx_tuple__10;
4091 static PyObject *__pyx_tuple__11;
4092 static PyObject *__pyx_tuple__16;
4093 static PyObject *__pyx_tuple__17;
4094 static PyObject *__pyx_tuple__18;
4095 static PyObject *__pyx_tuple__19;
4096 static PyObject *__pyx_tuple__20;
4097 static PyObject *__pyx_tuple__21;
4098 static PyObject *__pyx_tuple__23;
4099 static PyObject *__pyx_tuple__25;
4100 static PyObject *__pyx_tuple__26;
4101 static PyObject *__pyx_tuple__27;
4102 static PyObject *__pyx_tuple__28;
4103 static PyObject *__pyx_tuple__30;
4104 static PyObject *__pyx_tuple__31;
4105 static PyObject *__pyx_tuple__32;
4106 static PyObject *__pyx_tuple__33;
4107 static PyObject *__pyx_tuple__34;
4108 static PyObject *__pyx_tuple__35;
4109 static PyObject *__pyx_tuple__36;
4110 static PyObject *__pyx_tuple__37;
4111 static PyObject *__pyx_tuple__38;
4112 static PyObject *__pyx_tuple__39;
4113 static PyObject *__pyx_tuple__41;
4114 static PyObject *__pyx_tuple__44;
4115 static PyObject *__pyx_tuple__45;
4116 static PyObject *__pyx_tuple__46;
4117 static PyObject *__pyx_tuple__47;
4118 static PyObject *__pyx_tuple__48;
4119 static PyObject *__pyx_tuple__49;
4120 static PyObject *__pyx_tuple__50;
4121 static PyObject *__pyx_tuple__53;
4122 static PyObject *__pyx_tuple__54;
4123 static PyObject *__pyx_tuple__55;
4124 static PyObject *__pyx_tuple__56;
4125 static PyObject *__pyx_tuple__57;
4126 static PyObject *__pyx_tuple__58;
4127 static PyObject *__pyx_tuple__59;
4128 static PyObject *__pyx_tuple__60;
4129 static PyObject *__pyx_tuple__62;
4130 static PyObject *__pyx_tuple__63;
4131 static PyObject *__pyx_tuple__65;
4132 static PyObject *__pyx_tuple__66;
4133 static PyObject *__pyx_tuple__68;
4134 static PyObject *__pyx_tuple__69;
4135 static PyObject *__pyx_tuple__71;
4136 static PyObject *__pyx_tuple__72;
4137 static PyObject *__pyx_tuple__74;
4138 static PyObject *__pyx_tuple__75;
4139 static PyObject *__pyx_tuple__77;
4140 static PyObject *__pyx_tuple__79;
4141 static PyObject *__pyx_tuple__81;
4142 static PyObject *__pyx_tuple__83;
4143 static PyObject *__pyx_tuple__85;
4144 static PyObject *__pyx_tuple__87;
4145 static PyObject *__pyx_tuple__89;
4146 static PyObject *__pyx_tuple__91;
4147 static PyObject *__pyx_tuple__93;
4148 static PyObject *__pyx_tuple__95;
4149 static PyObject *__pyx_tuple__97;
4150 static PyObject *__pyx_tuple__100;
4151 static PyObject *__pyx_tuple__102;
4152 static PyObject *__pyx_tuple__103;
4153 static PyObject *__pyx_tuple__105;
4154 static PyObject *__pyx_tuple__107;
4155 static PyObject *__pyx_tuple__108;
4156 static PyObject *__pyx_tuple__110;
4157 static PyObject *__pyx_tuple__111;
4158 static PyObject *__pyx_tuple__113;
4159 static PyObject *__pyx_tuple__114;
4160 static PyObject *__pyx_tuple__116;
4161 static PyObject *__pyx_tuple__118;
4162 static PyObject *__pyx_tuple__119;
4163 static PyObject *__pyx_tuple__121;
4164 static PyObject *__pyx_tuple__123;
4165 static PyObject *__pyx_tuple__125;
4166 static PyObject *__pyx_tuple__127;
4167 static PyObject *__pyx_tuple__129;
4168 static PyObject *__pyx_tuple__130;
4169 static PyObject *__pyx_tuple__132;
4170 static PyObject *__pyx_tuple__134;
4171 static PyObject *__pyx_tuple__136;
4172 static PyObject *__pyx_tuple__138;
4173 static PyObject *__pyx_tuple__139;
4174 static PyObject *__pyx_tuple__141;
4175 static PyObject *__pyx_tuple__143;
4176 static PyObject *__pyx_tuple__145;
4177 static PyObject *__pyx_tuple__147;
4178 static PyObject *__pyx_tuple__149;
4179 static PyObject *__pyx_tuple__151;
4180 static PyObject *__pyx_tuple__153;
4181 static PyObject *__pyx_tuple__155;
4182 static PyObject *__pyx_tuple__157;
4183 static PyObject *__pyx_tuple__159;
4184 static PyObject *__pyx_tuple__161;
4185 static PyObject *__pyx_tuple__163;
4186 static PyObject *__pyx_tuple__165;
4187 static PyObject *__pyx_tuple__167;
4188 static PyObject *__pyx_tuple__169;
4189 static PyObject *__pyx_tuple__171;
4190 static PyObject *__pyx_tuple__173;
4191 static PyObject *__pyx_tuple__175;
4192 static PyObject *__pyx_tuple__177;
4193 static PyObject *__pyx_tuple__179;
4194 static PyObject *__pyx_tuple__181;
4195 static PyObject *__pyx_tuple__183;
4196 static PyObject *__pyx_tuple__185;
4197 static PyObject *__pyx_tuple__187;
4198 static PyObject *__pyx_tuple__189;
4199 static PyObject *__pyx_tuple__191;
4200 static PyObject *__pyx_tuple__193;
4201 static PyObject *__pyx_tuple__195;
4202 static PyObject *__pyx_tuple__197;
4203 static PyObject *__pyx_tuple__199;
4204 static PyObject *__pyx_tuple__200;
4205 static PyObject *__pyx_tuple__202;
4206 static PyObject *__pyx_tuple__203;
4207 static PyObject *__pyx_tuple__205;
4208 static PyObject *__pyx_tuple__207;
4209 static PyObject *__pyx_tuple__209;
4210 static PyObject *__pyx_tuple__211;
4211 static PyObject *__pyx_tuple__213;
4212 static PyObject *__pyx_tuple__215;
4213 static PyObject *__pyx_tuple__216;
4214 static PyObject *__pyx_tuple__218;
4215 static PyObject *__pyx_tuple__220;
4216 static PyObject *__pyx_tuple__222;
4217 static PyObject *__pyx_tuple__224;
4218 static PyObject *__pyx_tuple__225;
4219 static PyObject *__pyx_tuple__227;
4220 static PyObject *__pyx_tuple__229;
4221 static PyObject *__pyx_tuple__231;
4222 static PyObject *__pyx_tuple__232;
4223 static PyObject *__pyx_tuple__234;
4224 static PyObject *__pyx_tuple__236;
4225 static PyObject *__pyx_tuple__238;
4226 static PyObject *__pyx_tuple__240;
4227 static PyObject *__pyx_codeobj__61;
4228 static PyObject *__pyx_codeobj__64;
4229 static PyObject *__pyx_codeobj__67;
4230 static PyObject *__pyx_codeobj__70;
4231 static PyObject *__pyx_codeobj__73;
4232 static PyObject *__pyx_codeobj__76;
4233 static PyObject *__pyx_codeobj__78;
4234 static PyObject *__pyx_codeobj__80;
4235 static PyObject *__pyx_codeobj__82;
4236 static PyObject *__pyx_codeobj__84;
4237 static PyObject *__pyx_codeobj__86;
4238 static PyObject *__pyx_codeobj__88;
4239 static PyObject *__pyx_codeobj__90;
4240 static PyObject *__pyx_codeobj__92;
4241 static PyObject *__pyx_codeobj__94;
4242 static PyObject *__pyx_codeobj__96;
4243 static PyObject *__pyx_codeobj__98;
4244 static PyObject *__pyx_codeobj__99;
4245 static PyObject *__pyx_codeobj__101;
4246 static PyObject *__pyx_codeobj__104;
4247 static PyObject *__pyx_codeobj__106;
4248 static PyObject *__pyx_codeobj__109;
4249 static PyObject *__pyx_codeobj__112;
4250 static PyObject *__pyx_codeobj__115;
4251 static PyObject *__pyx_codeobj__117;
4252 static PyObject *__pyx_codeobj__120;
4253 static PyObject *__pyx_codeobj__122;
4254 static PyObject *__pyx_codeobj__124;
4255 static PyObject *__pyx_codeobj__126;
4256 static PyObject *__pyx_codeobj__128;
4257 static PyObject *__pyx_codeobj__131;
4258 static PyObject *__pyx_codeobj__133;
4259 static PyObject *__pyx_codeobj__135;
4260 static PyObject *__pyx_codeobj__137;
4261 static PyObject *__pyx_codeobj__140;
4262 static PyObject *__pyx_codeobj__142;
4263 static PyObject *__pyx_codeobj__144;
4264 static PyObject *__pyx_codeobj__146;
4265 static PyObject *__pyx_codeobj__148;
4266 static PyObject *__pyx_codeobj__150;
4267 static PyObject *__pyx_codeobj__152;
4268 static PyObject *__pyx_codeobj__154;
4269 static PyObject *__pyx_codeobj__156;
4270 static PyObject *__pyx_codeobj__158;
4271 static PyObject *__pyx_codeobj__160;
4272 static PyObject *__pyx_codeobj__162;
4273 static PyObject *__pyx_codeobj__164;
4274 static PyObject *__pyx_codeobj__166;
4275 static PyObject *__pyx_codeobj__168;
4276 static PyObject *__pyx_codeobj__170;
4277 static PyObject *__pyx_codeobj__172;
4278 static PyObject *__pyx_codeobj__174;
4279 static PyObject *__pyx_codeobj__176;
4280 static PyObject *__pyx_codeobj__178;
4281 static PyObject *__pyx_codeobj__180;
4282 static PyObject *__pyx_codeobj__182;
4283 static PyObject *__pyx_codeobj__184;
4284 static PyObject *__pyx_codeobj__186;
4285 static PyObject *__pyx_codeobj__188;
4286 static PyObject *__pyx_codeobj__190;
4287 static PyObject *__pyx_codeobj__192;
4288 static PyObject *__pyx_codeobj__194;
4289 static PyObject *__pyx_codeobj__196;
4290 static PyObject *__pyx_codeobj__198;
4291 static PyObject *__pyx_codeobj__201;
4292 static PyObject *__pyx_codeobj__204;
4293 static PyObject *__pyx_codeobj__206;
4294 static PyObject *__pyx_codeobj__208;
4295 static PyObject *__pyx_codeobj__210;
4296 static PyObject *__pyx_codeobj__212;
4297 static PyObject *__pyx_codeobj__214;
4298 static PyObject *__pyx_codeobj__217;
4299 static PyObject *__pyx_codeobj__219;
4300 static PyObject *__pyx_codeobj__221;
4301 static PyObject *__pyx_codeobj__223;
4302 static PyObject *__pyx_codeobj__226;
4303 static PyObject *__pyx_codeobj__228;
4304 static PyObject *__pyx_codeobj__230;
4305 static PyObject *__pyx_codeobj__233;
4306 static PyObject *__pyx_codeobj__235;
4307 static PyObject *__pyx_codeobj__237;
4308 static PyObject *__pyx_codeobj__239;
4309 static PyObject *__pyx_codeobj__241;
4310 /* Late includes */
4311 
4312 /* "WaveTools.py":67
4313  *
4314  *
4315  * def fastcos_test(phase,sinus=False): # <<<<<<<<<<<<<<
4316  * """Fast cosine function with Taylor approximation - TO BE USED FOR TESTING"
4317  * Parameters
4318  */
4319 
4320 /* Python wrapper */
4321 static PyObject *__pyx_pw_9WaveTools_1fastcos_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4322 static char __pyx_doc_9WaveTools_fastcos_test[] = "Fast cosine function with Taylor approximation - TO BE USED FOR TESTING\"\n Parameters\n ----------\n phase : double\n Phase \n sinus : bool\n Switch for cosine or sine calculation\n \n Returns\n --------\n cos(phi) or sin(phi)\n\n ";
4323 static PyMethodDef __pyx_mdef_9WaveTools_1fastcos_test = {"fastcos_test", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_1fastcos_test, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_fastcos_test};
4324 static PyObject *__pyx_pw_9WaveTools_1fastcos_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4325  PyObject *__pyx_v_phase = 0;
4326  PyObject *__pyx_v_sinus = 0;
4327  int __pyx_lineno = 0;
4328  const char *__pyx_filename = NULL;
4329  int __pyx_clineno = 0;
4330  PyObject *__pyx_r = 0;
4331  __Pyx_RefNannyDeclarations
4332  __Pyx_RefNannySetupContext("fastcos_test (wrapper)", 0);
4333  {
4334  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_phase,&__pyx_n_s_sinus,0};
4335  PyObject* values[2] = {0,0};
4336  values[1] = ((PyObject *)((PyObject *)Py_False));
4337  if (unlikely(__pyx_kwds)) {
4338  Py_ssize_t kw_args;
4339  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4340  switch (pos_args) {
4341  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4342  CYTHON_FALLTHROUGH;
4343  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4344  CYTHON_FALLTHROUGH;
4345  case 0: break;
4346  default: goto __pyx_L5_argtuple_error;
4347  }
4348  kw_args = PyDict_Size(__pyx_kwds);
4349  switch (pos_args) {
4350  case 0:
4351  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phase)) != 0)) kw_args--;
4352  else goto __pyx_L5_argtuple_error;
4353  CYTHON_FALLTHROUGH;
4354  case 1:
4355  if (kw_args > 0) {
4356  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sinus);
4357  if (value) { values[1] = value; kw_args--; }
4358  }
4359  }
4360  if (unlikely(kw_args > 0)) {
4361  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fastcos_test") < 0)) __PYX_ERR(0, 67, __pyx_L3_error)
4362  }
4363  } else {
4364  switch (PyTuple_GET_SIZE(__pyx_args)) {
4365  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4366  CYTHON_FALLTHROUGH;
4367  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4368  break;
4369  default: goto __pyx_L5_argtuple_error;
4370  }
4371  }
4372  __pyx_v_phase = values[0];
4373  __pyx_v_sinus = values[1];
4374  }
4375  goto __pyx_L4_argument_unpacking_done;
4376  __pyx_L5_argtuple_error:;
4377  __Pyx_RaiseArgtupleInvalid("fastcos_test", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 67, __pyx_L3_error)
4378  __pyx_L3_error:;
4379  __Pyx_AddTraceback("WaveTools.fastcos_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4380  __Pyx_RefNannyFinishContext();
4381  return NULL;
4382  __pyx_L4_argument_unpacking_done:;
4383  __pyx_r = __pyx_pf_9WaveTools_fastcos_test(__pyx_self, __pyx_v_phase, __pyx_v_sinus);
4384 
4385  /* function exit code */
4386  __Pyx_RefNannyFinishContext();
4387  return __pyx_r;
4388 }
4389 
4390 static PyObject *__pyx_pf_9WaveTools_fastcos_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_phase, PyObject *__pyx_v_sinus) {
4391  PyObject *__pyx_r = NULL;
4392  __Pyx_RefNannyDeclarations
4393  int __pyx_t_1;
4394  PyObject *__pyx_t_2 = NULL;
4395  PyObject *__pyx_t_3 = NULL;
4396  PyObject *__pyx_t_4 = NULL;
4397  PyObject *__pyx_t_5 = NULL;
4398  int __pyx_t_6;
4399  PyObject *__pyx_t_7 = NULL;
4400  double __pyx_t_8;
4401  int __pyx_lineno = 0;
4402  const char *__pyx_filename = NULL;
4403  int __pyx_clineno = 0;
4404  __Pyx_RefNannySetupContext("fastcos_test", 0);
4405  __Pyx_INCREF(__pyx_v_phase);
4406 
4407  /* "WaveTools.py":81
4408  *
4409  * """
4410  * if(sinus): # <<<<<<<<<<<<<<
4411  * phase = old_div(np.pi,2.) - phase
4412  * return fastcos(phase,True)
4413  */
4414  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_sinus); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 81, __pyx_L1_error)
4415  if (__pyx_t_1) {
4416 
4417  /* "WaveTools.py":82
4418  * """
4419  * if(sinus):
4420  * phase = old_div(np.pi,2.) - phase # <<<<<<<<<<<<<<
4421  * return fastcos(phase,True)
4422  * def fastcosh_test(k,Z,fast=True):
4423  */
4424  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 82, __pyx_L1_error)
4425  __Pyx_GOTREF(__pyx_t_3);
4426  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 82, __pyx_L1_error)
4427  __Pyx_GOTREF(__pyx_t_4);
4428  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_pi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 82, __pyx_L1_error)
4429  __Pyx_GOTREF(__pyx_t_5);
4430  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4431  __pyx_t_4 = NULL;
4432  __pyx_t_6 = 0;
4433  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
4434  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
4435  if (likely(__pyx_t_4)) {
4436  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
4437  __Pyx_INCREF(__pyx_t_4);
4438  __Pyx_INCREF(function);
4439  __Pyx_DECREF_SET(__pyx_t_3, function);
4440  __pyx_t_6 = 1;
4441  }
4442  }
4443  #if CYTHON_FAST_PYCALL
4444  if (PyFunction_Check(__pyx_t_3)) {
4445  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_float_2_};
4446  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
4447  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
4448  __Pyx_GOTREF(__pyx_t_2);
4449  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4450  } else
4451  #endif
4452  #if CYTHON_FAST_PYCCALL
4453  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
4454  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_float_2_};
4455  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
4456  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
4457  __Pyx_GOTREF(__pyx_t_2);
4458  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4459  } else
4460  #endif
4461  {
4462  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 82, __pyx_L1_error)
4463  __Pyx_GOTREF(__pyx_t_7);
4464  if (__pyx_t_4) {
4465  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
4466  }
4467  __Pyx_GIVEREF(__pyx_t_5);
4468  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_5);
4469  __Pyx_INCREF(__pyx_float_2_);
4470  __Pyx_GIVEREF(__pyx_float_2_);
4471  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_float_2_);
4472  __pyx_t_5 = 0;
4473  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
4474  __Pyx_GOTREF(__pyx_t_2);
4475  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4476  }
4477  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4478  __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_v_phase); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 82, __pyx_L1_error)
4479  __Pyx_GOTREF(__pyx_t_3);
4480  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4481  __Pyx_DECREF_SET(__pyx_v_phase, __pyx_t_3);
4482  __pyx_t_3 = 0;
4483 
4484  /* "WaveTools.py":81
4485  *
4486  * """
4487  * if(sinus): # <<<<<<<<<<<<<<
4488  * phase = old_div(np.pi,2.) - phase
4489  * return fastcos(phase,True)
4490  */
4491  }
4492 
4493  /* "WaveTools.py":83
4494  * if(sinus):
4495  * phase = old_div(np.pi,2.) - phase
4496  * return fastcos(phase,True) # <<<<<<<<<<<<<<
4497  * def fastcosh_test(k,Z,fast=True):
4498  * """Fast hyperbolic cosine function with Taylor approximation - TO BE USED FOR TESTING"
4499  */
4500  __Pyx_XDECREF(__pyx_r);
4501  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_phase); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L1_error)
4502  __pyx_t_3 = PyFloat_FromDouble(proteus::fastcos(__pyx_t_8, 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
4503  __Pyx_GOTREF(__pyx_t_3);
4504  __pyx_r = __pyx_t_3;
4505  __pyx_t_3 = 0;
4506  goto __pyx_L0;
4507 
4508  /* "WaveTools.py":67
4509  *
4510  *
4511  * def fastcos_test(phase,sinus=False): # <<<<<<<<<<<<<<
4512  * """Fast cosine function with Taylor approximation - TO BE USED FOR TESTING"
4513  * Parameters
4514  */
4515 
4516  /* function exit code */
4517  __pyx_L1_error:;
4518  __Pyx_XDECREF(__pyx_t_2);
4519  __Pyx_XDECREF(__pyx_t_3);
4520  __Pyx_XDECREF(__pyx_t_4);
4521  __Pyx_XDECREF(__pyx_t_5);
4522  __Pyx_XDECREF(__pyx_t_7);
4523  __Pyx_AddTraceback("WaveTools.fastcos_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4524  __pyx_r = NULL;
4525  __pyx_L0:;
4526  __Pyx_XDECREF(__pyx_v_phase);
4527  __Pyx_XGIVEREF(__pyx_r);
4528  __Pyx_RefNannyFinishContext();
4529  return __pyx_r;
4530 }
4531 
4532 /* "WaveTools.py":84
4533  * phase = old_div(np.pi,2.) - phase
4534  * return fastcos(phase,True)
4535  * def fastcosh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
4536  * """Fast hyperbolic cosine function with Taylor approximation - TO BE USED FOR TESTING"
4537  * Parameters
4538  */
4539 
4540 /* Python wrapper */
4541 static PyObject *__pyx_pw_9WaveTools_3fastcosh_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4542 static char __pyx_doc_9WaveTools_2fastcosh_test[] = "Fast hyperbolic cosine function with Taylor approximation - TO BE USED FOR TESTING\"\n Parameters\n ----------\n k : double\n Wavenumber\n Z : double\n Z coordinate\n Returns\n --------\n cosh(k*z)\n\n ";
4543 static PyMethodDef __pyx_mdef_9WaveTools_3fastcosh_test = {"fastcosh_test", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_3fastcosh_test, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_2fastcosh_test};
4544 static PyObject *__pyx_pw_9WaveTools_3fastcosh_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4545  PyObject *__pyx_v_k = 0;
4546  PyObject *__pyx_v_Z = 0;
4547  PyObject *__pyx_v_fast = 0;
4548  int __pyx_lineno = 0;
4549  const char *__pyx_filename = NULL;
4550  int __pyx_clineno = 0;
4551  PyObject *__pyx_r = 0;
4552  __Pyx_RefNannyDeclarations
4553  __Pyx_RefNannySetupContext("fastcosh_test (wrapper)", 0);
4554  {
4555  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_Z,&__pyx_n_s_fast,0};
4556  PyObject* values[3] = {0,0,0};
4557  values[2] = ((PyObject *)((PyObject *)Py_True));
4558  if (unlikely(__pyx_kwds)) {
4559  Py_ssize_t kw_args;
4560  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4561  switch (pos_args) {
4562  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4563  CYTHON_FALLTHROUGH;
4564  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4565  CYTHON_FALLTHROUGH;
4566  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4567  CYTHON_FALLTHROUGH;
4568  case 0: break;
4569  default: goto __pyx_L5_argtuple_error;
4570  }
4571  kw_args = PyDict_Size(__pyx_kwds);
4572  switch (pos_args) {
4573  case 0:
4574  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
4575  else goto __pyx_L5_argtuple_error;
4576  CYTHON_FALLTHROUGH;
4577  case 1:
4578  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Z)) != 0)) kw_args--;
4579  else {
4580  __Pyx_RaiseArgtupleInvalid("fastcosh_test", 0, 2, 3, 1); __PYX_ERR(0, 84, __pyx_L3_error)
4581  }
4582  CYTHON_FALLTHROUGH;
4583  case 2:
4584  if (kw_args > 0) {
4585  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
4586  if (value) { values[2] = value; kw_args--; }
4587  }
4588  }
4589  if (unlikely(kw_args > 0)) {
4590  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fastcosh_test") < 0)) __PYX_ERR(0, 84, __pyx_L3_error)
4591  }
4592  } else {
4593  switch (PyTuple_GET_SIZE(__pyx_args)) {
4594  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4595  CYTHON_FALLTHROUGH;
4596  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4597  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4598  break;
4599  default: goto __pyx_L5_argtuple_error;
4600  }
4601  }
4602  __pyx_v_k = values[0];
4603  __pyx_v_Z = values[1];
4604  __pyx_v_fast = values[2];
4605  }
4606  goto __pyx_L4_argument_unpacking_done;
4607  __pyx_L5_argtuple_error:;
4608  __Pyx_RaiseArgtupleInvalid("fastcosh_test", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 84, __pyx_L3_error)
4609  __pyx_L3_error:;
4610  __Pyx_AddTraceback("WaveTools.fastcosh_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4611  __Pyx_RefNannyFinishContext();
4612  return NULL;
4613  __pyx_L4_argument_unpacking_done:;
4614  __pyx_r = __pyx_pf_9WaveTools_2fastcosh_test(__pyx_self, __pyx_v_k, __pyx_v_Z, __pyx_v_fast);
4615 
4616  /* function exit code */
4617  __Pyx_RefNannyFinishContext();
4618  return __pyx_r;
4619 }
4620 
4621 static PyObject *__pyx_pf_9WaveTools_2fastcosh_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_fast) {
4622  double __pyx_v_xx[2];
4623  PyObject *__pyx_r = NULL;
4624  __Pyx_RefNannyDeclarations
4625  double __pyx_t_1;
4626  double __pyx_t_2;
4627  bool __pyx_t_3;
4628  PyObject *__pyx_t_4 = NULL;
4629  int __pyx_lineno = 0;
4630  const char *__pyx_filename = NULL;
4631  int __pyx_clineno = 0;
4632  __Pyx_RefNannySetupContext("fastcosh_test", 0);
4633 
4634  /* "WaveTools.py":98
4635  * """
4636  * cython.declare(xx=cython.double[2])
4637  * fastcosh(xx,k,Z,fast) # <<<<<<<<<<<<<<
4638  * return xx[0]
4639  * def fastsinh_test(k,Z,fast=True):
4640  */
4641  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_k); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L1_error)
4642  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_Z); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L1_error)
4643  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L1_error)
4644  (void)(proteus::fastcosh(__pyx_v_xx, __pyx_t_1, __pyx_t_2, __pyx_t_3));
4645 
4646  /* "WaveTools.py":99
4647  * cython.declare(xx=cython.double[2])
4648  * fastcosh(xx,k,Z,fast)
4649  * return xx[0] # <<<<<<<<<<<<<<
4650  * def fastsinh_test(k,Z,fast=True):
4651  * """Fast hyperbolic sine function with Taylor approximation - TO BE USED FOR TESTING"
4652  */
4653  __Pyx_XDECREF(__pyx_r);
4654  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_xx[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error)
4655  __Pyx_GOTREF(__pyx_t_4);
4656  __pyx_r = __pyx_t_4;
4657  __pyx_t_4 = 0;
4658  goto __pyx_L0;
4659 
4660  /* "WaveTools.py":84
4661  * phase = old_div(np.pi,2.) - phase
4662  * return fastcos(phase,True)
4663  * def fastcosh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
4664  * """Fast hyperbolic cosine function with Taylor approximation - TO BE USED FOR TESTING"
4665  * Parameters
4666  */
4667 
4668  /* function exit code */
4669  __pyx_L1_error:;
4670  __Pyx_XDECREF(__pyx_t_4);
4671  __Pyx_AddTraceback("WaveTools.fastcosh_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4672  __pyx_r = NULL;
4673  __pyx_L0:;
4674  __Pyx_XGIVEREF(__pyx_r);
4675  __Pyx_RefNannyFinishContext();
4676  return __pyx_r;
4677 }
4678 
4679 /* "WaveTools.py":100
4680  * fastcosh(xx,k,Z,fast)
4681  * return xx[0]
4682  * def fastsinh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
4683  * """Fast hyperbolic sine function with Taylor approximation - TO BE USED FOR TESTING"
4684  * Parameters
4685  */
4686 
4687 /* Python wrapper */
4688 static PyObject *__pyx_pw_9WaveTools_5fastsinh_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4689 static char __pyx_doc_9WaveTools_4fastsinh_test[] = "Fast hyperbolic sine function with Taylor approximation - TO BE USED FOR TESTING\"\n Parameters\n ----------\n k : double\n Wavenumber\n Z : double\n Z coordinate\n Returns\n --------\n sinh(k*z)\n\n ";
4690 static PyMethodDef __pyx_mdef_9WaveTools_5fastsinh_test = {"fastsinh_test", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_5fastsinh_test, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_4fastsinh_test};
4691 static PyObject *__pyx_pw_9WaveTools_5fastsinh_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4692  PyObject *__pyx_v_k = 0;
4693  PyObject *__pyx_v_Z = 0;
4694  PyObject *__pyx_v_fast = 0;
4695  int __pyx_lineno = 0;
4696  const char *__pyx_filename = NULL;
4697  int __pyx_clineno = 0;
4698  PyObject *__pyx_r = 0;
4699  __Pyx_RefNannyDeclarations
4700  __Pyx_RefNannySetupContext("fastsinh_test (wrapper)", 0);
4701  {
4702  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_Z,&__pyx_n_s_fast,0};
4703  PyObject* values[3] = {0,0,0};
4704  values[2] = ((PyObject *)((PyObject *)Py_True));
4705  if (unlikely(__pyx_kwds)) {
4706  Py_ssize_t kw_args;
4707  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4708  switch (pos_args) {
4709  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4710  CYTHON_FALLTHROUGH;
4711  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4712  CYTHON_FALLTHROUGH;
4713  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4714  CYTHON_FALLTHROUGH;
4715  case 0: break;
4716  default: goto __pyx_L5_argtuple_error;
4717  }
4718  kw_args = PyDict_Size(__pyx_kwds);
4719  switch (pos_args) {
4720  case 0:
4721  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
4722  else goto __pyx_L5_argtuple_error;
4723  CYTHON_FALLTHROUGH;
4724  case 1:
4725  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Z)) != 0)) kw_args--;
4726  else {
4727  __Pyx_RaiseArgtupleInvalid("fastsinh_test", 0, 2, 3, 1); __PYX_ERR(0, 100, __pyx_L3_error)
4728  }
4729  CYTHON_FALLTHROUGH;
4730  case 2:
4731  if (kw_args > 0) {
4732  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
4733  if (value) { values[2] = value; kw_args--; }
4734  }
4735  }
4736  if (unlikely(kw_args > 0)) {
4737  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fastsinh_test") < 0)) __PYX_ERR(0, 100, __pyx_L3_error)
4738  }
4739  } else {
4740  switch (PyTuple_GET_SIZE(__pyx_args)) {
4741  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4742  CYTHON_FALLTHROUGH;
4743  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4744  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4745  break;
4746  default: goto __pyx_L5_argtuple_error;
4747  }
4748  }
4749  __pyx_v_k = values[0];
4750  __pyx_v_Z = values[1];
4751  __pyx_v_fast = values[2];
4752  }
4753  goto __pyx_L4_argument_unpacking_done;
4754  __pyx_L5_argtuple_error:;
4755  __Pyx_RaiseArgtupleInvalid("fastsinh_test", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 100, __pyx_L3_error)
4756  __pyx_L3_error:;
4757  __Pyx_AddTraceback("WaveTools.fastsinh_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4758  __Pyx_RefNannyFinishContext();
4759  return NULL;
4760  __pyx_L4_argument_unpacking_done:;
4761  __pyx_r = __pyx_pf_9WaveTools_4fastsinh_test(__pyx_self, __pyx_v_k, __pyx_v_Z, __pyx_v_fast);
4762 
4763  /* function exit code */
4764  __Pyx_RefNannyFinishContext();
4765  return __pyx_r;
4766 }
4767 
4768 static PyObject *__pyx_pf_9WaveTools_4fastsinh_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_fast) {
4769  double __pyx_v_xx[2];
4770  PyObject *__pyx_r = NULL;
4771  __Pyx_RefNannyDeclarations
4772  double __pyx_t_1;
4773  double __pyx_t_2;
4774  bool __pyx_t_3;
4775  PyObject *__pyx_t_4 = NULL;
4776  int __pyx_lineno = 0;
4777  const char *__pyx_filename = NULL;
4778  int __pyx_clineno = 0;
4779  __Pyx_RefNannySetupContext("fastsinh_test", 0);
4780 
4781  /* "WaveTools.py":114
4782  * """
4783  * cython.declare(xx=cython.double[2])
4784  * fastcosh(xx,k,Z,fast) # <<<<<<<<<<<<<<
4785  * return xx[1]
4786  *
4787  */
4788  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_k); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L1_error)
4789  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_Z); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L1_error)
4790  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L1_error)
4791  (void)(proteus::fastcosh(__pyx_v_xx, __pyx_t_1, __pyx_t_2, __pyx_t_3));
4792 
4793  /* "WaveTools.py":115
4794  * cython.declare(xx=cython.double[2])
4795  * fastcosh(xx,k,Z,fast)
4796  * return xx[1] # <<<<<<<<<<<<<<
4797  *
4798  *
4799  */
4800  __Pyx_XDECREF(__pyx_r);
4801  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_xx[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 115, __pyx_L1_error)
4802  __Pyx_GOTREF(__pyx_t_4);
4803  __pyx_r = __pyx_t_4;
4804  __pyx_t_4 = 0;
4805  goto __pyx_L0;
4806 
4807  /* "WaveTools.py":100
4808  * fastcosh(xx,k,Z,fast)
4809  * return xx[0]
4810  * def fastsinh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
4811  * """Fast hyperbolic sine function with Taylor approximation - TO BE USED FOR TESTING"
4812  * Parameters
4813  */
4814 
4815  /* function exit code */
4816  __pyx_L1_error:;
4817  __Pyx_XDECREF(__pyx_t_4);
4818  __Pyx_AddTraceback("WaveTools.fastsinh_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4819  __pyx_r = NULL;
4820  __pyx_L0:;
4821  __Pyx_XGIVEREF(__pyx_r);
4822  __Pyx_RefNannyFinishContext();
4823  return __pyx_r;
4824 }
4825 
4826 /* "WaveTools.py":118
4827  *
4828  *
4829  * def coshkzd_test(k,Z,d, fast=True): # <<<<<<<<<<<<<<
4830  * """Calculation of u horizontal profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
4831  * and hyp trig relation cosh(a+b) = cosha*coshb+sinha*sinhb
4832  */
4833 
4834 /* Python wrapper */
4835 static PyObject *__pyx_pw_9WaveTools_7coshkzd_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4836 static char __pyx_doc_9WaveTools_6coshkzd_test[] = "Calculation of u horizontal profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons\n and hyp trig relation cosh(a+b) = cosha*coshb+sinha*sinhb\n Parameters\n ----------\n ----------\n k : double\n Wavenumber\n Z : double\n Z coordinate\n d : double\n depth\n Returns\n --------\n cosh(k*(z+d))/sinh(kd) for Z>-d/2, 0 otherwise\n\n ";
4837 static PyMethodDef __pyx_mdef_9WaveTools_7coshkzd_test = {"coshkzd_test", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7coshkzd_test, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_6coshkzd_test};
4838 static PyObject *__pyx_pw_9WaveTools_7coshkzd_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4839  PyObject *__pyx_v_k = 0;
4840  PyObject *__pyx_v_Z = 0;
4841  PyObject *__pyx_v_d = 0;
4842  PyObject *__pyx_v_fast = 0;
4843  int __pyx_lineno = 0;
4844  const char *__pyx_filename = NULL;
4845  int __pyx_clineno = 0;
4846  PyObject *__pyx_r = 0;
4847  __Pyx_RefNannyDeclarations
4848  __Pyx_RefNannySetupContext("coshkzd_test (wrapper)", 0);
4849  {
4850  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_Z,&__pyx_n_s_d,&__pyx_n_s_fast,0};
4851  PyObject* values[4] = {0,0,0,0};
4852  values[3] = ((PyObject *)((PyObject *)Py_True));
4853  if (unlikely(__pyx_kwds)) {
4854  Py_ssize_t kw_args;
4855  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4856  switch (pos_args) {
4857  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4858  CYTHON_FALLTHROUGH;
4859  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4860  CYTHON_FALLTHROUGH;
4861  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4862  CYTHON_FALLTHROUGH;
4863  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4864  CYTHON_FALLTHROUGH;
4865  case 0: break;
4866  default: goto __pyx_L5_argtuple_error;
4867  }
4868  kw_args = PyDict_Size(__pyx_kwds);
4869  switch (pos_args) {
4870  case 0:
4871  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
4872  else goto __pyx_L5_argtuple_error;
4873  CYTHON_FALLTHROUGH;
4874  case 1:
4875  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Z)) != 0)) kw_args--;
4876  else {
4877  __Pyx_RaiseArgtupleInvalid("coshkzd_test", 0, 3, 4, 1); __PYX_ERR(0, 118, __pyx_L3_error)
4878  }
4879  CYTHON_FALLTHROUGH;
4880  case 2:
4881  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
4882  else {
4883  __Pyx_RaiseArgtupleInvalid("coshkzd_test", 0, 3, 4, 2); __PYX_ERR(0, 118, __pyx_L3_error)
4884  }
4885  CYTHON_FALLTHROUGH;
4886  case 3:
4887  if (kw_args > 0) {
4888  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
4889  if (value) { values[3] = value; kw_args--; }
4890  }
4891  }
4892  if (unlikely(kw_args > 0)) {
4893  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "coshkzd_test") < 0)) __PYX_ERR(0, 118, __pyx_L3_error)
4894  }
4895  } else {
4896  switch (PyTuple_GET_SIZE(__pyx_args)) {
4897  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4898  CYTHON_FALLTHROUGH;
4899  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4900  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4901  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4902  break;
4903  default: goto __pyx_L5_argtuple_error;
4904  }
4905  }
4906  __pyx_v_k = values[0];
4907  __pyx_v_Z = values[1];
4908  __pyx_v_d = values[2];
4909  __pyx_v_fast = values[3];
4910  }
4911  goto __pyx_L4_argument_unpacking_done;
4912  __pyx_L5_argtuple_error:;
4913  __Pyx_RaiseArgtupleInvalid("coshkzd_test", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 118, __pyx_L3_error)
4914  __pyx_L3_error:;
4915  __Pyx_AddTraceback("WaveTools.coshkzd_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
4916  __Pyx_RefNannyFinishContext();
4917  return NULL;
4918  __pyx_L4_argument_unpacking_done:;
4919  __pyx_r = __pyx_pf_9WaveTools_6coshkzd_test(__pyx_self, __pyx_v_k, __pyx_v_Z, __pyx_v_d, __pyx_v_fast);
4920 
4921  /* function exit code */
4922  __Pyx_RefNannyFinishContext();
4923  return __pyx_r;
4924 }
4925 
4926 static PyObject *__pyx_pf_9WaveTools_6coshkzd_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_d, PyObject *__pyx_v_fast) {
4927  PyObject *__pyx_r = NULL;
4928  __Pyx_RefNannyDeclarations
4929  PyObject *__pyx_t_1 = NULL;
4930  PyObject *__pyx_t_2 = NULL;
4931  PyObject *__pyx_t_3 = NULL;
4932  PyObject *__pyx_t_4 = NULL;
4933  int __pyx_t_5;
4934  PyObject *__pyx_t_6 = NULL;
4935  int __pyx_t_7;
4936  PyObject *__pyx_t_8 = NULL;
4937  PyObject *__pyx_t_9 = NULL;
4938  int __pyx_lineno = 0;
4939  const char *__pyx_filename = NULL;
4940  int __pyx_clineno = 0;
4941  __Pyx_RefNannySetupContext("coshkzd_test", 0);
4942 
4943  /* "WaveTools.py":135
4944  *
4945  * """
4946  * if (Z > old_div(-d,2.)): # <<<<<<<<<<<<<<
4947  * return old_div(fastcosh_test(k,Z,fast), np.tanh(k*d)) + fastsinh_test(k,Z,fast)
4948  * else:
4949  */
4950  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
4951  __Pyx_GOTREF(__pyx_t_2);
4952  __pyx_t_3 = PyNumber_Negative(__pyx_v_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error)
4953  __Pyx_GOTREF(__pyx_t_3);
4954  __pyx_t_4 = NULL;
4955  __pyx_t_5 = 0;
4956  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
4957  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
4958  if (likely(__pyx_t_4)) {
4959  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4960  __Pyx_INCREF(__pyx_t_4);
4961  __Pyx_INCREF(function);
4962  __Pyx_DECREF_SET(__pyx_t_2, function);
4963  __pyx_t_5 = 1;
4964  }
4965  }
4966  #if CYTHON_FAST_PYCALL
4967  if (PyFunction_Check(__pyx_t_2)) {
4968  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_float_2_};
4969  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
4970  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
4971  __Pyx_GOTREF(__pyx_t_1);
4972  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4973  } else
4974  #endif
4975  #if CYTHON_FAST_PYCCALL
4976  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4977  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_float_2_};
4978  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
4979  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
4980  __Pyx_GOTREF(__pyx_t_1);
4981  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4982  } else
4983  #endif
4984  {
4985  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error)
4986  __Pyx_GOTREF(__pyx_t_6);
4987  if (__pyx_t_4) {
4988  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
4989  }
4990  __Pyx_GIVEREF(__pyx_t_3);
4991  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
4992  __Pyx_INCREF(__pyx_float_2_);
4993  __Pyx_GIVEREF(__pyx_float_2_);
4994  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_float_2_);
4995  __pyx_t_3 = 0;
4996  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
4997  __Pyx_GOTREF(__pyx_t_1);
4998  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4999  }
5000  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5001  __pyx_t_2 = PyObject_RichCompare(__pyx_v_Z, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
5002  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5003  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 135, __pyx_L1_error)
5004  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5005  if (__pyx_t_7) {
5006 
5007  /* "WaveTools.py":136
5008  * """
5009  * if (Z > old_div(-d,2.)):
5010  * return old_div(fastcosh_test(k,Z,fast), np.tanh(k*d)) + fastsinh_test(k,Z,fast) # <<<<<<<<<<<<<<
5011  * else:
5012  * return 0.
5013  */
5014  __Pyx_XDECREF(__pyx_r);
5015  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5016  __Pyx_GOTREF(__pyx_t_1);
5017  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fastcosh_test); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
5018  __Pyx_GOTREF(__pyx_t_3);
5019  __pyx_t_4 = NULL;
5020  __pyx_t_5 = 0;
5021  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
5022  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
5023  if (likely(__pyx_t_4)) {
5024  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5025  __Pyx_INCREF(__pyx_t_4);
5026  __Pyx_INCREF(function);
5027  __Pyx_DECREF_SET(__pyx_t_3, function);
5028  __pyx_t_5 = 1;
5029  }
5030  }
5031  #if CYTHON_FAST_PYCALL
5032  if (PyFunction_Check(__pyx_t_3)) {
5033  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5034  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error)
5035  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5036  __Pyx_GOTREF(__pyx_t_6);
5037  } else
5038  #endif
5039  #if CYTHON_FAST_PYCCALL
5040  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
5041  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5042  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error)
5043  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5044  __Pyx_GOTREF(__pyx_t_6);
5045  } else
5046  #endif
5047  {
5048  __pyx_t_8 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error)
5049  __Pyx_GOTREF(__pyx_t_8);
5050  if (__pyx_t_4) {
5051  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
5052  }
5053  __Pyx_INCREF(__pyx_v_k);
5054  __Pyx_GIVEREF(__pyx_v_k);
5055  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_v_k);
5056  __Pyx_INCREF(__pyx_v_Z);
5057  __Pyx_GIVEREF(__pyx_v_Z);
5058  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_v_Z);
5059  __Pyx_INCREF(__pyx_v_fast);
5060  __Pyx_GIVEREF(__pyx_v_fast);
5061  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_v_fast);
5062  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error)
5063  __Pyx_GOTREF(__pyx_t_6);
5064  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5065  }
5066  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5067  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error)
5068  __Pyx_GOTREF(__pyx_t_8);
5069  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_tanh); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 136, __pyx_L1_error)
5070  __Pyx_GOTREF(__pyx_t_4);
5071  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5072  __pyx_t_8 = PyNumber_Multiply(__pyx_v_k, __pyx_v_d); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error)
5073  __Pyx_GOTREF(__pyx_t_8);
5074  __pyx_t_9 = NULL;
5075  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
5076  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
5077  if (likely(__pyx_t_9)) {
5078  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
5079  __Pyx_INCREF(__pyx_t_9);
5080  __Pyx_INCREF(function);
5081  __Pyx_DECREF_SET(__pyx_t_4, function);
5082  }
5083  }
5084  __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8);
5085  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
5086  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5087  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
5088  __Pyx_GOTREF(__pyx_t_3);
5089  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5090  __pyx_t_4 = NULL;
5091  __pyx_t_5 = 0;
5092  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
5093  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
5094  if (likely(__pyx_t_4)) {
5095  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
5096  __Pyx_INCREF(__pyx_t_4);
5097  __Pyx_INCREF(function);
5098  __Pyx_DECREF_SET(__pyx_t_1, function);
5099  __pyx_t_5 = 1;
5100  }
5101  }
5102  #if CYTHON_FAST_PYCALL
5103  if (PyFunction_Check(__pyx_t_1)) {
5104  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_3};
5105  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
5106  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5107  __Pyx_GOTREF(__pyx_t_2);
5108  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5109  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5110  } else
5111  #endif
5112  #if CYTHON_FAST_PYCCALL
5113  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
5114  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_3};
5115  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
5116  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5117  __Pyx_GOTREF(__pyx_t_2);
5118  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5119  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5120  } else
5121  #endif
5122  {
5123  __pyx_t_8 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error)
5124  __Pyx_GOTREF(__pyx_t_8);
5125  if (__pyx_t_4) {
5126  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
5127  }
5128  __Pyx_GIVEREF(__pyx_t_6);
5129  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_6);
5130  __Pyx_GIVEREF(__pyx_t_3);
5131  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_t_3);
5132  __pyx_t_6 = 0;
5133  __pyx_t_3 = 0;
5134  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
5135  __Pyx_GOTREF(__pyx_t_2);
5136  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5137  }
5138  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5139  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_fastsinh_test); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error)
5140  __Pyx_GOTREF(__pyx_t_8);
5141  __pyx_t_3 = NULL;
5142  __pyx_t_5 = 0;
5143  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
5144  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
5145  if (likely(__pyx_t_3)) {
5146  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
5147  __Pyx_INCREF(__pyx_t_3);
5148  __Pyx_INCREF(function);
5149  __Pyx_DECREF_SET(__pyx_t_8, function);
5150  __pyx_t_5 = 1;
5151  }
5152  }
5153  #if CYTHON_FAST_PYCALL
5154  if (PyFunction_Check(__pyx_t_8)) {
5155  PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5156  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5157  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5158  __Pyx_GOTREF(__pyx_t_1);
5159  } else
5160  #endif
5161  #if CYTHON_FAST_PYCCALL
5162  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
5163  PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5164  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5165  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5166  __Pyx_GOTREF(__pyx_t_1);
5167  } else
5168  #endif
5169  {
5170  __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 136, __pyx_L1_error)
5171  __Pyx_GOTREF(__pyx_t_6);
5172  if (__pyx_t_3) {
5173  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
5174  }
5175  __Pyx_INCREF(__pyx_v_k);
5176  __Pyx_GIVEREF(__pyx_v_k);
5177  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_k);
5178  __Pyx_INCREF(__pyx_v_Z);
5179  __Pyx_GIVEREF(__pyx_v_Z);
5180  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_Z);
5181  __Pyx_INCREF(__pyx_v_fast);
5182  __Pyx_GIVEREF(__pyx_v_fast);
5183  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_fast);
5184  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5185  __Pyx_GOTREF(__pyx_t_1);
5186  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5187  }
5188  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5189  __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 136, __pyx_L1_error)
5190  __Pyx_GOTREF(__pyx_t_8);
5191  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5192  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5193  __pyx_r = __pyx_t_8;
5194  __pyx_t_8 = 0;
5195  goto __pyx_L0;
5196 
5197  /* "WaveTools.py":135
5198  *
5199  * """
5200  * if (Z > old_div(-d,2.)): # <<<<<<<<<<<<<<
5201  * return old_div(fastcosh_test(k,Z,fast), np.tanh(k*d)) + fastsinh_test(k,Z,fast)
5202  * else:
5203  */
5204  }
5205 
5206  /* "WaveTools.py":138
5207  * return old_div(fastcosh_test(k,Z,fast), np.tanh(k*d)) + fastsinh_test(k,Z,fast)
5208  * else:
5209  * return 0. # <<<<<<<<<<<<<<
5210  *
5211  * def sinhkzd_test(k,Z,d,fast=True):
5212  */
5213  /*else*/ {
5214  __Pyx_XDECREF(__pyx_r);
5215  __Pyx_INCREF(__pyx_float_0_);
5216  __pyx_r = __pyx_float_0_;
5217  goto __pyx_L0;
5218  }
5219 
5220  /* "WaveTools.py":118
5221  *
5222  *
5223  * def coshkzd_test(k,Z,d, fast=True): # <<<<<<<<<<<<<<
5224  * """Calculation of u horizontal profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
5225  * and hyp trig relation cosh(a+b) = cosha*coshb+sinha*sinhb
5226  */
5227 
5228  /* function exit code */
5229  __pyx_L1_error:;
5230  __Pyx_XDECREF(__pyx_t_1);
5231  __Pyx_XDECREF(__pyx_t_2);
5232  __Pyx_XDECREF(__pyx_t_3);
5233  __Pyx_XDECREF(__pyx_t_4);
5234  __Pyx_XDECREF(__pyx_t_6);
5235  __Pyx_XDECREF(__pyx_t_8);
5236  __Pyx_XDECREF(__pyx_t_9);
5237  __Pyx_AddTraceback("WaveTools.coshkzd_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
5238  __pyx_r = NULL;
5239  __pyx_L0:;
5240  __Pyx_XGIVEREF(__pyx_r);
5241  __Pyx_RefNannyFinishContext();
5242  return __pyx_r;
5243 }
5244 
5245 /* "WaveTools.py":140
5246  * return 0.
5247  *
5248  * def sinhkzd_test(k,Z,d,fast=True): # <<<<<<<<<<<<<<
5249  * """Calculation of v vertical profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
5250  * and hyp trig relation sinh(a+b) = sinha*coshb+cosha*sinhb
5251  */
5252 
5253 /* Python wrapper */
5254 static PyObject *__pyx_pw_9WaveTools_9sinhkzd_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5255 static char __pyx_doc_9WaveTools_8sinhkzd_test[] = "Calculation of v vertical profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons\n and hyp trig relation sinh(a+b) = sinha*coshb+cosha*sinhb\n Parameters\n ----------\n ----------\n k : double\n Wavenumber\n Z : double\n Z coordinate\n d : double\n depth\n Returns\n --------\n sinh(k*(z+d))/sinh(kd) for Z>-d/2, 0 otherwise\n\n ";
5256 static PyMethodDef __pyx_mdef_9WaveTools_9sinhkzd_test = {"sinhkzd_test", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_9sinhkzd_test, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_8sinhkzd_test};
5257 static PyObject *__pyx_pw_9WaveTools_9sinhkzd_test(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5258  PyObject *__pyx_v_k = 0;
5259  PyObject *__pyx_v_Z = 0;
5260  PyObject *__pyx_v_d = 0;
5261  PyObject *__pyx_v_fast = 0;
5262  int __pyx_lineno = 0;
5263  const char *__pyx_filename = NULL;
5264  int __pyx_clineno = 0;
5265  PyObject *__pyx_r = 0;
5266  __Pyx_RefNannyDeclarations
5267  __Pyx_RefNannySetupContext("sinhkzd_test (wrapper)", 0);
5268  {
5269  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_Z,&__pyx_n_s_d,&__pyx_n_s_fast,0};
5270  PyObject* values[4] = {0,0,0,0};
5271  values[3] = ((PyObject *)((PyObject *)Py_True));
5272  if (unlikely(__pyx_kwds)) {
5273  Py_ssize_t kw_args;
5274  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5275  switch (pos_args) {
5276  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5277  CYTHON_FALLTHROUGH;
5278  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5279  CYTHON_FALLTHROUGH;
5280  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5281  CYTHON_FALLTHROUGH;
5282  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5283  CYTHON_FALLTHROUGH;
5284  case 0: break;
5285  default: goto __pyx_L5_argtuple_error;
5286  }
5287  kw_args = PyDict_Size(__pyx_kwds);
5288  switch (pos_args) {
5289  case 0:
5290  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
5291  else goto __pyx_L5_argtuple_error;
5292  CYTHON_FALLTHROUGH;
5293  case 1:
5294  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Z)) != 0)) kw_args--;
5295  else {
5296  __Pyx_RaiseArgtupleInvalid("sinhkzd_test", 0, 3, 4, 1); __PYX_ERR(0, 140, __pyx_L3_error)
5297  }
5298  CYTHON_FALLTHROUGH;
5299  case 2:
5300  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
5301  else {
5302  __Pyx_RaiseArgtupleInvalid("sinhkzd_test", 0, 3, 4, 2); __PYX_ERR(0, 140, __pyx_L3_error)
5303  }
5304  CYTHON_FALLTHROUGH;
5305  case 3:
5306  if (kw_args > 0) {
5307  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
5308  if (value) { values[3] = value; kw_args--; }
5309  }
5310  }
5311  if (unlikely(kw_args > 0)) {
5312  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sinhkzd_test") < 0)) __PYX_ERR(0, 140, __pyx_L3_error)
5313  }
5314  } else {
5315  switch (PyTuple_GET_SIZE(__pyx_args)) {
5316  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5317  CYTHON_FALLTHROUGH;
5318  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5319  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5320  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5321  break;
5322  default: goto __pyx_L5_argtuple_error;
5323  }
5324  }
5325  __pyx_v_k = values[0];
5326  __pyx_v_Z = values[1];
5327  __pyx_v_d = values[2];
5328  __pyx_v_fast = values[3];
5329  }
5330  goto __pyx_L4_argument_unpacking_done;
5331  __pyx_L5_argtuple_error:;
5332  __Pyx_RaiseArgtupleInvalid("sinhkzd_test", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 140, __pyx_L3_error)
5333  __pyx_L3_error:;
5334  __Pyx_AddTraceback("WaveTools.sinhkzd_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
5335  __Pyx_RefNannyFinishContext();
5336  return NULL;
5337  __pyx_L4_argument_unpacking_done:;
5338  __pyx_r = __pyx_pf_9WaveTools_8sinhkzd_test(__pyx_self, __pyx_v_k, __pyx_v_Z, __pyx_v_d, __pyx_v_fast);
5339 
5340  /* function exit code */
5341  __Pyx_RefNannyFinishContext();
5342  return __pyx_r;
5343 }
5344 
5345 static PyObject *__pyx_pf_9WaveTools_8sinhkzd_test(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_k, PyObject *__pyx_v_Z, PyObject *__pyx_v_d, PyObject *__pyx_v_fast) {
5346  PyObject *__pyx_r = NULL;
5347  __Pyx_RefNannyDeclarations
5348  PyObject *__pyx_t_1 = NULL;
5349  PyObject *__pyx_t_2 = NULL;
5350  PyObject *__pyx_t_3 = NULL;
5351  PyObject *__pyx_t_4 = NULL;
5352  int __pyx_t_5;
5353  PyObject *__pyx_t_6 = NULL;
5354  int __pyx_t_7;
5355  PyObject *__pyx_t_8 = NULL;
5356  PyObject *__pyx_t_9 = NULL;
5357  PyObject *__pyx_t_10 = NULL;
5358  int __pyx_lineno = 0;
5359  const char *__pyx_filename = NULL;
5360  int __pyx_clineno = 0;
5361  __Pyx_RefNannySetupContext("sinhkzd_test", 0);
5362 
5363  /* "WaveTools.py":158
5364  * """
5365  *
5366  * if (Z> old_div(-d,2.)): # <<<<<<<<<<<<<<
5367  * return fastcosh_test(k,Z,fast) + old_div(fastsinh_test(k,Z,fast), np.tanh(k*d))
5368  * else:
5369  */
5370  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error)
5371  __Pyx_GOTREF(__pyx_t_2);
5372  __pyx_t_3 = PyNumber_Negative(__pyx_v_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
5373  __Pyx_GOTREF(__pyx_t_3);
5374  __pyx_t_4 = NULL;
5375  __pyx_t_5 = 0;
5376  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
5377  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
5378  if (likely(__pyx_t_4)) {
5379  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5380  __Pyx_INCREF(__pyx_t_4);
5381  __Pyx_INCREF(function);
5382  __Pyx_DECREF_SET(__pyx_t_2, function);
5383  __pyx_t_5 = 1;
5384  }
5385  }
5386  #if CYTHON_FAST_PYCALL
5387  if (PyFunction_Check(__pyx_t_2)) {
5388  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_float_2_};
5389  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
5390  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5391  __Pyx_GOTREF(__pyx_t_1);
5392  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5393  } else
5394  #endif
5395  #if CYTHON_FAST_PYCCALL
5396  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5397  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_float_2_};
5398  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
5399  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5400  __Pyx_GOTREF(__pyx_t_1);
5401  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5402  } else
5403  #endif
5404  {
5405  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 158, __pyx_L1_error)
5406  __Pyx_GOTREF(__pyx_t_6);
5407  if (__pyx_t_4) {
5408  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
5409  }
5410  __Pyx_GIVEREF(__pyx_t_3);
5411  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
5412  __Pyx_INCREF(__pyx_float_2_);
5413  __Pyx_GIVEREF(__pyx_float_2_);
5414  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_float_2_);
5415  __pyx_t_3 = 0;
5416  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
5417  __Pyx_GOTREF(__pyx_t_1);
5418  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5419  }
5420  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5421  __pyx_t_2 = PyObject_RichCompare(__pyx_v_Z, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error)
5422  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5423  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 158, __pyx_L1_error)
5424  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5425  if (__pyx_t_7) {
5426 
5427  /* "WaveTools.py":159
5428  *
5429  * if (Z> old_div(-d,2.)):
5430  * return fastcosh_test(k,Z,fast) + old_div(fastsinh_test(k,Z,fast), np.tanh(k*d)) # <<<<<<<<<<<<<<
5431  * else:
5432  * return 0.
5433  */
5434  __Pyx_XDECREF(__pyx_r);
5435  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fastcosh_test); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
5436  __Pyx_GOTREF(__pyx_t_1);
5437  __pyx_t_6 = NULL;
5438  __pyx_t_5 = 0;
5439  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
5440  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
5441  if (likely(__pyx_t_6)) {
5442  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
5443  __Pyx_INCREF(__pyx_t_6);
5444  __Pyx_INCREF(function);
5445  __Pyx_DECREF_SET(__pyx_t_1, function);
5446  __pyx_t_5 = 1;
5447  }
5448  }
5449  #if CYTHON_FAST_PYCALL
5450  if (PyFunction_Check(__pyx_t_1)) {
5451  PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5452  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
5453  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
5454  __Pyx_GOTREF(__pyx_t_2);
5455  } else
5456  #endif
5457  #if CYTHON_FAST_PYCCALL
5458  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
5459  PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5460  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
5461  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
5462  __Pyx_GOTREF(__pyx_t_2);
5463  } else
5464  #endif
5465  {
5466  __pyx_t_3 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
5467  __Pyx_GOTREF(__pyx_t_3);
5468  if (__pyx_t_6) {
5469  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
5470  }
5471  __Pyx_INCREF(__pyx_v_k);
5472  __Pyx_GIVEREF(__pyx_v_k);
5473  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_k);
5474  __Pyx_INCREF(__pyx_v_Z);
5475  __Pyx_GIVEREF(__pyx_v_Z);
5476  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_Z);
5477  __Pyx_INCREF(__pyx_v_fast);
5478  __Pyx_GIVEREF(__pyx_v_fast);
5479  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_fast);
5480  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
5481  __Pyx_GOTREF(__pyx_t_2);
5482  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5483  }
5484  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5485  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
5486  __Pyx_GOTREF(__pyx_t_3);
5487  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fastsinh_test); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error)
5488  __Pyx_GOTREF(__pyx_t_4);
5489  __pyx_t_8 = NULL;
5490  __pyx_t_5 = 0;
5491  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
5492  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
5493  if (likely(__pyx_t_8)) {
5494  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
5495  __Pyx_INCREF(__pyx_t_8);
5496  __Pyx_INCREF(function);
5497  __Pyx_DECREF_SET(__pyx_t_4, function);
5498  __pyx_t_5 = 1;
5499  }
5500  }
5501  #if CYTHON_FAST_PYCALL
5502  if (PyFunction_Check(__pyx_t_4)) {
5503  PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5504  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error)
5505  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
5506  __Pyx_GOTREF(__pyx_t_6);
5507  } else
5508  #endif
5509  #if CYTHON_FAST_PYCCALL
5510  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
5511  PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_v_k, __pyx_v_Z, __pyx_v_fast};
5512  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error)
5513  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
5514  __Pyx_GOTREF(__pyx_t_6);
5515  } else
5516  #endif
5517  {
5518  __pyx_t_9 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 159, __pyx_L1_error)
5519  __Pyx_GOTREF(__pyx_t_9);
5520  if (__pyx_t_8) {
5521  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
5522  }
5523  __Pyx_INCREF(__pyx_v_k);
5524  __Pyx_GIVEREF(__pyx_v_k);
5525  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_v_k);
5526  __Pyx_INCREF(__pyx_v_Z);
5527  __Pyx_GIVEREF(__pyx_v_Z);
5528  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_v_Z);
5529  __Pyx_INCREF(__pyx_v_fast);
5530  __Pyx_GIVEREF(__pyx_v_fast);
5531  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_5, __pyx_v_fast);
5532  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error)
5533  __Pyx_GOTREF(__pyx_t_6);
5534  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
5535  }
5536  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5537  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 159, __pyx_L1_error)
5538  __Pyx_GOTREF(__pyx_t_9);
5539  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_tanh); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 159, __pyx_L1_error)
5540  __Pyx_GOTREF(__pyx_t_8);
5541  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
5542  __pyx_t_9 = PyNumber_Multiply(__pyx_v_k, __pyx_v_d); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 159, __pyx_L1_error)
5543  __Pyx_GOTREF(__pyx_t_9);
5544  __pyx_t_10 = NULL;
5545  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
5546  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
5547  if (likely(__pyx_t_10)) {
5548  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
5549  __Pyx_INCREF(__pyx_t_10);
5550  __Pyx_INCREF(function);
5551  __Pyx_DECREF_SET(__pyx_t_8, function);
5552  }
5553  }
5554  __pyx_t_4 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9);
5555  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
5556  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
5557  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error)
5558  __Pyx_GOTREF(__pyx_t_4);
5559  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5560  __pyx_t_8 = NULL;
5561  __pyx_t_5 = 0;
5562  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
5563  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
5564  if (likely(__pyx_t_8)) {
5565  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5566  __Pyx_INCREF(__pyx_t_8);
5567  __Pyx_INCREF(function);
5568  __Pyx_DECREF_SET(__pyx_t_3, function);
5569  __pyx_t_5 = 1;
5570  }
5571  }
5572  #if CYTHON_FAST_PYCALL
5573  if (PyFunction_Check(__pyx_t_3)) {
5574  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_4};
5575  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
5576  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
5577  __Pyx_GOTREF(__pyx_t_1);
5578  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5579  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5580  } else
5581  #endif
5582  #if CYTHON_FAST_PYCCALL
5583  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
5584  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_4};
5585  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
5586  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
5587  __Pyx_GOTREF(__pyx_t_1);
5588  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5589  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5590  } else
5591  #endif
5592  {
5593  __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 159, __pyx_L1_error)
5594  __Pyx_GOTREF(__pyx_t_9);
5595  if (__pyx_t_8) {
5596  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
5597  }
5598  __Pyx_GIVEREF(__pyx_t_6);
5599  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_6);
5600  __Pyx_GIVEREF(__pyx_t_4);
5601  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_4);
5602  __pyx_t_6 = 0;
5603  __pyx_t_4 = 0;
5604  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
5605  __Pyx_GOTREF(__pyx_t_1);
5606  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
5607  }
5608  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5609  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
5610  __Pyx_GOTREF(__pyx_t_3);
5611  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5613  __pyx_r = __pyx_t_3;
5614  __pyx_t_3 = 0;
5615  goto __pyx_L0;
5616 
5617  /* "WaveTools.py":158
5618  * """
5619  *
5620  * if (Z> old_div(-d,2.)): # <<<<<<<<<<<<<<
5621  * return fastcosh_test(k,Z,fast) + old_div(fastsinh_test(k,Z,fast), np.tanh(k*d))
5622  * else:
5623  */
5624  }
5625 
5626  /* "WaveTools.py":161
5627  * return fastcosh_test(k,Z,fast) + old_div(fastsinh_test(k,Z,fast), np.tanh(k*d))
5628  * else:
5629  * return 0. # <<<<<<<<<<<<<<
5630  *
5631  * def loadExistingFunction(funcName, validFunctions):
5632  */
5633  /*else*/ {
5634  __Pyx_XDECREF(__pyx_r);
5635  __Pyx_INCREF(__pyx_float_0_);
5636  __pyx_r = __pyx_float_0_;
5637  goto __pyx_L0;
5638  }
5639 
5640  /* "WaveTools.py":140
5641  * return 0.
5642  *
5643  * def sinhkzd_test(k,Z,d,fast=True): # <<<<<<<<<<<<<<
5644  * """Calculation of v vertical profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
5645  * and hyp trig relation sinh(a+b) = sinha*coshb+cosha*sinhb
5646  */
5647 
5648  /* function exit code */
5649  __pyx_L1_error:;
5650  __Pyx_XDECREF(__pyx_t_1);
5651  __Pyx_XDECREF(__pyx_t_2);
5652  __Pyx_XDECREF(__pyx_t_3);
5653  __Pyx_XDECREF(__pyx_t_4);
5654  __Pyx_XDECREF(__pyx_t_6);
5655  __Pyx_XDECREF(__pyx_t_8);
5656  __Pyx_XDECREF(__pyx_t_9);
5657  __Pyx_XDECREF(__pyx_t_10);
5658  __Pyx_AddTraceback("WaveTools.sinhkzd_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
5659  __pyx_r = NULL;
5660  __pyx_L0:;
5661  __Pyx_XGIVEREF(__pyx_r);
5662  __Pyx_RefNannyFinishContext();
5663  return __pyx_r;
5664 }
5665 
5666 /* "WaveTools.py":163
5667  * return 0.
5668  *
5669  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
5670  * """Checks if a function name is known function and returns it
5671  *
5672  */
5673 
5674 /* Python wrapper */
5675 static PyObject *__pyx_pw_9WaveTools_11loadExistingFunction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5676 static char __pyx_doc_9WaveTools_10loadExistingFunction[] = "Checks if a function name is known function and returns it\n\n Checks if a function name is present in a list of functions.\n If True, the function is returned. If False, raises SystemExit.\n\n Parameters\n ----------\n funcName : string\n Function name\n validFunctions : List[function]\n List of valid functions (list of objects)\n\n Returns\n --------\n function\n\n Raises\n ---------\n SystemExit\n\n\n ";
5677 static PyMethodDef __pyx_mdef_9WaveTools_11loadExistingFunction = {"loadExistingFunction", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11loadExistingFunction, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10loadExistingFunction};
5678 static PyObject *__pyx_pw_9WaveTools_11loadExistingFunction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5679  PyObject *__pyx_v_funcName = 0;
5680  PyObject *__pyx_v_validFunctions = 0;
5681  int __pyx_lineno = 0;
5682  const char *__pyx_filename = NULL;
5683  int __pyx_clineno = 0;
5684  PyObject *__pyx_r = 0;
5685  __Pyx_RefNannyDeclarations
5686  __Pyx_RefNannySetupContext("loadExistingFunction (wrapper)", 0);
5687  {
5688  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_funcName,&__pyx_n_s_validFunctions,0};
5689  PyObject* values[2] = {0,0};
5690  if (unlikely(__pyx_kwds)) {
5691  Py_ssize_t kw_args;
5692  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5693  switch (pos_args) {
5694  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5695  CYTHON_FALLTHROUGH;
5696  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5697  CYTHON_FALLTHROUGH;
5698  case 0: break;
5699  default: goto __pyx_L5_argtuple_error;
5700  }
5701  kw_args = PyDict_Size(__pyx_kwds);
5702  switch (pos_args) {
5703  case 0:
5704  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_funcName)) != 0)) kw_args--;
5705  else goto __pyx_L5_argtuple_error;
5706  CYTHON_FALLTHROUGH;
5707  case 1:
5708  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_validFunctions)) != 0)) kw_args--;
5709  else {
5710  __Pyx_RaiseArgtupleInvalid("loadExistingFunction", 1, 2, 2, 1); __PYX_ERR(0, 163, __pyx_L3_error)
5711  }
5712  }
5713  if (unlikely(kw_args > 0)) {
5714  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "loadExistingFunction") < 0)) __PYX_ERR(0, 163, __pyx_L3_error)
5715  }
5716  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
5717  goto __pyx_L5_argtuple_error;
5718  } else {
5719  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5720  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5721  }
5722  __pyx_v_funcName = values[0];
5723  __pyx_v_validFunctions = values[1];
5724  }
5725  goto __pyx_L4_argument_unpacking_done;
5726  __pyx_L5_argtuple_error:;
5727  __Pyx_RaiseArgtupleInvalid("loadExistingFunction", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 163, __pyx_L3_error)
5728  __pyx_L3_error:;
5729  __Pyx_AddTraceback("WaveTools.loadExistingFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
5730  __Pyx_RefNannyFinishContext();
5731  return NULL;
5732  __pyx_L4_argument_unpacking_done:;
5733  __pyx_r = __pyx_pf_9WaveTools_10loadExistingFunction(__pyx_self, __pyx_v_funcName, __pyx_v_validFunctions);
5734 
5735  /* function exit code */
5736  __Pyx_RefNannyFinishContext();
5737  return __pyx_r;
5738 }
5739 
5740 static PyObject *__pyx_pf_9WaveTools_10loadExistingFunction(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_funcName, PyObject *__pyx_v_validFunctions) {
5741  PyObject *__pyx_v_funcNames = NULL;
5742  PyObject *__pyx_v_func = NULL;
5743  PyObject *__pyx_v_func_ret = NULL;
5744  PyObject *__pyx_r = NULL;
5745  __Pyx_RefNannyDeclarations
5746  PyObject *__pyx_t_1 = NULL;
5747  Py_ssize_t __pyx_t_2;
5748  PyObject *(*__pyx_t_3)(PyObject *);
5749  PyObject *__pyx_t_4 = NULL;
5750  int __pyx_t_5;
5751  PyObject *__pyx_t_6 = NULL;
5752  int __pyx_t_7;
5753  int __pyx_t_8;
5754  PyObject *__pyx_t_9 = NULL;
5755  int __pyx_lineno = 0;
5756  const char *__pyx_filename = NULL;
5757  int __pyx_clineno = 0;
5758  __Pyx_RefNannySetupContext("loadExistingFunction", 0);
5759 
5760  /* "WaveTools.py":186
5761  *
5762  * """
5763  * funcNames = [] # <<<<<<<<<<<<<<
5764  * for func in validFunctions:
5765  * funcNames.append(func.__name__)
5766  */
5767  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error)
5768  __Pyx_GOTREF(__pyx_t_1);
5769  __pyx_v_funcNames = ((PyObject*)__pyx_t_1);
5770  __pyx_t_1 = 0;
5771 
5772  /* "WaveTools.py":187
5773  * """
5774  * funcNames = []
5775  * for func in validFunctions: # <<<<<<<<<<<<<<
5776  * funcNames.append(func.__name__)
5777  * if func.__name__ == funcName:
5778  */
5779  if (likely(PyList_CheckExact(__pyx_v_validFunctions)) || PyTuple_CheckExact(__pyx_v_validFunctions)) {
5780  __pyx_t_1 = __pyx_v_validFunctions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
5781  __pyx_t_3 = NULL;
5782  } else {
5783  __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_validFunctions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
5784  __Pyx_GOTREF(__pyx_t_1);
5785  __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
5786  }
5787  for (;;) {
5788  if (likely(!__pyx_t_3)) {
5789  if (likely(PyList_CheckExact(__pyx_t_1))) {
5790  if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
5791  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
5792  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 187, __pyx_L1_error)
5793  #else
5794  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
5795  __Pyx_GOTREF(__pyx_t_4);
5796  #endif
5797  } else {
5798  if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
5799  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
5800  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 187, __pyx_L1_error)
5801  #else
5802  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
5803  __Pyx_GOTREF(__pyx_t_4);
5804  #endif
5805  }
5806  } else {
5807  __pyx_t_4 = __pyx_t_3(__pyx_t_1);
5808  if (unlikely(!__pyx_t_4)) {
5809  PyObject* exc_type = PyErr_Occurred();
5810  if (exc_type) {
5811  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
5812  else __PYX_ERR(0, 187, __pyx_L1_error)
5813  }
5814  break;
5815  }
5816  __Pyx_GOTREF(__pyx_t_4);
5817  }
5818  __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_4);
5819  __pyx_t_4 = 0;
5820 
5821  /* "WaveTools.py":188
5822  * funcNames = []
5823  * for func in validFunctions:
5824  * funcNames.append(func.__name__) # <<<<<<<<<<<<<<
5825  * if func.__name__ == funcName:
5826  * func_ret = func
5827  */
5828  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_func, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error)
5829  __Pyx_GOTREF(__pyx_t_4);
5830  __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_funcNames, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 188, __pyx_L1_error)
5831  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5832 
5833  /* "WaveTools.py":189
5834  * for func in validFunctions:
5835  * funcNames.append(func.__name__)
5836  * if func.__name__ == funcName: # <<<<<<<<<<<<<<
5837  * func_ret = func
5838  * if funcName not in funcNames:
5839  */
5840  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_func, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error)
5841  __Pyx_GOTREF(__pyx_t_4);
5842  __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_funcName, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error)
5843  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5844  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 189, __pyx_L1_error)
5845  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5846  if (__pyx_t_7) {
5847 
5848  /* "WaveTools.py":190
5849  * funcNames.append(func.__name__)
5850  * if func.__name__ == funcName:
5851  * func_ret = func # <<<<<<<<<<<<<<
5852  * if funcName not in funcNames:
5853  * logEvent("ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
5854  */
5855  __Pyx_INCREF(__pyx_v_func);
5856  __Pyx_XDECREF_SET(__pyx_v_func_ret, __pyx_v_func);
5857 
5858  /* "WaveTools.py":189
5859  * for func in validFunctions:
5860  * funcNames.append(func.__name__)
5861  * if func.__name__ == funcName: # <<<<<<<<<<<<<<
5862  * func_ret = func
5863  * if funcName not in funcNames:
5864  */
5865  }
5866 
5867  /* "WaveTools.py":187
5868  * """
5869  * funcNames = []
5870  * for func in validFunctions: # <<<<<<<<<<<<<<
5871  * funcNames.append(func.__name__)
5872  * if func.__name__ == funcName:
5873  */
5874  }
5875  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5876 
5877  /* "WaveTools.py":191
5878  * if func.__name__ == funcName:
5879  * func_ret = func
5880  * if funcName not in funcNames: # <<<<<<<<<<<<<<
5881  * logEvent("ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
5882  * sys.exit(1)
5883  */
5884  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_funcName, __pyx_v_funcNames, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 191, __pyx_L1_error)
5885  __pyx_t_8 = (__pyx_t_7 != 0);
5886  if (__pyx_t_8) {
5887 
5888  /* "WaveTools.py":192
5889  * func_ret = func
5890  * if funcName not in funcNames:
5891  * logEvent("ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0) # <<<<<<<<<<<<<<
5892  * sys.exit(1)
5893  * return func_ret
5894  */
5895  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
5896  __Pyx_GOTREF(__pyx_t_1);
5897  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L1_error)
5898  __Pyx_GOTREF(__pyx_t_6);
5899  __Pyx_INCREF(__pyx_v_funcName);
5900  __Pyx_GIVEREF(__pyx_v_funcName);
5901  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_funcName);
5902  __Pyx_INCREF(__pyx_v_funcNames);
5903  __Pyx_GIVEREF(__pyx_v_funcNames);
5904  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_funcNames);
5905  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_ERROR_Wavetools_py_Wrong_functio, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error)
5906  __Pyx_GOTREF(__pyx_t_4);
5907  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5908  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L1_error)
5909  __Pyx_GOTREF(__pyx_t_6);
5910  __Pyx_GIVEREF(__pyx_t_4);
5911  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
5912  __pyx_t_4 = 0;
5913  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error)
5914  __Pyx_GOTREF(__pyx_t_4);
5915  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 192, __pyx_L1_error)
5916  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 192, __pyx_L1_error)
5917  __Pyx_GOTREF(__pyx_t_9);
5918  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5919  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5920  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5921  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
5922 
5923  /* "WaveTools.py":193
5924  * if funcName not in funcNames:
5925  * logEvent("ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
5926  * sys.exit(1) # <<<<<<<<<<<<<<
5927  * return func_ret
5928  *
5929  */
5930  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error)
5931  __Pyx_GOTREF(__pyx_t_4);
5932  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
5933  __Pyx_GOTREF(__pyx_t_6);
5934  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5935  __pyx_t_4 = NULL;
5936  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
5937  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
5938  if (likely(__pyx_t_4)) {
5939  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
5940  __Pyx_INCREF(__pyx_t_4);
5941  __Pyx_INCREF(function);
5942  __Pyx_DECREF_SET(__pyx_t_6, function);
5943  }
5944  }
5945  __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_1);
5946  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
5947  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 193, __pyx_L1_error)
5948  __Pyx_GOTREF(__pyx_t_9);
5949  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5950  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
5951 
5952  /* "WaveTools.py":191
5953  * if func.__name__ == funcName:
5954  * func_ret = func
5955  * if funcName not in funcNames: # <<<<<<<<<<<<<<
5956  * logEvent("ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
5957  * sys.exit(1)
5958  */
5959  }
5960 
5961  /* "WaveTools.py":194
5962  * logEvent("ERROR! Wavetools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
5963  * sys.exit(1)
5964  * return func_ret # <<<<<<<<<<<<<<
5965  *
5966  *
5967  */
5968  __Pyx_XDECREF(__pyx_r);
5969  if (unlikely(!__pyx_v_func_ret)) { __Pyx_RaiseUnboundLocalError("func_ret"); __PYX_ERR(0, 194, __pyx_L1_error) }
5970  __Pyx_INCREF(__pyx_v_func_ret);
5971  __pyx_r = __pyx_v_func_ret;
5972  goto __pyx_L0;
5973 
5974  /* "WaveTools.py":163
5975  * return 0.
5976  *
5977  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
5978  * """Checks if a function name is known function and returns it
5979  *
5980  */
5981 
5982  /* function exit code */
5983  __pyx_L1_error:;
5984  __Pyx_XDECREF(__pyx_t_1);
5985  __Pyx_XDECREF(__pyx_t_4);
5986  __Pyx_XDECREF(__pyx_t_6);
5987  __Pyx_XDECREF(__pyx_t_9);
5988  __Pyx_AddTraceback("WaveTools.loadExistingFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
5989  __pyx_r = NULL;
5990  __pyx_L0:;
5991  __Pyx_XDECREF(__pyx_v_funcNames);
5992  __Pyx_XDECREF(__pyx_v_func);
5993  __Pyx_XDECREF(__pyx_v_func_ret);
5994  __Pyx_XGIVEREF(__pyx_r);
5995  __Pyx_RefNannyFinishContext();
5996  return __pyx_r;
5997 }
5998 
5999 /* "WaveTools.py":198
6000  *
6001  *
6002  * def setVertDir(g): # <<<<<<<<<<<<<<
6003  * """ Returns the unit vector for the vertical direction
6004  *
6005  */
6006 
6007 /* Python wrapper */
6008 static PyObject *__pyx_pw_9WaveTools_13setVertDir(PyObject *__pyx_self, PyObject *__pyx_v_g); /*proto*/
6009 static char __pyx_doc_9WaveTools_12setVertDir[] = " Returns the unit vector for the vertical direction\n\n The vertical direction is opposite to the gravity direction\n\n Parameters\n ----------\n g : numpy.ndarray\n Gravitational acceleration vector (must have 3 components)\n\n Returns\n --------\n numpy.ndarray\n\n ";
6010 static PyMethodDef __pyx_mdef_9WaveTools_13setVertDir = {"setVertDir", (PyCFunction)__pyx_pw_9WaveTools_13setVertDir, METH_O, __pyx_doc_9WaveTools_12setVertDir};
6011 static PyObject *__pyx_pw_9WaveTools_13setVertDir(PyObject *__pyx_self, PyObject *__pyx_v_g) {
6012  PyObject *__pyx_r = 0;
6013  __Pyx_RefNannyDeclarations
6014  __Pyx_RefNannySetupContext("setVertDir (wrapper)", 0);
6015  __pyx_r = __pyx_pf_9WaveTools_12setVertDir(__pyx_self, ((PyObject *)__pyx_v_g));
6016 
6017  /* function exit code */
6018  __Pyx_RefNannyFinishContext();
6019  return __pyx_r;
6020 }
6021 
6022 static PyObject *__pyx_pf_9WaveTools_12setVertDir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_g) {
6023  PyObject *__pyx_r = NULL;
6024  __Pyx_RefNannyDeclarations
6025  PyObject *__pyx_t_1 = NULL;
6026  PyObject *__pyx_t_2 = NULL;
6027  PyObject *__pyx_t_3 = NULL;
6028  PyObject *__pyx_t_4 = NULL;
6029  PyObject *__pyx_t_5 = NULL;
6030  PyObject *__pyx_t_6 = NULL;
6031  PyObject *__pyx_t_7 = NULL;
6032  double __pyx_t_8;
6033  int __pyx_t_9;
6034  int __pyx_lineno = 0;
6035  const char *__pyx_filename = NULL;
6036  int __pyx_clineno = 0;
6037  __Pyx_RefNannySetupContext("setVertDir", 0);
6038 
6039  /* "WaveTools.py":213
6040  *
6041  * """
6042  * return -np.array(old_div(g,(sqrt(g[0]**2 + g[1]**2 + g[2]**2)))) # <<<<<<<<<<<<<<
6043  *
6044  *
6045  */
6046  __Pyx_XDECREF(__pyx_r);
6047  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
6048  __Pyx_GOTREF(__pyx_t_2);
6049  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error)
6050  __Pyx_GOTREF(__pyx_t_3);
6051  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6052  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_old_div); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error)
6053  __Pyx_GOTREF(__pyx_t_4);
6054  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error)
6055  __Pyx_GOTREF(__pyx_t_5);
6056  __pyx_t_6 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 213, __pyx_L1_error)
6057  __Pyx_GOTREF(__pyx_t_6);
6058  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6059  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error)
6060  __Pyx_GOTREF(__pyx_t_5);
6061  __pyx_t_7 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
6062  __Pyx_GOTREF(__pyx_t_7);
6063  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6064  __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error)
6065  __Pyx_GOTREF(__pyx_t_5);
6066  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6067  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6068  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
6069  __Pyx_GOTREF(__pyx_t_7);
6070  __pyx_t_6 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 213, __pyx_L1_error)
6071  __Pyx_GOTREF(__pyx_t_6);
6072  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6073  __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
6074  __Pyx_GOTREF(__pyx_t_7);
6075  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6076  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6077  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L1_error)
6078  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6079  __pyx_t_7 = PyFloat_FromDouble(sqrt(__pyx_t_8)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
6080  __Pyx_GOTREF(__pyx_t_7);
6081  __pyx_t_6 = NULL;
6082  __pyx_t_9 = 0;
6083  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
6084  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
6085  if (likely(__pyx_t_6)) {
6086  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6087  __Pyx_INCREF(__pyx_t_6);
6088  __Pyx_INCREF(function);
6089  __Pyx_DECREF_SET(__pyx_t_4, function);
6090  __pyx_t_9 = 1;
6091  }
6092  }
6093  #if CYTHON_FAST_PYCALL
6094  if (PyFunction_Check(__pyx_t_4)) {
6095  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_t_7};
6096  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
6097  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
6098  __Pyx_GOTREF(__pyx_t_2);
6099  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6100  } else
6101  #endif
6102  #if CYTHON_FAST_PYCCALL
6103  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
6104  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_t_7};
6105  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
6106  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
6107  __Pyx_GOTREF(__pyx_t_2);
6108  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6109  } else
6110  #endif
6111  {
6112  __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error)
6113  __Pyx_GOTREF(__pyx_t_5);
6114  if (__pyx_t_6) {
6115  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
6116  }
6117  __Pyx_INCREF(__pyx_v_g);
6118  __Pyx_GIVEREF(__pyx_v_g);
6119  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_v_g);
6120  __Pyx_GIVEREF(__pyx_t_7);
6121  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_7);
6122  __pyx_t_7 = 0;
6123  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
6124  __Pyx_GOTREF(__pyx_t_2);
6125  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6126  }
6127  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6128  __pyx_t_4 = NULL;
6129  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
6130  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
6131  if (likely(__pyx_t_4)) {
6132  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6133  __Pyx_INCREF(__pyx_t_4);
6134  __Pyx_INCREF(function);
6135  __Pyx_DECREF_SET(__pyx_t_3, function);
6136  }
6137  }
6138  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
6139  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6140  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6141  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error)
6142  __Pyx_GOTREF(__pyx_t_1);
6143  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6144  __pyx_t_3 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error)
6145  __Pyx_GOTREF(__pyx_t_3);
6146  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6147  __pyx_r = __pyx_t_3;
6148  __pyx_t_3 = 0;
6149  goto __pyx_L0;
6150 
6151  /* "WaveTools.py":198
6152  *
6153  *
6154  * def setVertDir(g): # <<<<<<<<<<<<<<
6155  * """ Returns the unit vector for the vertical direction
6156  *
6157  */
6158 
6159  /* function exit code */
6160  __pyx_L1_error:;
6161  __Pyx_XDECREF(__pyx_t_1);
6162  __Pyx_XDECREF(__pyx_t_2);
6163  __Pyx_XDECREF(__pyx_t_3);
6164  __Pyx_XDECREF(__pyx_t_4);
6165  __Pyx_XDECREF(__pyx_t_5);
6166  __Pyx_XDECREF(__pyx_t_6);
6167  __Pyx_XDECREF(__pyx_t_7);
6168  __Pyx_AddTraceback("WaveTools.setVertDir", __pyx_clineno, __pyx_lineno, __pyx_filename);
6169  __pyx_r = NULL;
6170  __pyx_L0:;
6171  __Pyx_XGIVEREF(__pyx_r);
6172  __Pyx_RefNannyFinishContext();
6173  return __pyx_r;
6174 }
6175 
6176 /* "WaveTools.py":216
6177  *
6178  *
6179  * def setDirVector(vector): # <<<<<<<<<<<<<<
6180  * """ Returns the direction of a vector in the form of a unit vector
6181  *
6182  */
6183 
6184 /* Python wrapper */
6185 static PyObject *__pyx_pw_9WaveTools_15setDirVector(PyObject *__pyx_self, PyObject *__pyx_v_vector); /*proto*/
6186 static char __pyx_doc_9WaveTools_14setDirVector[] = " Returns the direction of a vector in the form of a unit vector\n\n Parameters\n ----------\n vector : numpy.ndarray\n 1D numpy array with three components\n\n Returns\n --------\n numpy.ndarray\n\n ";
6187 static PyMethodDef __pyx_mdef_9WaveTools_15setDirVector = {"setDirVector", (PyCFunction)__pyx_pw_9WaveTools_15setDirVector, METH_O, __pyx_doc_9WaveTools_14setDirVector};
6188 static PyObject *__pyx_pw_9WaveTools_15setDirVector(PyObject *__pyx_self, PyObject *__pyx_v_vector) {
6189  PyObject *__pyx_r = 0;
6190  __Pyx_RefNannyDeclarations
6191  __Pyx_RefNannySetupContext("setDirVector (wrapper)", 0);
6192  __pyx_r = __pyx_pf_9WaveTools_14setDirVector(__pyx_self, ((PyObject *)__pyx_v_vector));
6193 
6194  /* function exit code */
6195  __Pyx_RefNannyFinishContext();
6196  return __pyx_r;
6197 }
6198 
6199 static PyObject *__pyx_pf_9WaveTools_14setDirVector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vector) {
6200  PyObject *__pyx_r = NULL;
6201  __Pyx_RefNannyDeclarations
6202  PyObject *__pyx_t_1 = NULL;
6203  PyObject *__pyx_t_2 = NULL;
6204  PyObject *__pyx_t_3 = NULL;
6205  PyObject *__pyx_t_4 = NULL;
6206  PyObject *__pyx_t_5 = NULL;
6207  double __pyx_t_6;
6208  int __pyx_t_7;
6209  int __pyx_lineno = 0;
6210  const char *__pyx_filename = NULL;
6211  int __pyx_clineno = 0;
6212  __Pyx_RefNannySetupContext("setDirVector", 0);
6213 
6214  /* "WaveTools.py":229
6215  *
6216  * """
6217  * return old_div(vector,(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))) # <<<<<<<<<<<<<<
6218  *
6219  * def dirCheck(v1, v2):
6220  */
6221  __Pyx_XDECREF(__pyx_r);
6222  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error)
6223  __Pyx_GOTREF(__pyx_t_2);
6224  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vector, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
6225  __Pyx_GOTREF(__pyx_t_3);
6226  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error)
6227  __Pyx_GOTREF(__pyx_t_4);
6228  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6229  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vector, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
6230  __Pyx_GOTREF(__pyx_t_3);
6231  __pyx_t_5 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
6232  __Pyx_GOTREF(__pyx_t_5);
6233  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6234  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
6235  __Pyx_GOTREF(__pyx_t_3);
6236  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6237  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6238  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_vector, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
6239  __Pyx_GOTREF(__pyx_t_5);
6240  __pyx_t_4 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error)
6241  __Pyx_GOTREF(__pyx_t_4);
6242  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6243  __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
6244  __Pyx_GOTREF(__pyx_t_5);
6245  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6246  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6247  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 229, __pyx_L1_error)
6248  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6249  __pyx_t_5 = PyFloat_FromDouble(sqrt(__pyx_t_6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
6250  __Pyx_GOTREF(__pyx_t_5);
6251  __pyx_t_4 = NULL;
6252  __pyx_t_7 = 0;
6253  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
6254  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
6255  if (likely(__pyx_t_4)) {
6256  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
6257  __Pyx_INCREF(__pyx_t_4);
6258  __Pyx_INCREF(function);
6259  __Pyx_DECREF_SET(__pyx_t_2, function);
6260  __pyx_t_7 = 1;
6261  }
6262  }
6263  #if CYTHON_FAST_PYCALL
6264  if (PyFunction_Check(__pyx_t_2)) {
6265  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_vector, __pyx_t_5};
6266  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
6267  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6268  __Pyx_GOTREF(__pyx_t_1);
6269  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6270  } else
6271  #endif
6272  #if CYTHON_FAST_PYCCALL
6273  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
6274  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_vector, __pyx_t_5};
6275  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
6276  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6277  __Pyx_GOTREF(__pyx_t_1);
6278  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6279  } else
6280  #endif
6281  {
6282  __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
6283  __Pyx_GOTREF(__pyx_t_3);
6284  if (__pyx_t_4) {
6285  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
6286  }
6287  __Pyx_INCREF(__pyx_v_vector);
6288  __Pyx_GIVEREF(__pyx_v_vector);
6289  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_v_vector);
6290  __Pyx_GIVEREF(__pyx_t_5);
6291  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_5);
6292  __pyx_t_5 = 0;
6293  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
6294  __Pyx_GOTREF(__pyx_t_1);
6295  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6296  }
6297  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6298  __pyx_r = __pyx_t_1;
6299  __pyx_t_1 = 0;
6300  goto __pyx_L0;
6301 
6302  /* "WaveTools.py":216
6303  *
6304  *
6305  * def setDirVector(vector): # <<<<<<<<<<<<<<
6306  * """ Returns the direction of a vector in the form of a unit vector
6307  *
6308  */
6309 
6310  /* function exit code */
6311  __pyx_L1_error:;
6312  __Pyx_XDECREF(__pyx_t_1);
6313  __Pyx_XDECREF(__pyx_t_2);
6314  __Pyx_XDECREF(__pyx_t_3);
6315  __Pyx_XDECREF(__pyx_t_4);
6316  __Pyx_XDECREF(__pyx_t_5);
6317  __Pyx_AddTraceback("WaveTools.setDirVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
6318  __pyx_r = NULL;
6319  __pyx_L0:;
6320  __Pyx_XGIVEREF(__pyx_r);
6321  __Pyx_RefNannyFinishContext();
6322  return __pyx_r;
6323 }
6324 
6325 /* "WaveTools.py":231
6326  * return old_div(vector,(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2)))
6327  *
6328  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
6329  * """ Checks if two vectors are vertical raises SystemError if True
6330  *
6331  */
6332 
6333 /* Python wrapper */
6334 static PyObject *__pyx_pw_9WaveTools_17dirCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6335 static char __pyx_doc_9WaveTools_16dirCheck[] = " Checks if two vectors are vertical raises SystemError if True\n\n Parameters\n ----------\n v1 : numpy.ndarray\n 1st vector with three components\n\n v2 : numpy.ndarray\n 2nd vector with three components\n\n Returns\n --------\n None\n\n Raises\n ---------\n SystemExit\n\n ";
6336 static PyMethodDef __pyx_mdef_9WaveTools_17dirCheck = {"dirCheck", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_17dirCheck, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16dirCheck};
6337 static PyObject *__pyx_pw_9WaveTools_17dirCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6338  PyObject *__pyx_v_v1 = 0;
6339  PyObject *__pyx_v_v2 = 0;
6340  int __pyx_lineno = 0;
6341  const char *__pyx_filename = NULL;
6342  int __pyx_clineno = 0;
6343  PyObject *__pyx_r = 0;
6344  __Pyx_RefNannyDeclarations
6345  __Pyx_RefNannySetupContext("dirCheck (wrapper)", 0);
6346  {
6347  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v1,&__pyx_n_s_v2,0};
6348  PyObject* values[2] = {0,0};
6349  if (unlikely(__pyx_kwds)) {
6350  Py_ssize_t kw_args;
6351  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6352  switch (pos_args) {
6353  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6354  CYTHON_FALLTHROUGH;
6355  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6356  CYTHON_FALLTHROUGH;
6357  case 0: break;
6358  default: goto __pyx_L5_argtuple_error;
6359  }
6360  kw_args = PyDict_Size(__pyx_kwds);
6361  switch (pos_args) {
6362  case 0:
6363  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_v1)) != 0)) kw_args--;
6364  else goto __pyx_L5_argtuple_error;
6365  CYTHON_FALLTHROUGH;
6366  case 1:
6367  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_v2)) != 0)) kw_args--;
6368  else {
6369  __Pyx_RaiseArgtupleInvalid("dirCheck", 1, 2, 2, 1); __PYX_ERR(0, 231, __pyx_L3_error)
6370  }
6371  }
6372  if (unlikely(kw_args > 0)) {
6373  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dirCheck") < 0)) __PYX_ERR(0, 231, __pyx_L3_error)
6374  }
6375  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
6376  goto __pyx_L5_argtuple_error;
6377  } else {
6378  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6379  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6380  }
6381  __pyx_v_v1 = values[0];
6382  __pyx_v_v2 = values[1];
6383  }
6384  goto __pyx_L4_argument_unpacking_done;
6385  __pyx_L5_argtuple_error:;
6386  __Pyx_RaiseArgtupleInvalid("dirCheck", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 231, __pyx_L3_error)
6387  __pyx_L3_error:;
6388  __Pyx_AddTraceback("WaveTools.dirCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
6389  __Pyx_RefNannyFinishContext();
6390  return NULL;
6391  __pyx_L4_argument_unpacking_done:;
6392  __pyx_r = __pyx_pf_9WaveTools_16dirCheck(__pyx_self, __pyx_v_v1, __pyx_v_v2);
6393 
6394  /* function exit code */
6395  __Pyx_RefNannyFinishContext();
6396  return __pyx_r;
6397 }
6398 
6399 static PyObject *__pyx_pf_9WaveTools_16dirCheck(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v1, PyObject *__pyx_v_v2) {
6400  PyObject *__pyx_v_dircheck = NULL;
6401  PyObject *__pyx_r = NULL;
6402  __Pyx_RefNannyDeclarations
6403  PyObject *__pyx_t_1 = NULL;
6404  PyObject *__pyx_t_2 = NULL;
6405  PyObject *__pyx_t_3 = NULL;
6406  PyObject *__pyx_t_4 = NULL;
6407  int __pyx_t_5;
6408  int __pyx_lineno = 0;
6409  const char *__pyx_filename = NULL;
6410  int __pyx_clineno = 0;
6411  __Pyx_RefNannySetupContext("dirCheck", 0);
6412 
6413  /* "WaveTools.py":251
6414  *
6415  * """
6416  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]) # <<<<<<<<<<<<<<
6417  * #print self.dircheck
6418  * if dircheck > 1e-10:
6419  */
6420  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
6421  __Pyx_GOTREF(__pyx_t_1);
6422  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
6423  __Pyx_GOTREF(__pyx_t_2);
6424  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error)
6425  __Pyx_GOTREF(__pyx_t_3);
6426  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6427  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6428  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
6429  __Pyx_GOTREF(__pyx_t_2);
6430  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
6431  __Pyx_GOTREF(__pyx_t_1);
6432  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 251, __pyx_L1_error)
6433  __Pyx_GOTREF(__pyx_t_4);
6434  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6435  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6436  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
6437  __Pyx_GOTREF(__pyx_t_1);
6438  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6439  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6440  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_v1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 251, __pyx_L1_error)
6441  __Pyx_GOTREF(__pyx_t_4);
6442  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_v2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error)
6443  __Pyx_GOTREF(__pyx_t_3);
6444  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
6445  __Pyx_GOTREF(__pyx_t_2);
6446  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6447  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6448  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error)
6449  __Pyx_GOTREF(__pyx_t_3);
6450  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6451  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6452  __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
6453  __Pyx_GOTREF(__pyx_t_2);
6454  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6455  __pyx_v_dircheck = __pyx_t_2;
6456  __pyx_t_2 = 0;
6457 
6458  /* "WaveTools.py":253
6459  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
6460  * #print self.dircheck
6461  * if dircheck > 1e-10: # <<<<<<<<<<<<<<
6462  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
6463  * return sys.exit(1)
6464  */
6465  __pyx_t_2 = PyObject_RichCompare(__pyx_v_dircheck, __pyx_float_1eneg_10, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 253, __pyx_L1_error)
6466  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 253, __pyx_L1_error)
6467  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6468  if (__pyx_t_5) {
6469 
6470  /* "WaveTools.py":254
6471  * #print self.dircheck
6472  * if dircheck > 1e-10:
6473  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0) # <<<<<<<<<<<<<<
6474  * return sys.exit(1)
6475  * else:
6476  */
6477  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
6478  __Pyx_GOTREF(__pyx_t_2);
6479  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error)
6480  __Pyx_GOTREF(__pyx_t_3);
6481  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
6482  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple_, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
6483  __Pyx_GOTREF(__pyx_t_1);
6484  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6485  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6486  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6487 
6488  /* "WaveTools.py":255
6489  * if dircheck > 1e-10:
6490  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
6491  * return sys.exit(1) # <<<<<<<<<<<<<<
6492  * else:
6493  * return None
6494  */
6495  __Pyx_XDECREF(__pyx_r);
6496  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 255, __pyx_L1_error)
6497  __Pyx_GOTREF(__pyx_t_3);
6498  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error)
6499  __Pyx_GOTREF(__pyx_t_2);
6500  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6501  __pyx_t_3 = NULL;
6502  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
6503  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
6504  if (likely(__pyx_t_3)) {
6505  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
6506  __Pyx_INCREF(__pyx_t_3);
6507  __Pyx_INCREF(function);
6508  __Pyx_DECREF_SET(__pyx_t_2, function);
6509  }
6510  }
6511  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_1);
6512  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6513  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error)
6514  __Pyx_GOTREF(__pyx_t_1);
6515  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6516  __pyx_r = __pyx_t_1;
6517  __pyx_t_1 = 0;
6518  goto __pyx_L0;
6519 
6520  /* "WaveTools.py":253
6521  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
6522  * #print self.dircheck
6523  * if dircheck > 1e-10: # <<<<<<<<<<<<<<
6524  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
6525  * return sys.exit(1)
6526  */
6527  }
6528 
6529  /* "WaveTools.py":257
6530  * return sys.exit(1)
6531  * else:
6532  * return None # <<<<<<<<<<<<<<
6533  * def reduceToIntervals(fi,df):
6534  * """ Prepares the x-axis array with N elements for numerical integration
6535  */
6536  /*else*/ {
6537  __Pyx_XDECREF(__pyx_r);
6538  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6539  goto __pyx_L0;
6540  }
6541 
6542  /* "WaveTools.py":231
6543  * return old_div(vector,(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2)))
6544  *
6545  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
6546  * """ Checks if two vectors are vertical raises SystemError if True
6547  *
6548  */
6549 
6550  /* function exit code */
6551  __pyx_L1_error:;
6552  __Pyx_XDECREF(__pyx_t_1);
6553  __Pyx_XDECREF(__pyx_t_2);
6554  __Pyx_XDECREF(__pyx_t_3);
6555  __Pyx_XDECREF(__pyx_t_4);
6556  __Pyx_AddTraceback("WaveTools.dirCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
6557  __pyx_r = NULL;
6558  __pyx_L0:;
6559  __Pyx_XDECREF(__pyx_v_dircheck);
6560  __Pyx_XGIVEREF(__pyx_r);
6561  __Pyx_RefNannyFinishContext();
6562  return __pyx_r;
6563 }
6564 
6565 /* "WaveTools.py":258
6566  * else:
6567  * return None
6568  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
6569  * """ Prepares the x-axis array with N elements for numerical integration
6570  *
6571  */
6572 
6573 /* Python wrapper */
6574 static PyObject *__pyx_pw_9WaveTools_19reduceToIntervals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6575 static char __pyx_doc_9WaveTools_18reduceToIntervals[] = " Prepares the x-axis array with N elements for numerical integration\n\n Integration is performed along he x- axis. If\n fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array\n [a1, 0.5(a1+a2), 0.5(a2+a3),...0.5(a_N-1+a_N), a_N].\n Input array must have constant step\n\n Parameters\n ----------\n fi : numpy.ndarray\n x- array with N elements\n df : float\n Constant step of array\n Returns\n --------\n numpy.ndarray\n\n ";
6576 static PyMethodDef __pyx_mdef_9WaveTools_19reduceToIntervals = {"reduceToIntervals", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_19reduceToIntervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18reduceToIntervals};
6577 static PyObject *__pyx_pw_9WaveTools_19reduceToIntervals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6578  PyObject *__pyx_v_fi = 0;
6579  PyObject *__pyx_v_df = 0;
6580  int __pyx_lineno = 0;
6581  const char *__pyx_filename = NULL;
6582  int __pyx_clineno = 0;
6583  PyObject *__pyx_r = 0;
6584  __Pyx_RefNannyDeclarations
6585  __Pyx_RefNannySetupContext("reduceToIntervals (wrapper)", 0);
6586  {
6587  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fi,&__pyx_n_s_df,0};
6588  PyObject* values[2] = {0,0};
6589  if (unlikely(__pyx_kwds)) {
6590  Py_ssize_t kw_args;
6591  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6592  switch (pos_args) {
6593  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6594  CYTHON_FALLTHROUGH;
6595  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6596  CYTHON_FALLTHROUGH;
6597  case 0: break;
6598  default: goto __pyx_L5_argtuple_error;
6599  }
6600  kw_args = PyDict_Size(__pyx_kwds);
6601  switch (pos_args) {
6602  case 0:
6603  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
6604  else goto __pyx_L5_argtuple_error;
6605  CYTHON_FALLTHROUGH;
6606  case 1:
6607  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_df)) != 0)) kw_args--;
6608  else {
6609  __Pyx_RaiseArgtupleInvalid("reduceToIntervals", 1, 2, 2, 1); __PYX_ERR(0, 258, __pyx_L3_error)
6610  }
6611  }
6612  if (unlikely(kw_args > 0)) {
6613  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reduceToIntervals") < 0)) __PYX_ERR(0, 258, __pyx_L3_error)
6614  }
6615  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
6616  goto __pyx_L5_argtuple_error;
6617  } else {
6618  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6619  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6620  }
6621  __pyx_v_fi = values[0];
6622  __pyx_v_df = values[1];
6623  }
6624  goto __pyx_L4_argument_unpacking_done;
6625  __pyx_L5_argtuple_error:;
6626  __Pyx_RaiseArgtupleInvalid("reduceToIntervals", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 258, __pyx_L3_error)
6627  __pyx_L3_error:;
6628  __Pyx_AddTraceback("WaveTools.reduceToIntervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
6629  __Pyx_RefNannyFinishContext();
6630  return NULL;
6631  __pyx_L4_argument_unpacking_done:;
6632  __pyx_r = __pyx_pf_9WaveTools_18reduceToIntervals(__pyx_self, __pyx_v_fi, __pyx_v_df);
6633 
6634  /* function exit code */
6635  __Pyx_RefNannyFinishContext();
6636  return __pyx_r;
6637 }
6638 
6639 static PyObject *__pyx_pf_9WaveTools_18reduceToIntervals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fi, PyObject *__pyx_v_df) {
6640  PyObject *__pyx_v_fim_tmp = NULL;
6641  PyObject *__pyx_r = NULL;
6642  __Pyx_RefNannyDeclarations
6643  PyObject *__pyx_t_1 = NULL;
6644  PyObject *__pyx_t_2 = NULL;
6645  PyObject *__pyx_t_3 = NULL;
6646  PyObject *__pyx_t_4 = NULL;
6647  PyObject *__pyx_t_5 = NULL;
6648  PyObject *__pyx_t_6 = NULL;
6649  int __pyx_lineno = 0;
6650  const char *__pyx_filename = NULL;
6651  int __pyx_clineno = 0;
6652  __Pyx_RefNannySetupContext("reduceToIntervals", 0);
6653 
6654  /* "WaveTools.py":277
6655  *
6656  * """
6657  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist() # <<<<<<<<<<<<<<
6658  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
6659  * def returnRectangles(a,x):
6660  */
6661  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 1, 0, NULL, NULL, &__pyx_slice__2, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
6662  __Pyx_GOTREF(__pyx_t_2);
6663  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 0, -1L, NULL, NULL, &__pyx_slice__3, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 277, __pyx_L1_error)
6664  __Pyx_GOTREF(__pyx_t_3);
6665  __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
6666  __Pyx_GOTREF(__pyx_t_4);
6667  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6668  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6669  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 277, __pyx_L1_error)
6670  __Pyx_GOTREF(__pyx_t_3);
6671  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6672  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tolist); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
6673  __Pyx_GOTREF(__pyx_t_4);
6674  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6675  __pyx_t_3 = NULL;
6676  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
6677  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
6678  if (likely(__pyx_t_3)) {
6679  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6680  __Pyx_INCREF(__pyx_t_3);
6681  __Pyx_INCREF(function);
6682  __Pyx_DECREF_SET(__pyx_t_4, function);
6683  }
6684  }
6685  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
6686  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6687  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
6688  __Pyx_GOTREF(__pyx_t_1);
6689  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6690  __pyx_v_fim_tmp = __pyx_t_1;
6691  __pyx_t_1 = 0;
6692 
6693  /* "WaveTools.py":278
6694  * """
6695  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
6696  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df]) # <<<<<<<<<<<<<<
6697  * def returnRectangles(a,x):
6698  * """ Returns 2D discrete integral array using the rectangle method
6699  */
6700  __Pyx_XDECREF(__pyx_r);
6701  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
6702  __Pyx_GOTREF(__pyx_t_4);
6703  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error)
6704  __Pyx_GOTREF(__pyx_t_3);
6705  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6706  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fim_tmp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
6707  __Pyx_GOTREF(__pyx_t_4);
6708  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_df); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
6709  __Pyx_GOTREF(__pyx_t_2);
6710  __pyx_t_5 = PyNumber_Subtract(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error)
6711  __Pyx_GOTREF(__pyx_t_5);
6712  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6713  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6714  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
6715  __Pyx_GOTREF(__pyx_t_2);
6716  __Pyx_GIVEREF(__pyx_t_5);
6717  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
6718  __pyx_t_5 = 0;
6719  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_v_fim_tmp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error)
6720  __Pyx_GOTREF(__pyx_t_5);
6721  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6722  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_fim_tmp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
6723  __Pyx_GOTREF(__pyx_t_2);
6724  __pyx_t_4 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_df); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
6725  __Pyx_GOTREF(__pyx_t_4);
6726  __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error)
6727  __Pyx_GOTREF(__pyx_t_6);
6728  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6729  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6730  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
6731  __Pyx_GOTREF(__pyx_t_4);
6732  __Pyx_GIVEREF(__pyx_t_6);
6733  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
6734  __pyx_t_6 = 0;
6735  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error)
6736  __Pyx_GOTREF(__pyx_t_6);
6737  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6738  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6739  __pyx_t_4 = NULL;
6740  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
6741  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
6742  if (likely(__pyx_t_4)) {
6743  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6744  __Pyx_INCREF(__pyx_t_4);
6745  __Pyx_INCREF(function);
6746  __Pyx_DECREF_SET(__pyx_t_3, function);
6747  }
6748  }
6749  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6);
6750  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6751  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6752  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
6753  __Pyx_GOTREF(__pyx_t_1);
6754  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6755  __pyx_r = __pyx_t_1;
6756  __pyx_t_1 = 0;
6757  goto __pyx_L0;
6758 
6759  /* "WaveTools.py":258
6760  * else:
6761  * return None
6762  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
6763  * """ Prepares the x-axis array with N elements for numerical integration
6764  *
6765  */
6766 
6767  /* function exit code */
6768  __pyx_L1_error:;
6769  __Pyx_XDECREF(__pyx_t_1);
6770  __Pyx_XDECREF(__pyx_t_2);
6771  __Pyx_XDECREF(__pyx_t_3);
6772  __Pyx_XDECREF(__pyx_t_4);
6773  __Pyx_XDECREF(__pyx_t_5);
6774  __Pyx_XDECREF(__pyx_t_6);
6775  __Pyx_AddTraceback("WaveTools.reduceToIntervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
6776  __pyx_r = NULL;
6777  __pyx_L0:;
6778  __Pyx_XDECREF(__pyx_v_fim_tmp);
6779  __Pyx_XGIVEREF(__pyx_r);
6780  __Pyx_RefNannyFinishContext();
6781  return __pyx_r;
6782 }
6783 
6784 /* "WaveTools.py":279
6785  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
6786  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
6787  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
6788  * """ Returns 2D discrete integral array using the rectangle method
6789  *
6790  */
6791 
6792 /* Python wrapper */
6793 static PyObject *__pyx_pw_9WaveTools_21returnRectangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6794 static char __pyx_doc_9WaveTools_20returnRectangles[] = " Returns 2D discrete integral array using the rectangle method\n\n The calculation for each array element is\n :math:`(\\Delta y_i = 0.5(a_{n-1}+a_{n})*(x_{n-1}-x_{n})`\n\n Parameters\n ----------\n a : numpy.ndarray\n Description: Array of y(x) function with N+1 elements\n x : numpy.ndarray\n Description: x- coordinate array with N elements\n\n Returns\n --------\n numpy.ndarray\n\n\n ";
6795 static PyMethodDef __pyx_mdef_9WaveTools_21returnRectangles = {"returnRectangles", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_21returnRectangles, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_20returnRectangles};
6796 static PyObject *__pyx_pw_9WaveTools_21returnRectangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6797  PyObject *__pyx_v_a = 0;
6798  PyObject *__pyx_v_x = 0;
6799  int __pyx_lineno = 0;
6800  const char *__pyx_filename = NULL;
6801  int __pyx_clineno = 0;
6802  PyObject *__pyx_r = 0;
6803  __Pyx_RefNannyDeclarations
6804  __Pyx_RefNannySetupContext("returnRectangles (wrapper)", 0);
6805  {
6806  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_x,0};
6807  PyObject* values[2] = {0,0};
6808  if (unlikely(__pyx_kwds)) {
6809  Py_ssize_t kw_args;
6810  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6811  switch (pos_args) {
6812  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6813  CYTHON_FALLTHROUGH;
6814  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6815  CYTHON_FALLTHROUGH;
6816  case 0: break;
6817  default: goto __pyx_L5_argtuple_error;
6818  }
6819  kw_args = PyDict_Size(__pyx_kwds);
6820  switch (pos_args) {
6821  case 0:
6822  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
6823  else goto __pyx_L5_argtuple_error;
6824  CYTHON_FALLTHROUGH;
6825  case 1:
6826  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6827  else {
6828  __Pyx_RaiseArgtupleInvalid("returnRectangles", 1, 2, 2, 1); __PYX_ERR(0, 279, __pyx_L3_error)
6829  }
6830  }
6831  if (unlikely(kw_args > 0)) {
6832  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "returnRectangles") < 0)) __PYX_ERR(0, 279, __pyx_L3_error)
6833  }
6834  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
6835  goto __pyx_L5_argtuple_error;
6836  } else {
6837  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6838  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6839  }
6840  __pyx_v_a = values[0];
6841  __pyx_v_x = values[1];
6842  }
6843  goto __pyx_L4_argument_unpacking_done;
6844  __pyx_L5_argtuple_error:;
6845  __Pyx_RaiseArgtupleInvalid("returnRectangles", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 279, __pyx_L3_error)
6846  __pyx_L3_error:;
6847  __Pyx_AddTraceback("WaveTools.returnRectangles", __pyx_clineno, __pyx_lineno, __pyx_filename);
6848  __Pyx_RefNannyFinishContext();
6849  return NULL;
6850  __pyx_L4_argument_unpacking_done:;
6851  __pyx_r = __pyx_pf_9WaveTools_20returnRectangles(__pyx_self, __pyx_v_a, __pyx_v_x);
6852 
6853  /* function exit code */
6854  __Pyx_RefNannyFinishContext();
6855  return __pyx_r;
6856 }
6857 
6858 static PyObject *__pyx_pf_9WaveTools_20returnRectangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x) {
6859  PyObject *__pyx_r = NULL;
6860  __Pyx_RefNannyDeclarations
6861  PyObject *__pyx_t_1 = NULL;
6862  PyObject *__pyx_t_2 = NULL;
6863  PyObject *__pyx_t_3 = NULL;
6864  PyObject *__pyx_t_4 = NULL;
6865  int __pyx_lineno = 0;
6866  const char *__pyx_filename = NULL;
6867  int __pyx_clineno = 0;
6868  __Pyx_RefNannySetupContext("returnRectangles", 0);
6869 
6870  /* "WaveTools.py":298
6871  *
6872  * """
6873  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1]) # <<<<<<<<<<<<<<
6874  * def returnRectangles3D(a,x,y):
6875  * """ Returns 3D discrete integrals using the rectangle method
6876  */
6877  __Pyx_XDECREF(__pyx_r);
6878  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_a, 1, 0, NULL, NULL, &__pyx_slice__2, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error)
6879  __Pyx_GOTREF(__pyx_t_1);
6880  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_a, 0, -1L, NULL, NULL, &__pyx_slice__3, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error)
6881  __Pyx_GOTREF(__pyx_t_2);
6882  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
6883  __Pyx_GOTREF(__pyx_t_3);
6884  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6885  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6886  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error)
6887  __Pyx_GOTREF(__pyx_t_2);
6888  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6889  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_x, 1, 0, NULL, NULL, &__pyx_slice__2, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
6890  __Pyx_GOTREF(__pyx_t_3);
6891  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, -1L, NULL, NULL, &__pyx_slice__3, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error)
6892  __Pyx_GOTREF(__pyx_t_1);
6893  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
6894  __Pyx_GOTREF(__pyx_t_4);
6895  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6896  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6897  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error)
6898  __Pyx_GOTREF(__pyx_t_1);
6899  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6900  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6901  __pyx_r = __pyx_t_1;
6902  __pyx_t_1 = 0;
6903  goto __pyx_L0;
6904 
6905  /* "WaveTools.py":279
6906  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
6907  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
6908  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
6909  * """ Returns 2D discrete integral array using the rectangle method
6910  *
6911  */
6912 
6913  /* function exit code */
6914  __pyx_L1_error:;
6915  __Pyx_XDECREF(__pyx_t_1);
6916  __Pyx_XDECREF(__pyx_t_2);
6917  __Pyx_XDECREF(__pyx_t_3);
6918  __Pyx_XDECREF(__pyx_t_4);
6919  __Pyx_AddTraceback("WaveTools.returnRectangles", __pyx_clineno, __pyx_lineno, __pyx_filename);
6920  __pyx_r = NULL;
6921  __pyx_L0:;
6922  __Pyx_XGIVEREF(__pyx_r);
6923  __Pyx_RefNannyFinishContext();
6924  return __pyx_r;
6925 }
6926 
6927 /* "WaveTools.py":299
6928  * """
6929  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
6930  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
6931  * """ Returns 3D discrete integrals using the rectangle method
6932  *
6933  */
6934 
6935 /* Python wrapper */
6936 static PyObject *__pyx_pw_9WaveTools_23returnRectangles3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6937 static char __pyx_doc_9WaveTools_22returnRectangles3D[] = " Returns 3D discrete integrals using the rectangle method\n\n The calculation for each array element is\n :math: `(\\Delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m) ...\n ...+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m))`\n\n Parameters\n ----------\n a : numpy.ndarray\n 2D Array of y(x,y) function with (N+1)x(M+1)elements\n x : numpy.ndarray\n Description: x- coordinate array with N+1 elements\n y : numpy.ndarray\n Description: x- coordinate array with N+1 elements\n\n Returns\n --------\n numpy.ndarray\n ";
6938 static PyMethodDef __pyx_mdef_9WaveTools_23returnRectangles3D = {"returnRectangles3D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_23returnRectangles3D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_22returnRectangles3D};
6939 static PyObject *__pyx_pw_9WaveTools_23returnRectangles3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6940  PyObject *__pyx_v_a = 0;
6941  PyObject *__pyx_v_x = 0;
6942  PyObject *__pyx_v_y = 0;
6943  int __pyx_lineno = 0;
6944  const char *__pyx_filename = NULL;
6945  int __pyx_clineno = 0;
6946  PyObject *__pyx_r = 0;
6947  __Pyx_RefNannyDeclarations
6948  __Pyx_RefNannySetupContext("returnRectangles3D (wrapper)", 0);
6949  {
6950  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_x,&__pyx_n_s_y,0};
6951  PyObject* values[3] = {0,0,0};
6952  if (unlikely(__pyx_kwds)) {
6953  Py_ssize_t kw_args;
6954  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6955  switch (pos_args) {
6956  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6957  CYTHON_FALLTHROUGH;
6958  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6959  CYTHON_FALLTHROUGH;
6960  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6961  CYTHON_FALLTHROUGH;
6962  case 0: break;
6963  default: goto __pyx_L5_argtuple_error;
6964  }
6965  kw_args = PyDict_Size(__pyx_kwds);
6966  switch (pos_args) {
6967  case 0:
6968  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
6969  else goto __pyx_L5_argtuple_error;
6970  CYTHON_FALLTHROUGH;
6971  case 1:
6972  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6973  else {
6974  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, 1); __PYX_ERR(0, 299, __pyx_L3_error)
6975  }
6976  CYTHON_FALLTHROUGH;
6977  case 2:
6978  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
6979  else {
6980  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, 2); __PYX_ERR(0, 299, __pyx_L3_error)
6981  }
6982  }
6983  if (unlikely(kw_args > 0)) {
6984  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "returnRectangles3D") < 0)) __PYX_ERR(0, 299, __pyx_L3_error)
6985  }
6986  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
6987  goto __pyx_L5_argtuple_error;
6988  } else {
6989  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6990  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6991  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6992  }
6993  __pyx_v_a = values[0];
6994  __pyx_v_x = values[1];
6995  __pyx_v_y = values[2];
6996  }
6997  goto __pyx_L4_argument_unpacking_done;
6998  __pyx_L5_argtuple_error:;
6999  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 299, __pyx_L3_error)
7000  __pyx_L3_error:;
7001  __Pyx_AddTraceback("WaveTools.returnRectangles3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7002  __Pyx_RefNannyFinishContext();
7003  return NULL;
7004  __pyx_L4_argument_unpacking_done:;
7005  __pyx_r = __pyx_pf_9WaveTools_22returnRectangles3D(__pyx_self, __pyx_v_a, __pyx_v_x, __pyx_v_y);
7006 
7007  /* function exit code */
7008  __Pyx_RefNannyFinishContext();
7009  return __pyx_r;
7010 }
7011 
7012 static PyObject *__pyx_pf_9WaveTools_22returnRectangles3D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
7013  PyObject *__pyx_v_ai = NULL;
7014  PyObject *__pyx_v_ii = NULL;
7015  PyObject *__pyx_v_jj = NULL;
7016  PyObject *__pyx_r = NULL;
7017  __Pyx_RefNannyDeclarations
7018  PyObject *__pyx_t_1 = NULL;
7019  PyObject *__pyx_t_2 = NULL;
7020  PyObject *__pyx_t_3 = NULL;
7021  Py_ssize_t __pyx_t_4;
7022  PyObject *__pyx_t_5 = NULL;
7023  PyObject *(*__pyx_t_6)(PyObject *);
7024  PyObject *__pyx_t_7 = NULL;
7025  PyObject *__pyx_t_8 = NULL;
7026  int __pyx_lineno = 0;
7027  const char *__pyx_filename = NULL;
7028  int __pyx_clineno = 0;
7029  __Pyx_RefNannySetupContext("returnRectangles3D", 0);
7030 
7031  /* "WaveTools.py":319
7032  * numpy.ndarray
7033  * """
7034  * ai = 0.5*(a[1:,:]+a[:-1,:]) # <<<<<<<<<<<<<<
7035  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
7036  * for ii in range(len(x)-1):
7037  */
7038  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_a, __pyx_tuple__5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error)
7039  __Pyx_GOTREF(__pyx_t_1);
7040  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_a, __pyx_tuple__6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error)
7041  __Pyx_GOTREF(__pyx_t_2);
7042  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error)
7043  __Pyx_GOTREF(__pyx_t_3);
7044  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7045  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7046  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error)
7047  __Pyx_GOTREF(__pyx_t_2);
7048  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7049  __pyx_v_ai = __pyx_t_2;
7050  __pyx_t_2 = 0;
7051 
7052  /* "WaveTools.py":320
7053  * """
7054  * ai = 0.5*(a[1:,:]+a[:-1,:])
7055  * ai = 0.5*(ai[:,1:]+ai[:,:-1]) # <<<<<<<<<<<<<<
7056  * for ii in range(len(x)-1):
7057  * ai[ii,:] *= (y[1:]-y[:-1])
7058  */
7059  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_ai, __pyx_tuple__7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error)
7060  __Pyx_GOTREF(__pyx_t_2);
7061  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_ai, __pyx_tuple__8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
7062  __Pyx_GOTREF(__pyx_t_3);
7063  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error)
7064  __Pyx_GOTREF(__pyx_t_1);
7065  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7066  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7067  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
7068  __Pyx_GOTREF(__pyx_t_3);
7069  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7070  __Pyx_DECREF_SET(__pyx_v_ai, __pyx_t_3);
7071  __pyx_t_3 = 0;
7072 
7073  /* "WaveTools.py":321
7074  * ai = 0.5*(a[1:,:]+a[:-1,:])
7075  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
7076  * for ii in range(len(x)-1): # <<<<<<<<<<<<<<
7077  * ai[ii,:] *= (y[1:]-y[:-1])
7078  * for jj in range(len(y) - 1):
7079  */
7080  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
7081  __Pyx_GOTREF(__pyx_t_1);
7082  __pyx_t_4 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 321, __pyx_L1_error)
7083  __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_4 - 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error)
7084  __Pyx_GOTREF(__pyx_t_2);
7085  __pyx_t_5 = NULL;
7086  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
7087  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
7088  if (likely(__pyx_t_5)) {
7089  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
7090  __Pyx_INCREF(__pyx_t_5);
7091  __Pyx_INCREF(function);
7092  __Pyx_DECREF_SET(__pyx_t_1, function);
7093  }
7094  }
7095  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2);
7096  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7097  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7098  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
7099  __Pyx_GOTREF(__pyx_t_3);
7100  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7101  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
7102  __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
7103  __pyx_t_6 = NULL;
7104  } else {
7105  __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
7106  __Pyx_GOTREF(__pyx_t_1);
7107  __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 321, __pyx_L1_error)
7108  }
7109  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7110  for (;;) {
7111  if (likely(!__pyx_t_6)) {
7112  if (likely(PyList_CheckExact(__pyx_t_1))) {
7113  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
7114  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
7115  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 321, __pyx_L1_error)
7116  #else
7117  __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
7118  __Pyx_GOTREF(__pyx_t_3);
7119  #endif
7120  } else {
7121  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
7122  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
7123  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 321, __pyx_L1_error)
7124  #else
7125  __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
7126  __Pyx_GOTREF(__pyx_t_3);
7127  #endif
7128  }
7129  } else {
7130  __pyx_t_3 = __pyx_t_6(__pyx_t_1);
7131  if (unlikely(!__pyx_t_3)) {
7132  PyObject* exc_type = PyErr_Occurred();
7133  if (exc_type) {
7134  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
7135  else __PYX_ERR(0, 321, __pyx_L1_error)
7136  }
7137  break;
7138  }
7139  __Pyx_GOTREF(__pyx_t_3);
7140  }
7141  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_3);
7142  __pyx_t_3 = 0;
7143 
7144  /* "WaveTools.py":322
7145  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
7146  * for ii in range(len(x)-1):
7147  * ai[ii,:] *= (y[1:]-y[:-1]) # <<<<<<<<<<<<<<
7148  * for jj in range(len(y) - 1):
7149  * ai[:,jj] *= (x[1:]-x[:-1])
7150  */
7151  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error)
7152  __Pyx_GOTREF(__pyx_t_3);
7153  __Pyx_INCREF(__pyx_v_ii);
7154  __Pyx_GIVEREF(__pyx_v_ii);
7155  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_ii);
7156  __Pyx_INCREF(__pyx_slice__4);
7157  __Pyx_GIVEREF(__pyx_slice__4);
7158  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__4);
7159  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_ai, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error)
7160  __Pyx_GOTREF(__pyx_t_2);
7161  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_y, 1, 0, NULL, NULL, &__pyx_slice__2, 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error)
7162  __Pyx_GOTREF(__pyx_t_5);
7163  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_y, 0, -1L, NULL, NULL, &__pyx_slice__3, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 322, __pyx_L1_error)
7164  __Pyx_GOTREF(__pyx_t_7);
7165  __pyx_t_8 = PyNumber_Subtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 322, __pyx_L1_error)
7166  __Pyx_GOTREF(__pyx_t_8);
7167  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7168  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7169  __pyx_t_7 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 322, __pyx_L1_error)
7170  __Pyx_GOTREF(__pyx_t_7);
7171  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7172  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
7173  if (unlikely(PyObject_SetItem(__pyx_v_ai, __pyx_t_3, __pyx_t_7) < 0)) __PYX_ERR(0, 322, __pyx_L1_error)
7174  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7175  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7176 
7177  /* "WaveTools.py":321
7178  * ai = 0.5*(a[1:,:]+a[:-1,:])
7179  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
7180  * for ii in range(len(x)-1): # <<<<<<<<<<<<<<
7181  * ai[ii,:] *= (y[1:]-y[:-1])
7182  * for jj in range(len(y) - 1):
7183  */
7184  }
7185  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7186 
7187  /* "WaveTools.py":323
7188  * for ii in range(len(x)-1):
7189  * ai[ii,:] *= (y[1:]-y[:-1])
7190  * for jj in range(len(y) - 1): # <<<<<<<<<<<<<<
7191  * ai[:,jj] *= (x[1:]-x[:-1])
7192  * return ai
7193  */
7194  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error)
7195  __Pyx_GOTREF(__pyx_t_3);
7196  __pyx_t_4 = PyObject_Length(__pyx_v_y); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 323, __pyx_L1_error)
7197  __pyx_t_7 = PyInt_FromSsize_t((__pyx_t_4 - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 323, __pyx_L1_error)
7198  __Pyx_GOTREF(__pyx_t_7);
7199  __pyx_t_8 = NULL;
7200  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
7201  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
7202  if (likely(__pyx_t_8)) {
7203  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7204  __Pyx_INCREF(__pyx_t_8);
7205  __Pyx_INCREF(function);
7206  __Pyx_DECREF_SET(__pyx_t_3, function);
7207  }
7208  }
7209  __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7);
7210  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
7211  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7212  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
7213  __Pyx_GOTREF(__pyx_t_1);
7214  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7215  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
7216  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
7217  __pyx_t_6 = NULL;
7218  } else {
7219  __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error)
7220  __Pyx_GOTREF(__pyx_t_3);
7221  __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 323, __pyx_L1_error)
7222  }
7223  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7224  for (;;) {
7225  if (likely(!__pyx_t_6)) {
7226  if (likely(PyList_CheckExact(__pyx_t_3))) {
7227  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
7228  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
7229  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 323, __pyx_L1_error)
7230  #else
7231  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
7232  __Pyx_GOTREF(__pyx_t_1);
7233  #endif
7234  } else {
7235  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
7236  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
7237  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 323, __pyx_L1_error)
7238  #else
7239  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
7240  __Pyx_GOTREF(__pyx_t_1);
7241  #endif
7242  }
7243  } else {
7244  __pyx_t_1 = __pyx_t_6(__pyx_t_3);
7245  if (unlikely(!__pyx_t_1)) {
7246  PyObject* exc_type = PyErr_Occurred();
7247  if (exc_type) {
7248  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
7249  else __PYX_ERR(0, 323, __pyx_L1_error)
7250  }
7251  break;
7252  }
7253  __Pyx_GOTREF(__pyx_t_1);
7254  }
7255  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
7256  __pyx_t_1 = 0;
7257 
7258  /* "WaveTools.py":324
7259  * ai[ii,:] *= (y[1:]-y[:-1])
7260  * for jj in range(len(y) - 1):
7261  * ai[:,jj] *= (x[1:]-x[:-1]) # <<<<<<<<<<<<<<
7262  * return ai
7263  * def normIntegral(f,dom):
7264  */
7265  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
7266  __Pyx_GOTREF(__pyx_t_1);
7267  __Pyx_INCREF(__pyx_slice__4);
7268  __Pyx_GIVEREF(__pyx_slice__4);
7269  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__4);
7270  __Pyx_INCREF(__pyx_v_jj);
7271  __Pyx_GIVEREF(__pyx_v_jj);
7272  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_jj);
7273  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_ai, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 324, __pyx_L1_error)
7274  __Pyx_GOTREF(__pyx_t_7);
7275  __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_v_x, 1, 0, NULL, NULL, &__pyx_slice__2, 1, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 324, __pyx_L1_error)
7276  __Pyx_GOTREF(__pyx_t_8);
7277  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, -1L, NULL, NULL, &__pyx_slice__3, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error)
7278  __Pyx_GOTREF(__pyx_t_2);
7279  __pyx_t_5 = PyNumber_Subtract(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 324, __pyx_L1_error)
7280  __Pyx_GOTREF(__pyx_t_5);
7281  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
7282  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7283  __pyx_t_2 = PyNumber_InPlaceMultiply(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error)
7284  __Pyx_GOTREF(__pyx_t_2);
7285  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7286  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7287  if (unlikely(PyObject_SetItem(__pyx_v_ai, __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 324, __pyx_L1_error)
7288  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7289  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7290 
7291  /* "WaveTools.py":323
7292  * for ii in range(len(x)-1):
7293  * ai[ii,:] *= (y[1:]-y[:-1])
7294  * for jj in range(len(y) - 1): # <<<<<<<<<<<<<<
7295  * ai[:,jj] *= (x[1:]-x[:-1])
7296  * return ai
7297  */
7298  }
7299  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7300 
7301  /* "WaveTools.py":325
7302  * for jj in range(len(y) - 1):
7303  * ai[:,jj] *= (x[1:]-x[:-1])
7304  * return ai # <<<<<<<<<<<<<<
7305  * def normIntegral(f,dom):
7306  * """Returns a normalised 2D function
7307  */
7308  __Pyx_XDECREF(__pyx_r);
7309  __Pyx_INCREF(__pyx_v_ai);
7310  __pyx_r = __pyx_v_ai;
7311  goto __pyx_L0;
7312 
7313  /* "WaveTools.py":299
7314  * """
7315  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
7316  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
7317  * """ Returns 3D discrete integrals using the rectangle method
7318  *
7319  */
7320 
7321  /* function exit code */
7322  __pyx_L1_error:;
7323  __Pyx_XDECREF(__pyx_t_1);
7324  __Pyx_XDECREF(__pyx_t_2);
7325  __Pyx_XDECREF(__pyx_t_3);
7326  __Pyx_XDECREF(__pyx_t_5);
7327  __Pyx_XDECREF(__pyx_t_7);
7328  __Pyx_XDECREF(__pyx_t_8);
7329  __Pyx_AddTraceback("WaveTools.returnRectangles3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7330  __pyx_r = NULL;
7331  __pyx_L0:;
7332  __Pyx_XDECREF(__pyx_v_ai);
7333  __Pyx_XDECREF(__pyx_v_ii);
7334  __Pyx_XDECREF(__pyx_v_jj);
7335  __Pyx_XGIVEREF(__pyx_r);
7336  __Pyx_RefNannyFinishContext();
7337  return __pyx_r;
7338 }
7339 
7340 /* "WaveTools.py":326
7341  * ai[:,jj] *= (x[1:]-x[:-1])
7342  * return ai
7343  * def normIntegral(f,dom): # <<<<<<<<<<<<<<
7344  * """Returns a normalised 2D function
7345  *
7346  */
7347 
7348 /* Python wrapper */
7349 static PyObject *__pyx_pw_9WaveTools_25normIntegral(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7350 static char __pyx_doc_9WaveTools_24normIntegral[] = "Returns a normalised 2D function\n\n The calculation is :math: `(\\int_\\Omega f d\\Omega =1)`\n\n Parameters\n ----------\n f : numpy.ndarray\n Discrete 2D function\n Numpy array or list\n\n dom : float\n Discrete function step\n\n Returns\n --------\n numpy.ndarray\n ";
7351 static PyMethodDef __pyx_mdef_9WaveTools_25normIntegral = {"normIntegral", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_25normIntegral, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_24normIntegral};
7352 static PyObject *__pyx_pw_9WaveTools_25normIntegral(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7353  PyObject *__pyx_v_f = 0;
7354  PyObject *__pyx_v_dom = 0;
7355  int __pyx_lineno = 0;
7356  const char *__pyx_filename = NULL;
7357  int __pyx_clineno = 0;
7358  PyObject *__pyx_r = 0;
7359  __Pyx_RefNannyDeclarations
7360  __Pyx_RefNannySetupContext("normIntegral (wrapper)", 0);
7361  {
7362  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_dom,0};
7363  PyObject* values[2] = {0,0};
7364  if (unlikely(__pyx_kwds)) {
7365  Py_ssize_t kw_args;
7366  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7367  switch (pos_args) {
7368  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7369  CYTHON_FALLTHROUGH;
7370  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7371  CYTHON_FALLTHROUGH;
7372  case 0: break;
7373  default: goto __pyx_L5_argtuple_error;
7374  }
7375  kw_args = PyDict_Size(__pyx_kwds);
7376  switch (pos_args) {
7377  case 0:
7378  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
7379  else goto __pyx_L5_argtuple_error;
7380  CYTHON_FALLTHROUGH;
7381  case 1:
7382  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dom)) != 0)) kw_args--;
7383  else {
7384  __Pyx_RaiseArgtupleInvalid("normIntegral", 1, 2, 2, 1); __PYX_ERR(0, 326, __pyx_L3_error)
7385  }
7386  }
7387  if (unlikely(kw_args > 0)) {
7388  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "normIntegral") < 0)) __PYX_ERR(0, 326, __pyx_L3_error)
7389  }
7390  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
7391  goto __pyx_L5_argtuple_error;
7392  } else {
7393  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7394  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7395  }
7396  __pyx_v_f = values[0];
7397  __pyx_v_dom = values[1];
7398  }
7399  goto __pyx_L4_argument_unpacking_done;
7400  __pyx_L5_argtuple_error:;
7401  __Pyx_RaiseArgtupleInvalid("normIntegral", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 326, __pyx_L3_error)
7402  __pyx_L3_error:;
7403  __Pyx_AddTraceback("WaveTools.normIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
7404  __Pyx_RefNannyFinishContext();
7405  return NULL;
7406  __pyx_L4_argument_unpacking_done:;
7407  __pyx_r = __pyx_pf_9WaveTools_24normIntegral(__pyx_self, __pyx_v_f, __pyx_v_dom);
7408 
7409  /* function exit code */
7410  __Pyx_RefNannyFinishContext();
7411  return __pyx_r;
7412 }
7413 
7414 static PyObject *__pyx_pf_9WaveTools_24normIntegral(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_dom) {
7415  PyObject *__pyx_v_G0 = NULL;
7416  PyObject *__pyx_r = NULL;
7417  __Pyx_RefNannyDeclarations
7418  PyObject *__pyx_t_1 = NULL;
7419  PyObject *__pyx_t_2 = NULL;
7420  PyObject *__pyx_t_3 = NULL;
7421  PyObject *__pyx_t_4 = NULL;
7422  PyObject *__pyx_t_5 = NULL;
7423  int __pyx_t_6;
7424  PyObject *__pyx_t_7 = NULL;
7425  int __pyx_lineno = 0;
7426  const char *__pyx_filename = NULL;
7427  int __pyx_clineno = 0;
7428  __Pyx_RefNannySetupContext("normIntegral", 0);
7429 
7430  /* "WaveTools.py":344
7431  * numpy.ndarray
7432  * """
7433  * G0 = old_div(1.,sum(returnRectangles(f,dom))) # <<<<<<<<<<<<<<
7434  * return G0*f
7435  *
7436  */
7437  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error)
7438  __Pyx_GOTREF(__pyx_t_2);
7439  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L1_error)
7440  __Pyx_GOTREF(__pyx_t_4);
7441  __pyx_t_5 = NULL;
7442  __pyx_t_6 = 0;
7443  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
7444  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
7445  if (likely(__pyx_t_5)) {
7446  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
7447  __Pyx_INCREF(__pyx_t_5);
7448  __Pyx_INCREF(function);
7449  __Pyx_DECREF_SET(__pyx_t_4, function);
7450  __pyx_t_6 = 1;
7451  }
7452  }
7453  #if CYTHON_FAST_PYCALL
7454  if (PyFunction_Check(__pyx_t_4)) {
7455  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_f, __pyx_v_dom};
7456  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 344, __pyx_L1_error)
7457  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7458  __Pyx_GOTREF(__pyx_t_3);
7459  } else
7460  #endif
7461  #if CYTHON_FAST_PYCCALL
7462  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
7463  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_f, __pyx_v_dom};
7464  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 344, __pyx_L1_error)
7465  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7466  __Pyx_GOTREF(__pyx_t_3);
7467  } else
7468  #endif
7469  {
7470  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error)
7471  __Pyx_GOTREF(__pyx_t_7);
7472  if (__pyx_t_5) {
7473  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
7474  }
7475  __Pyx_INCREF(__pyx_v_f);
7476  __Pyx_GIVEREF(__pyx_v_f);
7477  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_f);
7478  __Pyx_INCREF(__pyx_v_dom);
7479  __Pyx_GIVEREF(__pyx_v_dom);
7480  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_dom);
7481  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 344, __pyx_L1_error)
7482  __Pyx_GOTREF(__pyx_t_3);
7483  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7484  }
7485  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7486  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L1_error)
7487  __Pyx_GOTREF(__pyx_t_4);
7488  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7489  __pyx_t_3 = NULL;
7490  __pyx_t_6 = 0;
7491  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
7492  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
7493  if (likely(__pyx_t_3)) {
7494  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7495  __Pyx_INCREF(__pyx_t_3);
7496  __Pyx_INCREF(function);
7497  __Pyx_DECREF_SET(__pyx_t_2, function);
7498  __pyx_t_6 = 1;
7499  }
7500  }
7501  #if CYTHON_FAST_PYCALL
7502  if (PyFunction_Check(__pyx_t_2)) {
7503  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_float_1_, __pyx_t_4};
7504  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
7505  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7506  __Pyx_GOTREF(__pyx_t_1);
7507  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7508  } else
7509  #endif
7510  #if CYTHON_FAST_PYCCALL
7511  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7512  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_float_1_, __pyx_t_4};
7513  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
7514  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7515  __Pyx_GOTREF(__pyx_t_1);
7516  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7517  } else
7518  #endif
7519  {
7520  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error)
7521  __Pyx_GOTREF(__pyx_t_7);
7522  if (__pyx_t_3) {
7523  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
7524  }
7525  __Pyx_INCREF(__pyx_float_1_);
7526  __Pyx_GIVEREF(__pyx_float_1_);
7527  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_float_1_);
7528  __Pyx_GIVEREF(__pyx_t_4);
7529  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
7530  __pyx_t_4 = 0;
7531  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
7532  __Pyx_GOTREF(__pyx_t_1);
7533  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7534  }
7535  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7536  __pyx_v_G0 = __pyx_t_1;
7537  __pyx_t_1 = 0;
7538 
7539  /* "WaveTools.py":345
7540  * """
7541  * G0 = old_div(1.,sum(returnRectangles(f,dom)))
7542  * return G0*f # <<<<<<<<<<<<<<
7543  *
7544  *
7545  */
7546  __Pyx_XDECREF(__pyx_r);
7547  __pyx_t_1 = PyNumber_Multiply(__pyx_v_G0, __pyx_v_f); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
7548  __Pyx_GOTREF(__pyx_t_1);
7549  __pyx_r = __pyx_t_1;
7550  __pyx_t_1 = 0;
7551  goto __pyx_L0;
7552 
7553  /* "WaveTools.py":326
7554  * ai[:,jj] *= (x[1:]-x[:-1])
7555  * return ai
7556  * def normIntegral(f,dom): # <<<<<<<<<<<<<<
7557  * """Returns a normalised 2D function
7558  *
7559  */
7560 
7561  /* function exit code */
7562  __pyx_L1_error:;
7563  __Pyx_XDECREF(__pyx_t_1);
7564  __Pyx_XDECREF(__pyx_t_2);
7565  __Pyx_XDECREF(__pyx_t_3);
7566  __Pyx_XDECREF(__pyx_t_4);
7567  __Pyx_XDECREF(__pyx_t_5);
7568  __Pyx_XDECREF(__pyx_t_7);
7569  __Pyx_AddTraceback("WaveTools.normIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
7570  __pyx_r = NULL;
7571  __pyx_L0:;
7572  __Pyx_XDECREF(__pyx_v_G0);
7573  __Pyx_XGIVEREF(__pyx_r);
7574  __Pyx_RefNannyFinishContext();
7575  return __pyx_r;
7576 }
7577 
7578 /* "WaveTools.py":349
7579  *
7580  *
7581  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
7582  * """Calculates the free surface elevation for a single frequency mode
7583  *
7584  */
7585 
7586 /* Python wrapper */
7587 static PyObject *__pyx_pw_9WaveTools_27eta_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7588 static char __pyx_doc_9WaveTools_26eta_mode[] = "Calculates the free surface elevation for a single frequency mode\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n kDir : numpy.ndarray\n Wave number vector\n omega : float\n Angular frequency\n phi : float\n Description: Wave phase\n amp : float\n Description: Wave amplitude\n\n Returns\n --------\n float\n The free surface elevation at x,t\n\n ";
7589 static PyMethodDef __pyx_mdef_9WaveTools_27eta_mode = {"eta_mode", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_27eta_mode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_26eta_mode};
7590 static PyObject *__pyx_pw_9WaveTools_27eta_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7591  PyObject *__pyx_v_x = 0;
7592  PyObject *__pyx_v_t = 0;
7593  PyObject *__pyx_v_kDir = 0;
7594  PyObject *__pyx_v_omega = 0;
7595  PyObject *__pyx_v_phi = 0;
7596  PyObject *__pyx_v_amplitude = 0;
7597  int __pyx_lineno = 0;
7598  const char *__pyx_filename = NULL;
7599  int __pyx_clineno = 0;
7600  PyObject *__pyx_r = 0;
7601  __Pyx_RefNannyDeclarations
7602  __Pyx_RefNannySetupContext("eta_mode (wrapper)", 0);
7603  {
7604  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_kDir,&__pyx_n_s_omega,&__pyx_n_s_phi,&__pyx_n_s_amplitude,0};
7605  PyObject* values[6] = {0,0,0,0,0,0};
7606  if (unlikely(__pyx_kwds)) {
7607  Py_ssize_t kw_args;
7608  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7609  switch (pos_args) {
7610  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
7611  CYTHON_FALLTHROUGH;
7612  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7613  CYTHON_FALLTHROUGH;
7614  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7615  CYTHON_FALLTHROUGH;
7616  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7617  CYTHON_FALLTHROUGH;
7618  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7619  CYTHON_FALLTHROUGH;
7620  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7621  CYTHON_FALLTHROUGH;
7622  case 0: break;
7623  default: goto __pyx_L5_argtuple_error;
7624  }
7625  kw_args = PyDict_Size(__pyx_kwds);
7626  switch (pos_args) {
7627  case 0:
7628  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7629  else goto __pyx_L5_argtuple_error;
7630  CYTHON_FALLTHROUGH;
7631  case 1:
7632  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7633  else {
7634  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 1); __PYX_ERR(0, 349, __pyx_L3_error)
7635  }
7636  CYTHON_FALLTHROUGH;
7637  case 2:
7638  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kDir)) != 0)) kw_args--;
7639  else {
7640  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 2); __PYX_ERR(0, 349, __pyx_L3_error)
7641  }
7642  CYTHON_FALLTHROUGH;
7643  case 3:
7644  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
7645  else {
7646  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 3); __PYX_ERR(0, 349, __pyx_L3_error)
7647  }
7648  CYTHON_FALLTHROUGH;
7649  case 4:
7650  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
7651  else {
7652  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 4); __PYX_ERR(0, 349, __pyx_L3_error)
7653  }
7654  CYTHON_FALLTHROUGH;
7655  case 5:
7656  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_amplitude)) != 0)) kw_args--;
7657  else {
7658  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 5); __PYX_ERR(0, 349, __pyx_L3_error)
7659  }
7660  }
7661  if (unlikely(kw_args > 0)) {
7662  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_mode") < 0)) __PYX_ERR(0, 349, __pyx_L3_error)
7663  }
7664  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
7665  goto __pyx_L5_argtuple_error;
7666  } else {
7667  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7668  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7669  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7670  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7671  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7672  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
7673  }
7674  __pyx_v_x = values[0];
7675  __pyx_v_t = values[1];
7676  __pyx_v_kDir = values[2];
7677  __pyx_v_omega = values[3];
7678  __pyx_v_phi = values[4];
7679  __pyx_v_amplitude = values[5];
7680  }
7681  goto __pyx_L4_argument_unpacking_done;
7682  __pyx_L5_argtuple_error:;
7683  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 349, __pyx_L3_error)
7684  __pyx_L3_error:;
7685  __Pyx_AddTraceback("WaveTools.eta_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
7686  __Pyx_RefNannyFinishContext();
7687  return NULL;
7688  __pyx_L4_argument_unpacking_done:;
7689  __pyx_r = __pyx_pf_9WaveTools_26eta_mode(__pyx_self, __pyx_v_x, __pyx_v_t, __pyx_v_kDir, __pyx_v_omega, __pyx_v_phi, __pyx_v_amplitude);
7690 
7691  /* function exit code */
7692  __Pyx_RefNannyFinishContext();
7693  return __pyx_r;
7694 }
7695 
7696 static PyObject *__pyx_pf_9WaveTools_26eta_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude) {
7697  PyObject *__pyx_v_phase = NULL;
7698  PyObject *__pyx_r = NULL;
7699  __Pyx_RefNannyDeclarations
7700  PyObject *__pyx_t_1 = NULL;
7701  PyObject *__pyx_t_2 = NULL;
7702  PyObject *__pyx_t_3 = NULL;
7703  PyObject *__pyx_t_4 = NULL;
7704  double __pyx_t_5;
7705  int __pyx_lineno = 0;
7706  const char *__pyx_filename = NULL;
7707  int __pyx_clineno = 0;
7708  __Pyx_RefNannySetupContext("eta_mode", 0);
7709 
7710  /* "WaveTools.py":373
7711  *
7712  * """
7713  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi # <<<<<<<<<<<<<<
7714  * return amplitude*cos(phase)
7715  * def Udrift(amp,gAbs,c,d):
7716  */
7717  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
7718  __Pyx_GOTREF(__pyx_t_1);
7719  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_kDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
7720  __Pyx_GOTREF(__pyx_t_2);
7721  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error)
7722  __Pyx_GOTREF(__pyx_t_3);
7723  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7724  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7725  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
7726  __Pyx_GOTREF(__pyx_t_2);
7727  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
7728  __Pyx_GOTREF(__pyx_t_1);
7729  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error)
7730  __Pyx_GOTREF(__pyx_t_4);
7731  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7732  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7733  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
7734  __Pyx_GOTREF(__pyx_t_1);
7735  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7736  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7737  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error)
7738  __Pyx_GOTREF(__pyx_t_4);
7739  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_kDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error)
7740  __Pyx_GOTREF(__pyx_t_3);
7741  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
7742  __Pyx_GOTREF(__pyx_t_2);
7743  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7744  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7745  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error)
7746  __Pyx_GOTREF(__pyx_t_3);
7747  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7748  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7749  __pyx_t_2 = PyNumber_Multiply(__pyx_v_omega, __pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
7750  __Pyx_GOTREF(__pyx_t_2);
7751  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
7752  __Pyx_GOTREF(__pyx_t_1);
7753  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7754  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7755  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_phi); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
7756  __Pyx_GOTREF(__pyx_t_2);
7757  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7758  __pyx_v_phase = __pyx_t_2;
7759  __pyx_t_2 = 0;
7760 
7761  /* "WaveTools.py":374
7762  * """
7763  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
7764  * return amplitude*cos(phase) # <<<<<<<<<<<<<<
7765  * def Udrift(amp,gAbs,c,d):
7766  * """Calculates the 2nd order Stokes drift for a linear mode
7767  */
7768  __Pyx_XDECREF(__pyx_r);
7769  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_phase); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 374, __pyx_L1_error)
7770  __pyx_t_2 = PyFloat_FromDouble(cos(__pyx_t_5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error)
7771  __Pyx_GOTREF(__pyx_t_2);
7772  __pyx_t_1 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
7773  __Pyx_GOTREF(__pyx_t_1);
7774  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7775  __pyx_r = __pyx_t_1;
7776  __pyx_t_1 = 0;
7777  goto __pyx_L0;
7778 
7779  /* "WaveTools.py":349
7780  *
7781  *
7782  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
7783  * """Calculates the free surface elevation for a single frequency mode
7784  *
7785  */
7786 
7787  /* function exit code */
7788  __pyx_L1_error:;
7789  __Pyx_XDECREF(__pyx_t_1);
7790  __Pyx_XDECREF(__pyx_t_2);
7791  __Pyx_XDECREF(__pyx_t_3);
7792  __Pyx_XDECREF(__pyx_t_4);
7793  __Pyx_AddTraceback("WaveTools.eta_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
7794  __pyx_r = NULL;
7795  __pyx_L0:;
7796  __Pyx_XDECREF(__pyx_v_phase);
7797  __Pyx_XGIVEREF(__pyx_r);
7798  __Pyx_RefNannyFinishContext();
7799  return __pyx_r;
7800 }
7801 
7802 /* "WaveTools.py":375
7803  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
7804  * return amplitude*cos(phase)
7805  * def Udrift(amp,gAbs,c,d): # <<<<<<<<<<<<<<
7806  * """Calculates the 2nd order Stokes drift for a linear mode
7807  *
7808  */
7809 
7810 /* Python wrapper */
7811 static PyObject *__pyx_pw_9WaveTools_29Udrift(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7812 static char __pyx_doc_9WaveTools_28Udrift[] = "Calculates the 2nd order Stokes drift for a linear mode \n\n Parameters\n ----------\n amp : float\n Description: Wave amplitude\n gAbs : float\n Magnitude of gravitational acceleration\n c : float\n Wave celerity\n d : float\n Water depth\n\n\n Returns\n --------\n float\n Magnitude of the mean velocity drift\n ";
7813 static PyMethodDef __pyx_mdef_9WaveTools_29Udrift = {"Udrift", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_29Udrift, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_28Udrift};
7814 static PyObject *__pyx_pw_9WaveTools_29Udrift(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7815  PyObject *__pyx_v_amp = 0;
7816  PyObject *__pyx_v_gAbs = 0;
7817  PyObject *__pyx_v_c = 0;
7818  PyObject *__pyx_v_d = 0;
7819  int __pyx_lineno = 0;
7820  const char *__pyx_filename = NULL;
7821  int __pyx_clineno = 0;
7822  PyObject *__pyx_r = 0;
7823  __Pyx_RefNannyDeclarations
7824  __Pyx_RefNannySetupContext("Udrift (wrapper)", 0);
7825  {
7826  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_amp,&__pyx_n_s_gAbs,&__pyx_n_s_c,&__pyx_n_s_d,0};
7827  PyObject* values[4] = {0,0,0,0};
7828  if (unlikely(__pyx_kwds)) {
7829  Py_ssize_t kw_args;
7830  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7831  switch (pos_args) {
7832  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7833  CYTHON_FALLTHROUGH;
7834  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7835  CYTHON_FALLTHROUGH;
7836  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7837  CYTHON_FALLTHROUGH;
7838  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7839  CYTHON_FALLTHROUGH;
7840  case 0: break;
7841  default: goto __pyx_L5_argtuple_error;
7842  }
7843  kw_args = PyDict_Size(__pyx_kwds);
7844  switch (pos_args) {
7845  case 0:
7846  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_amp)) != 0)) kw_args--;
7847  else goto __pyx_L5_argtuple_error;
7848  CYTHON_FALLTHROUGH;
7849  case 1:
7850  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_gAbs)) != 0)) kw_args--;
7851  else {
7852  __Pyx_RaiseArgtupleInvalid("Udrift", 1, 4, 4, 1); __PYX_ERR(0, 375, __pyx_L3_error)
7853  }
7854  CYTHON_FALLTHROUGH;
7855  case 2:
7856  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_c)) != 0)) kw_args--;
7857  else {
7858  __Pyx_RaiseArgtupleInvalid("Udrift", 1, 4, 4, 2); __PYX_ERR(0, 375, __pyx_L3_error)
7859  }
7860  CYTHON_FALLTHROUGH;
7861  case 3:
7862  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
7863  else {
7864  __Pyx_RaiseArgtupleInvalid("Udrift", 1, 4, 4, 3); __PYX_ERR(0, 375, __pyx_L3_error)
7865  }
7866  }
7867  if (unlikely(kw_args > 0)) {
7868  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Udrift") < 0)) __PYX_ERR(0, 375, __pyx_L3_error)
7869  }
7870  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
7871  goto __pyx_L5_argtuple_error;
7872  } else {
7873  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7874  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7875  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7876  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7877  }
7878  __pyx_v_amp = values[0];
7879  __pyx_v_gAbs = values[1];
7880  __pyx_v_c = values[2];
7881  __pyx_v_d = values[3];
7882  }
7883  goto __pyx_L4_argument_unpacking_done;
7884  __pyx_L5_argtuple_error:;
7885  __Pyx_RaiseArgtupleInvalid("Udrift", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 375, __pyx_L3_error)
7886  __pyx_L3_error:;
7887  __Pyx_AddTraceback("WaveTools.Udrift", __pyx_clineno, __pyx_lineno, __pyx_filename);
7888  __Pyx_RefNannyFinishContext();
7889  return NULL;
7890  __pyx_L4_argument_unpacking_done:;
7891  __pyx_r = __pyx_pf_9WaveTools_28Udrift(__pyx_self, __pyx_v_amp, __pyx_v_gAbs, __pyx_v_c, __pyx_v_d);
7892 
7893  /* function exit code */
7894  __Pyx_RefNannyFinishContext();
7895  return __pyx_r;
7896 }
7897 
7898 static PyObject *__pyx_pf_9WaveTools_28Udrift(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_amp, PyObject *__pyx_v_gAbs, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
7899  PyObject *__pyx_r = NULL;
7900  __Pyx_RefNannyDeclarations
7901  PyObject *__pyx_t_1 = NULL;
7902  PyObject *__pyx_t_2 = NULL;
7903  int __pyx_lineno = 0;
7904  const char *__pyx_filename = NULL;
7905  int __pyx_clineno = 0;
7906  __Pyx_RefNannySetupContext("Udrift", 0);
7907 
7908  /* "WaveTools.py":395
7909  * Magnitude of the mean velocity drift
7910  * """
7911  * return 0.5*gAbs*amp*amp/c/d # <<<<<<<<<<<<<<
7912  *
7913  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, vDir, gAbs):
7914  */
7915  __Pyx_XDECREF(__pyx_r);
7916  __pyx_t_1 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_gAbs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
7917  __Pyx_GOTREF(__pyx_t_1);
7918  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_amp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
7919  __Pyx_GOTREF(__pyx_t_2);
7920  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7921  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_v_amp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
7922  __Pyx_GOTREF(__pyx_t_1);
7923  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7924  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
7925  __Pyx_GOTREF(__pyx_t_2);
7926  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7927  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
7928  __Pyx_GOTREF(__pyx_t_1);
7929  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7930  __pyx_r = __pyx_t_1;
7931  __pyx_t_1 = 0;
7932  goto __pyx_L0;
7933 
7934  /* "WaveTools.py":375
7935  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
7936  * return amplitude*cos(phase)
7937  * def Udrift(amp,gAbs,c,d): # <<<<<<<<<<<<<<
7938  * """Calculates the 2nd order Stokes drift for a linear mode
7939  *
7940  */
7941 
7942  /* function exit code */
7943  __pyx_L1_error:;
7944  __Pyx_XDECREF(__pyx_t_1);
7945  __Pyx_XDECREF(__pyx_t_2);
7946  __Pyx_AddTraceback("WaveTools.Udrift", __pyx_clineno, __pyx_lineno, __pyx_filename);
7947  __pyx_r = NULL;
7948  __pyx_L0:;
7949  __Pyx_XGIVEREF(__pyx_r);
7950  __Pyx_RefNannyFinishContext();
7951  return __pyx_r;
7952 }
7953 
7954 /* "WaveTools.py":397
7955  * return 0.5*gAbs*amp*amp/c/d
7956  *
7957  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, vDir, gAbs): # <<<<<<<<<<<<<<
7958  * """Calculates the wave velocity components for a single frequency mode
7959  *
7960  */
7961 
7962 /* Python wrapper */
7963 static PyObject *__pyx_pw_9WaveTools_31vel_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7964 static char __pyx_doc_9WaveTools_30vel_mode[] = "Calculates the wave velocity components for a single frequency mode\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n kDir : numpy.ndarray\n Wave number vector\n kAbs : floatkAbs\n Wave number magnitude\n omega : float\n Angular frequency\n phi : float\n Description: Wave phase\n amplidute : float\n Description: Wave amplitude\n mwl : float\n Mean water level\n depth : float\n Water depth\n vDir : numpy.ndarray\n Unit vector aligned with vertical direction\n\n\n Returns\n --------\n numpy.ndarray\n 1D Numpy array of the velocity vector at x,t\n ";
7965 static PyMethodDef __pyx_mdef_9WaveTools_31vel_mode = {"vel_mode", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_31vel_mode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_30vel_mode};
7966 static PyObject *__pyx_pw_9WaveTools_31vel_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7967  PyObject *__pyx_v_x = 0;
7968  PyObject *__pyx_v_t = 0;
7969  PyObject *__pyx_v_kDir = 0;
7970  PyObject *__pyx_v_kAbs = 0;
7971  PyObject *__pyx_v_omega = 0;
7972  PyObject *__pyx_v_phi = 0;
7973  PyObject *__pyx_v_amplitude = 0;
7974  PyObject *__pyx_v_mwl = 0;
7975  PyObject *__pyx_v_depth = 0;
7976  PyObject *__pyx_v_vDir = 0;
7977  PyObject *__pyx_v_gAbs = 0;
7978  int __pyx_lineno = 0;
7979  const char *__pyx_filename = NULL;
7980  int __pyx_clineno = 0;
7981  PyObject *__pyx_r = 0;
7982  __Pyx_RefNannyDeclarations
7983  __Pyx_RefNannySetupContext("vel_mode (wrapper)", 0);
7984  {
7985  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_kDir,&__pyx_n_s_kAbs,&__pyx_n_s_omega,&__pyx_n_s_phi,&__pyx_n_s_amplitude,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_vDir,&__pyx_n_s_gAbs,0};
7986  PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
7987  if (unlikely(__pyx_kwds)) {
7988  Py_ssize_t kw_args;
7989  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7990  switch (pos_args) {
7991  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
7992  CYTHON_FALLTHROUGH;
7993  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
7994  CYTHON_FALLTHROUGH;
7995  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
7996  CYTHON_FALLTHROUGH;
7997  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
7998  CYTHON_FALLTHROUGH;
7999  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
8000  CYTHON_FALLTHROUGH;
8001  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8002  CYTHON_FALLTHROUGH;
8003  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8004  CYTHON_FALLTHROUGH;
8005  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8006  CYTHON_FALLTHROUGH;
8007  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8008  CYTHON_FALLTHROUGH;
8009  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8010  CYTHON_FALLTHROUGH;
8011  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8012  CYTHON_FALLTHROUGH;
8013  case 0: break;
8014  default: goto __pyx_L5_argtuple_error;
8015  }
8016  kw_args = PyDict_Size(__pyx_kwds);
8017  switch (pos_args) {
8018  case 0:
8019  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8020  else goto __pyx_L5_argtuple_error;
8021  CYTHON_FALLTHROUGH;
8022  case 1:
8023  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8024  else {
8025  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 1); __PYX_ERR(0, 397, __pyx_L3_error)
8026  }
8027  CYTHON_FALLTHROUGH;
8028  case 2:
8029  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kDir)) != 0)) kw_args--;
8030  else {
8031  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 2); __PYX_ERR(0, 397, __pyx_L3_error)
8032  }
8033  CYTHON_FALLTHROUGH;
8034  case 3:
8035  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kAbs)) != 0)) kw_args--;
8036  else {
8037  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 3); __PYX_ERR(0, 397, __pyx_L3_error)
8038  }
8039  CYTHON_FALLTHROUGH;
8040  case 4:
8041  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
8042  else {
8043  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 4); __PYX_ERR(0, 397, __pyx_L3_error)
8044  }
8045  CYTHON_FALLTHROUGH;
8046  case 5:
8047  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
8048  else {
8049  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 5); __PYX_ERR(0, 397, __pyx_L3_error)
8050  }
8051  CYTHON_FALLTHROUGH;
8052  case 6:
8053  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_amplitude)) != 0)) kw_args--;
8054  else {
8055  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 6); __PYX_ERR(0, 397, __pyx_L3_error)
8056  }
8057  CYTHON_FALLTHROUGH;
8058  case 7:
8059  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
8060  else {
8061  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 7); __PYX_ERR(0, 397, __pyx_L3_error)
8062  }
8063  CYTHON_FALLTHROUGH;
8064  case 8:
8065  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
8066  else {
8067  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 8); __PYX_ERR(0, 397, __pyx_L3_error)
8068  }
8069  CYTHON_FALLTHROUGH;
8070  case 9:
8071  if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_vDir)) != 0)) kw_args--;
8072  else {
8073  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 9); __PYX_ERR(0, 397, __pyx_L3_error)
8074  }
8075  CYTHON_FALLTHROUGH;
8076  case 10:
8077  if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_gAbs)) != 0)) kw_args--;
8078  else {
8079  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 10); __PYX_ERR(0, 397, __pyx_L3_error)
8080  }
8081  }
8082  if (unlikely(kw_args > 0)) {
8083  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vel_mode") < 0)) __PYX_ERR(0, 397, __pyx_L3_error)
8084  }
8085  } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
8086  goto __pyx_L5_argtuple_error;
8087  } else {
8088  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8089  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8090  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8091  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8092  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8093  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8094  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
8095  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
8096  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
8097  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
8098  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
8099  }
8100  __pyx_v_x = values[0];
8101  __pyx_v_t = values[1];
8102  __pyx_v_kDir = values[2];
8103  __pyx_v_kAbs = values[3];
8104  __pyx_v_omega = values[4];
8105  __pyx_v_phi = values[5];
8106  __pyx_v_amplitude = values[6];
8107  __pyx_v_mwl = values[7];
8108  __pyx_v_depth = values[8];
8109  __pyx_v_vDir = values[9];
8110  __pyx_v_gAbs = values[10];
8111  }
8112  goto __pyx_L4_argument_unpacking_done;
8113  __pyx_L5_argtuple_error:;
8114  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 397, __pyx_L3_error)
8115  __pyx_L3_error:;
8116  __Pyx_AddTraceback("WaveTools.vel_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
8117  __Pyx_RefNannyFinishContext();
8118  return NULL;
8119  __pyx_L4_argument_unpacking_done:;
8120  __pyx_r = __pyx_pf_9WaveTools_30vel_mode(__pyx_self, __pyx_v_x, __pyx_v_t, __pyx_v_kDir, __pyx_v_kAbs, __pyx_v_omega, __pyx_v_phi, __pyx_v_amplitude, __pyx_v_mwl, __pyx_v_depth, __pyx_v_vDir, __pyx_v_gAbs);
8121 
8122  /* function exit code */
8123  __Pyx_RefNannyFinishContext();
8124  return __pyx_r;
8125 }
8126 
8127 static PyObject *__pyx_pf_9WaveTools_30vel_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_kAbs, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_vDir, PyObject *__pyx_v_gAbs) {
8128  PyObject *__pyx_v_phase = NULL;
8129  PyObject *__pyx_v_Z = NULL;
8130  PyObject *__pyx_v_UH = NULL;
8131  PyObject *__pyx_v_UV = NULL;
8132  CYTHON_UNUSED double __pyx_v_ii;
8133  PyObject *__pyx_v_waveDir = NULL;
8134  PyObject *__pyx_v_V = NULL;
8135  PyObject *__pyx_r = NULL;
8136  __Pyx_RefNannyDeclarations
8137  PyObject *__pyx_t_1 = NULL;
8138  PyObject *__pyx_t_2 = NULL;
8139  PyObject *__pyx_t_3 = NULL;
8140  PyObject *__pyx_t_4 = NULL;
8141  double __pyx_t_5;
8142  int __pyx_t_6;
8143  PyObject *__pyx_t_7 = NULL;
8144  PyObject *__pyx_t_8 = NULL;
8145  PyObject *__pyx_t_9 = NULL;
8146  int __pyx_lineno = 0;
8147  const char *__pyx_filename = NULL;
8148  int __pyx_clineno = 0;
8149  __Pyx_RefNannySetupContext("vel_mode", 0);
8150 
8151  /* "WaveTools.py":430
8152  * """
8153  *
8154  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi # <<<<<<<<<<<<<<
8155  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
8156  * UH = 0.
8157  */
8158  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error)
8159  __Pyx_GOTREF(__pyx_t_1);
8160  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_kDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error)
8161  __Pyx_GOTREF(__pyx_t_2);
8162  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error)
8163  __Pyx_GOTREF(__pyx_t_3);
8164  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8165  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8166  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error)
8167  __Pyx_GOTREF(__pyx_t_2);
8168  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error)
8169  __Pyx_GOTREF(__pyx_t_1);
8170  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error)
8171  __Pyx_GOTREF(__pyx_t_4);
8172  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8173  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8174  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error)
8175  __Pyx_GOTREF(__pyx_t_1);
8176  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8177  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8178  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error)
8179  __Pyx_GOTREF(__pyx_t_4);
8180  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_kDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error)
8181  __Pyx_GOTREF(__pyx_t_3);
8182  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error)
8183  __Pyx_GOTREF(__pyx_t_2);
8184  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8185  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8186  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error)
8187  __Pyx_GOTREF(__pyx_t_3);
8188  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8189  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8190  __pyx_t_2 = PyNumber_Multiply(__pyx_v_omega, __pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error)
8191  __Pyx_GOTREF(__pyx_t_2);
8192  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error)
8193  __Pyx_GOTREF(__pyx_t_1);
8194  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8195  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8196  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_phi); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error)
8197  __Pyx_GOTREF(__pyx_t_2);
8198  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8199  __pyx_v_phase = __pyx_t_2;
8200  __pyx_t_2 = 0;
8201 
8202  /* "WaveTools.py":431
8203  *
8204  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
8205  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl # <<<<<<<<<<<<<<
8206  * UH = 0.
8207  * UV=0.
8208  */
8209  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 431, __pyx_L1_error)
8210  __Pyx_GOTREF(__pyx_t_2);
8211  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
8212  __Pyx_GOTREF(__pyx_t_1);
8213  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error)
8214  __Pyx_GOTREF(__pyx_t_3);
8215  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8216  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8217  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
8218  __Pyx_GOTREF(__pyx_t_1);
8219  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 431, __pyx_L1_error)
8220  __Pyx_GOTREF(__pyx_t_2);
8221  __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 431, __pyx_L1_error)
8222  __Pyx_GOTREF(__pyx_t_4);
8223  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8224  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8225  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 431, __pyx_L1_error)
8226  __Pyx_GOTREF(__pyx_t_2);
8227  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8228  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8229  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_vDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 431, __pyx_L1_error)
8230  __Pyx_GOTREF(__pyx_t_4);
8231  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error)
8232  __Pyx_GOTREF(__pyx_t_3);
8233  __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
8234  __Pyx_GOTREF(__pyx_t_1);
8235  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8236  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8237  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L1_error)
8238  __Pyx_GOTREF(__pyx_t_3);
8239  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8240  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8241  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_v_mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
8242  __Pyx_GOTREF(__pyx_t_1);
8243  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8244  __pyx_v_Z = __pyx_t_1;
8245  __pyx_t_1 = 0;
8246 
8247  /* "WaveTools.py":432
8248  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
8249  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
8250  * UH = 0. # <<<<<<<<<<<<<<
8251  * UV=0.
8252  * ii=0.
8253  */
8254  __Pyx_INCREF(__pyx_float_0_);
8255  __pyx_v_UH = __pyx_float_0_;
8256 
8257  /* "WaveTools.py":433
8258  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
8259  * UH = 0.
8260  * UV=0. # <<<<<<<<<<<<<<
8261  * ii=0.
8262  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
8263  */
8264  __Pyx_INCREF(__pyx_float_0_);
8265  __pyx_v_UV = __pyx_float_0_;
8266 
8267  /* "WaveTools.py":434
8268  * UH = 0.
8269  * UV=0.
8270  * ii=0. # <<<<<<<<<<<<<<
8271  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
8272  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
8273  */
8274  __pyx_v_ii = 0.;
8275 
8276  /* "WaveTools.py":435
8277  * UV=0.
8278  * ii=0.
8279  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth) # <<<<<<<<<<<<<<
8280  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
8281  * waveDir = old_div(kDir,kAbs)
8282  */
8283  __pyx_t_1 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_v_omega); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
8284  __Pyx_GOTREF(__pyx_t_1);
8285  __pyx_t_3 = PyNumber_Add(__pyx_v_Z, __pyx_v_depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 435, __pyx_L1_error)
8286  __Pyx_GOTREF(__pyx_t_3);
8287  __pyx_t_2 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
8288  __Pyx_GOTREF(__pyx_t_2);
8289  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8290  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error)
8291  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8292  __pyx_t_2 = PyFloat_FromDouble(cosh(__pyx_t_5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
8293  __Pyx_GOTREF(__pyx_t_2);
8294  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 435, __pyx_L1_error)
8295  __Pyx_GOTREF(__pyx_t_3);
8296  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8297  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8298  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_phase); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error)
8299  __pyx_t_2 = PyFloat_FromDouble(cos(__pyx_t_5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
8300  __Pyx_GOTREF(__pyx_t_2);
8301  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
8302  __Pyx_GOTREF(__pyx_t_1);
8303  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8304  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8305  __pyx_t_2 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_v_depth); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
8306  __Pyx_GOTREF(__pyx_t_2);
8307  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error)
8308  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8309  __pyx_t_2 = PyFloat_FromDouble(sinh(__pyx_t_5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
8310  __Pyx_GOTREF(__pyx_t_2);
8311  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 435, __pyx_L1_error)
8312  __Pyx_GOTREF(__pyx_t_3);
8313  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8314  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8315  __Pyx_DECREF_SET(__pyx_v_UH, __pyx_t_3);
8316  __pyx_t_3 = 0;
8317 
8318  /* "WaveTools.py":436
8319  * ii=0.
8320  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
8321  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth) # <<<<<<<<<<<<<<
8322  * waveDir = old_div(kDir,kAbs)
8323  * UH = UH - Udrift(amplitude,gAbs,old_div(omega,kAbs),depth)
8324  */
8325  __pyx_t_3 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_v_omega); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error)
8326  __Pyx_GOTREF(__pyx_t_3);
8327  __pyx_t_2 = PyNumber_Add(__pyx_v_Z, __pyx_v_depth); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
8328  __Pyx_GOTREF(__pyx_t_2);
8329  __pyx_t_1 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
8330  __Pyx_GOTREF(__pyx_t_1);
8331  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8332  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error)
8333  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8334  __pyx_t_1 = PyFloat_FromDouble(sinh(__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
8335  __Pyx_GOTREF(__pyx_t_1);
8336  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
8337  __Pyx_GOTREF(__pyx_t_2);
8338  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8339  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8340  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_phase); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error)
8341  __pyx_t_1 = PyFloat_FromDouble(sin(__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
8342  __Pyx_GOTREF(__pyx_t_1);
8343  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error)
8344  __Pyx_GOTREF(__pyx_t_3);
8345  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8346  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8347  __pyx_t_1 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_v_depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
8348  __Pyx_GOTREF(__pyx_t_1);
8349  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error)
8350  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8351  __pyx_t_1 = PyFloat_FromDouble(sinh(__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
8352  __Pyx_GOTREF(__pyx_t_1);
8353  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
8354  __Pyx_GOTREF(__pyx_t_2);
8355  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8356  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8357  __Pyx_DECREF_SET(__pyx_v_UV, __pyx_t_2);
8358  __pyx_t_2 = 0;
8359 
8360  /* "WaveTools.py":437
8361  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
8362  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
8363  * waveDir = old_div(kDir,kAbs) # <<<<<<<<<<<<<<
8364  * UH = UH - Udrift(amplitude,gAbs,old_div(omega,kAbs),depth)
8365  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
8366  */
8367  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error)
8368  __Pyx_GOTREF(__pyx_t_1);
8369  __pyx_t_3 = NULL;
8370  __pyx_t_6 = 0;
8371  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
8372  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
8373  if (likely(__pyx_t_3)) {
8374  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8375  __Pyx_INCREF(__pyx_t_3);
8376  __Pyx_INCREF(function);
8377  __Pyx_DECREF_SET(__pyx_t_1, function);
8378  __pyx_t_6 = 1;
8379  }
8380  }
8381  #if CYTHON_FAST_PYCALL
8382  if (PyFunction_Check(__pyx_t_1)) {
8383  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_kDir, __pyx_v_kAbs};
8384  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error)
8385  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8386  __Pyx_GOTREF(__pyx_t_2);
8387  } else
8388  #endif
8389  #if CYTHON_FAST_PYCCALL
8390  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
8391  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_kDir, __pyx_v_kAbs};
8392  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error)
8393  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8394  __Pyx_GOTREF(__pyx_t_2);
8395  } else
8396  #endif
8397  {
8398  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 437, __pyx_L1_error)
8399  __Pyx_GOTREF(__pyx_t_4);
8400  if (__pyx_t_3) {
8401  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
8402  }
8403  __Pyx_INCREF(__pyx_v_kDir);
8404  __Pyx_GIVEREF(__pyx_v_kDir);
8405  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_kDir);
8406  __Pyx_INCREF(__pyx_v_kAbs);
8407  __Pyx_GIVEREF(__pyx_v_kAbs);
8408  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_kAbs);
8409  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error)
8410  __Pyx_GOTREF(__pyx_t_2);
8411  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8412  }
8413  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8414  __pyx_v_waveDir = __pyx_t_2;
8415  __pyx_t_2 = 0;
8416 
8417  /* "WaveTools.py":438
8418  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
8419  * waveDir = old_div(kDir,kAbs)
8420  * UH = UH - Udrift(amplitude,gAbs,old_div(omega,kAbs),depth) # <<<<<<<<<<<<<<
8421  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
8422  * V = np.array([UH*waveDir[0]+UV*vDir[0],
8423  */
8424  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Udrift); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error)
8425  __Pyx_GOTREF(__pyx_t_1);
8426  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __pyx_L1_error)
8427  __Pyx_GOTREF(__pyx_t_3);
8428  __pyx_t_7 = NULL;
8429  __pyx_t_6 = 0;
8430  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
8431  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
8432  if (likely(__pyx_t_7)) {
8433  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8434  __Pyx_INCREF(__pyx_t_7);
8435  __Pyx_INCREF(function);
8436  __Pyx_DECREF_SET(__pyx_t_3, function);
8437  __pyx_t_6 = 1;
8438  }
8439  }
8440  #if CYTHON_FAST_PYCALL
8441  if (PyFunction_Check(__pyx_t_3)) {
8442  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_omega, __pyx_v_kAbs};
8443  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error)
8444  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8445  __Pyx_GOTREF(__pyx_t_4);
8446  } else
8447  #endif
8448  #if CYTHON_FAST_PYCCALL
8449  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
8450  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_omega, __pyx_v_kAbs};
8451  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error)
8452  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8453  __Pyx_GOTREF(__pyx_t_4);
8454  } else
8455  #endif
8456  {
8457  __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 438, __pyx_L1_error)
8458  __Pyx_GOTREF(__pyx_t_8);
8459  if (__pyx_t_7) {
8460  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
8461  }
8462  __Pyx_INCREF(__pyx_v_omega);
8463  __Pyx_GIVEREF(__pyx_v_omega);
8464  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_v_omega);
8465  __Pyx_INCREF(__pyx_v_kAbs);
8466  __Pyx_GIVEREF(__pyx_v_kAbs);
8467  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_v_kAbs);
8468  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error)
8469  __Pyx_GOTREF(__pyx_t_4);
8470  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8471  }
8472  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8473  __pyx_t_3 = NULL;
8474  __pyx_t_6 = 0;
8475  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
8476  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
8477  if (likely(__pyx_t_3)) {
8478  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8479  __Pyx_INCREF(__pyx_t_3);
8480  __Pyx_INCREF(function);
8481  __Pyx_DECREF_SET(__pyx_t_1, function);
8482  __pyx_t_6 = 1;
8483  }
8484  }
8485  #if CYTHON_FAST_PYCALL
8486  if (PyFunction_Check(__pyx_t_1)) {
8487  PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_amplitude, __pyx_v_gAbs, __pyx_t_4, __pyx_v_depth};
8488  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 438, __pyx_L1_error)
8489  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8490  __Pyx_GOTREF(__pyx_t_2);
8491  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8492  } else
8493  #endif
8494  #if CYTHON_FAST_PYCCALL
8495  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
8496  PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_amplitude, __pyx_v_gAbs, __pyx_t_4, __pyx_v_depth};
8497  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 438, __pyx_L1_error)
8498  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8499  __Pyx_GOTREF(__pyx_t_2);
8500  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8501  } else
8502  #endif
8503  {
8504  __pyx_t_8 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 438, __pyx_L1_error)
8505  __Pyx_GOTREF(__pyx_t_8);
8506  if (__pyx_t_3) {
8507  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
8508  }
8509  __Pyx_INCREF(__pyx_v_amplitude);
8510  __Pyx_GIVEREF(__pyx_v_amplitude);
8511  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_v_amplitude);
8512  __Pyx_INCREF(__pyx_v_gAbs);
8513  __Pyx_GIVEREF(__pyx_v_gAbs);
8514  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_v_gAbs);
8515  __Pyx_GIVEREF(__pyx_t_4);
8516  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_6, __pyx_t_4);
8517  __Pyx_INCREF(__pyx_v_depth);
8518  __Pyx_GIVEREF(__pyx_v_depth);
8519  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_6, __pyx_v_depth);
8520  __pyx_t_4 = 0;
8521  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 438, __pyx_L1_error)
8522  __Pyx_GOTREF(__pyx_t_2);
8523  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8524  }
8525  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8526  __pyx_t_1 = PyNumber_Subtract(__pyx_v_UH, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error)
8527  __Pyx_GOTREF(__pyx_t_1);
8528  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8529  __Pyx_DECREF_SET(__pyx_v_UH, __pyx_t_1);
8530  __pyx_t_1 = 0;
8531 
8532  /* "WaveTools.py":440
8533  * UH = UH - Udrift(amplitude,gAbs,old_div(omega,kAbs),depth)
8534  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
8535  * V = np.array([UH*waveDir[0]+UV*vDir[0], # <<<<<<<<<<<<<<
8536  * UH*waveDir[1]+UV*vDir[1],
8537  * UH*waveDir[2]+UV*vDir[2]])
8538  */
8539  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
8540  __Pyx_GOTREF(__pyx_t_2);
8541  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 440, __pyx_L1_error)
8542  __Pyx_GOTREF(__pyx_t_8);
8543  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8544  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_waveDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
8545  __Pyx_GOTREF(__pyx_t_2);
8546  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 440, __pyx_L1_error)
8547  __Pyx_GOTREF(__pyx_t_4);
8548  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8549  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
8550  __Pyx_GOTREF(__pyx_t_2);
8551  __pyx_t_3 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error)
8552  __Pyx_GOTREF(__pyx_t_3);
8553  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8554  __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
8555  __Pyx_GOTREF(__pyx_t_2);
8556  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8557  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8558 
8559  /* "WaveTools.py":441
8560  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
8561  * V = np.array([UH*waveDir[0]+UV*vDir[0],
8562  * UH*waveDir[1]+UV*vDir[1], # <<<<<<<<<<<<<<
8563  * UH*waveDir[2]+UV*vDir[2]])
8564  * return V
8565  */
8566  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_waveDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
8567  __Pyx_GOTREF(__pyx_t_3);
8568  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error)
8569  __Pyx_GOTREF(__pyx_t_4);
8570  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8571  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
8572  __Pyx_GOTREF(__pyx_t_3);
8573  __pyx_t_7 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 441, __pyx_L1_error)
8574  __Pyx_GOTREF(__pyx_t_7);
8575  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8576  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
8577  __Pyx_GOTREF(__pyx_t_3);
8578  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8579  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8580 
8581  /* "WaveTools.py":442
8582  * V = np.array([UH*waveDir[0]+UV*vDir[0],
8583  * UH*waveDir[1]+UV*vDir[1],
8584  * UH*waveDir[2]+UV*vDir[2]]) # <<<<<<<<<<<<<<
8585  * return V
8586  *
8587  */
8588  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_waveDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 442, __pyx_L1_error)
8589  __Pyx_GOTREF(__pyx_t_7);
8590  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 442, __pyx_L1_error)
8591  __Pyx_GOTREF(__pyx_t_4);
8592  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8593  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_vDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 442, __pyx_L1_error)
8594  __Pyx_GOTREF(__pyx_t_7);
8595  __pyx_t_9 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 442, __pyx_L1_error)
8596  __Pyx_GOTREF(__pyx_t_9);
8597  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8598  __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 442, __pyx_L1_error)
8599  __Pyx_GOTREF(__pyx_t_7);
8600  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8601  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
8602 
8603  /* "WaveTools.py":440
8604  * UH = UH - Udrift(amplitude,gAbs,old_div(omega,kAbs),depth)
8605  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
8606  * V = np.array([UH*waveDir[0]+UV*vDir[0], # <<<<<<<<<<<<<<
8607  * UH*waveDir[1]+UV*vDir[1],
8608  * UH*waveDir[2]+UV*vDir[2]])
8609  */
8610  __pyx_t_9 = PyList_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 440, __pyx_L1_error)
8611  __Pyx_GOTREF(__pyx_t_9);
8612  __Pyx_GIVEREF(__pyx_t_2);
8613  PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);
8614  __Pyx_GIVEREF(__pyx_t_3);
8615  PyList_SET_ITEM(__pyx_t_9, 1, __pyx_t_3);
8616  __Pyx_GIVEREF(__pyx_t_7);
8617  PyList_SET_ITEM(__pyx_t_9, 2, __pyx_t_7);
8618  __pyx_t_2 = 0;
8619  __pyx_t_3 = 0;
8620  __pyx_t_7 = 0;
8621  __pyx_t_7 = NULL;
8622  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
8623  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
8624  if (likely(__pyx_t_7)) {
8625  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
8626  __Pyx_INCREF(__pyx_t_7);
8627  __Pyx_INCREF(function);
8628  __Pyx_DECREF_SET(__pyx_t_8, function);
8629  }
8630  }
8631  __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9);
8632  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8633  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
8634  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error)
8635  __Pyx_GOTREF(__pyx_t_1);
8636  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8637  __pyx_v_V = __pyx_t_1;
8638  __pyx_t_1 = 0;
8639 
8640  /* "WaveTools.py":443
8641  * UH*waveDir[1]+UV*vDir[1],
8642  * UH*waveDir[2]+UV*vDir[2]])
8643  * return V # <<<<<<<<<<<<<<
8644  *
8645  *
8646  */
8647  __Pyx_XDECREF(__pyx_r);
8648  __Pyx_INCREF(__pyx_v_V);
8649  __pyx_r = __pyx_v_V;
8650  goto __pyx_L0;
8651 
8652  /* "WaveTools.py":397
8653  * return 0.5*gAbs*amp*amp/c/d
8654  *
8655  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, vDir, gAbs): # <<<<<<<<<<<<<<
8656  * """Calculates the wave velocity components for a single frequency mode
8657  *
8658  */
8659 
8660  /* function exit code */
8661  __pyx_L1_error:;
8662  __Pyx_XDECREF(__pyx_t_1);
8663  __Pyx_XDECREF(__pyx_t_2);
8664  __Pyx_XDECREF(__pyx_t_3);
8665  __Pyx_XDECREF(__pyx_t_4);
8666  __Pyx_XDECREF(__pyx_t_7);
8667  __Pyx_XDECREF(__pyx_t_8);
8668  __Pyx_XDECREF(__pyx_t_9);
8669  __Pyx_AddTraceback("WaveTools.vel_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
8670  __pyx_r = NULL;
8671  __pyx_L0:;
8672  __Pyx_XDECREF(__pyx_v_phase);
8673  __Pyx_XDECREF(__pyx_v_Z);
8674  __Pyx_XDECREF(__pyx_v_UH);
8675  __Pyx_XDECREF(__pyx_v_UV);
8676  __Pyx_XDECREF(__pyx_v_waveDir);
8677  __Pyx_XDECREF(__pyx_v_V);
8678  __Pyx_XGIVEREF(__pyx_r);
8679  __Pyx_RefNannyFinishContext();
8680  return __pyx_r;
8681 }
8682 
8683 /* "WaveTools.py":447
8684  *
8685  *
8686  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
8687  * """Calculates sigma function for JONSWAP spectrum
8688  *
8689  */
8690 
8691 /* Python wrapper */
8692 static PyObject *__pyx_pw_9WaveTools_33sigma(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8693 static char __pyx_doc_9WaveTools_32sigma[] = "Calculates sigma function for JONSWAP spectrum\n\n See http://www.wikiwaves.org/Ocean-Wave_Sectra\n Parameters\n ----------\n omega : numpy.ndarray\n Angular frequency array\n omega0 : numpy.ndarray\n Peak angular frequency\n Returns\n --------\n numpy.ndarray\n 1D Numpy array of simga function with respect to f\n\n ";
8694 static PyMethodDef __pyx_mdef_9WaveTools_33sigma = {"sigma", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_33sigma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_32sigma};
8695 static PyObject *__pyx_pw_9WaveTools_33sigma(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8696  PyObject *__pyx_v_omega = 0;
8697  PyObject *__pyx_v_omega0 = 0;
8698  int __pyx_lineno = 0;
8699  const char *__pyx_filename = NULL;
8700  int __pyx_clineno = 0;
8701  PyObject *__pyx_r = 0;
8702  __Pyx_RefNannyDeclarations
8703  __Pyx_RefNannySetupContext("sigma (wrapper)", 0);
8704  {
8705  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_omega,&__pyx_n_s_omega0,0};
8706  PyObject* values[2] = {0,0};
8707  if (unlikely(__pyx_kwds)) {
8708  Py_ssize_t kw_args;
8709  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8710  switch (pos_args) {
8711  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8712  CYTHON_FALLTHROUGH;
8713  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8714  CYTHON_FALLTHROUGH;
8715  case 0: break;
8716  default: goto __pyx_L5_argtuple_error;
8717  }
8718  kw_args = PyDict_Size(__pyx_kwds);
8719  switch (pos_args) {
8720  case 0:
8721  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
8722  else goto __pyx_L5_argtuple_error;
8723  CYTHON_FALLTHROUGH;
8724  case 1:
8725  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_omega0)) != 0)) kw_args--;
8726  else {
8727  __Pyx_RaiseArgtupleInvalid("sigma", 1, 2, 2, 1); __PYX_ERR(0, 447, __pyx_L3_error)
8728  }
8729  }
8730  if (unlikely(kw_args > 0)) {
8731  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sigma") < 0)) __PYX_ERR(0, 447, __pyx_L3_error)
8732  }
8733  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
8734  goto __pyx_L5_argtuple_error;
8735  } else {
8736  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8737  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8738  }
8739  __pyx_v_omega = values[0];
8740  __pyx_v_omega0 = values[1];
8741  }
8742  goto __pyx_L4_argument_unpacking_done;
8743  __pyx_L5_argtuple_error:;
8744  __Pyx_RaiseArgtupleInvalid("sigma", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 447, __pyx_L3_error)
8745  __pyx_L3_error:;
8746  __Pyx_AddTraceback("WaveTools.sigma", __pyx_clineno, __pyx_lineno, __pyx_filename);
8747  __Pyx_RefNannyFinishContext();
8748  return NULL;
8749  __pyx_L4_argument_unpacking_done:;
8750  __pyx_r = __pyx_pf_9WaveTools_32sigma(__pyx_self, __pyx_v_omega, __pyx_v_omega0);
8751 
8752  /* function exit code */
8753  __Pyx_RefNannyFinishContext();
8754  return __pyx_r;
8755 }
8756 
8757 static PyObject *__pyx_pf_9WaveTools_32sigma(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_omega, PyObject *__pyx_v_omega0) {
8758  PyObject *__pyx_v_sigmaReturn = NULL;
8759  PyObject *__pyx_r = NULL;
8760  __Pyx_RefNannyDeclarations
8761  PyObject *__pyx_t_1 = NULL;
8762  PyObject *__pyx_t_2 = NULL;
8763  PyObject *__pyx_t_3 = NULL;
8764  PyObject *__pyx_t_4 = NULL;
8765  int __pyx_t_5;
8766  PyObject *__pyx_t_6 = NULL;
8767  int __pyx_lineno = 0;
8768  const char *__pyx_filename = NULL;
8769  int __pyx_clineno = 0;
8770  __Pyx_RefNannySetupContext("sigma", 0);
8771 
8772  /* "WaveTools.py":463
8773  *
8774  * """
8775  * sigmaReturn = np.where(omega > omega0,0.09,0.07) # <<<<<<<<<<<<<<
8776  * return sigmaReturn
8777  *
8778  */
8779  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error)
8780  __Pyx_GOTREF(__pyx_t_2);
8781  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error)
8782  __Pyx_GOTREF(__pyx_t_3);
8783  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8784  __pyx_t_2 = PyObject_RichCompare(__pyx_v_omega, __pyx_v_omega0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error)
8785  __pyx_t_4 = NULL;
8786  __pyx_t_5 = 0;
8787  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
8788  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
8789  if (likely(__pyx_t_4)) {
8790  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8791  __Pyx_INCREF(__pyx_t_4);
8792  __Pyx_INCREF(function);
8793  __Pyx_DECREF_SET(__pyx_t_3, function);
8794  __pyx_t_5 = 1;
8795  }
8796  }
8797  #if CYTHON_FAST_PYCALL
8798  if (PyFunction_Check(__pyx_t_3)) {
8799  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_2, __pyx_float_0_09, __pyx_float_0_07};
8800  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error)
8801  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
8802  __Pyx_GOTREF(__pyx_t_1);
8803  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8804  } else
8805  #endif
8806  #if CYTHON_FAST_PYCCALL
8807  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
8808  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_2, __pyx_float_0_09, __pyx_float_0_07};
8809  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error)
8810  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
8811  __Pyx_GOTREF(__pyx_t_1);
8812  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8813  } else
8814  #endif
8815  {
8816  __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 463, __pyx_L1_error)
8817  __Pyx_GOTREF(__pyx_t_6);
8818  if (__pyx_t_4) {
8819  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
8820  }
8821  __Pyx_GIVEREF(__pyx_t_2);
8822  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
8823  __Pyx_INCREF(__pyx_float_0_09);
8824  __Pyx_GIVEREF(__pyx_float_0_09);
8825  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_float_0_09);
8826  __Pyx_INCREF(__pyx_float_0_07);
8827  __Pyx_GIVEREF(__pyx_float_0_07);
8828  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_float_0_07);
8829  __pyx_t_2 = 0;
8830  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error)
8831  __Pyx_GOTREF(__pyx_t_1);
8832  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8833  }
8834  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8835  __pyx_v_sigmaReturn = __pyx_t_1;
8836  __pyx_t_1 = 0;
8837 
8838  /* "WaveTools.py":464
8839  * """
8840  * sigmaReturn = np.where(omega > omega0,0.09,0.07)
8841  * return sigmaReturn # <<<<<<<<<<<<<<
8842  *
8843  * def custom():
8844  */
8845  __Pyx_XDECREF(__pyx_r);
8846  __Pyx_INCREF(__pyx_v_sigmaReturn);
8847  __pyx_r = __pyx_v_sigmaReturn;
8848  goto __pyx_L0;
8849 
8850  /* "WaveTools.py":447
8851  *
8852  *
8853  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
8854  * """Calculates sigma function for JONSWAP spectrum
8855  *
8856  */
8857 
8858  /* function exit code */
8859  __pyx_L1_error:;
8860  __Pyx_XDECREF(__pyx_t_1);
8861  __Pyx_XDECREF(__pyx_t_2);
8862  __Pyx_XDECREF(__pyx_t_3);
8863  __Pyx_XDECREF(__pyx_t_4);
8864  __Pyx_XDECREF(__pyx_t_6);
8865  __Pyx_AddTraceback("WaveTools.sigma", __pyx_clineno, __pyx_lineno, __pyx_filename);
8866  __pyx_r = NULL;
8867  __pyx_L0:;
8868  __Pyx_XDECREF(__pyx_v_sigmaReturn);
8869  __Pyx_XGIVEREF(__pyx_r);
8870  __Pyx_RefNannyFinishContext();
8871  return __pyx_r;
8872 }
8873 
8874 /* "WaveTools.py":466
8875  * return sigmaReturn
8876  *
8877  * def custom(): # <<<<<<<<<<<<<<
8878  * pass
8879  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None):
8880  */
8881 
8882 /* Python wrapper */
8883 static PyObject *__pyx_pw_9WaveTools_35custom(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
8884 static PyMethodDef __pyx_mdef_9WaveTools_35custom = {"custom", (PyCFunction)__pyx_pw_9WaveTools_35custom, METH_NOARGS, 0};
8885 static PyObject *__pyx_pw_9WaveTools_35custom(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
8886  PyObject *__pyx_r = 0;
8887  __Pyx_RefNannyDeclarations
8888  __Pyx_RefNannySetupContext("custom (wrapper)", 0);
8889  __pyx_r = __pyx_pf_9WaveTools_34custom(__pyx_self);
8890 
8891  /* function exit code */
8892  __Pyx_RefNannyFinishContext();
8893  return __pyx_r;
8894 }
8895 
8896 static PyObject *__pyx_pf_9WaveTools_34custom(CYTHON_UNUSED PyObject *__pyx_self) {
8897  PyObject *__pyx_r = NULL;
8898  __Pyx_RefNannyDeclarations
8899  __Pyx_RefNannySetupContext("custom", 0);
8900 
8901  /* function exit code */
8902  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8903  __Pyx_XGIVEREF(__pyx_r);
8904  __Pyx_RefNannyFinishContext();
8905  return __pyx_r;
8906 }
8907 
8908 /* "WaveTools.py":468
8909  * def custom():
8910  * pass
8911  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
8912  * """Calculates the JONSWAP frequency spectrum (Goda 2009)
8913  *
8914  */
8915 
8916 /* Python wrapper */
8917 static PyObject *__pyx_pw_9WaveTools_37JONSWAP(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8918 static char __pyx_doc_9WaveTools_36JONSWAP[] = "Calculates the JONSWAP frequency spectrum (Goda 2009)\n\n The calculation includes the TMA modification, if TMA =True\n\n Parameters\n ----------\n f : numpy.ndarray\n Frequency array\n f0 : float\n Peak frequency\n Hs : float\n Significant wave height\n gamma : Optional[float]\n Peak enhancement factor\n TMA : bool\n Description: TMA switch\n depth : Optional[float]\n Water depth\n\n Returns\n --------\n numpy.ndarray\n 1D Numpy array of the spectrum in frequency domain\n\n ";
8919 static PyMethodDef __pyx_mdef_9WaveTools_37JONSWAP = {"JONSWAP", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_37JONSWAP, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_36JONSWAP};
8920 static PyObject *__pyx_pw_9WaveTools_37JONSWAP(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8921  PyObject *__pyx_v_f = 0;
8922  PyObject *__pyx_v_f0 = 0;
8923  PyObject *__pyx_v_Hs = 0;
8924  PyObject *__pyx_v_gamma = 0;
8925  PyObject *__pyx_v_TMA = 0;
8926  PyObject *__pyx_v_depth = 0;
8927  int __pyx_lineno = 0;
8928  const char *__pyx_filename = NULL;
8929  int __pyx_clineno = 0;
8930  PyObject *__pyx_r = 0;
8931  __Pyx_RefNannyDeclarations
8932  __Pyx_RefNannySetupContext("JONSWAP (wrapper)", 0);
8933  {
8934  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_f0,&__pyx_n_s_Hs,&__pyx_n_s_gamma,&__pyx_n_s_TMA,&__pyx_n_s_depth,0};
8935  PyObject* values[6] = {0,0,0,0,0,0};
8936  values[3] = ((PyObject *)((PyObject*)__pyx_float_3_3));
8937  values[4] = ((PyObject *)((PyObject *)Py_False));
8938  values[5] = ((PyObject *)((PyObject *)Py_None));
8939  if (unlikely(__pyx_kwds)) {
8940  Py_ssize_t kw_args;
8941  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8942  switch (pos_args) {
8943  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8944  CYTHON_FALLTHROUGH;
8945  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8946  CYTHON_FALLTHROUGH;
8947  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8948  CYTHON_FALLTHROUGH;
8949  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8950  CYTHON_FALLTHROUGH;
8951  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8952  CYTHON_FALLTHROUGH;
8953  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8954  CYTHON_FALLTHROUGH;
8955  case 0: break;
8956  default: goto __pyx_L5_argtuple_error;
8957  }
8958  kw_args = PyDict_Size(__pyx_kwds);
8959  switch (pos_args) {
8960  case 0:
8961  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
8962  else goto __pyx_L5_argtuple_error;
8963  CYTHON_FALLTHROUGH;
8964  case 1:
8965  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
8966  else {
8967  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, 1); __PYX_ERR(0, 468, __pyx_L3_error)
8968  }
8969  CYTHON_FALLTHROUGH;
8970  case 2:
8971  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
8972  else {
8973  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, 2); __PYX_ERR(0, 468, __pyx_L3_error)
8974  }
8975  CYTHON_FALLTHROUGH;
8976  case 3:
8977  if (kw_args > 0) {
8978  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_gamma);
8979  if (value) { values[3] = value; kw_args--; }
8980  }
8981  CYTHON_FALLTHROUGH;
8982  case 4:
8983  if (kw_args > 0) {
8984  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_TMA);
8985  if (value) { values[4] = value; kw_args--; }
8986  }
8987  CYTHON_FALLTHROUGH;
8988  case 5:
8989  if (kw_args > 0) {
8990  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth);
8991  if (value) { values[5] = value; kw_args--; }
8992  }
8993  }
8994  if (unlikely(kw_args > 0)) {
8995  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "JONSWAP") < 0)) __PYX_ERR(0, 468, __pyx_L3_error)
8996  }
8997  } else {
8998  switch (PyTuple_GET_SIZE(__pyx_args)) {
8999  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
9000  CYTHON_FALLTHROUGH;
9001  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9002  CYTHON_FALLTHROUGH;
9003  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9004  CYTHON_FALLTHROUGH;
9005  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9006  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9007  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9008  break;
9009  default: goto __pyx_L5_argtuple_error;
9010  }
9011  }
9012  __pyx_v_f = values[0];
9013  __pyx_v_f0 = values[1];
9014  __pyx_v_Hs = values[2];
9015  __pyx_v_gamma = values[3];
9016  __pyx_v_TMA = values[4];
9017  __pyx_v_depth = values[5];
9018  }
9019  goto __pyx_L4_argument_unpacking_done;
9020  __pyx_L5_argtuple_error:;
9021  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 468, __pyx_L3_error)
9022  __pyx_L3_error:;
9023  __Pyx_AddTraceback("WaveTools.JONSWAP", __pyx_clineno, __pyx_lineno, __pyx_filename);
9024  __Pyx_RefNannyFinishContext();
9025  return NULL;
9026  __pyx_L4_argument_unpacking_done:;
9027  __pyx_r = __pyx_pf_9WaveTools_36JONSWAP(__pyx_self, __pyx_v_f, __pyx_v_f0, __pyx_v_Hs, __pyx_v_gamma, __pyx_v_TMA, __pyx_v_depth);
9028 
9029  /* function exit code */
9030  __Pyx_RefNannyFinishContext();
9031  return __pyx_r;
9032 }
9033 
9034 static PyObject *__pyx_pf_9WaveTools_36JONSWAP(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs, PyObject *__pyx_v_gamma, PyObject *__pyx_v_TMA, PyObject *__pyx_v_depth) {
9035  PyObject *__pyx_v_Tp = NULL;
9036  PyObject *__pyx_v_bj = NULL;
9037  PyObject *__pyx_v_r = NULL;
9038  PyObject *__pyx_v_tma = NULL;
9039  PyObject *__pyx_v_k = NULL;
9040  PyObject *__pyx_r = NULL;
9041  __Pyx_RefNannyDeclarations
9042  PyObject *__pyx_t_1 = NULL;
9043  PyObject *__pyx_t_2 = NULL;
9044  PyObject *__pyx_t_3 = NULL;
9045  int __pyx_t_4;
9046  PyObject *__pyx_t_5 = NULL;
9047  double __pyx_t_6;
9048  PyObject *__pyx_t_7 = NULL;
9049  PyObject *__pyx_t_8 = NULL;
9050  PyObject *__pyx_t_9 = NULL;
9051  PyObject *__pyx_t_10 = NULL;
9052  PyObject *__pyx_t_11 = NULL;
9053  int __pyx_t_12;
9054  int __pyx_t_13;
9055  int __pyx_lineno = 0;
9056  const char *__pyx_filename = NULL;
9057  int __pyx_clineno = 0;
9058  __Pyx_RefNannySetupContext("JONSWAP", 0);
9059 
9060  /* "WaveTools.py":494
9061  *
9062  * """
9063  * Tp = old_div(1.,f0) # <<<<<<<<<<<<<<
9064  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-old_div(0.185,(1.9+gamma)))
9065  * r = np.exp(old_div(-(Tp*f-1.)**2,(2.*sigma(f,f0)**2)))
9066  */
9067  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 494, __pyx_L1_error)
9068  __Pyx_GOTREF(__pyx_t_2);
9069  __pyx_t_3 = NULL;
9070  __pyx_t_4 = 0;
9071  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9072  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
9073  if (likely(__pyx_t_3)) {
9074  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9075  __Pyx_INCREF(__pyx_t_3);
9076  __Pyx_INCREF(function);
9077  __Pyx_DECREF_SET(__pyx_t_2, function);
9078  __pyx_t_4 = 1;
9079  }
9080  }
9081  #if CYTHON_FAST_PYCALL
9082  if (PyFunction_Check(__pyx_t_2)) {
9083  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_float_1_, __pyx_v_f0};
9084  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L1_error)
9085  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9086  __Pyx_GOTREF(__pyx_t_1);
9087  } else
9088  #endif
9089  #if CYTHON_FAST_PYCCALL
9090  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
9091  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_float_1_, __pyx_v_f0};
9092  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L1_error)
9093  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9094  __Pyx_GOTREF(__pyx_t_1);
9095  } else
9096  #endif
9097  {
9098  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 494, __pyx_L1_error)
9099  __Pyx_GOTREF(__pyx_t_5);
9100  if (__pyx_t_3) {
9101  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
9102  }
9103  __Pyx_INCREF(__pyx_float_1_);
9104  __Pyx_GIVEREF(__pyx_float_1_);
9105  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_float_1_);
9106  __Pyx_INCREF(__pyx_v_f0);
9107  __Pyx_GIVEREF(__pyx_v_f0);
9108  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_f0);
9109  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L1_error)
9110  __Pyx_GOTREF(__pyx_t_1);
9111  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9112  }
9113  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9114  __pyx_v_Tp = __pyx_t_1;
9115  __pyx_t_1 = 0;
9116 
9117  /* "WaveTools.py":495
9118  * """
9119  * Tp = old_div(1.,f0)
9120  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-old_div(0.185,(1.9+gamma))) # <<<<<<<<<<<<<<
9121  * r = np.exp(old_div(-(Tp*f-1.)**2,(2.*sigma(f,f0)**2)))
9122  * tma = 1.
9123  */
9124  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_gamma); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L1_error)
9125  __pyx_t_1 = PyFloat_FromDouble((0.0624 * (1.094 - (0.01915 * log(__pyx_t_6))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 495, __pyx_L1_error)
9126  __Pyx_GOTREF(__pyx_t_1);
9127  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_0336, __pyx_v_gamma); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 495, __pyx_L1_error)
9128  __Pyx_GOTREF(__pyx_t_2);
9129  __pyx_t_5 = __Pyx_PyFloat_AddCObj(__pyx_float_0_23, __pyx_t_2, 0.23, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 495, __pyx_L1_error)
9130  __Pyx_GOTREF(__pyx_t_5);
9131  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9132  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error)
9133  __Pyx_GOTREF(__pyx_t_3);
9134  __pyx_t_7 = __Pyx_PyFloat_AddCObj(__pyx_float_1_9, __pyx_v_gamma, 1.9, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 495, __pyx_L1_error)
9135  __Pyx_GOTREF(__pyx_t_7);
9136  __pyx_t_8 = NULL;
9137  __pyx_t_4 = 0;
9138  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
9139  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
9140  if (likely(__pyx_t_8)) {
9141  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
9142  __Pyx_INCREF(__pyx_t_8);
9143  __Pyx_INCREF(function);
9144  __Pyx_DECREF_SET(__pyx_t_3, function);
9145  __pyx_t_4 = 1;
9146  }
9147  }
9148  #if CYTHON_FAST_PYCALL
9149  if (PyFunction_Check(__pyx_t_3)) {
9150  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_float_0_185, __pyx_t_7};
9151  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 495, __pyx_L1_error)
9152  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
9153  __Pyx_GOTREF(__pyx_t_2);
9154  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9155  } else
9156  #endif
9157  #if CYTHON_FAST_PYCCALL
9158  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
9159  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_float_0_185, __pyx_t_7};
9160  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 495, __pyx_L1_error)
9161  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
9162  __Pyx_GOTREF(__pyx_t_2);
9163  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9164  } else
9165  #endif
9166  {
9167  __pyx_t_9 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 495, __pyx_L1_error)
9168  __Pyx_GOTREF(__pyx_t_9);
9169  if (__pyx_t_8) {
9170  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
9171  }
9172  __Pyx_INCREF(__pyx_float_0_185);
9173  __Pyx_GIVEREF(__pyx_float_0_185);
9174  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_float_0_185);
9175  __Pyx_GIVEREF(__pyx_t_7);
9176  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_7);
9177  __pyx_t_7 = 0;
9178  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 495, __pyx_L1_error)
9179  __Pyx_GOTREF(__pyx_t_2);
9180  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9181  }
9182  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9183  __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error)
9184  __Pyx_GOTREF(__pyx_t_3);
9185  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9186  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9187  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 495, __pyx_L1_error)
9188  __Pyx_GOTREF(__pyx_t_2);
9189  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9190  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9191  __pyx_v_bj = __pyx_t_2;
9192  __pyx_t_2 = 0;
9193 
9194  /* "WaveTools.py":496
9195  * Tp = old_div(1.,f0)
9196  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-old_div(0.185,(1.9+gamma)))
9197  * r = np.exp(old_div(-(Tp*f-1.)**2,(2.*sigma(f,f0)**2))) # <<<<<<<<<<<<<<
9198  * tma = 1.
9199  * if TMA:
9200  */
9201  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
9202  __Pyx_GOTREF(__pyx_t_3);
9203  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error)
9204  __Pyx_GOTREF(__pyx_t_1);
9205  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9206  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 496, __pyx_L1_error)
9207  __Pyx_GOTREF(__pyx_t_5);
9208  __pyx_t_9 = PyNumber_Multiply(__pyx_v_Tp, __pyx_v_f); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
9209  __Pyx_GOTREF(__pyx_t_9);
9210  __pyx_t_7 = __Pyx_PyFloat_SubtractObjC(__pyx_t_9, __pyx_float_1_, 1., 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 496, __pyx_L1_error)
9211  __Pyx_GOTREF(__pyx_t_7);
9212  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9213  __pyx_t_9 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
9214  __Pyx_GOTREF(__pyx_t_9);
9215  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9216  __pyx_t_7 = PyNumber_Negative(__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 496, __pyx_L1_error)
9217  __Pyx_GOTREF(__pyx_t_7);
9218  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9219  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_sigma); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 496, __pyx_L1_error)
9220  __Pyx_GOTREF(__pyx_t_8);
9221  __pyx_t_10 = NULL;
9222  __pyx_t_4 = 0;
9223  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
9224  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
9225  if (likely(__pyx_t_10)) {
9226  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
9227  __Pyx_INCREF(__pyx_t_10);
9228  __Pyx_INCREF(function);
9229  __Pyx_DECREF_SET(__pyx_t_8, function);
9230  __pyx_t_4 = 1;
9231  }
9232  }
9233  #if CYTHON_FAST_PYCALL
9234  if (PyFunction_Check(__pyx_t_8)) {
9235  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_f, __pyx_v_f0};
9236  __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
9237  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
9238  __Pyx_GOTREF(__pyx_t_9);
9239  } else
9240  #endif
9241  #if CYTHON_FAST_PYCCALL
9242  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
9243  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_f, __pyx_v_f0};
9244  __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
9245  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
9246  __Pyx_GOTREF(__pyx_t_9);
9247  } else
9248  #endif
9249  {
9250  __pyx_t_11 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 496, __pyx_L1_error)
9251  __Pyx_GOTREF(__pyx_t_11);
9252  if (__pyx_t_10) {
9253  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
9254  }
9255  __Pyx_INCREF(__pyx_v_f);
9256  __Pyx_GIVEREF(__pyx_v_f);
9257  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_4, __pyx_v_f);
9258  __Pyx_INCREF(__pyx_v_f0);
9259  __Pyx_GIVEREF(__pyx_v_f0);
9260  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_4, __pyx_v_f0);
9261  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
9262  __Pyx_GOTREF(__pyx_t_9);
9263  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9264  }
9265  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9266  __pyx_t_8 = PyNumber_Power(__pyx_t_9, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 496, __pyx_L1_error)
9267  __Pyx_GOTREF(__pyx_t_8);
9268  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9269  __pyx_t_9 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 496, __pyx_L1_error)
9270  __Pyx_GOTREF(__pyx_t_9);
9271  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9272  __pyx_t_8 = NULL;
9273  __pyx_t_4 = 0;
9274  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
9275  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
9276  if (likely(__pyx_t_8)) {
9277  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
9278  __Pyx_INCREF(__pyx_t_8);
9279  __Pyx_INCREF(function);
9280  __Pyx_DECREF_SET(__pyx_t_5, function);
9281  __pyx_t_4 = 1;
9282  }
9283  }
9284  #if CYTHON_FAST_PYCALL
9285  if (PyFunction_Check(__pyx_t_5)) {
9286  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_9};
9287  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
9288  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
9289  __Pyx_GOTREF(__pyx_t_3);
9290  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9291  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9292  } else
9293  #endif
9294  #if CYTHON_FAST_PYCCALL
9295  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
9296  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_9};
9297  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
9298  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
9299  __Pyx_GOTREF(__pyx_t_3);
9300  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9301  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9302  } else
9303  #endif
9304  {
9305  __pyx_t_11 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 496, __pyx_L1_error)
9306  __Pyx_GOTREF(__pyx_t_11);
9307  if (__pyx_t_8) {
9308  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
9309  }
9310  __Pyx_GIVEREF(__pyx_t_7);
9311  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_4, __pyx_t_7);
9312  __Pyx_GIVEREF(__pyx_t_9);
9313  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_4, __pyx_t_9);
9314  __pyx_t_7 = 0;
9315  __pyx_t_9 = 0;
9316  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
9317  __Pyx_GOTREF(__pyx_t_3);
9318  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9319  }
9320  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9321  __pyx_t_5 = NULL;
9322  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
9323  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
9324  if (likely(__pyx_t_5)) {
9325  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9326  __Pyx_INCREF(__pyx_t_5);
9327  __Pyx_INCREF(function);
9328  __Pyx_DECREF_SET(__pyx_t_1, function);
9329  }
9330  }
9331  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3);
9332  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
9333  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9334  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error)
9335  __Pyx_GOTREF(__pyx_t_2);
9336  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9337  __pyx_v_r = __pyx_t_2;
9338  __pyx_t_2 = 0;
9339 
9340  /* "WaveTools.py":497
9341  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-old_div(0.185,(1.9+gamma)))
9342  * r = np.exp(old_div(-(Tp*f-1.)**2,(2.*sigma(f,f0)**2)))
9343  * tma = 1. # <<<<<<<<<<<<<<
9344  * if TMA:
9345  * if (depth is None):
9346  */
9347  __Pyx_INCREF(__pyx_float_1_);
9348  __pyx_v_tma = __pyx_float_1_;
9349 
9350  /* "WaveTools.py":498
9351  * r = np.exp(old_div(-(Tp*f-1.)**2,(2.*sigma(f,f0)**2)))
9352  * tma = 1.
9353  * if TMA: # <<<<<<<<<<<<<<
9354  * if (depth is None):
9355  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
9356  */
9357  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_TMA); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 498, __pyx_L1_error)
9358  if (__pyx_t_12) {
9359 
9360  /* "WaveTools.py":499
9361  * tma = 1.
9362  * if TMA:
9363  * if (depth is None): # <<<<<<<<<<<<<<
9364  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
9365  * logEvent("Wavetools:py. Stopping simulation")
9366  */
9367  __pyx_t_12 = (__pyx_v_depth == Py_None);
9368  __pyx_t_13 = (__pyx_t_12 != 0);
9369  if (__pyx_t_13) {
9370 
9371  /* "WaveTools.py":500
9372  * if TMA:
9373  * if (depth is None):
9374  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum") # <<<<<<<<<<<<<<
9375  * logEvent("Wavetools:py. Stopping simulation")
9376  * sys.exit(1)
9377  */
9378  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 500, __pyx_L1_error)
9379  __Pyx_GOTREF(__pyx_t_1);
9380  __pyx_t_3 = NULL;
9381  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
9382  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
9383  if (likely(__pyx_t_3)) {
9384  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9385  __Pyx_INCREF(__pyx_t_3);
9386  __Pyx_INCREF(function);
9387  __Pyx_DECREF_SET(__pyx_t_1, function);
9388  }
9389  }
9390  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_kp_s_Wavetools_py_Provide_valid_depth) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Wavetools_py_Provide_valid_depth);
9391  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9392  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error)
9393  __Pyx_GOTREF(__pyx_t_2);
9394  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9395  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9396 
9397  /* "WaveTools.py":501
9398  * if (depth is None):
9399  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
9400  * logEvent("Wavetools:py. Stopping simulation") # <<<<<<<<<<<<<<
9401  * sys.exit(1)
9402  * k = dispersion(2*M_PI*f,depth)
9403  */
9404  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 501, __pyx_L1_error)
9405  __Pyx_GOTREF(__pyx_t_1);
9406  __pyx_t_3 = NULL;
9407  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
9408  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
9409  if (likely(__pyx_t_3)) {
9410  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9411  __Pyx_INCREF(__pyx_t_3);
9412  __Pyx_INCREF(function);
9413  __Pyx_DECREF_SET(__pyx_t_1, function);
9414  }
9415  }
9416  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_kp_s_Wavetools_py_Stopping_simulation) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Wavetools_py_Stopping_simulation);
9417  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9418  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 501, __pyx_L1_error)
9419  __Pyx_GOTREF(__pyx_t_2);
9420  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9421  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9422 
9423  /* "WaveTools.py":502
9424  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
9425  * logEvent("Wavetools:py. Stopping simulation")
9426  * sys.exit(1) # <<<<<<<<<<<<<<
9427  * k = dispersion(2*M_PI*f,depth)
9428  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
9429  */
9430  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
9431  __Pyx_GOTREF(__pyx_t_1);
9432  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error)
9433  __Pyx_GOTREF(__pyx_t_3);
9434  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9435  __pyx_t_1 = NULL;
9436  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
9437  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
9438  if (likely(__pyx_t_1)) {
9439  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
9440  __Pyx_INCREF(__pyx_t_1);
9441  __Pyx_INCREF(function);
9442  __Pyx_DECREF_SET(__pyx_t_3, function);
9443  }
9444  }
9445  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_1);
9446  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
9447  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error)
9448  __Pyx_GOTREF(__pyx_t_2);
9449  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9450  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9451 
9452  /* "WaveTools.py":499
9453  * tma = 1.
9454  * if TMA:
9455  * if (depth is None): # <<<<<<<<<<<<<<
9456  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
9457  * logEvent("Wavetools:py. Stopping simulation")
9458  */
9459  }
9460 
9461  /* "WaveTools.py":503
9462  * logEvent("Wavetools:py. Stopping simulation")
9463  * sys.exit(1)
9464  * k = dispersion(2*M_PI*f,depth) # <<<<<<<<<<<<<<
9465  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
9466  *
9467  */
9468  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error)
9469  __Pyx_GOTREF(__pyx_t_3);
9470  __pyx_t_1 = PyFloat_FromDouble((2.0 * M_PI)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L1_error)
9471  __Pyx_GOTREF(__pyx_t_1);
9472  __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 503, __pyx_L1_error)
9473  __Pyx_GOTREF(__pyx_t_5);
9474  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9475  __pyx_t_1 = NULL;
9476  __pyx_t_4 = 0;
9477  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
9478  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
9479  if (likely(__pyx_t_1)) {
9480  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
9481  __Pyx_INCREF(__pyx_t_1);
9482  __Pyx_INCREF(function);
9483  __Pyx_DECREF_SET(__pyx_t_3, function);
9484  __pyx_t_4 = 1;
9485  }
9486  }
9487  #if CYTHON_FAST_PYCALL
9488  if (PyFunction_Check(__pyx_t_3)) {
9489  PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_5, __pyx_v_depth};
9490  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error)
9491  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
9492  __Pyx_GOTREF(__pyx_t_2);
9493  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9494  } else
9495  #endif
9496  #if CYTHON_FAST_PYCCALL
9497  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
9498  PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_5, __pyx_v_depth};
9499  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error)
9500  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
9501  __Pyx_GOTREF(__pyx_t_2);
9502  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9503  } else
9504  #endif
9505  {
9506  __pyx_t_11 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 503, __pyx_L1_error)
9507  __Pyx_GOTREF(__pyx_t_11);
9508  if (__pyx_t_1) {
9509  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __pyx_t_1 = NULL;
9510  }
9511  __Pyx_GIVEREF(__pyx_t_5);
9512  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_4, __pyx_t_5);
9513  __Pyx_INCREF(__pyx_v_depth);
9514  __Pyx_GIVEREF(__pyx_v_depth);
9515  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_4, __pyx_v_depth);
9516  __pyx_t_5 = 0;
9517  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error)
9518  __Pyx_GOTREF(__pyx_t_2);
9519  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9520  }
9521  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9522  __pyx_v_k = __pyx_t_2;
9523  __pyx_t_2 = 0;
9524 
9525  /* "WaveTools.py":504
9526  * sys.exit(1)
9527  * k = dispersion(2*M_PI*f,depth)
9528  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth)) # <<<<<<<<<<<<<<
9529  *
9530  * return tma * bj*(Hs**2)*(old_div(1.,((Tp**4) *(f**5))))*np.exp(-1.25*(old_div(1.,(Tp*f)**(4.))))*(gamma**r)
9531  */
9532  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
9533  __Pyx_GOTREF(__pyx_t_3);
9534  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tanh); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 504, __pyx_L1_error)
9535  __Pyx_GOTREF(__pyx_t_11);
9536  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9537  __pyx_t_3 = PyNumber_Multiply(__pyx_v_k, __pyx_v_depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
9538  __Pyx_GOTREF(__pyx_t_3);
9539  __pyx_t_5 = NULL;
9540  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
9541  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
9542  if (likely(__pyx_t_5)) {
9543  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9544  __Pyx_INCREF(__pyx_t_5);
9545  __Pyx_INCREF(function);
9546  __Pyx_DECREF_SET(__pyx_t_11, function);
9547  }
9548  }
9549  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3);
9550  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
9551  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9552  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
9553  __Pyx_GOTREF(__pyx_t_2);
9554  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9555  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
9556  __Pyx_GOTREF(__pyx_t_3);
9557  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tanh); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error)
9558  __Pyx_GOTREF(__pyx_t_5);
9559  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9560  __pyx_t_3 = PyNumber_Multiply(__pyx_v_k, __pyx_v_depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
9561  __Pyx_GOTREF(__pyx_t_3);
9562  __pyx_t_1 = NULL;
9563  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
9564  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
9565  if (likely(__pyx_t_1)) {
9566  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
9567  __Pyx_INCREF(__pyx_t_1);
9568  __Pyx_INCREF(function);
9569  __Pyx_DECREF_SET(__pyx_t_5, function);
9570  }
9571  }
9572  __pyx_t_11 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3);
9573  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
9574  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9575  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 504, __pyx_L1_error)
9576  __Pyx_GOTREF(__pyx_t_11);
9577  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9578  __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error)
9579  __Pyx_GOTREF(__pyx_t_5);
9580  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9581  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9582  __pyx_t_11 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_k); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 504, __pyx_L1_error)
9583  __Pyx_GOTREF(__pyx_t_11);
9584  __pyx_t_2 = PyNumber_Multiply(__pyx_t_11, __pyx_v_depth); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
9585  __Pyx_GOTREF(__pyx_t_2);
9586  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9587  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
9588  __Pyx_GOTREF(__pyx_t_3);
9589  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
9590  __Pyx_GOTREF(__pyx_t_1);
9591  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9592  __pyx_t_3 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
9593  __Pyx_GOTREF(__pyx_t_3);
9594  __pyx_t_9 = PyNumber_Multiply(__pyx_t_3, __pyx_v_depth); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 504, __pyx_L1_error)
9595  __Pyx_GOTREF(__pyx_t_9);
9596  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9597  __pyx_t_3 = NULL;
9598  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
9599  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
9600  if (likely(__pyx_t_3)) {
9601  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9602  __Pyx_INCREF(__pyx_t_3);
9603  __Pyx_INCREF(function);
9604  __Pyx_DECREF_SET(__pyx_t_1, function);
9605  }
9606  }
9607  __pyx_t_11 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9);
9608  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9609  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9610  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 504, __pyx_L1_error)
9611  __Pyx_GOTREF(__pyx_t_11);
9612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9613  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
9614  __Pyx_GOTREF(__pyx_t_1);
9615  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9616  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9617  __pyx_t_11 = __Pyx_PyFloat_AddCObj(__pyx_float_1_, __pyx_t_1, 1., 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 504, __pyx_L1_error)
9618  __Pyx_GOTREF(__pyx_t_11);
9619  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9620  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
9621  __Pyx_GOTREF(__pyx_t_1);
9622  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9623  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9624  __Pyx_DECREF_SET(__pyx_v_tma, __pyx_t_1);
9625  __pyx_t_1 = 0;
9626 
9627  /* "WaveTools.py":498
9628  * r = np.exp(old_div(-(Tp*f-1.)**2,(2.*sigma(f,f0)**2)))
9629  * tma = 1.
9630  * if TMA: # <<<<<<<<<<<<<<
9631  * if (depth is None):
9632  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
9633  */
9634  }
9635 
9636  /* "WaveTools.py":506
9637  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
9638  *
9639  * return tma * bj*(Hs**2)*(old_div(1.,((Tp**4) *(f**5))))*np.exp(-1.25*(old_div(1.,(Tp*f)**(4.))))*(gamma**r) # <<<<<<<<<<<<<<
9640  *
9641  * def PM_mod(f,f0,Hs):
9642  */
9643  __Pyx_XDECREF(__pyx_r);
9644  __pyx_t_1 = PyNumber_Multiply(__pyx_v_tma, __pyx_v_bj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
9645  __Pyx_GOTREF(__pyx_t_1);
9646  __pyx_t_11 = PyNumber_Power(__pyx_v_Hs, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 506, __pyx_L1_error)
9647  __Pyx_GOTREF(__pyx_t_11);
9648  __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error)
9649  __Pyx_GOTREF(__pyx_t_5);
9650  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9651  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9652  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
9653  __Pyx_GOTREF(__pyx_t_1);
9654  __pyx_t_2 = PyNumber_Power(__pyx_v_Tp, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
9655  __Pyx_GOTREF(__pyx_t_2);
9656  __pyx_t_9 = PyNumber_Power(__pyx_v_f, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error)
9657  __Pyx_GOTREF(__pyx_t_9);
9658  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error)
9659  __Pyx_GOTREF(__pyx_t_3);
9660  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9661  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9662  __pyx_t_9 = NULL;
9663  __pyx_t_4 = 0;
9664  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
9665  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
9666  if (likely(__pyx_t_9)) {
9667  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9668  __Pyx_INCREF(__pyx_t_9);
9669  __Pyx_INCREF(function);
9670  __Pyx_DECREF_SET(__pyx_t_1, function);
9671  __pyx_t_4 = 1;
9672  }
9673  }
9674  #if CYTHON_FAST_PYCALL
9675  if (PyFunction_Check(__pyx_t_1)) {
9676  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_float_1_, __pyx_t_3};
9677  __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 506, __pyx_L1_error)
9678  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
9679  __Pyx_GOTREF(__pyx_t_11);
9680  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9681  } else
9682  #endif
9683  #if CYTHON_FAST_PYCCALL
9684  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
9685  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_float_1_, __pyx_t_3};
9686  __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 506, __pyx_L1_error)
9687  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
9688  __Pyx_GOTREF(__pyx_t_11);
9689  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9690  } else
9691  #endif
9692  {
9693  __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
9694  __Pyx_GOTREF(__pyx_t_2);
9695  if (__pyx_t_9) {
9696  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __pyx_t_9 = NULL;
9697  }
9698  __Pyx_INCREF(__pyx_float_1_);
9699  __Pyx_GIVEREF(__pyx_float_1_);
9700  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_float_1_);
9701  __Pyx_GIVEREF(__pyx_t_3);
9702  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_3);
9703  __pyx_t_3 = 0;
9704  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 506, __pyx_L1_error)
9705  __Pyx_GOTREF(__pyx_t_11);
9706  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9707  }
9708  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9709  __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
9710  __Pyx_GOTREF(__pyx_t_1);
9711  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9712  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9713  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error)
9714  __Pyx_GOTREF(__pyx_t_5);
9715  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
9716  __Pyx_GOTREF(__pyx_t_2);
9717  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9718  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error)
9719  __Pyx_GOTREF(__pyx_t_3);
9720  __pyx_t_9 = PyNumber_Multiply(__pyx_v_Tp, __pyx_v_f); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 506, __pyx_L1_error)
9721  __Pyx_GOTREF(__pyx_t_9);
9722  __pyx_t_7 = PyNumber_Power(__pyx_t_9, __pyx_float_4_, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 506, __pyx_L1_error)
9723  __Pyx_GOTREF(__pyx_t_7);
9724  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9725  __pyx_t_9 = NULL;
9726  __pyx_t_4 = 0;
9727  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
9728  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
9729  if (likely(__pyx_t_9)) {
9730  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
9731  __Pyx_INCREF(__pyx_t_9);
9732  __Pyx_INCREF(function);
9733  __Pyx_DECREF_SET(__pyx_t_3, function);
9734  __pyx_t_4 = 1;
9735  }
9736  }
9737  #if CYTHON_FAST_PYCALL
9738  if (PyFunction_Check(__pyx_t_3)) {
9739  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_float_1_, __pyx_t_7};
9740  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error)
9741  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
9742  __Pyx_GOTREF(__pyx_t_5);
9743  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9744  } else
9745  #endif
9746  #if CYTHON_FAST_PYCCALL
9747  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
9748  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_float_1_, __pyx_t_7};
9749  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error)
9750  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
9751  __Pyx_GOTREF(__pyx_t_5);
9752  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9753  } else
9754  #endif
9755  {
9756  __pyx_t_8 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 506, __pyx_L1_error)
9757  __Pyx_GOTREF(__pyx_t_8);
9758  if (__pyx_t_9) {
9759  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
9760  }
9761  __Pyx_INCREF(__pyx_float_1_);
9762  __Pyx_GIVEREF(__pyx_float_1_);
9763  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_float_1_);
9764  __Pyx_GIVEREF(__pyx_t_7);
9765  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_t_7);
9766  __pyx_t_7 = 0;
9767  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error)
9768  __Pyx_GOTREF(__pyx_t_5);
9769  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9770  }
9771  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9772  __pyx_t_3 = PyNumber_Multiply(__pyx_float_neg_1_25, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error)
9773  __Pyx_GOTREF(__pyx_t_3);
9774  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9775  __pyx_t_5 = NULL;
9776  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9777  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
9778  if (likely(__pyx_t_5)) {
9779  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9780  __Pyx_INCREF(__pyx_t_5);
9781  __Pyx_INCREF(function);
9782  __Pyx_DECREF_SET(__pyx_t_2, function);
9783  }
9784  }
9785  __pyx_t_11 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
9786  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
9787  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9788  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 506, __pyx_L1_error)
9789  __Pyx_GOTREF(__pyx_t_11);
9790  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9791  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
9792  __Pyx_GOTREF(__pyx_t_2);
9793  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9794  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9795  __pyx_t_11 = PyNumber_Power(__pyx_v_gamma, __pyx_v_r, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 506, __pyx_L1_error)
9796  __Pyx_GOTREF(__pyx_t_11);
9797  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
9798  __Pyx_GOTREF(__pyx_t_1);
9799  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9800  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9801  __pyx_r = __pyx_t_1;
9802  __pyx_t_1 = 0;
9803  goto __pyx_L0;
9804 
9805  /* "WaveTools.py":468
9806  * def custom():
9807  * pass
9808  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
9809  * """Calculates the JONSWAP frequency spectrum (Goda 2009)
9810  *
9811  */
9812 
9813  /* function exit code */
9814  __pyx_L1_error:;
9815  __Pyx_XDECREF(__pyx_t_1);
9816  __Pyx_XDECREF(__pyx_t_2);
9817  __Pyx_XDECREF(__pyx_t_3);
9818  __Pyx_XDECREF(__pyx_t_5);
9819  __Pyx_XDECREF(__pyx_t_7);
9820  __Pyx_XDECREF(__pyx_t_8);
9821  __Pyx_XDECREF(__pyx_t_9);
9822  __Pyx_XDECREF(__pyx_t_10);
9823  __Pyx_XDECREF(__pyx_t_11);
9824  __Pyx_AddTraceback("WaveTools.JONSWAP", __pyx_clineno, __pyx_lineno, __pyx_filename);
9825  __pyx_r = NULL;
9826  __pyx_L0:;
9827  __Pyx_XDECREF(__pyx_v_Tp);
9828  __Pyx_XDECREF(__pyx_v_bj);
9829  __Pyx_XDECREF(__pyx_v_r);
9830  __Pyx_XDECREF(__pyx_v_tma);
9831  __Pyx_XDECREF(__pyx_v_k);
9832  __Pyx_XGIVEREF(__pyx_r);
9833  __Pyx_RefNannyFinishContext();
9834  return __pyx_r;
9835 }
9836 
9837 /* "WaveTools.py":508
9838  * return tma * bj*(Hs**2)*(old_div(1.,((Tp**4) *(f**5))))*np.exp(-1.25*(old_div(1.,(Tp*f)**(4.))))*(gamma**r)
9839  *
9840  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
9841  * """Calculates the Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
9842  *
9843  */
9844 
9845 /* Python wrapper */
9846 static PyObject *__pyx_pw_9WaveTools_39PM_mod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9847 static char __pyx_doc_9WaveTools_38PM_mod[] = "Calculates the Pierson-Moskovitz spectrum (or Bretschneider or ISSC)\n\n Reference:\n http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm\n And then to Tucker M J, 1991. Waves in Ocean Engineering. Ellis Horwood Ltd. (Chichester).\n\n Parameters\n --------\n f : numpy.ndarray\n Frequency array\n f0 : float\n Peak frequency\n Hs : float\n Significant wave height\n\n Returns\n --------\n numpy.ndarray\n 1D Numpy array of the spectrum in frequency domain\n\n ";
9848 static PyMethodDef __pyx_mdef_9WaveTools_39PM_mod = {"PM_mod", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_39PM_mod, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_38PM_mod};
9849 static PyObject *__pyx_pw_9WaveTools_39PM_mod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9850  PyObject *__pyx_v_f = 0;
9851  PyObject *__pyx_v_f0 = 0;
9852  PyObject *__pyx_v_Hs = 0;
9853  int __pyx_lineno = 0;
9854  const char *__pyx_filename = NULL;
9855  int __pyx_clineno = 0;
9856  PyObject *__pyx_r = 0;
9857  __Pyx_RefNannyDeclarations
9858  __Pyx_RefNannySetupContext("PM_mod (wrapper)", 0);
9859  {
9860  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_f0,&__pyx_n_s_Hs,0};
9861  PyObject* values[3] = {0,0,0};
9862  if (unlikely(__pyx_kwds)) {
9863  Py_ssize_t kw_args;
9864  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9865  switch (pos_args) {
9866  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9867  CYTHON_FALLTHROUGH;
9868  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9869  CYTHON_FALLTHROUGH;
9870  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9871  CYTHON_FALLTHROUGH;
9872  case 0: break;
9873  default: goto __pyx_L5_argtuple_error;
9874  }
9875  kw_args = PyDict_Size(__pyx_kwds);
9876  switch (pos_args) {
9877  case 0:
9878  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
9879  else goto __pyx_L5_argtuple_error;
9880  CYTHON_FALLTHROUGH;
9881  case 1:
9882  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
9883  else {
9884  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, 1); __PYX_ERR(0, 508, __pyx_L3_error)
9885  }
9886  CYTHON_FALLTHROUGH;
9887  case 2:
9888  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
9889  else {
9890  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, 2); __PYX_ERR(0, 508, __pyx_L3_error)
9891  }
9892  }
9893  if (unlikely(kw_args > 0)) {
9894  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PM_mod") < 0)) __PYX_ERR(0, 508, __pyx_L3_error)
9895  }
9896  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
9897  goto __pyx_L5_argtuple_error;
9898  } else {
9899  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9900  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9901  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9902  }
9903  __pyx_v_f = values[0];
9904  __pyx_v_f0 = values[1];
9905  __pyx_v_Hs = values[2];
9906  }
9907  goto __pyx_L4_argument_unpacking_done;
9908  __pyx_L5_argtuple_error:;
9909  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 508, __pyx_L3_error)
9910  __pyx_L3_error:;
9911  __Pyx_AddTraceback("WaveTools.PM_mod", __pyx_clineno, __pyx_lineno, __pyx_filename);
9912  __Pyx_RefNannyFinishContext();
9913  return NULL;
9914  __pyx_L4_argument_unpacking_done:;
9915  __pyx_r = __pyx_pf_9WaveTools_38PM_mod(__pyx_self, __pyx_v_f, __pyx_v_f0, __pyx_v_Hs);
9916 
9917  /* function exit code */
9918  __Pyx_RefNannyFinishContext();
9919  return __pyx_r;
9920 }
9921 
9922 static PyObject *__pyx_pf_9WaveTools_38PM_mod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs) {
9923  PyObject *__pyx_r = NULL;
9924  __Pyx_RefNannyDeclarations
9925  PyObject *__pyx_t_1 = NULL;
9926  PyObject *__pyx_t_2 = NULL;
9927  PyObject *__pyx_t_3 = NULL;
9928  PyObject *__pyx_t_4 = NULL;
9929  PyObject *__pyx_t_5 = NULL;
9930  PyObject *__pyx_t_6 = NULL;
9931  int __pyx_t_7;
9932  PyObject *__pyx_t_8 = NULL;
9933  PyObject *__pyx_t_9 = NULL;
9934  int __pyx_lineno = 0;
9935  const char *__pyx_filename = NULL;
9936  int __pyx_clineno = 0;
9937  __Pyx_RefNannySetupContext("PM_mod", 0);
9938 
9939  /* "WaveTools.py":530
9940  *
9941  * """
9942  * return (old_div(5.0,16.0))*Hs**2*(old_div(f0**4,f**5))*np.exp((old_div(-5.0,4.0))*(old_div(f0,f))**4) # <<<<<<<<<<<<<<
9943  *
9944  * def cos2s(theta,f,s=10):
9945  */
9946  __Pyx_XDECREF(__pyx_r);
9947  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
9948  __Pyx_GOTREF(__pyx_t_1);
9949  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 530, __pyx_L1_error)
9950  __Pyx_GOTREF(__pyx_t_2);
9951  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9952  __pyx_t_1 = PyNumber_Power(__pyx_v_Hs, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
9953  __Pyx_GOTREF(__pyx_t_1);
9954  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
9955  __Pyx_GOTREF(__pyx_t_3);
9956  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9957  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9958  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 530, __pyx_L1_error)
9959  __Pyx_GOTREF(__pyx_t_2);
9960  __pyx_t_4 = PyNumber_Power(__pyx_v_f0, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error)
9961  __Pyx_GOTREF(__pyx_t_4);
9962  __pyx_t_5 = PyNumber_Power(__pyx_v_f, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 530, __pyx_L1_error)
9963  __Pyx_GOTREF(__pyx_t_5);
9964  __pyx_t_6 = NULL;
9965  __pyx_t_7 = 0;
9966  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9967  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
9968  if (likely(__pyx_t_6)) {
9969  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9970  __Pyx_INCREF(__pyx_t_6);
9971  __Pyx_INCREF(function);
9972  __Pyx_DECREF_SET(__pyx_t_2, function);
9973  __pyx_t_7 = 1;
9974  }
9975  }
9976  #if CYTHON_FAST_PYCALL
9977  if (PyFunction_Check(__pyx_t_2)) {
9978  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5};
9979  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
9980  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
9981  __Pyx_GOTREF(__pyx_t_1);
9982  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9983  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9984  } else
9985  #endif
9986  #if CYTHON_FAST_PYCCALL
9987  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
9988  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5};
9989  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
9990  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
9991  __Pyx_GOTREF(__pyx_t_1);
9992  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9993  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9994  } else
9995  #endif
9996  {
9997  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 530, __pyx_L1_error)
9998  __Pyx_GOTREF(__pyx_t_8);
9999  if (__pyx_t_6) {
10000  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
10001  }
10002  __Pyx_GIVEREF(__pyx_t_4);
10003  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4);
10004  __Pyx_GIVEREF(__pyx_t_5);
10005  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5);
10006  __pyx_t_4 = 0;
10007  __pyx_t_5 = 0;
10008  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
10009  __Pyx_GOTREF(__pyx_t_1);
10010  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
10011  }
10012  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10013  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 530, __pyx_L1_error)
10014  __Pyx_GOTREF(__pyx_t_2);
10015  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10016  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10017  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
10018  __Pyx_GOTREF(__pyx_t_3);
10019  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 530, __pyx_L1_error)
10020  __Pyx_GOTREF(__pyx_t_8);
10021  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10022  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
10023  __Pyx_GOTREF(__pyx_t_3);
10024  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 530, __pyx_L1_error)
10025  __Pyx_GOTREF(__pyx_t_5);
10026  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10027  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_old_div); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error)
10028  __Pyx_GOTREF(__pyx_t_4);
10029  __pyx_t_6 = NULL;
10030  __pyx_t_7 = 0;
10031  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
10032  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
10033  if (likely(__pyx_t_6)) {
10034  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
10035  __Pyx_INCREF(__pyx_t_6);
10036  __Pyx_INCREF(function);
10037  __Pyx_DECREF_SET(__pyx_t_4, function);
10038  __pyx_t_7 = 1;
10039  }
10040  }
10041  #if CYTHON_FAST_PYCALL
10042  if (PyFunction_Check(__pyx_t_4)) {
10043  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_f0, __pyx_v_f};
10044  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
10045  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
10046  __Pyx_GOTREF(__pyx_t_3);
10047  } else
10048  #endif
10049  #if CYTHON_FAST_PYCCALL
10050  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
10051  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_f0, __pyx_v_f};
10052  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
10053  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
10054  __Pyx_GOTREF(__pyx_t_3);
10055  } else
10056  #endif
10057  {
10058  __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 530, __pyx_L1_error)
10059  __Pyx_GOTREF(__pyx_t_9);
10060  if (__pyx_t_6) {
10061  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
10062  }
10063  __Pyx_INCREF(__pyx_v_f0);
10064  __Pyx_GIVEREF(__pyx_v_f0);
10065  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_v_f0);
10066  __Pyx_INCREF(__pyx_v_f);
10067  __Pyx_GIVEREF(__pyx_v_f);
10068  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_v_f);
10069  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
10070  __Pyx_GOTREF(__pyx_t_3);
10071  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10072  }
10073  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
10074  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error)
10075  __Pyx_GOTREF(__pyx_t_4);
10076  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10077  __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error)
10078  __Pyx_GOTREF(__pyx_t_3);
10079  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10080  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
10081  __pyx_t_4 = NULL;
10082  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
10083  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
10084  if (likely(__pyx_t_4)) {
10085  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
10086  __Pyx_INCREF(__pyx_t_4);
10087  __Pyx_INCREF(function);
10088  __Pyx_DECREF_SET(__pyx_t_8, function);
10089  }
10090  }
10091  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_3);
10092  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
10093  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10094  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
10095  __Pyx_GOTREF(__pyx_t_1);
10096  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
10097  __pyx_t_8 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 530, __pyx_L1_error)
10098  __Pyx_GOTREF(__pyx_t_8);
10099  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10100  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10101  __pyx_r = __pyx_t_8;
10102  __pyx_t_8 = 0;
10103  goto __pyx_L0;
10104 
10105  /* "WaveTools.py":508
10106  * return tma * bj*(Hs**2)*(old_div(1.,((Tp**4) *(f**5))))*np.exp(-1.25*(old_div(1.,(Tp*f)**(4.))))*(gamma**r)
10107  *
10108  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
10109  * """Calculates the Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
10110  *
10111  */
10112 
10113  /* function exit code */
10114  __pyx_L1_error:;
10115  __Pyx_XDECREF(__pyx_t_1);
10116  __Pyx_XDECREF(__pyx_t_2);
10117  __Pyx_XDECREF(__pyx_t_3);
10118  __Pyx_XDECREF(__pyx_t_4);
10119  __Pyx_XDECREF(__pyx_t_5);
10120  __Pyx_XDECREF(__pyx_t_6);
10121  __Pyx_XDECREF(__pyx_t_8);
10122  __Pyx_XDECREF(__pyx_t_9);
10123  __Pyx_AddTraceback("WaveTools.PM_mod", __pyx_clineno, __pyx_lineno, __pyx_filename);
10124  __pyx_r = NULL;
10125  __pyx_L0:;
10126  __Pyx_XGIVEREF(__pyx_r);
10127  __Pyx_RefNannyFinishContext();
10128  return __pyx_r;
10129 }
10130 
10131 /* "WaveTools.py":532
10132  * return (old_div(5.0,16.0))*Hs**2*(old_div(f0**4,f**5))*np.exp((old_div(-5.0,4.0))*(old_div(f0,f))**4)
10133  *
10134  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
10135  * """Calculates the cos-2s directional spreading function
10136  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
10137  */
10138 
10139 /* Python wrapper */
10140 static PyObject *__pyx_pw_9WaveTools_41cos2s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
10141 static char __pyx_doc_9WaveTools_40cos2s[] = "Calculates the cos-2s directional spreading function\n see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf\n\n Parameters\n ----------\n theta : numpy.ndarray\n Wave angle array\n f : numpy.ndarray\n Frequency array\n s : Optional[float]\n Spreading parameter\n\n Returns\n --------\n numpy.ndarray\n 2D Numpy array of cos-2s spectrum\n ";
10142 static PyMethodDef __pyx_mdef_9WaveTools_41cos2s = {"cos2s", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_41cos2s, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_40cos2s};
10143 static PyObject *__pyx_pw_9WaveTools_41cos2s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
10144  PyObject *__pyx_v_theta = 0;
10145  PyObject *__pyx_v_f = 0;
10146  PyObject *__pyx_v_s = 0;
10147  int __pyx_lineno = 0;
10148  const char *__pyx_filename = NULL;
10149  int __pyx_clineno = 0;
10150  PyObject *__pyx_r = 0;
10151  __Pyx_RefNannyDeclarations
10152  __Pyx_RefNannySetupContext("cos2s (wrapper)", 0);
10153  {
10154  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_theta,&__pyx_n_s_f,&__pyx_n_s_s,0};
10155  PyObject* values[3] = {0,0,0};
10156  values[2] = ((PyObject *)((PyObject *)__pyx_int_10));
10157  if (unlikely(__pyx_kwds)) {
10158  Py_ssize_t kw_args;
10159  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
10160  switch (pos_args) {
10161  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
10162  CYTHON_FALLTHROUGH;
10163  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10164  CYTHON_FALLTHROUGH;
10165  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10166  CYTHON_FALLTHROUGH;
10167  case 0: break;
10168  default: goto __pyx_L5_argtuple_error;
10169  }
10170  kw_args = PyDict_Size(__pyx_kwds);
10171  switch (pos_args) {
10172  case 0:
10173  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--;
10174  else goto __pyx_L5_argtuple_error;
10175  CYTHON_FALLTHROUGH;
10176  case 1:
10177  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
10178  else {
10179  __Pyx_RaiseArgtupleInvalid("cos2s", 0, 2, 3, 1); __PYX_ERR(0, 532, __pyx_L3_error)
10180  }
10181  CYTHON_FALLTHROUGH;
10182  case 2:
10183  if (kw_args > 0) {
10184  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
10185  if (value) { values[2] = value; kw_args--; }
10186  }
10187  }
10188  if (unlikely(kw_args > 0)) {
10189  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cos2s") < 0)) __PYX_ERR(0, 532, __pyx_L3_error)
10190  }
10191  } else {
10192  switch (PyTuple_GET_SIZE(__pyx_args)) {
10193  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
10194  CYTHON_FALLTHROUGH;
10195  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10196  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10197  break;
10198  default: goto __pyx_L5_argtuple_error;
10199  }
10200  }
10201  __pyx_v_theta = values[0];
10202  __pyx_v_f = values[1];
10203  __pyx_v_s = values[2];
10204  }
10205  goto __pyx_L4_argument_unpacking_done;
10206  __pyx_L5_argtuple_error:;
10207  __Pyx_RaiseArgtupleInvalid("cos2s", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 532, __pyx_L3_error)
10208  __pyx_L3_error:;
10209  __Pyx_AddTraceback("WaveTools.cos2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
10210  __Pyx_RefNannyFinishContext();
10211  return NULL;
10212  __pyx_L4_argument_unpacking_done:;
10213  __pyx_r = __pyx_pf_9WaveTools_40cos2s(__pyx_self, __pyx_v_theta, __pyx_v_f, __pyx_v_s);
10214 
10215  /* function exit code */
10216  __Pyx_RefNannyFinishContext();
10217  return __pyx_r;
10218 }
10219 
10220 static PyObject *__pyx_pf_9WaveTools_40cos2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_f, PyObject *__pyx_v_s) {
10221  PyObject *__pyx_v_fun = NULL;
10222  PyObject *__pyx_v_ii = NULL;
10223  PyObject *__pyx_r = NULL;
10224  __Pyx_RefNannyDeclarations
10225  PyObject *__pyx_t_1 = NULL;
10226  PyObject *__pyx_t_2 = NULL;
10227  PyObject *__pyx_t_3 = NULL;
10228  Py_ssize_t __pyx_t_4;
10229  PyObject *__pyx_t_5 = NULL;
10230  PyObject *__pyx_t_6 = NULL;
10231  PyObject *(*__pyx_t_7)(PyObject *);
10232  PyObject *__pyx_t_8 = NULL;
10233  int __pyx_t_9;
10234  PyObject *__pyx_t_10 = NULL;
10235  int __pyx_lineno = 0;
10236  const char *__pyx_filename = NULL;
10237  int __pyx_clineno = 0;
10238  __Pyx_RefNannySetupContext("cos2s", 0);
10239 
10240  /* "WaveTools.py":550
10241  * 2D Numpy array of cos-2s spectrum
10242  * """
10243  * fun = np.zeros((len(theta),len(f)),) # <<<<<<<<<<<<<<
10244  * for ii in range(len(fun[0,:])):
10245  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
10246  */
10247  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error)
10248  __Pyx_GOTREF(__pyx_t_2);
10249  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
10250  __Pyx_GOTREF(__pyx_t_3);
10251  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10252  __pyx_t_4 = PyObject_Length(__pyx_v_theta); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 550, __pyx_L1_error)
10253  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error)
10254  __Pyx_GOTREF(__pyx_t_2);
10255  __pyx_t_4 = PyObject_Length(__pyx_v_f); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 550, __pyx_L1_error)
10256  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 550, __pyx_L1_error)
10257  __Pyx_GOTREF(__pyx_t_5);
10258  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error)
10259  __Pyx_GOTREF(__pyx_t_6);
10260  __Pyx_GIVEREF(__pyx_t_2);
10261  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
10262  __Pyx_GIVEREF(__pyx_t_5);
10263  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
10264  __pyx_t_2 = 0;
10265  __pyx_t_5 = 0;
10266  __pyx_t_5 = NULL;
10267  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
10268  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
10269  if (likely(__pyx_t_5)) {
10270  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
10271  __Pyx_INCREF(__pyx_t_5);
10272  __Pyx_INCREF(function);
10273  __Pyx_DECREF_SET(__pyx_t_3, function);
10274  }
10275  }
10276  __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6);
10277  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10278  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10279  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
10280  __Pyx_GOTREF(__pyx_t_1);
10281  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10282  __pyx_v_fun = __pyx_t_1;
10283  __pyx_t_1 = 0;
10284 
10285  /* "WaveTools.py":551
10286  * """
10287  * fun = np.zeros((len(theta),len(f)),)
10288  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
10289  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
10290  * return fun
10291  */
10292  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error)
10293  __Pyx_GOTREF(__pyx_t_3);
10294  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_fun, __pyx_tuple__11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error)
10295  __Pyx_GOTREF(__pyx_t_6);
10296  __pyx_t_4 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 551, __pyx_L1_error)
10297  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10298  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error)
10299  __Pyx_GOTREF(__pyx_t_6);
10300  __pyx_t_5 = NULL;
10301  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
10302  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
10303  if (likely(__pyx_t_5)) {
10304  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
10305  __Pyx_INCREF(__pyx_t_5);
10306  __Pyx_INCREF(function);
10307  __Pyx_DECREF_SET(__pyx_t_3, function);
10308  }
10309  }
10310  __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6);
10311  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10312  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10313  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error)
10314  __Pyx_GOTREF(__pyx_t_1);
10315  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10316  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
10317  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
10318  __pyx_t_7 = NULL;
10319  } else {
10320  __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error)
10321  __Pyx_GOTREF(__pyx_t_3);
10322  __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 551, __pyx_L1_error)
10323  }
10324  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10325  for (;;) {
10326  if (likely(!__pyx_t_7)) {
10327  if (likely(PyList_CheckExact(__pyx_t_3))) {
10328  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
10329  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
10330  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 551, __pyx_L1_error)
10331  #else
10332  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error)
10333  __Pyx_GOTREF(__pyx_t_1);
10334  #endif
10335  } else {
10336  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
10337  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
10338  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 551, __pyx_L1_error)
10339  #else
10340  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error)
10341  __Pyx_GOTREF(__pyx_t_1);
10342  #endif
10343  }
10344  } else {
10345  __pyx_t_1 = __pyx_t_7(__pyx_t_3);
10346  if (unlikely(!__pyx_t_1)) {
10347  PyObject* exc_type = PyErr_Occurred();
10348  if (exc_type) {
10349  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
10350  else __PYX_ERR(0, 551, __pyx_L1_error)
10351  }
10352  break;
10353  }
10354  __Pyx_GOTREF(__pyx_t_1);
10355  }
10356  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
10357  __pyx_t_1 = 0;
10358 
10359  /* "WaveTools.py":552
10360  * fun = np.zeros((len(theta),len(f)),)
10361  * for ii in range(len(fun[0,:])):
10362  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s) # <<<<<<<<<<<<<<
10363  * return fun
10364  * def mitsuyasu(theta,fi,f0,smax=10):
10365  */
10366  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
10367  __Pyx_GOTREF(__pyx_t_6);
10368  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_cos); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 552, __pyx_L1_error)
10369  __Pyx_GOTREF(__pyx_t_5);
10370  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10371  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error)
10372  __Pyx_GOTREF(__pyx_t_2);
10373  __pyx_t_8 = NULL;
10374  __pyx_t_9 = 0;
10375  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
10376  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
10377  if (likely(__pyx_t_8)) {
10378  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10379  __Pyx_INCREF(__pyx_t_8);
10380  __Pyx_INCREF(function);
10381  __Pyx_DECREF_SET(__pyx_t_2, function);
10382  __pyx_t_9 = 1;
10383  }
10384  }
10385  #if CYTHON_FAST_PYCALL
10386  if (PyFunction_Check(__pyx_t_2)) {
10387  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_theta, __pyx_int_2};
10388  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
10389  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
10390  __Pyx_GOTREF(__pyx_t_6);
10391  } else
10392  #endif
10393  #if CYTHON_FAST_PYCCALL
10394  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
10395  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_theta, __pyx_int_2};
10396  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
10397  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
10398  __Pyx_GOTREF(__pyx_t_6);
10399  } else
10400  #endif
10401  {
10402  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 552, __pyx_L1_error)
10403  __Pyx_GOTREF(__pyx_t_10);
10404  if (__pyx_t_8) {
10405  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
10406  }
10407  __Pyx_INCREF(__pyx_v_theta);
10408  __Pyx_GIVEREF(__pyx_v_theta);
10409  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_theta);
10410  __Pyx_INCREF(__pyx_int_2);
10411  __Pyx_GIVEREF(__pyx_int_2);
10412  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_int_2);
10413  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
10414  __Pyx_GOTREF(__pyx_t_6);
10415  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
10416  }
10417  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10418  __pyx_t_2 = NULL;
10419  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
10420  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
10421  if (likely(__pyx_t_2)) {
10422  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10423  __Pyx_INCREF(__pyx_t_2);
10424  __Pyx_INCREF(function);
10425  __Pyx_DECREF_SET(__pyx_t_5, function);
10426  }
10427  }
10428  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
10429  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10430  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10431  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
10432  __Pyx_GOTREF(__pyx_t_1);
10433  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10434  __pyx_t_5 = PyNumber_Multiply(__pyx_int_2, __pyx_v_s); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 552, __pyx_L1_error)
10435  __Pyx_GOTREF(__pyx_t_5);
10436  __pyx_t_6 = PyNumber_Power(__pyx_t_1, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
10437  __Pyx_GOTREF(__pyx_t_6);
10438  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10439  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10440  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 552, __pyx_L1_error)
10441  __Pyx_GOTREF(__pyx_t_5);
10442  __Pyx_INCREF(__pyx_slice__4);
10443  __Pyx_GIVEREF(__pyx_slice__4);
10444  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__4);
10445  __Pyx_INCREF(__pyx_v_ii);
10446  __Pyx_GIVEREF(__pyx_v_ii);
10447  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ii);
10448  if (unlikely(PyObject_SetItem(__pyx_v_fun, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 552, __pyx_L1_error)
10449  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10450  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10451 
10452  /* "WaveTools.py":551
10453  * """
10454  * fun = np.zeros((len(theta),len(f)),)
10455  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
10456  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
10457  * return fun
10458  */
10459  }
10460  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10461 
10462  /* "WaveTools.py":553
10463  * for ii in range(len(fun[0,:])):
10464  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
10465  * return fun # <<<<<<<<<<<<<<
10466  * def mitsuyasu(theta,fi,f0,smax=10):
10467  * """The cos2s wave directional spread with wave frequency dependency
10468  */
10469  __Pyx_XDECREF(__pyx_r);
10470  __Pyx_INCREF(__pyx_v_fun);
10471  __pyx_r = __pyx_v_fun;
10472  goto __pyx_L0;
10473 
10474  /* "WaveTools.py":532
10475  * return (old_div(5.0,16.0))*Hs**2*(old_div(f0**4,f**5))*np.exp((old_div(-5.0,4.0))*(old_div(f0,f))**4)
10476  *
10477  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
10478  * """Calculates the cos-2s directional spreading function
10479  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
10480  */
10481 
10482  /* function exit code */
10483  __pyx_L1_error:;
10484  __Pyx_XDECREF(__pyx_t_1);
10485  __Pyx_XDECREF(__pyx_t_2);
10486  __Pyx_XDECREF(__pyx_t_3);
10487  __Pyx_XDECREF(__pyx_t_5);
10488  __Pyx_XDECREF(__pyx_t_6);
10489  __Pyx_XDECREF(__pyx_t_8);
10490  __Pyx_XDECREF(__pyx_t_10);
10491  __Pyx_AddTraceback("WaveTools.cos2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
10492  __pyx_r = NULL;
10493  __pyx_L0:;
10494  __Pyx_XDECREF(__pyx_v_fun);
10495  __Pyx_XDECREF(__pyx_v_ii);
10496  __Pyx_XGIVEREF(__pyx_r);
10497  __Pyx_RefNannyFinishContext();
10498  return __pyx_r;
10499 }
10500 
10501 /* "WaveTools.py":554
10502  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
10503  * return fun
10504  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
10505  * """The cos2s wave directional spread with wave frequency dependency
10506  *
10507  */
10508 
10509 /* Python wrapper */
10510 static PyObject *__pyx_pw_9WaveTools_43mitsuyasu(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
10511 static char __pyx_doc_9WaveTools_42mitsuyasu[] = "The cos2s wave directional spread with wave frequency dependency\n\n Equation from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010\n (3rd ed) eq. 2.22 - 2.25\n\n Parameters\n ----------\n theta : numpy.ndarray\n Wave angle array\n fi : numpy.ndarray\n Frequency array\n f0 : float\n Peak frequency\n smax : Optional[float]\n Spreading parameter\n Returns\n --------\n numpy.ndarray\n 2D Numpy array of Mitsuyashu-type spectrum\n ";
10512 static PyMethodDef __pyx_mdef_9WaveTools_43mitsuyasu = {"mitsuyasu", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_43mitsuyasu, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_42mitsuyasu};
10513 static PyObject *__pyx_pw_9WaveTools_43mitsuyasu(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
10514  PyObject *__pyx_v_theta = 0;
10515  PyObject *__pyx_v_fi = 0;
10516  PyObject *__pyx_v_f0 = 0;
10517  PyObject *__pyx_v_smax = 0;
10518  int __pyx_lineno = 0;
10519  const char *__pyx_filename = NULL;
10520  int __pyx_clineno = 0;
10521  PyObject *__pyx_r = 0;
10522  __Pyx_RefNannyDeclarations
10523  __Pyx_RefNannySetupContext("mitsuyasu (wrapper)", 0);
10524  {
10525  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_theta,&__pyx_n_s_fi,&__pyx_n_s_f0,&__pyx_n_s_smax,0};
10526  PyObject* values[4] = {0,0,0,0};
10527  values[3] = ((PyObject *)((PyObject *)__pyx_int_10));
10528  if (unlikely(__pyx_kwds)) {
10529  Py_ssize_t kw_args;
10530  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
10531  switch (pos_args) {
10532  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
10533  CYTHON_FALLTHROUGH;
10534  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
10535  CYTHON_FALLTHROUGH;
10536  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10537  CYTHON_FALLTHROUGH;
10538  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10539  CYTHON_FALLTHROUGH;
10540  case 0: break;
10541  default: goto __pyx_L5_argtuple_error;
10542  }
10543  kw_args = PyDict_Size(__pyx_kwds);
10544  switch (pos_args) {
10545  case 0:
10546  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--;
10547  else goto __pyx_L5_argtuple_error;
10548  CYTHON_FALLTHROUGH;
10549  case 1:
10550  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
10551  else {
10552  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, 1); __PYX_ERR(0, 554, __pyx_L3_error)
10553  }
10554  CYTHON_FALLTHROUGH;
10555  case 2:
10556  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
10557  else {
10558  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, 2); __PYX_ERR(0, 554, __pyx_L3_error)
10559  }
10560  CYTHON_FALLTHROUGH;
10561  case 3:
10562  if (kw_args > 0) {
10563  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_smax);
10564  if (value) { values[3] = value; kw_args--; }
10565  }
10566  }
10567  if (unlikely(kw_args > 0)) {
10568  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mitsuyasu") < 0)) __PYX_ERR(0, 554, __pyx_L3_error)
10569  }
10570  } else {
10571  switch (PyTuple_GET_SIZE(__pyx_args)) {
10572  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
10573  CYTHON_FALLTHROUGH;
10574  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
10575  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10576  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10577  break;
10578  default: goto __pyx_L5_argtuple_error;
10579  }
10580  }
10581  __pyx_v_theta = values[0];
10582  __pyx_v_fi = values[1];
10583  __pyx_v_f0 = values[2];
10584  __pyx_v_smax = values[3];
10585  }
10586  goto __pyx_L4_argument_unpacking_done;
10587  __pyx_L5_argtuple_error:;
10588  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 554, __pyx_L3_error)
10589  __pyx_L3_error:;
10590  __Pyx_AddTraceback("WaveTools.mitsuyasu", __pyx_clineno, __pyx_lineno, __pyx_filename);
10591  __Pyx_RefNannyFinishContext();
10592  return NULL;
10593  __pyx_L4_argument_unpacking_done:;
10594  __pyx_r = __pyx_pf_9WaveTools_42mitsuyasu(__pyx_self, __pyx_v_theta, __pyx_v_fi, __pyx_v_f0, __pyx_v_smax);
10595 
10596  /* function exit code */
10597  __Pyx_RefNannyFinishContext();
10598  return __pyx_r;
10599 }
10600 
10601 static PyObject *__pyx_pf_9WaveTools_42mitsuyasu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_fi, PyObject *__pyx_v_f0, PyObject *__pyx_v_smax) {
10602  PyObject *__pyx_v_s = NULL;
10603  PyObject *__pyx_v_ii = NULL;
10604  PyObject *__pyx_v_fun = NULL;
10605  PyObject *__pyx_r = NULL;
10606  __Pyx_RefNannyDeclarations
10607  PyObject *__pyx_t_1 = NULL;
10608  PyObject *__pyx_t_2 = NULL;
10609  PyObject *__pyx_t_3 = NULL;
10610  int __pyx_t_4;
10611  PyObject *__pyx_t_5 = NULL;
10612  PyObject *__pyx_t_6 = NULL;
10613  Py_ssize_t __pyx_t_7;
10614  PyObject *(*__pyx_t_8)(PyObject *);
10615  PyObject *__pyx_t_9 = NULL;
10616  PyObject *__pyx_t_10 = NULL;
10617  int __pyx_lineno = 0;
10618  const char *__pyx_filename = NULL;
10619  int __pyx_clineno = 0;
10620  __Pyx_RefNannySetupContext("mitsuyasu", 0);
10621 
10622  /* "WaveTools.py":576
10623  * """
10624  *
10625  * s = smax * (old_div(fi,f0))**(5) # <<<<<<<<<<<<<<
10626  * ii = np.where(fi>f0)[0][0]
10627  * s[ii:] = smax * (old_div(fi[ii:],f0))**(-2.5)
10628  */
10629  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error)
10630  __Pyx_GOTREF(__pyx_t_2);
10631  __pyx_t_3 = NULL;
10632  __pyx_t_4 = 0;
10633  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
10634  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
10635  if (likely(__pyx_t_3)) {
10636  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10637  __Pyx_INCREF(__pyx_t_3);
10638  __Pyx_INCREF(function);
10639  __Pyx_DECREF_SET(__pyx_t_2, function);
10640  __pyx_t_4 = 1;
10641  }
10642  }
10643  #if CYTHON_FAST_PYCALL
10644  if (PyFunction_Check(__pyx_t_2)) {
10645  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fi, __pyx_v_f0};
10646  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
10647  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10648  __Pyx_GOTREF(__pyx_t_1);
10649  } else
10650  #endif
10651  #if CYTHON_FAST_PYCCALL
10652  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
10653  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fi, __pyx_v_f0};
10654  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
10655  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10656  __Pyx_GOTREF(__pyx_t_1);
10657  } else
10658  #endif
10659  {
10660  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 576, __pyx_L1_error)
10661  __Pyx_GOTREF(__pyx_t_5);
10662  if (__pyx_t_3) {
10663  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
10664  }
10665  __Pyx_INCREF(__pyx_v_fi);
10666  __Pyx_GIVEREF(__pyx_v_fi);
10667  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_fi);
10668  __Pyx_INCREF(__pyx_v_f0);
10669  __Pyx_GIVEREF(__pyx_v_f0);
10670  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_f0);
10671  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
10672  __Pyx_GOTREF(__pyx_t_1);
10673  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10674  }
10675  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10676  __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error)
10677  __Pyx_GOTREF(__pyx_t_2);
10678  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10679  __pyx_t_1 = PyNumber_Multiply(__pyx_v_smax, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
10680  __Pyx_GOTREF(__pyx_t_1);
10681  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10682  __pyx_v_s = __pyx_t_1;
10683  __pyx_t_1 = 0;
10684 
10685  /* "WaveTools.py":577
10686  *
10687  * s = smax * (old_div(fi,f0))**(5)
10688  * ii = np.where(fi>f0)[0][0] # <<<<<<<<<<<<<<
10689  * s[ii:] = smax * (old_div(fi[ii:],f0))**(-2.5)
10690  * fun = np.zeros((len(theta),len(fi)),)
10691  */
10692  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 577, __pyx_L1_error)
10693  __Pyx_GOTREF(__pyx_t_2);
10694  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 577, __pyx_L1_error)
10695  __Pyx_GOTREF(__pyx_t_5);
10696  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10697  __pyx_t_2 = PyObject_RichCompare(__pyx_v_fi, __pyx_v_f0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 577, __pyx_L1_error)
10698  __pyx_t_3 = NULL;
10699  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
10700  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
10701  if (likely(__pyx_t_3)) {
10702  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10703  __Pyx_INCREF(__pyx_t_3);
10704  __Pyx_INCREF(function);
10705  __Pyx_DECREF_SET(__pyx_t_5, function);
10706  }
10707  }
10708  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2);
10709  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10710  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10711  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
10712  __Pyx_GOTREF(__pyx_t_1);
10713  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10714  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 577, __pyx_L1_error)
10715  __Pyx_GOTREF(__pyx_t_5);
10716  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10717  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
10718  __Pyx_GOTREF(__pyx_t_1);
10719  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10720  __pyx_v_ii = __pyx_t_1;
10721  __pyx_t_1 = 0;
10722 
10723  /* "WaveTools.py":578
10724  * s = smax * (old_div(fi,f0))**(5)
10725  * ii = np.where(fi>f0)[0][0]
10726  * s[ii:] = smax * (old_div(fi[ii:],f0))**(-2.5) # <<<<<<<<<<<<<<
10727  * fun = np.zeros((len(theta),len(fi)),)
10728  * for ii in range(len(fun[0,:])):
10729  */
10730  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 578, __pyx_L1_error)
10731  __Pyx_GOTREF(__pyx_t_5);
10732  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 0, 0, &__pyx_v_ii, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 578, __pyx_L1_error)
10733  __Pyx_GOTREF(__pyx_t_2);
10734  __pyx_t_3 = NULL;
10735  __pyx_t_4 = 0;
10736  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
10737  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
10738  if (likely(__pyx_t_3)) {
10739  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10740  __Pyx_INCREF(__pyx_t_3);
10741  __Pyx_INCREF(function);
10742  __Pyx_DECREF_SET(__pyx_t_5, function);
10743  __pyx_t_4 = 1;
10744  }
10745  }
10746  #if CYTHON_FAST_PYCALL
10747  if (PyFunction_Check(__pyx_t_5)) {
10748  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_v_f0};
10749  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
10750  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10751  __Pyx_GOTREF(__pyx_t_1);
10752  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10753  } else
10754  #endif
10755  #if CYTHON_FAST_PYCCALL
10756  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
10757  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_v_f0};
10758  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
10759  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10760  __Pyx_GOTREF(__pyx_t_1);
10761  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10762  } else
10763  #endif
10764  {
10765  __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 578, __pyx_L1_error)
10766  __Pyx_GOTREF(__pyx_t_6);
10767  if (__pyx_t_3) {
10768  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
10769  }
10770  __Pyx_GIVEREF(__pyx_t_2);
10771  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_t_2);
10772  __Pyx_INCREF(__pyx_v_f0);
10773  __Pyx_GIVEREF(__pyx_v_f0);
10774  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_f0);
10775  __pyx_t_2 = 0;
10776  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
10777  __Pyx_GOTREF(__pyx_t_1);
10778  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10779  }
10780  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10781  __pyx_t_5 = PyNumber_Power(__pyx_t_1, __pyx_float_neg_2_5, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 578, __pyx_L1_error)
10782  __Pyx_GOTREF(__pyx_t_5);
10783  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10784  __pyx_t_1 = PyNumber_Multiply(__pyx_v_smax, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
10785  __Pyx_GOTREF(__pyx_t_1);
10786  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10787  if (__Pyx_PyObject_SetSlice(__pyx_v_s, __pyx_t_1, 0, 0, &__pyx_v_ii, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 578, __pyx_L1_error)
10788  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10789 
10790  /* "WaveTools.py":579
10791  * ii = np.where(fi>f0)[0][0]
10792  * s[ii:] = smax * (old_div(fi[ii:],f0))**(-2.5)
10793  * fun = np.zeros((len(theta),len(fi)),) # <<<<<<<<<<<<<<
10794  * for ii in range(len(fun[0,:])):
10795  * fun[:,ii] = np.cos(old_div(theta,2))**(2.*s[ii])
10796  */
10797  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 579, __pyx_L1_error)
10798  __Pyx_GOTREF(__pyx_t_5);
10799  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 579, __pyx_L1_error)
10800  __Pyx_GOTREF(__pyx_t_6);
10801  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10802  __pyx_t_7 = PyObject_Length(__pyx_v_theta); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 579, __pyx_L1_error)
10803  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 579, __pyx_L1_error)
10804  __Pyx_GOTREF(__pyx_t_5);
10805  __pyx_t_7 = PyObject_Length(__pyx_v_fi); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 579, __pyx_L1_error)
10806  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error)
10807  __Pyx_GOTREF(__pyx_t_2);
10808  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 579, __pyx_L1_error)
10809  __Pyx_GOTREF(__pyx_t_3);
10810  __Pyx_GIVEREF(__pyx_t_5);
10811  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
10812  __Pyx_GIVEREF(__pyx_t_2);
10813  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
10814  __pyx_t_5 = 0;
10815  __pyx_t_2 = 0;
10816  __pyx_t_2 = NULL;
10817  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
10818  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
10819  if (likely(__pyx_t_2)) {
10820  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10821  __Pyx_INCREF(__pyx_t_2);
10822  __Pyx_INCREF(function);
10823  __Pyx_DECREF_SET(__pyx_t_6, function);
10824  }
10825  }
10826  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
10827  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10828  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10829  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
10830  __Pyx_GOTREF(__pyx_t_1);
10831  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10832  __pyx_v_fun = __pyx_t_1;
10833  __pyx_t_1 = 0;
10834 
10835  /* "WaveTools.py":580
10836  * s[ii:] = smax * (old_div(fi[ii:],f0))**(-2.5)
10837  * fun = np.zeros((len(theta),len(fi)),)
10838  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
10839  * fun[:,ii] = np.cos(old_div(theta,2))**(2.*s[ii])
10840  * return fun
10841  */
10842  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 580, __pyx_L1_error)
10843  __Pyx_GOTREF(__pyx_t_6);
10844  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_fun, __pyx_tuple__11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 580, __pyx_L1_error)
10845  __Pyx_GOTREF(__pyx_t_3);
10846  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 580, __pyx_L1_error)
10847  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10848  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 580, __pyx_L1_error)
10849  __Pyx_GOTREF(__pyx_t_3);
10850  __pyx_t_2 = NULL;
10851  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
10852  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
10853  if (likely(__pyx_t_2)) {
10854  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10855  __Pyx_INCREF(__pyx_t_2);
10856  __Pyx_INCREF(function);
10857  __Pyx_DECREF_SET(__pyx_t_6, function);
10858  }
10859  }
10860  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
10861  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10862  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10863  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
10864  __Pyx_GOTREF(__pyx_t_1);
10865  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10866  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
10867  __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 0;
10868  __pyx_t_8 = NULL;
10869  } else {
10870  __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 580, __pyx_L1_error)
10871  __Pyx_GOTREF(__pyx_t_6);
10872  __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 580, __pyx_L1_error)
10873  }
10874  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10875  for (;;) {
10876  if (likely(!__pyx_t_8)) {
10877  if (likely(PyList_CheckExact(__pyx_t_6))) {
10878  if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break;
10879  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
10880  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 580, __pyx_L1_error)
10881  #else
10882  __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
10883  __Pyx_GOTREF(__pyx_t_1);
10884  #endif
10885  } else {
10886  if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
10887  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
10888  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 580, __pyx_L1_error)
10889  #else
10890  __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
10891  __Pyx_GOTREF(__pyx_t_1);
10892  #endif
10893  }
10894  } else {
10895  __pyx_t_1 = __pyx_t_8(__pyx_t_6);
10896  if (unlikely(!__pyx_t_1)) {
10897  PyObject* exc_type = PyErr_Occurred();
10898  if (exc_type) {
10899  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
10900  else __PYX_ERR(0, 580, __pyx_L1_error)
10901  }
10902  break;
10903  }
10904  __Pyx_GOTREF(__pyx_t_1);
10905  }
10906  __Pyx_DECREF_SET(__pyx_v_ii, __pyx_t_1);
10907  __pyx_t_1 = 0;
10908 
10909  /* "WaveTools.py":581
10910  * fun = np.zeros((len(theta),len(fi)),)
10911  * for ii in range(len(fun[0,:])):
10912  * fun[:,ii] = np.cos(old_div(theta,2))**(2.*s[ii]) # <<<<<<<<<<<<<<
10913  * return fun
10914  *
10915  */
10916  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
10917  __Pyx_GOTREF(__pyx_t_3);
10918  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_cos); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error)
10919  __Pyx_GOTREF(__pyx_t_2);
10920  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10921  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L1_error)
10922  __Pyx_GOTREF(__pyx_t_5);
10923  __pyx_t_9 = NULL;
10924  __pyx_t_4 = 0;
10925  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
10926  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
10927  if (likely(__pyx_t_9)) {
10928  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10929  __Pyx_INCREF(__pyx_t_9);
10930  __Pyx_INCREF(function);
10931  __Pyx_DECREF_SET(__pyx_t_5, function);
10932  __pyx_t_4 = 1;
10933  }
10934  }
10935  #if CYTHON_FAST_PYCALL
10936  if (PyFunction_Check(__pyx_t_5)) {
10937  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_theta, __pyx_int_2};
10938  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
10939  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
10940  __Pyx_GOTREF(__pyx_t_3);
10941  } else
10942  #endif
10943  #if CYTHON_FAST_PYCCALL
10944  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
10945  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_theta, __pyx_int_2};
10946  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
10947  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
10948  __Pyx_GOTREF(__pyx_t_3);
10949  } else
10950  #endif
10951  {
10952  __pyx_t_10 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 581, __pyx_L1_error)
10953  __Pyx_GOTREF(__pyx_t_10);
10954  if (__pyx_t_9) {
10955  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
10956  }
10957  __Pyx_INCREF(__pyx_v_theta);
10958  __Pyx_GIVEREF(__pyx_v_theta);
10959  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_v_theta);
10960  __Pyx_INCREF(__pyx_int_2);
10961  __Pyx_GIVEREF(__pyx_int_2);
10962  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_int_2);
10963  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
10964  __Pyx_GOTREF(__pyx_t_3);
10965  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
10966  }
10967  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10968  __pyx_t_5 = NULL;
10969  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
10970  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
10971  if (likely(__pyx_t_5)) {
10972  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10973  __Pyx_INCREF(__pyx_t_5);
10974  __Pyx_INCREF(function);
10975  __Pyx_DECREF_SET(__pyx_t_2, function);
10976  }
10977  }
10978  __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
10979  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10980  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10981  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
10982  __Pyx_GOTREF(__pyx_t_1);
10983  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10984  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_ii); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error)
10985  __Pyx_GOTREF(__pyx_t_2);
10986  __pyx_t_3 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
10987  __Pyx_GOTREF(__pyx_t_3);
10988  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10989  __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error)
10990  __Pyx_GOTREF(__pyx_t_2);
10991  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10992  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10993  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
10994  __Pyx_GOTREF(__pyx_t_3);
10995  __Pyx_INCREF(__pyx_slice__4);
10996  __Pyx_GIVEREF(__pyx_slice__4);
10997  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__4);
10998  __Pyx_INCREF(__pyx_v_ii);
10999  __Pyx_GIVEREF(__pyx_v_ii);
11000  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_ii);
11001  if (unlikely(PyObject_SetItem(__pyx_v_fun, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 581, __pyx_L1_error)
11002  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11003  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11004 
11005  /* "WaveTools.py":580
11006  * s[ii:] = smax * (old_div(fi[ii:],f0))**(-2.5)
11007  * fun = np.zeros((len(theta),len(fi)),)
11008  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
11009  * fun[:,ii] = np.cos(old_div(theta,2))**(2.*s[ii])
11010  * return fun
11011  */
11012  }
11013  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11014 
11015  /* "WaveTools.py":582
11016  * for ii in range(len(fun[0,:])):
11017  * fun[:,ii] = np.cos(old_div(theta,2))**(2.*s[ii])
11018  * return fun # <<<<<<<<<<<<<<
11019  *
11020  *
11021  */
11022  __Pyx_XDECREF(__pyx_r);
11023  __Pyx_INCREF(__pyx_v_fun);
11024  __pyx_r = __pyx_v_fun;
11025  goto __pyx_L0;
11026 
11027  /* "WaveTools.py":554
11028  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
11029  * return fun
11030  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
11031  * """The cos2s wave directional spread with wave frequency dependency
11032  *
11033  */
11034 
11035  /* function exit code */
11036  __pyx_L1_error:;
11037  __Pyx_XDECREF(__pyx_t_1);
11038  __Pyx_XDECREF(__pyx_t_2);
11039  __Pyx_XDECREF(__pyx_t_3);
11040  __Pyx_XDECREF(__pyx_t_5);
11041  __Pyx_XDECREF(__pyx_t_6);
11042  __Pyx_XDECREF(__pyx_t_9);
11043  __Pyx_XDECREF(__pyx_t_10);
11044  __Pyx_AddTraceback("WaveTools.mitsuyasu", __pyx_clineno, __pyx_lineno, __pyx_filename);
11045  __pyx_r = NULL;
11046  __pyx_L0:;
11047  __Pyx_XDECREF(__pyx_v_s);
11048  __Pyx_XDECREF(__pyx_v_ii);
11049  __Pyx_XDECREF(__pyx_v_fun);
11050  __Pyx_XGIVEREF(__pyx_r);
11051  __Pyx_RefNannyFinishContext();
11052  return __pyx_r;
11053 }
11054 
11055 /* "WaveTools.py":588
11056  *
11057  *
11058  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
11059  * """Calculates the wave number for single or multiple frequencies using linear dispersion relation.
11060  *
11061  */
11062 
11063 /* Python wrapper */
11064 static PyObject *__pyx_pw_9WaveTools_45dispersion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11065 static char __pyx_doc_9WaveTools_44dispersion[] = "Calculates the wave number for single or multiple frequencies using linear dispersion relation.\n\n Parameters\n ----------\n w : float or np.ndarray\n Angular frequency\n d : float\n Water depth\n g : Optional[float]\n Gravitational acceleration\n niter : Optional[int]\n Solution iterations\n\n Returns\n --------\n float or numpy.ndarray\n Wavenumber as a float or 1D array for multiple frequencies\n ";
11066 static PyMethodDef __pyx_mdef_9WaveTools_45dispersion = {"dispersion", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_45dispersion, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_44dispersion};
11067 static PyObject *__pyx_pw_9WaveTools_45dispersion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11068  PyObject *__pyx_v_w = 0;
11069  PyObject *__pyx_v_d = 0;
11070  PyObject *__pyx_v_g = 0;
11071  PyObject *__pyx_v_niter = 0;
11072  int __pyx_lineno = 0;
11073  const char *__pyx_filename = NULL;
11074  int __pyx_clineno = 0;
11075  PyObject *__pyx_r = 0;
11076  __Pyx_RefNannyDeclarations
11077  __Pyx_RefNannySetupContext("dispersion (wrapper)", 0);
11078  {
11079  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,&__pyx_n_s_d,&__pyx_n_s_g,&__pyx_n_s_niter,0};
11080  PyObject* values[4] = {0,0,0,0};
11081  values[2] = ((PyObject *)((PyObject*)__pyx_float_9_81));
11082  values[3] = ((PyObject *)((PyObject *)__pyx_int_1000));
11083  if (unlikely(__pyx_kwds)) {
11084  Py_ssize_t kw_args;
11085  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11086  switch (pos_args) {
11087  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
11088  CYTHON_FALLTHROUGH;
11089  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11090  CYTHON_FALLTHROUGH;
11091  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11092  CYTHON_FALLTHROUGH;
11093  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11094  CYTHON_FALLTHROUGH;
11095  case 0: break;
11096  default: goto __pyx_L5_argtuple_error;
11097  }
11098  kw_args = PyDict_Size(__pyx_kwds);
11099  switch (pos_args) {
11100  case 0:
11101  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--;
11102  else goto __pyx_L5_argtuple_error;
11103  CYTHON_FALLTHROUGH;
11104  case 1:
11105  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
11106  else {
11107  __Pyx_RaiseArgtupleInvalid("dispersion", 0, 2, 4, 1); __PYX_ERR(0, 588, __pyx_L3_error)
11108  }
11109  CYTHON_FALLTHROUGH;
11110  case 2:
11111  if (kw_args > 0) {
11112  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g);
11113  if (value) { values[2] = value; kw_args--; }
11114  }
11115  CYTHON_FALLTHROUGH;
11116  case 3:
11117  if (kw_args > 0) {
11118  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_niter);
11119  if (value) { values[3] = value; kw_args--; }
11120  }
11121  }
11122  if (unlikely(kw_args > 0)) {
11123  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dispersion") < 0)) __PYX_ERR(0, 588, __pyx_L3_error)
11124  }
11125  } else {
11126  switch (PyTuple_GET_SIZE(__pyx_args)) {
11127  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
11128  CYTHON_FALLTHROUGH;
11129  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11130  CYTHON_FALLTHROUGH;
11131  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11132  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11133  break;
11134  default: goto __pyx_L5_argtuple_error;
11135  }
11136  }
11137  __pyx_v_w = values[0];
11138  __pyx_v_d = values[1];
11139  __pyx_v_g = values[2];
11140  __pyx_v_niter = values[3];
11141  }
11142  goto __pyx_L4_argument_unpacking_done;
11143  __pyx_L5_argtuple_error:;
11144  __Pyx_RaiseArgtupleInvalid("dispersion", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 588, __pyx_L3_error)
11145  __pyx_L3_error:;
11146  __Pyx_AddTraceback("WaveTools.dispersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
11147  __Pyx_RefNannyFinishContext();
11148  return NULL;
11149  __pyx_L4_argument_unpacking_done:;
11150  __pyx_r = __pyx_pf_9WaveTools_44dispersion(__pyx_self, __pyx_v_w, __pyx_v_d, __pyx_v_g, __pyx_v_niter);
11151 
11152  /* function exit code */
11153  __Pyx_RefNannyFinishContext();
11154  return __pyx_r;
11155 }
11156 
11157 static PyObject *__pyx_pf_9WaveTools_44dispersion(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_w, PyObject *__pyx_v_d, PyObject *__pyx_v_g, PyObject *__pyx_v_niter) {
11158  PyObject *__pyx_v_w_aux = NULL;
11159  PyObject *__pyx_v_K = NULL;
11160  CYTHON_UNUSED PyObject *__pyx_v_jj = NULL;
11161  PyObject *__pyx_r = NULL;
11162  __Pyx_RefNannyDeclarations
11163  PyObject *__pyx_t_1 = NULL;
11164  PyObject *__pyx_t_2 = NULL;
11165  PyObject *__pyx_t_3 = NULL;
11166  PyObject *__pyx_t_4 = NULL;
11167  int __pyx_t_5;
11168  PyObject *__pyx_t_6 = NULL;
11169  Py_ssize_t __pyx_t_7;
11170  PyObject *(*__pyx_t_8)(PyObject *);
11171  PyObject *__pyx_t_9 = NULL;
11172  PyObject *__pyx_t_10 = NULL;
11173  PyObject *__pyx_t_11 = NULL;
11174  int __pyx_t_12;
11175  int __pyx_t_13;
11176  int __pyx_lineno = 0;
11177  const char *__pyx_filename = NULL;
11178  int __pyx_clineno = 0;
11179  __Pyx_RefNannySetupContext("dispersion", 0);
11180 
11181  /* "WaveTools.py":607
11182  * Wavenumber as a float or 1D array for multiple frequencies
11183  * """
11184  * w_aux = np.array(w) # <<<<<<<<<<<<<<
11185  * K = old_div(w_aux**2,g)
11186  * for jj in range(niter):
11187  */
11188  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
11189  __Pyx_GOTREF(__pyx_t_2);
11190  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 607, __pyx_L1_error)
11191  __Pyx_GOTREF(__pyx_t_3);
11192  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11193  __pyx_t_2 = NULL;
11194  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
11195  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
11196  if (likely(__pyx_t_2)) {
11197  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11198  __Pyx_INCREF(__pyx_t_2);
11199  __Pyx_INCREF(function);
11200  __Pyx_DECREF_SET(__pyx_t_3, function);
11201  }
11202  }
11203  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_w) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_w);
11204  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
11205  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
11206  __Pyx_GOTREF(__pyx_t_1);
11207  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11208  __pyx_v_w_aux = __pyx_t_1;
11209  __pyx_t_1 = 0;
11210 
11211  /* "WaveTools.py":608
11212  * """
11213  * w_aux = np.array(w)
11214  * K = old_div(w_aux**2,g) # <<<<<<<<<<<<<<
11215  * for jj in range(niter):
11216  * K = old_div(w_aux**2,(g*np.tanh(K*d)))
11217  */
11218  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 608, __pyx_L1_error)
11219  __Pyx_GOTREF(__pyx_t_3);
11220  __pyx_t_2 = PyNumber_Power(__pyx_v_w_aux, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
11221  __Pyx_GOTREF(__pyx_t_2);
11222  __pyx_t_4 = NULL;
11223  __pyx_t_5 = 0;
11224  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
11225  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
11226  if (likely(__pyx_t_4)) {
11227  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11228  __Pyx_INCREF(__pyx_t_4);
11229  __Pyx_INCREF(function);
11230  __Pyx_DECREF_SET(__pyx_t_3, function);
11231  __pyx_t_5 = 1;
11232  }
11233  }
11234  #if CYTHON_FAST_PYCALL
11235  if (PyFunction_Check(__pyx_t_3)) {
11236  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_g};
11237  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
11238  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
11239  __Pyx_GOTREF(__pyx_t_1);
11240  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11241  } else
11242  #endif
11243  #if CYTHON_FAST_PYCCALL
11244  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
11245  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_g};
11246  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
11247  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
11248  __Pyx_GOTREF(__pyx_t_1);
11249  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11250  } else
11251  #endif
11252  {
11253  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 608, __pyx_L1_error)
11254  __Pyx_GOTREF(__pyx_t_6);
11255  if (__pyx_t_4) {
11256  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
11257  }
11258  __Pyx_GIVEREF(__pyx_t_2);
11259  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
11260  __Pyx_INCREF(__pyx_v_g);
11261  __Pyx_GIVEREF(__pyx_v_g);
11262  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_g);
11263  __pyx_t_2 = 0;
11264  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
11265  __Pyx_GOTREF(__pyx_t_1);
11266  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11267  }
11268  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11269  __pyx_v_K = __pyx_t_1;
11270  __pyx_t_1 = 0;
11271 
11272  /* "WaveTools.py":609
11273  * w_aux = np.array(w)
11274  * K = old_div(w_aux**2,g)
11275  * for jj in range(niter): # <<<<<<<<<<<<<<
11276  * K = old_div(w_aux**2,(g*np.tanh(K*d)))
11277  * if type(K) is float:
11278  */
11279  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 609, __pyx_L1_error)
11280  __Pyx_GOTREF(__pyx_t_3);
11281  __pyx_t_6 = NULL;
11282  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
11283  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
11284  if (likely(__pyx_t_6)) {
11285  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11286  __Pyx_INCREF(__pyx_t_6);
11287  __Pyx_INCREF(function);
11288  __Pyx_DECREF_SET(__pyx_t_3, function);
11289  }
11290  }
11291  __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_v_niter) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_niter);
11292  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
11293  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
11294  __Pyx_GOTREF(__pyx_t_1);
11295  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11296  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
11297  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
11298  __pyx_t_8 = NULL;
11299  } else {
11300  __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 609, __pyx_L1_error)
11301  __Pyx_GOTREF(__pyx_t_3);
11302  __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 609, __pyx_L1_error)
11303  }
11304  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11305  for (;;) {
11306  if (likely(!__pyx_t_8)) {
11307  if (likely(PyList_CheckExact(__pyx_t_3))) {
11308  if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
11309  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
11310  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 609, __pyx_L1_error)
11311  #else
11312  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
11313  __Pyx_GOTREF(__pyx_t_1);
11314  #endif
11315  } else {
11316  if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
11317  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
11318  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 609, __pyx_L1_error)
11319  #else
11320  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
11321  __Pyx_GOTREF(__pyx_t_1);
11322  #endif
11323  }
11324  } else {
11325  __pyx_t_1 = __pyx_t_8(__pyx_t_3);
11326  if (unlikely(!__pyx_t_1)) {
11327  PyObject* exc_type = PyErr_Occurred();
11328  if (exc_type) {
11329  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
11330  else __PYX_ERR(0, 609, __pyx_L1_error)
11331  }
11332  break;
11333  }
11334  __Pyx_GOTREF(__pyx_t_1);
11335  }
11336  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
11337  __pyx_t_1 = 0;
11338 
11339  /* "WaveTools.py":610
11340  * K = old_div(w_aux**2,g)
11341  * for jj in range(niter):
11342  * K = old_div(w_aux**2,(g*np.tanh(K*d))) # <<<<<<<<<<<<<<
11343  * if type(K) is float:
11344  * return K[0]
11345  */
11346  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 610, __pyx_L1_error)
11347  __Pyx_GOTREF(__pyx_t_6);
11348  __pyx_t_2 = PyNumber_Power(__pyx_v_w_aux, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error)
11349  __Pyx_GOTREF(__pyx_t_2);
11350  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 610, __pyx_L1_error)
11351  __Pyx_GOTREF(__pyx_t_9);
11352  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_tanh); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 610, __pyx_L1_error)
11353  __Pyx_GOTREF(__pyx_t_10);
11354  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11355  __pyx_t_9 = PyNumber_Multiply(__pyx_v_K, __pyx_v_d); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 610, __pyx_L1_error)
11356  __Pyx_GOTREF(__pyx_t_9);
11357  __pyx_t_11 = NULL;
11358  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
11359  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
11360  if (likely(__pyx_t_11)) {
11361  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
11362  __Pyx_INCREF(__pyx_t_11);
11363  __Pyx_INCREF(function);
11364  __Pyx_DECREF_SET(__pyx_t_10, function);
11365  }
11366  }
11367  __pyx_t_4 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9);
11368  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
11369  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11370  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 610, __pyx_L1_error)
11371  __Pyx_GOTREF(__pyx_t_4);
11372  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
11373  __pyx_t_10 = PyNumber_Multiply(__pyx_v_g, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 610, __pyx_L1_error)
11374  __Pyx_GOTREF(__pyx_t_10);
11375  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
11376  __pyx_t_4 = NULL;
11377  __pyx_t_5 = 0;
11378  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
11379  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
11380  if (likely(__pyx_t_4)) {
11381  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
11382  __Pyx_INCREF(__pyx_t_4);
11383  __Pyx_INCREF(function);
11384  __Pyx_DECREF_SET(__pyx_t_6, function);
11385  __pyx_t_5 = 1;
11386  }
11387  }
11388  #if CYTHON_FAST_PYCALL
11389  if (PyFunction_Check(__pyx_t_6)) {
11390  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_t_10};
11391  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error)
11392  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
11393  __Pyx_GOTREF(__pyx_t_1);
11394  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11395  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
11396  } else
11397  #endif
11398  #if CYTHON_FAST_PYCCALL
11399  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
11400  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_t_10};
11401  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error)
11402  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
11403  __Pyx_GOTREF(__pyx_t_1);
11404  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11405  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
11406  } else
11407  #endif
11408  {
11409  __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 610, __pyx_L1_error)
11410  __Pyx_GOTREF(__pyx_t_9);
11411  if (__pyx_t_4) {
11412  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
11413  }
11414  __Pyx_GIVEREF(__pyx_t_2);
11415  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_2);
11416  __Pyx_GIVEREF(__pyx_t_10);
11417  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_10);
11418  __pyx_t_2 = 0;
11419  __pyx_t_10 = 0;
11420  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error)
11421  __Pyx_GOTREF(__pyx_t_1);
11422  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11423  }
11424  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11425  __Pyx_DECREF_SET(__pyx_v_K, __pyx_t_1);
11426  __pyx_t_1 = 0;
11427 
11428  /* "WaveTools.py":609
11429  * w_aux = np.array(w)
11430  * K = old_div(w_aux**2,g)
11431  * for jj in range(niter): # <<<<<<<<<<<<<<
11432  * K = old_div(w_aux**2,(g*np.tanh(K*d)))
11433  * if type(K) is float:
11434  */
11435  }
11436  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11437 
11438  /* "WaveTools.py":611
11439  * for jj in range(niter):
11440  * K = old_div(w_aux**2,(g*np.tanh(K*d)))
11441  * if type(K) is float: # <<<<<<<<<<<<<<
11442  * return K[0]
11443  * else:
11444  */
11445  __pyx_t_12 = (((PyObject *)Py_TYPE(__pyx_v_K)) == ((PyObject *)(&PyFloat_Type)));
11446  __pyx_t_13 = (__pyx_t_12 != 0);
11447  if (__pyx_t_13) {
11448 
11449  /* "WaveTools.py":612
11450  * K = old_div(w_aux**2,(g*np.tanh(K*d)))
11451  * if type(K) is float:
11452  * return K[0] # <<<<<<<<<<<<<<
11453  * else:
11454  * return K
11455  */
11456  __Pyx_XDECREF(__pyx_r);
11457  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_K, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error)
11458  __Pyx_GOTREF(__pyx_t_3);
11459  __pyx_r = __pyx_t_3;
11460  __pyx_t_3 = 0;
11461  goto __pyx_L0;
11462 
11463  /* "WaveTools.py":611
11464  * for jj in range(niter):
11465  * K = old_div(w_aux**2,(g*np.tanh(K*d)))
11466  * if type(K) is float: # <<<<<<<<<<<<<<
11467  * return K[0]
11468  * else:
11469  */
11470  }
11471 
11472  /* "WaveTools.py":614
11473  * return K[0]
11474  * else:
11475  * return K # <<<<<<<<<<<<<<
11476  *
11477  *
11478  */
11479  /*else*/ {
11480  __Pyx_XDECREF(__pyx_r);
11481  __Pyx_INCREF(__pyx_v_K);
11482  __pyx_r = __pyx_v_K;
11483  goto __pyx_L0;
11484  }
11485 
11486  /* "WaveTools.py":588
11487  *
11488  *
11489  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
11490  * """Calculates the wave number for single or multiple frequencies using linear dispersion relation.
11491  *
11492  */
11493 
11494  /* function exit code */
11495  __pyx_L1_error:;
11496  __Pyx_XDECREF(__pyx_t_1);
11497  __Pyx_XDECREF(__pyx_t_2);
11498  __Pyx_XDECREF(__pyx_t_3);
11499  __Pyx_XDECREF(__pyx_t_4);
11500  __Pyx_XDECREF(__pyx_t_6);
11501  __Pyx_XDECREF(__pyx_t_9);
11502  __Pyx_XDECREF(__pyx_t_10);
11503  __Pyx_XDECREF(__pyx_t_11);
11504  __Pyx_AddTraceback("WaveTools.dispersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
11505  __pyx_r = NULL;
11506  __pyx_L0:;
11507  __Pyx_XDECREF(__pyx_v_w_aux);
11508  __Pyx_XDECREF(__pyx_v_K);
11509  __Pyx_XDECREF(__pyx_v_jj);
11510  __Pyx_XGIVEREF(__pyx_r);
11511  __Pyx_RefNannyFinishContext();
11512  return __pyx_r;
11513 }
11514 
11515 /* "WaveTools.py":617
11516  *
11517  *
11518  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
11519  * """ Calculates and returns a top hat filter array
11520  *
11521  */
11522 
11523 /* Python wrapper */
11524 static PyObject *__pyx_pw_9WaveTools_47tophat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11525 static char __pyx_doc_9WaveTools_46tophat[] = " Calculates and returns a top hat filter array\n\n Parameters\n ----------\n l : int\n Length of array\n cutoff : float\n Cut off fraction at both the leading and tailing part of the array\n\n Returns\n --------\n numpy.ndarray\n\n ";
11526 static PyMethodDef __pyx_mdef_9WaveTools_47tophat = {"tophat", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_47tophat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_46tophat};
11527 static PyObject *__pyx_pw_9WaveTools_47tophat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11528  PyObject *__pyx_v_l = 0;
11529  PyObject *__pyx_v_cutoff = 0;
11530  int __pyx_lineno = 0;
11531  const char *__pyx_filename = NULL;
11532  int __pyx_clineno = 0;
11533  PyObject *__pyx_r = 0;
11534  __Pyx_RefNannyDeclarations
11535  __Pyx_RefNannySetupContext("tophat (wrapper)", 0);
11536  {
11537  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_l,&__pyx_n_s_cutoff,0};
11538  PyObject* values[2] = {0,0};
11539  if (unlikely(__pyx_kwds)) {
11540  Py_ssize_t kw_args;
11541  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11542  switch (pos_args) {
11543  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11544  CYTHON_FALLTHROUGH;
11545  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11546  CYTHON_FALLTHROUGH;
11547  case 0: break;
11548  default: goto __pyx_L5_argtuple_error;
11549  }
11550  kw_args = PyDict_Size(__pyx_kwds);
11551  switch (pos_args) {
11552  case 0:
11553  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
11554  else goto __pyx_L5_argtuple_error;
11555  CYTHON_FALLTHROUGH;
11556  case 1:
11557  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cutoff)) != 0)) kw_args--;
11558  else {
11559  __Pyx_RaiseArgtupleInvalid("tophat", 1, 2, 2, 1); __PYX_ERR(0, 617, __pyx_L3_error)
11560  }
11561  }
11562  if (unlikely(kw_args > 0)) {
11563  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tophat") < 0)) __PYX_ERR(0, 617, __pyx_L3_error)
11564  }
11565  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
11566  goto __pyx_L5_argtuple_error;
11567  } else {
11568  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11569  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11570  }
11571  __pyx_v_l = values[0];
11572  __pyx_v_cutoff = values[1];
11573  }
11574  goto __pyx_L4_argument_unpacking_done;
11575  __pyx_L5_argtuple_error:;
11576  __Pyx_RaiseArgtupleInvalid("tophat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 617, __pyx_L3_error)
11577  __pyx_L3_error:;
11578  __Pyx_AddTraceback("WaveTools.tophat", __pyx_clineno, __pyx_lineno, __pyx_filename);
11579  __Pyx_RefNannyFinishContext();
11580  return NULL;
11581  __pyx_L4_argument_unpacking_done:;
11582  __pyx_r = __pyx_pf_9WaveTools_46tophat(__pyx_self, __pyx_v_l, __pyx_v_cutoff);
11583 
11584  /* function exit code */
11585  __Pyx_RefNannyFinishContext();
11586  return __pyx_r;
11587 }
11588 
11589 static PyObject *__pyx_pf_9WaveTools_46tophat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff) {
11590  PyObject *__pyx_v_a = NULL;
11591  PyObject *__pyx_v_cut = NULL;
11592  PyObject *__pyx_r = NULL;
11593  __Pyx_RefNannyDeclarations
11594  PyObject *__pyx_t_1 = NULL;
11595  PyObject *__pyx_t_2 = NULL;
11596  PyObject *__pyx_t_3 = NULL;
11597  int __pyx_lineno = 0;
11598  const char *__pyx_filename = NULL;
11599  int __pyx_clineno = 0;
11600  __Pyx_RefNannySetupContext("tophat", 0);
11601 
11602  /* "WaveTools.py":632
11603  *
11604  * """
11605  * a = np.zeros(l,) # <<<<<<<<<<<<<<
11606  * cut = int(cutoff*l)
11607  * a[cut:-cut] = 1.
11608  */
11609  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 632, __pyx_L1_error)
11610  __Pyx_GOTREF(__pyx_t_2);
11611  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 632, __pyx_L1_error)
11612  __Pyx_GOTREF(__pyx_t_3);
11613  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11614  __pyx_t_2 = NULL;
11615  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
11616  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
11617  if (likely(__pyx_t_2)) {
11618  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11619  __Pyx_INCREF(__pyx_t_2);
11620  __Pyx_INCREF(function);
11621  __Pyx_DECREF_SET(__pyx_t_3, function);
11622  }
11623  }
11624  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_l) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l);
11625  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
11626  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
11627  __Pyx_GOTREF(__pyx_t_1);
11628  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11629  __pyx_v_a = __pyx_t_1;
11630  __pyx_t_1 = 0;
11631 
11632  /* "WaveTools.py":633
11633  * """
11634  * a = np.zeros(l,)
11635  * cut = int(cutoff*l) # <<<<<<<<<<<<<<
11636  * a[cut:-cut] = 1.
11637  * return a
11638  */
11639  __pyx_t_1 = PyNumber_Multiply(__pyx_v_cutoff, __pyx_v_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error)
11640  __Pyx_GOTREF(__pyx_t_1);
11641  __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 633, __pyx_L1_error)
11642  __Pyx_GOTREF(__pyx_t_3);
11643  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11644  __pyx_v_cut = __pyx_t_3;
11645  __pyx_t_3 = 0;
11646 
11647  /* "WaveTools.py":634
11648  * a = np.zeros(l,)
11649  * cut = int(cutoff*l)
11650  * a[cut:-cut] = 1. # <<<<<<<<<<<<<<
11651  * return a
11652  *
11653  */
11654  __pyx_t_3 = PyNumber_Negative(__pyx_v_cut); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 634, __pyx_L1_error)
11655  __Pyx_GOTREF(__pyx_t_3);
11656  if (__Pyx_PyObject_SetSlice(__pyx_v_a, __pyx_float_1_, 0, 0, &__pyx_v_cut, &__pyx_t_3, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 634, __pyx_L1_error)
11657  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11658 
11659  /* "WaveTools.py":635
11660  * cut = int(cutoff*l)
11661  * a[cut:-cut] = 1.
11662  * return a # <<<<<<<<<<<<<<
11663  *
11664  * def costap(l,cutoff=0.1):
11665  */
11666  __Pyx_XDECREF(__pyx_r);
11667  __Pyx_INCREF(__pyx_v_a);
11668  __pyx_r = __pyx_v_a;
11669  goto __pyx_L0;
11670 
11671  /* "WaveTools.py":617
11672  *
11673  *
11674  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
11675  * """ Calculates and returns a top hat filter array
11676  *
11677  */
11678 
11679  /* function exit code */
11680  __pyx_L1_error:;
11681  __Pyx_XDECREF(__pyx_t_1);
11682  __Pyx_XDECREF(__pyx_t_2);
11683  __Pyx_XDECREF(__pyx_t_3);
11684  __Pyx_AddTraceback("WaveTools.tophat", __pyx_clineno, __pyx_lineno, __pyx_filename);
11685  __pyx_r = NULL;
11686  __pyx_L0:;
11687  __Pyx_XDECREF(__pyx_v_a);
11688  __Pyx_XDECREF(__pyx_v_cut);
11689  __Pyx_XGIVEREF(__pyx_r);
11690  __Pyx_RefNannyFinishContext();
11691  return __pyx_r;
11692 }
11693 
11694 /* "WaveTools.py":637
11695  * return a
11696  *
11697  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
11698  * """ Calculates and returns a top hat filter array
11699  *
11700  */
11701 
11702 /* Python wrapper */
11703 static PyObject *__pyx_pw_9WaveTools_49costap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11704 static char __pyx_doc_9WaveTools_48costap[] = " Calculates and returns a top hat filter array\n\n Parameters\n ----------\n l : int\n Length of array\n cutoff : float\n Cut off fraction at both the leading and tailing part of the array\n\n Returns\n --------\n numpy.ndarray\n ";
11705 static PyMethodDef __pyx_mdef_9WaveTools_49costap = {"costap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_49costap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_48costap};
11706 static PyObject *__pyx_pw_9WaveTools_49costap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11707  PyObject *__pyx_v_l = 0;
11708  PyObject *__pyx_v_cutoff = 0;
11709  int __pyx_lineno = 0;
11710  const char *__pyx_filename = NULL;
11711  int __pyx_clineno = 0;
11712  PyObject *__pyx_r = 0;
11713  __Pyx_RefNannyDeclarations
11714  __Pyx_RefNannySetupContext("costap (wrapper)", 0);
11715  {
11716  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_l,&__pyx_n_s_cutoff,0};
11717  PyObject* values[2] = {0,0};
11718  values[1] = ((PyObject *)((PyObject*)__pyx_float_0_1));
11719  if (unlikely(__pyx_kwds)) {
11720  Py_ssize_t kw_args;
11721  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11722  switch (pos_args) {
11723  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11724  CYTHON_FALLTHROUGH;
11725  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11726  CYTHON_FALLTHROUGH;
11727  case 0: break;
11728  default: goto __pyx_L5_argtuple_error;
11729  }
11730  kw_args = PyDict_Size(__pyx_kwds);
11731  switch (pos_args) {
11732  case 0:
11733  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
11734  else goto __pyx_L5_argtuple_error;
11735  CYTHON_FALLTHROUGH;
11736  case 1:
11737  if (kw_args > 0) {
11738  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cutoff);
11739  if (value) { values[1] = value; kw_args--; }
11740  }
11741  }
11742  if (unlikely(kw_args > 0)) {
11743  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "costap") < 0)) __PYX_ERR(0, 637, __pyx_L3_error)
11744  }
11745  } else {
11746  switch (PyTuple_GET_SIZE(__pyx_args)) {
11747  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11748  CYTHON_FALLTHROUGH;
11749  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11750  break;
11751  default: goto __pyx_L5_argtuple_error;
11752  }
11753  }
11754  __pyx_v_l = values[0];
11755  __pyx_v_cutoff = values[1];
11756  }
11757  goto __pyx_L4_argument_unpacking_done;
11758  __pyx_L5_argtuple_error:;
11759  __Pyx_RaiseArgtupleInvalid("costap", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 637, __pyx_L3_error)
11760  __pyx_L3_error:;
11761  __Pyx_AddTraceback("WaveTools.costap", __pyx_clineno, __pyx_lineno, __pyx_filename);
11762  __Pyx_RefNannyFinishContext();
11763  return NULL;
11764  __pyx_L4_argument_unpacking_done:;
11765  __pyx_r = __pyx_pf_9WaveTools_48costap(__pyx_self, __pyx_v_l, __pyx_v_cutoff);
11766 
11767  /* function exit code */
11768  __Pyx_RefNannyFinishContext();
11769  return __pyx_r;
11770 }
11771 
11772 static PyObject *__pyx_pf_9WaveTools_48costap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff) {
11773  PyObject *__pyx_v_npoints = NULL;
11774  PyObject *__pyx_v_wind = NULL;
11775  PyObject *__pyx_v_k = NULL;
11776  PyObject *__pyx_r = NULL;
11777  __Pyx_RefNannyDeclarations
11778  PyObject *__pyx_t_1 = NULL;
11779  PyObject *__pyx_t_2 = NULL;
11780  PyObject *__pyx_t_3 = NULL;
11781  Py_ssize_t __pyx_t_4;
11782  PyObject *(*__pyx_t_5)(PyObject *);
11783  int __pyx_t_6;
11784  double __pyx_t_7;
11785  double __pyx_t_8;
11786  int __pyx_lineno = 0;
11787  const char *__pyx_filename = NULL;
11788  int __pyx_clineno = 0;
11789  __Pyx_RefNannySetupContext("costap", 0);
11790 
11791  /* "WaveTools.py":651
11792  * numpy.ndarray
11793  * """
11794  * npoints = int(cutoff*l) # <<<<<<<<<<<<<<
11795  * wind = np.ones(l)
11796  * for k in range(l): # (k,np) = (n,N) normally used
11797  */
11798  __pyx_t_1 = PyNumber_Multiply(__pyx_v_cutoff, __pyx_v_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
11799  __Pyx_GOTREF(__pyx_t_1);
11800  __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error)
11801  __Pyx_GOTREF(__pyx_t_2);
11802  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11803  __pyx_v_npoints = __pyx_t_2;
11804  __pyx_t_2 = 0;
11805 
11806  /* "WaveTools.py":652
11807  * """
11808  * npoints = int(cutoff*l)
11809  * wind = np.ones(l) # <<<<<<<<<<<<<<
11810  * for k in range(l): # (k,np) = (n,N) normally used
11811  * if k < npoints:
11812  */
11813  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
11814  __Pyx_GOTREF(__pyx_t_1);
11815  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 652, __pyx_L1_error)
11816  __Pyx_GOTREF(__pyx_t_3);
11817  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11818  __pyx_t_1 = NULL;
11819  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
11820  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
11821  if (likely(__pyx_t_1)) {
11822  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11823  __Pyx_INCREF(__pyx_t_1);
11824  __Pyx_INCREF(function);
11825  __Pyx_DECREF_SET(__pyx_t_3, function);
11826  }
11827  }
11828  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_l) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l);
11829  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
11830  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error)
11831  __Pyx_GOTREF(__pyx_t_2);
11832  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11833  __pyx_v_wind = __pyx_t_2;
11834  __pyx_t_2 = 0;
11835 
11836  /* "WaveTools.py":653
11837  * npoints = int(cutoff*l)
11838  * wind = np.ones(l)
11839  * for k in range(l): # (k,np) = (n,N) normally used # <<<<<<<<<<<<<<
11840  * if k < npoints:
11841  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
11842  */
11843  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 653, __pyx_L1_error)
11844  __Pyx_GOTREF(__pyx_t_3);
11845  __pyx_t_1 = NULL;
11846  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
11847  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
11848  if (likely(__pyx_t_1)) {
11849  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11850  __Pyx_INCREF(__pyx_t_1);
11851  __Pyx_INCREF(function);
11852  __Pyx_DECREF_SET(__pyx_t_3, function);
11853  }
11854  }
11855  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_l) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l);
11856  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
11857  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error)
11858  __Pyx_GOTREF(__pyx_t_2);
11859  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11860  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
11861  __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
11862  __pyx_t_5 = NULL;
11863  } else {
11864  __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 653, __pyx_L1_error)
11865  __Pyx_GOTREF(__pyx_t_3);
11866  __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 653, __pyx_L1_error)
11867  }
11868  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11869  for (;;) {
11870  if (likely(!__pyx_t_5)) {
11871  if (likely(PyList_CheckExact(__pyx_t_3))) {
11872  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
11873  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
11874  __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 653, __pyx_L1_error)
11875  #else
11876  __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error)
11877  __Pyx_GOTREF(__pyx_t_2);
11878  #endif
11879  } else {
11880  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
11881  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
11882  __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 653, __pyx_L1_error)
11883  #else
11884  __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error)
11885  __Pyx_GOTREF(__pyx_t_2);
11886  #endif
11887  }
11888  } else {
11889  __pyx_t_2 = __pyx_t_5(__pyx_t_3);
11890  if (unlikely(!__pyx_t_2)) {
11891  PyObject* exc_type = PyErr_Occurred();
11892  if (exc_type) {
11893  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
11894  else __PYX_ERR(0, 653, __pyx_L1_error)
11895  }
11896  break;
11897  }
11898  __Pyx_GOTREF(__pyx_t_2);
11899  }
11900  __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
11901  __pyx_t_2 = 0;
11902 
11903  /* "WaveTools.py":654
11904  * wind = np.ones(l)
11905  * for k in range(l): # (k,np) = (n,N) normally used
11906  * if k < npoints: # <<<<<<<<<<<<<<
11907  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
11908  * if k > l - npoints -1:
11909  */
11910  __pyx_t_2 = PyObject_RichCompare(__pyx_v_k, __pyx_v_npoints, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error)
11911  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 654, __pyx_L1_error)
11912  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11913  if (__pyx_t_6) {
11914 
11915  /* "WaveTools.py":655
11916  * for k in range(l): # (k,np) = (n,N) normally used
11917  * if k < npoints:
11918  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints))) # <<<<<<<<<<<<<<
11919  * if k > l - npoints -1:
11920  * wind[k] = 0.5*(1.-cos(M_PI*float(l-k-1)/float(npoints)))
11921  */
11922  __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_v_k); if (unlikely(__pyx_t_7 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 655, __pyx_L1_error)
11923  __pyx_t_8 = (M_PI * __pyx_t_7);
11924  __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_v_npoints); if (unlikely(__pyx_t_7 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 655, __pyx_L1_error)
11925  if (unlikely(__pyx_t_7 == 0)) {
11926  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
11927  __PYX_ERR(0, 655, __pyx_L1_error)
11928  }
11929  __pyx_t_2 = PyFloat_FromDouble((0.5 * (1. - cos((__pyx_t_8 / __pyx_t_7))))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error)
11930  __Pyx_GOTREF(__pyx_t_2);
11931  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_v_k, __pyx_t_2) < 0)) __PYX_ERR(0, 655, __pyx_L1_error)
11932  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11933 
11934  /* "WaveTools.py":654
11935  * wind = np.ones(l)
11936  * for k in range(l): # (k,np) = (n,N) normally used
11937  * if k < npoints: # <<<<<<<<<<<<<<
11938  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
11939  * if k > l - npoints -1:
11940  */
11941  }
11942 
11943  /* "WaveTools.py":656
11944  * if k < npoints:
11945  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
11946  * if k > l - npoints -1: # <<<<<<<<<<<<<<
11947  * wind[k] = 0.5*(1.-cos(M_PI*float(l-k-1)/float(npoints)))
11948  * return wind
11949  */
11950  __pyx_t_2 = PyNumber_Subtract(__pyx_v_l, __pyx_v_npoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
11951  __Pyx_GOTREF(__pyx_t_2);
11952  __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
11953  __Pyx_GOTREF(__pyx_t_1);
11954  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11955  __pyx_t_2 = PyObject_RichCompare(__pyx_v_k, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
11956  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11957  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 656, __pyx_L1_error)
11958  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11959  if (__pyx_t_6) {
11960 
11961  /* "WaveTools.py":657
11962  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
11963  * if k > l - npoints -1:
11964  * wind[k] = 0.5*(1.-cos(M_PI*float(l-k-1)/float(npoints))) # <<<<<<<<<<<<<<
11965  * return wind
11966  *
11967  */
11968  __pyx_t_2 = PyNumber_Subtract(__pyx_v_l, __pyx_v_k); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L1_error)
11969  __Pyx_GOTREF(__pyx_t_2);
11970  __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error)
11971  __Pyx_GOTREF(__pyx_t_1);
11972  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11973  __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__pyx_t_7 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 657, __pyx_L1_error)
11974  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11975  __pyx_t_8 = (M_PI * __pyx_t_7);
11976  __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_v_npoints); if (unlikely(__pyx_t_7 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 657, __pyx_L1_error)
11977  if (unlikely(__pyx_t_7 == 0)) {
11978  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
11979  __PYX_ERR(0, 657, __pyx_L1_error)
11980  }
11981  __pyx_t_1 = PyFloat_FromDouble((0.5 * (1. - cos((__pyx_t_8 / __pyx_t_7))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error)
11982  __Pyx_GOTREF(__pyx_t_1);
11983  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_v_k, __pyx_t_1) < 0)) __PYX_ERR(0, 657, __pyx_L1_error)
11984  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11985 
11986  /* "WaveTools.py":656
11987  * if k < npoints:
11988  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
11989  * if k > l - npoints -1: # <<<<<<<<<<<<<<
11990  * wind[k] = 0.5*(1.-cos(M_PI*float(l-k-1)/float(npoints)))
11991  * return wind
11992  */
11993  }
11994 
11995  /* "WaveTools.py":653
11996  * npoints = int(cutoff*l)
11997  * wind = np.ones(l)
11998  * for k in range(l): # (k,np) = (n,N) normally used # <<<<<<<<<<<<<<
11999  * if k < npoints:
12000  * wind[k] = 0.5*(1.-cos(M_PI*float(k)/float(npoints)))
12001  */
12002  }
12003  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12004 
12005  /* "WaveTools.py":658
12006  * if k > l - npoints -1:
12007  * wind[k] = 0.5*(1.-cos(M_PI*float(l-k-1)/float(npoints)))
12008  * return wind # <<<<<<<<<<<<<<
12009  *
12010  * def decompose_tseries(time,eta,dt):
12011  */
12012  __Pyx_XDECREF(__pyx_r);
12013  __Pyx_INCREF(__pyx_v_wind);
12014  __pyx_r = __pyx_v_wind;
12015  goto __pyx_L0;
12016 
12017  /* "WaveTools.py":637
12018  * return a
12019  *
12020  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
12021  * """ Calculates and returns a top hat filter array
12022  *
12023  */
12024 
12025  /* function exit code */
12026  __pyx_L1_error:;
12027  __Pyx_XDECREF(__pyx_t_1);
12028  __Pyx_XDECREF(__pyx_t_2);
12029  __Pyx_XDECREF(__pyx_t_3);
12030  __Pyx_AddTraceback("WaveTools.costap", __pyx_clineno, __pyx_lineno, __pyx_filename);
12031  __pyx_r = NULL;
12032  __pyx_L0:;
12033  __Pyx_XDECREF(__pyx_v_npoints);
12034  __Pyx_XDECREF(__pyx_v_wind);
12035  __Pyx_XDECREF(__pyx_v_k);
12036  __Pyx_XGIVEREF(__pyx_r);
12037  __Pyx_RefNannyFinishContext();
12038  return __pyx_r;
12039 }
12040 
12041 /* "WaveTools.py":660
12042  * return wind
12043  *
12044  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
12045  * """ Performs spectral analysis and calculates angular frequency components, amplitude, phase and mean level power
12046  * of a time series with constant sampling.
12047  */
12048 
12049 /* Python wrapper */
12050 static PyObject *__pyx_pw_9WaveTools_51decompose_tseries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12051 static char __pyx_doc_9WaveTools_50decompose_tseries[] = " Performs spectral analysis and calculates angular frequency components, amplitude, phase and mean level power\n of a time series with constant sampling.\n\n Parameters\n ----------\n time : numpy.ndarray\n Time array\n eta :numpy.ndarray\n Signal array\n dt : float\n Sampling interval\n\n Returns\n --------\n List\n A list with results with four entries:\n 0 -> numpy array with angular frequency components\n 1 -> numpy array with amplitude of each component aa\n 2 -> numpy array with phase of each component pp\n 3 -> float of the 0th fourier mode (wave setup)\n\n ";
12052 static PyMethodDef __pyx_mdef_9WaveTools_51decompose_tseries = {"decompose_tseries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_51decompose_tseries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_50decompose_tseries};
12053 static PyObject *__pyx_pw_9WaveTools_51decompose_tseries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
12054  PyObject *__pyx_v_time = 0;
12055  PyObject *__pyx_v_eta = 0;
12056  PyObject *__pyx_v_dt = 0;
12057  int __pyx_lineno = 0;
12058  const char *__pyx_filename = NULL;
12059  int __pyx_clineno = 0;
12060  PyObject *__pyx_r = 0;
12061  __Pyx_RefNannyDeclarations
12062  __Pyx_RefNannySetupContext("decompose_tseries (wrapper)", 0);
12063  {
12064  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_time,&__pyx_n_s_eta,&__pyx_n_s_dt,0};
12065  PyObject* values[3] = {0,0,0};
12066  if (unlikely(__pyx_kwds)) {
12067  Py_ssize_t kw_args;
12068  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
12069  switch (pos_args) {
12070  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12071  CYTHON_FALLTHROUGH;
12072  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12073  CYTHON_FALLTHROUGH;
12074  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12075  CYTHON_FALLTHROUGH;
12076  case 0: break;
12077  default: goto __pyx_L5_argtuple_error;
12078  }
12079  kw_args = PyDict_Size(__pyx_kwds);
12080  switch (pos_args) {
12081  case 0:
12082  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_time)) != 0)) kw_args--;
12083  else goto __pyx_L5_argtuple_error;
12084  CYTHON_FALLTHROUGH;
12085  case 1:
12086  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eta)) != 0)) kw_args--;
12087  else {
12088  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, 1); __PYX_ERR(0, 660, __pyx_L3_error)
12089  }
12090  CYTHON_FALLTHROUGH;
12091  case 2:
12092  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
12093  else {
12094  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, 2); __PYX_ERR(0, 660, __pyx_L3_error)
12095  }
12096  }
12097  if (unlikely(kw_args > 0)) {
12098  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "decompose_tseries") < 0)) __PYX_ERR(0, 660, __pyx_L3_error)
12099  }
12100  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
12101  goto __pyx_L5_argtuple_error;
12102  } else {
12103  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12104  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12105  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12106  }
12107  __pyx_v_time = values[0];
12108  __pyx_v_eta = values[1];
12109  __pyx_v_dt = values[2];
12110  }
12111  goto __pyx_L4_argument_unpacking_done;
12112  __pyx_L5_argtuple_error:;
12113  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 660, __pyx_L3_error)
12114  __pyx_L3_error:;
12115  __Pyx_AddTraceback("WaveTools.decompose_tseries", __pyx_clineno, __pyx_lineno, __pyx_filename);
12116  __Pyx_RefNannyFinishContext();
12117  return NULL;
12118  __pyx_L4_argument_unpacking_done:;
12119  __pyx_r = __pyx_pf_9WaveTools_50decompose_tseries(__pyx_self, __pyx_v_time, __pyx_v_eta, __pyx_v_dt);
12120 
12121  /* function exit code */
12122  __Pyx_RefNannyFinishContext();
12123  return __pyx_r;
12124 }
12125 
12126 static PyObject *__pyx_pf_9WaveTools_50decompose_tseries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_time, PyObject *__pyx_v_eta, PyObject *__pyx_v_dt) {
12127  PyObject *__pyx_v_nfft = NULL;
12128  PyObject *__pyx_v_results = NULL;
12129  PyObject *__pyx_v_fft_x = NULL;
12130  PyObject *__pyx_v_freq = NULL;
12131  PyObject *__pyx_v_iend = NULL;
12132  PyObject *__pyx_v_setup = NULL;
12133  PyObject *__pyx_v_aa = NULL;
12134  PyObject *__pyx_v_ww = NULL;
12135  PyObject *__pyx_v_pp = NULL;
12136  PyObject *__pyx_v_k = NULL;
12137  PyObject *__pyx_r = NULL;
12138  __Pyx_RefNannyDeclarations
12139  Py_ssize_t __pyx_t_1;
12140  PyObject *__pyx_t_2 = NULL;
12141  PyObject *__pyx_t_3 = NULL;
12142  PyObject *__pyx_t_4 = NULL;
12143  int __pyx_t_5;
12144  PyObject *__pyx_t_6 = NULL;
12145  PyObject *__pyx_t_7 = NULL;
12146  PyObject *__pyx_t_8 = NULL;
12147  PyObject *(*__pyx_t_9)(PyObject *);
12148  int __pyx_t_10;
12149  int __pyx_lineno = 0;
12150  const char *__pyx_filename = NULL;
12151  int __pyx_clineno = 0;
12152  __Pyx_RefNannySetupContext("decompose_tseries", 0);
12153 
12154  /* "WaveTools.py":683
12155  *
12156  * """
12157  * nfft = len(time) # <<<<<<<<<<<<<<
12158  * results = []
12159  * fft_x = np.fft.fft(eta,nfft)
12160  */
12161  __pyx_t_1 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 683, __pyx_L1_error)
12162  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error)
12163  __Pyx_GOTREF(__pyx_t_2);
12164  __pyx_v_nfft = __pyx_t_2;
12165  __pyx_t_2 = 0;
12166 
12167  /* "WaveTools.py":684
12168  * """
12169  * nfft = len(time)
12170  * results = [] # <<<<<<<<<<<<<<
12171  * fft_x = np.fft.fft(eta,nfft)
12172  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
12173  */
12174  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 684, __pyx_L1_error)
12175  __Pyx_GOTREF(__pyx_t_2);
12176  __pyx_v_results = ((PyObject*)__pyx_t_2);
12177  __pyx_t_2 = 0;
12178 
12179  /* "WaveTools.py":685
12180  * nfft = len(time)
12181  * results = []
12182  * fft_x = np.fft.fft(eta,nfft) # <<<<<<<<<<<<<<
12183  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
12184  * iend = np.where(freq<0)[0][0]
12185  */
12186  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error)
12187  __Pyx_GOTREF(__pyx_t_3);
12188  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fft); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error)
12189  __Pyx_GOTREF(__pyx_t_4);
12190  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12191  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fft); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error)
12192  __Pyx_GOTREF(__pyx_t_3);
12193  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12194  __pyx_t_4 = NULL;
12195  __pyx_t_5 = 0;
12196  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
12197  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
12198  if (likely(__pyx_t_4)) {
12199  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
12200  __Pyx_INCREF(__pyx_t_4);
12201  __Pyx_INCREF(function);
12202  __Pyx_DECREF_SET(__pyx_t_3, function);
12203  __pyx_t_5 = 1;
12204  }
12205  }
12206  #if CYTHON_FAST_PYCALL
12207  if (PyFunction_Check(__pyx_t_3)) {
12208  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_eta, __pyx_v_nfft};
12209  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error)
12210  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
12211  __Pyx_GOTREF(__pyx_t_2);
12212  } else
12213  #endif
12214  #if CYTHON_FAST_PYCCALL
12215  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
12216  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_eta, __pyx_v_nfft};
12217  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error)
12218  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
12219  __Pyx_GOTREF(__pyx_t_2);
12220  } else
12221  #endif
12222  {
12223  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 685, __pyx_L1_error)
12224  __Pyx_GOTREF(__pyx_t_6);
12225  if (__pyx_t_4) {
12226  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
12227  }
12228  __Pyx_INCREF(__pyx_v_eta);
12229  __Pyx_GIVEREF(__pyx_v_eta);
12230  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_eta);
12231  __Pyx_INCREF(__pyx_v_nfft);
12232  __Pyx_GIVEREF(__pyx_v_nfft);
12233  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_nfft);
12234  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error)
12235  __Pyx_GOTREF(__pyx_t_2);
12236  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12237  }
12238  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12239  __pyx_v_fft_x = __pyx_t_2;
12240  __pyx_t_2 = 0;
12241 
12242  /* "WaveTools.py":686
12243  * results = []
12244  * fft_x = np.fft.fft(eta,nfft)
12245  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum # <<<<<<<<<<<<<<
12246  * iend = np.where(freq<0)[0][0]
12247  * setup = old_div(np.real(fft_x[0]),nfft)
12248  */
12249  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L1_error)
12250  __Pyx_GOTREF(__pyx_t_3);
12251  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fft); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 686, __pyx_L1_error)
12252  __Pyx_GOTREF(__pyx_t_6);
12253  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12254  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_fftfreq); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L1_error)
12255  __Pyx_GOTREF(__pyx_t_3);
12256  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12257  __pyx_t_6 = NULL;
12258  __pyx_t_5 = 0;
12259  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
12260  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
12261  if (likely(__pyx_t_6)) {
12262  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
12263  __Pyx_INCREF(__pyx_t_6);
12264  __Pyx_INCREF(function);
12265  __Pyx_DECREF_SET(__pyx_t_3, function);
12266  __pyx_t_5 = 1;
12267  }
12268  }
12269  #if CYTHON_FAST_PYCALL
12270  if (PyFunction_Check(__pyx_t_3)) {
12271  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_nfft, __pyx_v_dt};
12272  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
12273  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12274  __Pyx_GOTREF(__pyx_t_2);
12275  } else
12276  #endif
12277  #if CYTHON_FAST_PYCCALL
12278  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
12279  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_nfft, __pyx_v_dt};
12280  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
12281  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12282  __Pyx_GOTREF(__pyx_t_2);
12283  } else
12284  #endif
12285  {
12286  __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 686, __pyx_L1_error)
12287  __Pyx_GOTREF(__pyx_t_4);
12288  if (__pyx_t_6) {
12289  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
12290  }
12291  __Pyx_INCREF(__pyx_v_nfft);
12292  __Pyx_GIVEREF(__pyx_v_nfft);
12293  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_nfft);
12294  __Pyx_INCREF(__pyx_v_dt);
12295  __Pyx_GIVEREF(__pyx_v_dt);
12296  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_dt);
12297  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
12298  __Pyx_GOTREF(__pyx_t_2);
12299  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12300  }
12301  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12302  __pyx_v_freq = __pyx_t_2;
12303  __pyx_t_2 = 0;
12304 
12305  /* "WaveTools.py":687
12306  * fft_x = np.fft.fft(eta,nfft)
12307  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
12308  * iend = np.where(freq<0)[0][0] # <<<<<<<<<<<<<<
12309  * setup = old_div(np.real(fft_x[0]),nfft)
12310  * fft_x = fft_x[1:iend]
12311  */
12312  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error)
12313  __Pyx_GOTREF(__pyx_t_3);
12314  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
12315  __Pyx_GOTREF(__pyx_t_4);
12316  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12317  __pyx_t_3 = PyObject_RichCompare(__pyx_v_freq, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error)
12318  __pyx_t_6 = NULL;
12319  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
12320  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
12321  if (likely(__pyx_t_6)) {
12322  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
12323  __Pyx_INCREF(__pyx_t_6);
12324  __Pyx_INCREF(function);
12325  __Pyx_DECREF_SET(__pyx_t_4, function);
12326  }
12327  }
12328  __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
12329  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12330  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12331  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error)
12332  __Pyx_GOTREF(__pyx_t_2);
12333  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12334  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
12335  __Pyx_GOTREF(__pyx_t_4);
12336  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12337  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error)
12338  __Pyx_GOTREF(__pyx_t_2);
12339  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12340  __pyx_v_iend = __pyx_t_2;
12341  __pyx_t_2 = 0;
12342 
12343  /* "WaveTools.py":688
12344  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
12345  * iend = np.where(freq<0)[0][0]
12346  * setup = old_div(np.real(fft_x[0]),nfft) # <<<<<<<<<<<<<<
12347  * fft_x = fft_x[1:iend]
12348  * freq = freq[1:iend]
12349  */
12350  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_old_div); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error)
12351  __Pyx_GOTREF(__pyx_t_4);
12352  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 688, __pyx_L1_error)
12353  __Pyx_GOTREF(__pyx_t_6);
12354  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_real); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error)
12355  __Pyx_GOTREF(__pyx_t_7);
12356  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12357  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_fft_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 688, __pyx_L1_error)
12358  __Pyx_GOTREF(__pyx_t_6);
12359  __pyx_t_8 = NULL;
12360  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
12361  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
12362  if (likely(__pyx_t_8)) {
12363  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
12364  __Pyx_INCREF(__pyx_t_8);
12365  __Pyx_INCREF(function);
12366  __Pyx_DECREF_SET(__pyx_t_7, function);
12367  }
12368  }
12369  __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
12370  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
12371  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12372  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error)
12373  __Pyx_GOTREF(__pyx_t_3);
12374  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12375  __pyx_t_7 = NULL;
12376  __pyx_t_5 = 0;
12377  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
12378  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
12379  if (likely(__pyx_t_7)) {
12380  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
12381  __Pyx_INCREF(__pyx_t_7);
12382  __Pyx_INCREF(function);
12383  __Pyx_DECREF_SET(__pyx_t_4, function);
12384  __pyx_t_5 = 1;
12385  }
12386  }
12387  #if CYTHON_FAST_PYCALL
12388  if (PyFunction_Check(__pyx_t_4)) {
12389  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_v_nfft};
12390  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
12391  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
12392  __Pyx_GOTREF(__pyx_t_2);
12393  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12394  } else
12395  #endif
12396  #if CYTHON_FAST_PYCCALL
12397  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
12398  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_v_nfft};
12399  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
12400  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
12401  __Pyx_GOTREF(__pyx_t_2);
12402  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12403  } else
12404  #endif
12405  {
12406  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 688, __pyx_L1_error)
12407  __Pyx_GOTREF(__pyx_t_6);
12408  if (__pyx_t_7) {
12409  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
12410  }
12411  __Pyx_GIVEREF(__pyx_t_3);
12412  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
12413  __Pyx_INCREF(__pyx_v_nfft);
12414  __Pyx_GIVEREF(__pyx_v_nfft);
12415  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_nfft);
12416  __pyx_t_3 = 0;
12417  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
12418  __Pyx_GOTREF(__pyx_t_2);
12419  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12420  }
12421  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12422  __pyx_v_setup = __pyx_t_2;
12423  __pyx_t_2 = 0;
12424 
12425  /* "WaveTools.py":689
12426  * iend = np.where(freq<0)[0][0]
12427  * setup = old_div(np.real(fft_x[0]),nfft)
12428  * fft_x = fft_x[1:iend] # <<<<<<<<<<<<<<
12429  * freq = freq[1:iend]
12430  * #%retaining only first half of the spectrum
12431  */
12432  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_fft_x, 1, 0, NULL, &__pyx_v_iend, NULL, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L1_error)
12433  __Pyx_GOTREF(__pyx_t_2);
12434  __Pyx_DECREF_SET(__pyx_v_fft_x, __pyx_t_2);
12435  __pyx_t_2 = 0;
12436 
12437  /* "WaveTools.py":690
12438  * setup = old_div(np.real(fft_x[0]),nfft)
12439  * fft_x = fft_x[1:iend]
12440  * freq = freq[1:iend] # <<<<<<<<<<<<<<
12441  * #%retaining only first half of the spectrum
12442  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies)
12443  */
12444  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_freq, 1, 0, NULL, &__pyx_v_iend, NULL, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 690, __pyx_L1_error)
12445  __Pyx_GOTREF(__pyx_t_2);
12446  __Pyx_DECREF_SET(__pyx_v_freq, __pyx_t_2);
12447  __pyx_t_2 = 0;
12448 
12449  /* "WaveTools.py":692
12450  * freq = freq[1:iend]
12451  * #%retaining only first half of the spectrum
12452  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies) # <<<<<<<<<<<<<<
12453  * ww = 2*M_PI*freq
12454  *
12455  */
12456  __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_v_fft_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error)
12457  __Pyx_GOTREF(__pyx_t_2);
12458  __pyx_t_4 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
12459  __Pyx_GOTREF(__pyx_t_4);
12460  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12461  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_v_nfft); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 692, __pyx_L1_error)
12462  __Pyx_GOTREF(__pyx_t_2);
12463  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12464  __pyx_v_aa = __pyx_t_2;
12465  __pyx_t_2 = 0;
12466 
12467  /* "WaveTools.py":693
12468  * #%retaining only first half of the spectrum
12469  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies)
12470  * ww = 2*M_PI*freq # <<<<<<<<<<<<<<
12471  *
12472  *
12473  */
12474  __pyx_t_2 = PyFloat_FromDouble((2.0 * M_PI)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 693, __pyx_L1_error)
12475  __Pyx_GOTREF(__pyx_t_2);
12476  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_v_freq); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error)
12477  __Pyx_GOTREF(__pyx_t_4);
12478  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12479  __pyx_v_ww = __pyx_t_4;
12480  __pyx_t_4 = 0;
12481 
12482  /* "WaveTools.py":696
12483  *
12484  *
12485  * pp = np.zeros(len(aa),complex) # <<<<<<<<<<<<<<
12486  * for k in range(len(aa)):
12487  * pp[k]=cmat.phase(fft_x[k]) #% Calculating phases phases
12488  */
12489  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error)
12490  __Pyx_GOTREF(__pyx_t_2);
12491  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error)
12492  __Pyx_GOTREF(__pyx_t_6);
12493  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12494  __pyx_t_1 = PyObject_Length(__pyx_v_aa); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 696, __pyx_L1_error)
12495  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error)
12496  __Pyx_GOTREF(__pyx_t_2);
12497  __pyx_t_3 = NULL;
12498  __pyx_t_5 = 0;
12499  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
12500  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
12501  if (likely(__pyx_t_3)) {
12502  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12503  __Pyx_INCREF(__pyx_t_3);
12504  __Pyx_INCREF(function);
12505  __Pyx_DECREF_SET(__pyx_t_6, function);
12506  __pyx_t_5 = 1;
12507  }
12508  }
12509  #if CYTHON_FAST_PYCALL
12510  if (PyFunction_Check(__pyx_t_6)) {
12511  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, ((PyObject *)(&PyComplex_Type))};
12512  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error)
12513  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12514  __Pyx_GOTREF(__pyx_t_4);
12515  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12516  } else
12517  #endif
12518  #if CYTHON_FAST_PYCCALL
12519  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
12520  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, ((PyObject *)(&PyComplex_Type))};
12521  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error)
12522  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12523  __Pyx_GOTREF(__pyx_t_4);
12524  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12525  } else
12526  #endif
12527  {
12528  __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 696, __pyx_L1_error)
12529  __Pyx_GOTREF(__pyx_t_7);
12530  if (__pyx_t_3) {
12531  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
12532  }
12533  __Pyx_GIVEREF(__pyx_t_2);
12534  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_2);
12535  __Pyx_INCREF(((PyObject *)(&PyComplex_Type)));
12536  __Pyx_GIVEREF(((PyObject *)(&PyComplex_Type)));
12537  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, ((PyObject *)(&PyComplex_Type)));
12538  __pyx_t_2 = 0;
12539  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error)
12540  __Pyx_GOTREF(__pyx_t_4);
12541  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12542  }
12543  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12544  __pyx_v_pp = __pyx_t_4;
12545  __pyx_t_4 = 0;
12546 
12547  /* "WaveTools.py":697
12548  *
12549  * pp = np.zeros(len(aa),complex)
12550  * for k in range(len(aa)): # <<<<<<<<<<<<<<
12551  * pp[k]=cmat.phase(fft_x[k]) #% Calculating phases phases
12552  * pp = np.real(pp) # Append results to list
12553  */
12554  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 697, __pyx_L1_error)
12555  __Pyx_GOTREF(__pyx_t_6);
12556  __pyx_t_1 = PyObject_Length(__pyx_v_aa); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 697, __pyx_L1_error)
12557  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 697, __pyx_L1_error)
12558  __Pyx_GOTREF(__pyx_t_7);
12559  __pyx_t_2 = NULL;
12560  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
12561  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
12562  if (likely(__pyx_t_2)) {
12563  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12564  __Pyx_INCREF(__pyx_t_2);
12565  __Pyx_INCREF(function);
12566  __Pyx_DECREF_SET(__pyx_t_6, function);
12567  }
12568  }
12569  __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
12570  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
12571  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12572  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error)
12573  __Pyx_GOTREF(__pyx_t_4);
12574  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12575  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
12576  __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0;
12577  __pyx_t_9 = NULL;
12578  } else {
12579  __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 697, __pyx_L1_error)
12580  __Pyx_GOTREF(__pyx_t_6);
12581  __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 697, __pyx_L1_error)
12582  }
12583  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12584  for (;;) {
12585  if (likely(!__pyx_t_9)) {
12586  if (likely(PyList_CheckExact(__pyx_t_6))) {
12587  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break;
12588  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
12589  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 697, __pyx_L1_error)
12590  #else
12591  __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error)
12592  __Pyx_GOTREF(__pyx_t_4);
12593  #endif
12594  } else {
12595  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
12596  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
12597  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 697, __pyx_L1_error)
12598  #else
12599  __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error)
12600  __Pyx_GOTREF(__pyx_t_4);
12601  #endif
12602  }
12603  } else {
12604  __pyx_t_4 = __pyx_t_9(__pyx_t_6);
12605  if (unlikely(!__pyx_t_4)) {
12606  PyObject* exc_type = PyErr_Occurred();
12607  if (exc_type) {
12608  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
12609  else __PYX_ERR(0, 697, __pyx_L1_error)
12610  }
12611  break;
12612  }
12613  __Pyx_GOTREF(__pyx_t_4);
12614  }
12615  __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_4);
12616  __pyx_t_4 = 0;
12617 
12618  /* "WaveTools.py":698
12619  * pp = np.zeros(len(aa),complex)
12620  * for k in range(len(aa)):
12621  * pp[k]=cmat.phase(fft_x[k]) #% Calculating phases phases # <<<<<<<<<<<<<<
12622  * pp = np.real(pp) # Append results to list
12623  * results.append(ww)
12624  */
12625  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_cmat); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L1_error)
12626  __Pyx_GOTREF(__pyx_t_7);
12627  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_phase); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 698, __pyx_L1_error)
12628  __Pyx_GOTREF(__pyx_t_2);
12629  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12630  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_fft_x, __pyx_v_k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L1_error)
12631  __Pyx_GOTREF(__pyx_t_7);
12632  __pyx_t_3 = NULL;
12633  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
12634  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
12635  if (likely(__pyx_t_3)) {
12636  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12637  __Pyx_INCREF(__pyx_t_3);
12638  __Pyx_INCREF(function);
12639  __Pyx_DECREF_SET(__pyx_t_2, function);
12640  }
12641  }
12642  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7);
12643  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12644  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12645  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 698, __pyx_L1_error)
12646  __Pyx_GOTREF(__pyx_t_4);
12647  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12648  if (unlikely(PyObject_SetItem(__pyx_v_pp, __pyx_v_k, __pyx_t_4) < 0)) __PYX_ERR(0, 698, __pyx_L1_error)
12649  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12650 
12651  /* "WaveTools.py":697
12652  *
12653  * pp = np.zeros(len(aa),complex)
12654  * for k in range(len(aa)): # <<<<<<<<<<<<<<
12655  * pp[k]=cmat.phase(fft_x[k]) #% Calculating phases phases
12656  * pp = np.real(pp) # Append results to list
12657  */
12658  }
12659  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12660 
12661  /* "WaveTools.py":699
12662  * for k in range(len(aa)):
12663  * pp[k]=cmat.phase(fft_x[k]) #% Calculating phases phases
12664  * pp = np.real(pp) # Append results to list # <<<<<<<<<<<<<<
12665  * results.append(ww)
12666  * results.append(aa)
12667  */
12668  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 699, __pyx_L1_error)
12669  __Pyx_GOTREF(__pyx_t_4);
12670  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_real); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 699, __pyx_L1_error)
12671  __Pyx_GOTREF(__pyx_t_2);
12672  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12673  __pyx_t_4 = NULL;
12674  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
12675  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
12676  if (likely(__pyx_t_4)) {
12677  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12678  __Pyx_INCREF(__pyx_t_4);
12679  __Pyx_INCREF(function);
12680  __Pyx_DECREF_SET(__pyx_t_2, function);
12681  }
12682  }
12683  __pyx_t_6 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v_pp) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_pp);
12684  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
12685  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 699, __pyx_L1_error)
12686  __Pyx_GOTREF(__pyx_t_6);
12687  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12688  __Pyx_DECREF_SET(__pyx_v_pp, __pyx_t_6);
12689  __pyx_t_6 = 0;
12690 
12691  /* "WaveTools.py":700
12692  * pp[k]=cmat.phase(fft_x[k]) #% Calculating phases phases
12693  * pp = np.real(pp) # Append results to list
12694  * results.append(ww) # <<<<<<<<<<<<<<
12695  * results.append(aa)
12696  * results.append(pp)
12697  */
12698  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_ww); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 700, __pyx_L1_error)
12699 
12700  /* "WaveTools.py":701
12701  * pp = np.real(pp) # Append results to list
12702  * results.append(ww)
12703  * results.append(aa) # <<<<<<<<<<<<<<
12704  * results.append(pp)
12705  * results.append(setup)
12706  */
12707  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_aa); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 701, __pyx_L1_error)
12708 
12709  /* "WaveTools.py":702
12710  * results.append(ww)
12711  * results.append(aa)
12712  * results.append(pp) # <<<<<<<<<<<<<<
12713  * results.append(setup)
12714  * return results
12715  */
12716  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_pp); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 702, __pyx_L1_error)
12717 
12718  /* "WaveTools.py":703
12719  * results.append(aa)
12720  * results.append(pp)
12721  * results.append(setup) # <<<<<<<<<<<<<<
12722  * return results
12723  *
12724  */
12725  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_setup); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 703, __pyx_L1_error)
12726 
12727  /* "WaveTools.py":704
12728  * results.append(pp)
12729  * results.append(setup)
12730  * return results # <<<<<<<<<<<<<<
12731  *
12732  * class SteadyCurrent(object):
12733  */
12734  __Pyx_XDECREF(__pyx_r);
12735  __Pyx_INCREF(__pyx_v_results);
12736  __pyx_r = __pyx_v_results;
12737  goto __pyx_L0;
12738 
12739  /* "WaveTools.py":660
12740  * return wind
12741  *
12742  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
12743  * """ Performs spectral analysis and calculates angular frequency components, amplitude, phase and mean level power
12744  * of a time series with constant sampling.
12745  */
12746 
12747  /* function exit code */
12748  __pyx_L1_error:;
12749  __Pyx_XDECREF(__pyx_t_2);
12750  __Pyx_XDECREF(__pyx_t_3);
12751  __Pyx_XDECREF(__pyx_t_4);
12752  __Pyx_XDECREF(__pyx_t_6);
12753  __Pyx_XDECREF(__pyx_t_7);
12754  __Pyx_XDECREF(__pyx_t_8);
12755  __Pyx_AddTraceback("WaveTools.decompose_tseries", __pyx_clineno, __pyx_lineno, __pyx_filename);
12756  __pyx_r = NULL;
12757  __pyx_L0:;
12758  __Pyx_XDECREF(__pyx_v_nfft);
12759  __Pyx_XDECREF(__pyx_v_results);
12760  __Pyx_XDECREF(__pyx_v_fft_x);
12761  __Pyx_XDECREF(__pyx_v_freq);
12762  __Pyx_XDECREF(__pyx_v_iend);
12763  __Pyx_XDECREF(__pyx_v_setup);
12764  __Pyx_XDECREF(__pyx_v_aa);
12765  __Pyx_XDECREF(__pyx_v_ww);
12766  __Pyx_XDECREF(__pyx_v_pp);
12767  __Pyx_XDECREF(__pyx_v_k);
12768  __Pyx_XGIVEREF(__pyx_r);
12769  __Pyx_RefNannyFinishContext();
12770  return __pyx_r;
12771 }
12772 
12773 /* "WaveTools.py":720
12774  *
12775  * """
12776  * def __init__(self, # <<<<<<<<<<<<<<
12777  * U,
12778  * mwl,
12779  */
12780 
12781 /* Python wrapper */
12782 static int __pyx_pw_9WaveTools_13SteadyCurrent_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12783 static int __pyx_pw_9WaveTools_13SteadyCurrent_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
12784  PyObject *__pyx_v_U = 0;
12785  PyObject *__pyx_v_mwl = 0;
12786  PyObject *__pyx_v_rampTime = 0;
12787  int __pyx_lineno = 0;
12788  const char *__pyx_filename = NULL;
12789  int __pyx_clineno = 0;
12790  int __pyx_r;
12791  __Pyx_RefNannyDeclarations
12792  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
12793  {
12794  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_U,&__pyx_n_s_mwl,&__pyx_n_s_rampTime,0};
12795  PyObject* values[3] = {0,0,0};
12796  values[2] = ((PyObject *)__pyx_float_0_);
12797  if (unlikely(__pyx_kwds)) {
12798  Py_ssize_t kw_args;
12799  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
12800  switch (pos_args) {
12801  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12802  CYTHON_FALLTHROUGH;
12803  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12804  CYTHON_FALLTHROUGH;
12805  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12806  CYTHON_FALLTHROUGH;
12807  case 0: break;
12808  default: goto __pyx_L5_argtuple_error;
12809  }
12810  kw_args = PyDict_Size(__pyx_kwds);
12811  switch (pos_args) {
12812  case 0:
12813  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_U)) != 0)) kw_args--;
12814  else goto __pyx_L5_argtuple_error;
12815  CYTHON_FALLTHROUGH;
12816  case 1:
12817  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
12818  else {
12819  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(0, 720, __pyx_L3_error)
12820  }
12821  CYTHON_FALLTHROUGH;
12822  case 2:
12823  if (kw_args > 0) {
12824  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rampTime);
12825  if (value) { values[2] = value; kw_args--; }
12826  }
12827  }
12828  if (unlikely(kw_args > 0)) {
12829  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 720, __pyx_L3_error)
12830  }
12831  } else {
12832  switch (PyTuple_GET_SIZE(__pyx_args)) {
12833  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12834  CYTHON_FALLTHROUGH;
12835  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12836  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12837  break;
12838  default: goto __pyx_L5_argtuple_error;
12839  }
12840  }
12841  __pyx_v_U = values[0];
12842  __pyx_v_mwl = values[1];
12843  __pyx_v_rampTime = values[2];
12844  }
12845  goto __pyx_L4_argument_unpacking_done;
12846  __pyx_L5_argtuple_error:;
12847  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 720, __pyx_L3_error)
12848  __pyx_L3_error:;
12849  __Pyx_AddTraceback("WaveTools.SteadyCurrent.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12850  __Pyx_RefNannyFinishContext();
12851  return -1;
12852  __pyx_L4_argument_unpacking_done:;
12853  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent___init__(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self), __pyx_v_U, __pyx_v_mwl, __pyx_v_rampTime);
12854 
12855  /* function exit code */
12856  __Pyx_RefNannyFinishContext();
12857  return __pyx_r;
12858 }
12859 
12860 static int __pyx_pf_9WaveTools_13SteadyCurrent___init__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, PyObject *__pyx_v_U, PyObject *__pyx_v_mwl, PyObject *__pyx_v_rampTime) {
12861  int __pyx_r;
12862  __Pyx_RefNannyDeclarations
12863  double __pyx_t_1;
12864  PyObject *__pyx_t_2 = NULL;
12865  PyObject *__pyx_t_3 = NULL;
12866  PyObject *__pyx_t_4 = NULL;
12867  Py_ssize_t __pyx_t_5;
12868  int __pyx_t_6;
12869  PyObject *__pyx_t_7 = NULL;
12870  PyObject *__pyx_t_8 = NULL;
12871  PyObject *__pyx_t_9 = NULL;
12872  PyObject *__pyx_t_10 = NULL;
12873  PyObject *__pyx_t_11 = NULL;
12874  PyObject *__pyx_t_12 = NULL;
12875  int __pyx_lineno = 0;
12876  const char *__pyx_filename = NULL;
12877  int __pyx_clineno = 0;
12878  __Pyx_RefNannySetupContext("__init__", 0);
12879 
12880  /* "WaveTools.py":724
12881  * mwl,
12882  * rampTime = 0.):
12883  * self.mwl = mwl # <<<<<<<<<<<<<<
12884  * try:
12885  * if len(U)!=3:
12886  */
12887  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 724, __pyx_L1_error)
12888  __pyx_v_self->mwl = __pyx_t_1;
12889 
12890  /* "WaveTools.py":725
12891  * rampTime = 0.):
12892  * self.mwl = mwl
12893  * try: # <<<<<<<<<<<<<<
12894  * if len(U)!=3:
12895  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
12896  */
12897  {
12898  __Pyx_PyThreadState_declare
12899  __Pyx_PyThreadState_assign
12900  __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
12901  __Pyx_XGOTREF(__pyx_t_2);
12902  __Pyx_XGOTREF(__pyx_t_3);
12903  __Pyx_XGOTREF(__pyx_t_4);
12904  /*try:*/ {
12905 
12906  /* "WaveTools.py":726
12907  * self.mwl = mwl
12908  * try:
12909  * if len(U)!=3: # <<<<<<<<<<<<<<
12910  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
12911  * sys.exit(1)
12912  */
12913  __pyx_t_5 = PyObject_Length(__pyx_v_U); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 726, __pyx_L3_error)
12914  __pyx_t_6 = ((__pyx_t_5 != 3) != 0);
12915  if (__pyx_t_6) {
12916 
12917  /* "WaveTools.py":727
12918  * try:
12919  * if len(U)!=3:
12920  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3") # <<<<<<<<<<<<<<
12921  * sys.exit(1)
12922  *
12923  */
12924  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 727, __pyx_L3_error)
12925  __Pyx_GOTREF(__pyx_t_8);
12926  __pyx_t_9 = NULL;
12927  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
12928  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
12929  if (likely(__pyx_t_9)) {
12930  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
12931  __Pyx_INCREF(__pyx_t_9);
12932  __Pyx_INCREF(function);
12933  __Pyx_DECREF_SET(__pyx_t_8, function);
12934  }
12935  }
12936  __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_kp_s_ERROR_Wavetools_py_SteadyCurrent) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_ERROR_Wavetools_py_SteadyCurrent);
12937  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
12938  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 727, __pyx_L3_error)
12939  __Pyx_GOTREF(__pyx_t_7);
12940  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
12941  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12942 
12943  /* "WaveTools.py":728
12944  * if len(U)!=3:
12945  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
12946  * sys.exit(1) # <<<<<<<<<<<<<<
12947  *
12948  * except:
12949  */
12950  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_sys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 728, __pyx_L3_error)
12951  __Pyx_GOTREF(__pyx_t_8);
12952  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 728, __pyx_L3_error)
12953  __Pyx_GOTREF(__pyx_t_9);
12954  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
12955  __pyx_t_8 = NULL;
12956  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
12957  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
12958  if (likely(__pyx_t_8)) {
12959  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
12960  __Pyx_INCREF(__pyx_t_8);
12961  __Pyx_INCREF(function);
12962  __Pyx_DECREF_SET(__pyx_t_9, function);
12963  }
12964  }
12965  __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_1);
12966  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
12967  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 728, __pyx_L3_error)
12968  __Pyx_GOTREF(__pyx_t_7);
12969  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12970  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12971 
12972  /* "WaveTools.py":726
12973  * self.mwl = mwl
12974  * try:
12975  * if len(U)!=3: # <<<<<<<<<<<<<<
12976  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
12977  * sys.exit(1)
12978  */
12979  }
12980 
12981  /* "WaveTools.py":725
12982  * rampTime = 0.):
12983  * self.mwl = mwl
12984  * try: # <<<<<<<<<<<<<<
12985  * if len(U)!=3:
12986  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
12987  */
12988  }
12989  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
12990  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12991  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
12992  goto __pyx_L8_try_end;
12993  __pyx_L3_error:;
12994  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
12995  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
12996  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
12997 
12998  /* "WaveTools.py":730
12999  * sys.exit(1)
13000  *
13001  * except: # <<<<<<<<<<<<<<
13002  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
13003  * sys.exit(1)
13004  */
13005  /*except:*/ {
13006  __Pyx_AddTraceback("WaveTools.SteadyCurrent.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13007  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_9, &__pyx_t_8) < 0) __PYX_ERR(0, 730, __pyx_L5_except_error)
13008  __Pyx_GOTREF(__pyx_t_7);
13009  __Pyx_GOTREF(__pyx_t_9);
13010  __Pyx_GOTREF(__pyx_t_8);
13011 
13012  /* "WaveTools.py":731
13013  *
13014  * except:
13015  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3") # <<<<<<<<<<<<<<
13016  * sys.exit(1)
13017  * self.U = np.array(U)
13018  */
13019  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 731, __pyx_L5_except_error)
13020  __Pyx_GOTREF(__pyx_t_11);
13021  __pyx_t_12 = NULL;
13022  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
13023  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
13024  if (likely(__pyx_t_12)) {
13025  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
13026  __Pyx_INCREF(__pyx_t_12);
13027  __Pyx_INCREF(function);
13028  __Pyx_DECREF_SET(__pyx_t_11, function);
13029  }
13030  }
13031  __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_kp_s_ERROR_Wavetools_py_SteadyCurrent) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_kp_s_ERROR_Wavetools_py_SteadyCurrent);
13032  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
13033  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 731, __pyx_L5_except_error)
13034  __Pyx_GOTREF(__pyx_t_10);
13035  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13036  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13037 
13038  /* "WaveTools.py":732
13039  * except:
13040  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
13041  * sys.exit(1) # <<<<<<<<<<<<<<
13042  * self.U = np.array(U)
13043  * self.ramp = rampTime
13044  */
13045  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 732, __pyx_L5_except_error)
13046  __Pyx_GOTREF(__pyx_t_11);
13047  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 732, __pyx_L5_except_error)
13048  __Pyx_GOTREF(__pyx_t_12);
13049  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13050  __pyx_t_11 = NULL;
13051  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
13052  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
13053  if (likely(__pyx_t_11)) {
13054  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
13055  __Pyx_INCREF(__pyx_t_11);
13056  __Pyx_INCREF(function);
13057  __Pyx_DECREF_SET(__pyx_t_12, function);
13058  }
13059  }
13060  __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_11, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_int_1);
13061  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
13062  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 732, __pyx_L5_except_error)
13063  __Pyx_GOTREF(__pyx_t_10);
13064  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
13065  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
13066  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
13067  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
13068  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
13069  goto __pyx_L4_exception_handled;
13070  }
13071  __pyx_L5_except_error:;
13072 
13073  /* "WaveTools.py":725
13074  * rampTime = 0.):
13075  * self.mwl = mwl
13076  * try: # <<<<<<<<<<<<<<
13077  * if len(U)!=3:
13078  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
13079  */
13080  __Pyx_XGIVEREF(__pyx_t_2);
13081  __Pyx_XGIVEREF(__pyx_t_3);
13082  __Pyx_XGIVEREF(__pyx_t_4);
13083  __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
13084  goto __pyx_L1_error;
13085  __pyx_L4_exception_handled:;
13086  __Pyx_XGIVEREF(__pyx_t_2);
13087  __Pyx_XGIVEREF(__pyx_t_3);
13088  __Pyx_XGIVEREF(__pyx_t_4);
13089  __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
13090  __pyx_L8_try_end:;
13091  }
13092 
13093  /* "WaveTools.py":733
13094  * logEvent("ERROR! Wavetools.py: SteadyCurrent velocity argument needs to be a vector with length = 3")
13095  * sys.exit(1)
13096  * self.U = np.array(U) # <<<<<<<<<<<<<<
13097  * self.ramp = rampTime
13098  *
13099  */
13100  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 733, __pyx_L1_error)
13101  __Pyx_GOTREF(__pyx_t_9);
13102  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 733, __pyx_L1_error)
13103  __Pyx_GOTREF(__pyx_t_7);
13104  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13105  __pyx_t_9 = NULL;
13106  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
13107  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
13108  if (likely(__pyx_t_9)) {
13109  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
13110  __Pyx_INCREF(__pyx_t_9);
13111  __Pyx_INCREF(function);
13112  __Pyx_DECREF_SET(__pyx_t_7, function);
13113  }
13114  }
13115  __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_U) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_U);
13116  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
13117  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 733, __pyx_L1_error)
13118  __Pyx_GOTREF(__pyx_t_8);
13119  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
13120  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 733, __pyx_L1_error)
13121  __Pyx_GIVEREF(__pyx_t_8);
13122  __Pyx_GOTREF(__pyx_v_self->U);
13123  __Pyx_DECREF(((PyObject *)__pyx_v_self->U));
13124  __pyx_v_self->U = ((PyArrayObject *)__pyx_t_8);
13125  __pyx_t_8 = 0;
13126 
13127  /* "WaveTools.py":734
13128  * sys.exit(1)
13129  * self.U = np.array(U)
13130  * self.ramp = rampTime # <<<<<<<<<<<<<<
13131  *
13132  * def eta(self,x,t):
13133  */
13134  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_rampTime); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L1_error)
13135  __pyx_v_self->ramp = __pyx_t_1;
13136 
13137  /* "WaveTools.py":720
13138  *
13139  * """
13140  * def __init__(self, # <<<<<<<<<<<<<<
13141  * U,
13142  * mwl,
13143  */
13144 
13145  /* function exit code */
13146  __pyx_r = 0;
13147  goto __pyx_L0;
13148  __pyx_L1_error:;
13149  __Pyx_XDECREF(__pyx_t_7);
13150  __Pyx_XDECREF(__pyx_t_8);
13151  __Pyx_XDECREF(__pyx_t_9);
13152  __Pyx_XDECREF(__pyx_t_10);
13153  __Pyx_XDECREF(__pyx_t_11);
13154  __Pyx_XDECREF(__pyx_t_12);
13155  __Pyx_AddTraceback("WaveTools.SteadyCurrent.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13156  __pyx_r = -1;
13157  __pyx_L0:;
13158  __Pyx_RefNannyFinishContext();
13159  return __pyx_r;
13160 }
13161 
13162 /* "WaveTools.py":736
13163  * self.ramp = rampTime
13164  *
13165  * def eta(self,x,t): # <<<<<<<<<<<<<<
13166  * """Calculates free surface elevation (SolitaryWave class)
13167  * Parameters
13168  */
13169 
13170 /* Python wrapper */
13171 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13172 static char __pyx_doc_9WaveTools_13SteadyCurrent_2eta[] = "Calculates free surface elevation (SolitaryWave class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
13173 static PyMethodDef __pyx_mdef_9WaveTools_13SteadyCurrent_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13SteadyCurrent_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13SteadyCurrent_2eta};
13174 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13175  CYTHON_UNUSED PyObject *__pyx_v_x = 0;
13176  CYTHON_UNUSED PyObject *__pyx_v_t = 0;
13177  int __pyx_lineno = 0;
13178  const char *__pyx_filename = NULL;
13179  int __pyx_clineno = 0;
13180  PyObject *__pyx_r = 0;
13181  __Pyx_RefNannyDeclarations
13182  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
13183  {
13184  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
13185  PyObject* values[2] = {0,0};
13186  if (unlikely(__pyx_kwds)) {
13187  Py_ssize_t kw_args;
13188  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13189  switch (pos_args) {
13190  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13191  CYTHON_FALLTHROUGH;
13192  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13193  CYTHON_FALLTHROUGH;
13194  case 0: break;
13195  default: goto __pyx_L5_argtuple_error;
13196  }
13197  kw_args = PyDict_Size(__pyx_kwds);
13198  switch (pos_args) {
13199  case 0:
13200  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
13201  else goto __pyx_L5_argtuple_error;
13202  CYTHON_FALLTHROUGH;
13203  case 1:
13204  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
13205  else {
13206  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 736, __pyx_L3_error)
13207  }
13208  }
13209  if (unlikely(kw_args > 0)) {
13210  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 736, __pyx_L3_error)
13211  }
13212  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
13213  goto __pyx_L5_argtuple_error;
13214  } else {
13215  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13216  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13217  }
13218  __pyx_v_x = values[0];
13219  __pyx_v_t = values[1];
13220  }
13221  goto __pyx_L4_argument_unpacking_done;
13222  __pyx_L5_argtuple_error:;
13223  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 736, __pyx_L3_error)
13224  __pyx_L3_error:;
13225  __Pyx_AddTraceback("WaveTools.SteadyCurrent.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
13226  __Pyx_RefNannyFinishContext();
13227  return NULL;
13228  __pyx_L4_argument_unpacking_done:;
13229  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent_2eta(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
13230 
13231  /* function exit code */
13232  __Pyx_RefNannyFinishContext();
13233  return __pyx_r;
13234 }
13235 
13236 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_2eta(CYTHON_UNUSED struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, CYTHON_UNUSED PyObject *__pyx_v_t) {
13237  PyObject *__pyx_r = NULL;
13238  __Pyx_RefNannyDeclarations
13239  __Pyx_RefNannySetupContext("eta", 0);
13240 
13241  /* "WaveTools.py":751
13242  *
13243  * """
13244  * return 0. # <<<<<<<<<<<<<<
13245  * def u(self,x,t):
13246  * """Calculates wave velocity vector (SolitaryWave class).
13247  */
13248  __Pyx_XDECREF(__pyx_r);
13249  __Pyx_INCREF(__pyx_float_0_);
13250  __pyx_r = __pyx_float_0_;
13251  goto __pyx_L0;
13252 
13253  /* "WaveTools.py":736
13254  * self.ramp = rampTime
13255  *
13256  * def eta(self,x,t): # <<<<<<<<<<<<<<
13257  * """Calculates free surface elevation (SolitaryWave class)
13258  * Parameters
13259  */
13260 
13261  /* function exit code */
13262  __pyx_L0:;
13263  __Pyx_XGIVEREF(__pyx_r);
13264  __Pyx_RefNannyFinishContext();
13265  return __pyx_r;
13266 }
13267 
13268 /* "WaveTools.py":752
13269  * """
13270  * return 0.
13271  * def u(self,x,t): # <<<<<<<<<<<<<<
13272  * """Calculates wave velocity vector (SolitaryWave class).
13273  * Parameters
13274  */
13275 
13276 /* Python wrapper */
13277 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13278 static char __pyx_doc_9WaveTools_13SteadyCurrent_4u[] = "Calculates wave velocity vector (SolitaryWave class).\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
13279 static PyMethodDef __pyx_mdef_9WaveTools_13SteadyCurrent_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13SteadyCurrent_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13SteadyCurrent_4u};
13280 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13281  CYTHON_UNUSED PyObject *__pyx_v_x = 0;
13282  PyObject *__pyx_v_t = 0;
13283  int __pyx_lineno = 0;
13284  const char *__pyx_filename = NULL;
13285  int __pyx_clineno = 0;
13286  PyObject *__pyx_r = 0;
13287  __Pyx_RefNannyDeclarations
13288  __Pyx_RefNannySetupContext("u (wrapper)", 0);
13289  {
13290  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
13291  PyObject* values[2] = {0,0};
13292  if (unlikely(__pyx_kwds)) {
13293  Py_ssize_t kw_args;
13294  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13295  switch (pos_args) {
13296  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13297  CYTHON_FALLTHROUGH;
13298  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13299  CYTHON_FALLTHROUGH;
13300  case 0: break;
13301  default: goto __pyx_L5_argtuple_error;
13302  }
13303  kw_args = PyDict_Size(__pyx_kwds);
13304  switch (pos_args) {
13305  case 0:
13306  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
13307  else goto __pyx_L5_argtuple_error;
13308  CYTHON_FALLTHROUGH;
13309  case 1:
13310  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
13311  else {
13312  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 752, __pyx_L3_error)
13313  }
13314  }
13315  if (unlikely(kw_args > 0)) {
13316  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 752, __pyx_L3_error)
13317  }
13318  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
13319  goto __pyx_L5_argtuple_error;
13320  } else {
13321  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13322  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13323  }
13324  __pyx_v_x = values[0];
13325  __pyx_v_t = values[1];
13326  }
13327  goto __pyx_L4_argument_unpacking_done;
13328  __pyx_L5_argtuple_error:;
13329  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 752, __pyx_L3_error)
13330  __pyx_L3_error:;
13331  __Pyx_AddTraceback("WaveTools.SteadyCurrent.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
13332  __Pyx_RefNannyFinishContext();
13333  return NULL;
13334  __pyx_L4_argument_unpacking_done:;
13335  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent_4u(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
13336 
13337  /* function exit code */
13338  __Pyx_RefNannyFinishContext();
13339  return __pyx_r;
13340 }
13341 
13342 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_4u(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
13343  PyObject *__pyx_v_U = NULL;
13344  PyObject *__pyx_r = NULL;
13345  __Pyx_RefNannyDeclarations
13346  PyObject *__pyx_t_1 = NULL;
13347  PyObject *__pyx_t_2 = NULL;
13348  PyObject *__pyx_t_3 = NULL;
13349  int __pyx_t_4;
13350  int __pyx_lineno = 0;
13351  const char *__pyx_filename = NULL;
13352  int __pyx_clineno = 0;
13353  __Pyx_RefNannySetupContext("u", 0);
13354 
13355  /* "WaveTools.py":767
13356  *
13357  * """
13358  * U = np.zeros(3,) # <<<<<<<<<<<<<<
13359  * if(t<self.ramp):
13360  * U=self.U*t/self.ramp
13361  */
13362  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error)
13363  __Pyx_GOTREF(__pyx_t_2);
13364  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 767, __pyx_L1_error)
13365  __Pyx_GOTREF(__pyx_t_3);
13366  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13367  __pyx_t_2 = NULL;
13368  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
13369  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
13370  if (likely(__pyx_t_2)) {
13371  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
13372  __Pyx_INCREF(__pyx_t_2);
13373  __Pyx_INCREF(function);
13374  __Pyx_DECREF_SET(__pyx_t_3, function);
13375  }
13376  }
13377  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
13378  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
13379  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error)
13380  __Pyx_GOTREF(__pyx_t_1);
13381  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13382  __pyx_v_U = __pyx_t_1;
13383  __pyx_t_1 = 0;
13384 
13385  /* "WaveTools.py":768
13386  * """
13387  * U = np.zeros(3,)
13388  * if(t<self.ramp): # <<<<<<<<<<<<<<
13389  * U=self.U*t/self.ramp
13390  * else:
13391  */
13392  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ramp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
13393  __Pyx_GOTREF(__pyx_t_1);
13394  __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 768, __pyx_L1_error)
13395  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13396  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 768, __pyx_L1_error)
13397  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13398  if (__pyx_t_4) {
13399 
13400  /* "WaveTools.py":769
13401  * U = np.zeros(3,)
13402  * if(t<self.ramp):
13403  * U=self.U*t/self.ramp # <<<<<<<<<<<<<<
13404  * else:
13405  * U=self.U
13406  */
13407  __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->U), __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error)
13408  __Pyx_GOTREF(__pyx_t_3);
13409  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->ramp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error)
13410  __Pyx_GOTREF(__pyx_t_1);
13411  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 769, __pyx_L1_error)
13412  __Pyx_GOTREF(__pyx_t_2);
13413  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13414  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13415  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_2);
13416  __pyx_t_2 = 0;
13417 
13418  /* "WaveTools.py":768
13419  * """
13420  * U = np.zeros(3,)
13421  * if(t<self.ramp): # <<<<<<<<<<<<<<
13422  * U=self.U*t/self.ramp
13423  * else:
13424  */
13425  goto __pyx_L3;
13426  }
13427 
13428  /* "WaveTools.py":771
13429  * U=self.U*t/self.ramp
13430  * else:
13431  * U=self.U # <<<<<<<<<<<<<<
13432  * return U
13433  *
13434  */
13435  /*else*/ {
13436  __pyx_t_2 = ((PyObject *)__pyx_v_self->U);
13437  __Pyx_INCREF(__pyx_t_2);
13438  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_2);
13439  __pyx_t_2 = 0;
13440  }
13441  __pyx_L3:;
13442 
13443  /* "WaveTools.py":772
13444  * else:
13445  * U=self.U
13446  * return U # <<<<<<<<<<<<<<
13447  *
13448  *
13449  */
13450  __Pyx_XDECREF(__pyx_r);
13451  __Pyx_INCREF(__pyx_v_U);
13452  __pyx_r = __pyx_v_U;
13453  goto __pyx_L0;
13454 
13455  /* "WaveTools.py":752
13456  * """
13457  * return 0.
13458  * def u(self,x,t): # <<<<<<<<<<<<<<
13459  * """Calculates wave velocity vector (SolitaryWave class).
13460  * Parameters
13461  */
13462 
13463  /* function exit code */
13464  __pyx_L1_error:;
13465  __Pyx_XDECREF(__pyx_t_1);
13466  __Pyx_XDECREF(__pyx_t_2);
13467  __Pyx_XDECREF(__pyx_t_3);
13468  __Pyx_AddTraceback("WaveTools.SteadyCurrent.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
13469  __pyx_r = NULL;
13470  __pyx_L0:;
13471  __Pyx_XDECREF(__pyx_v_U);
13472  __Pyx_XGIVEREF(__pyx_r);
13473  __Pyx_RefNannyFinishContext();
13474  return __pyx_r;
13475 }
13476 
13477 /* "WaveTools.pxd":39
13478  * cdef class SteadyCurrent:
13479  * cdef public:
13480  * double mwl # <<<<<<<<<<<<<<
13481  * cdef np.ndarray U
13482  * cdef double ramp
13483  */
13484 
13485 /* Python wrapper */
13486 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
13487 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_3mwl_1__get__(PyObject *__pyx_v_self) {
13488  PyObject *__pyx_r = 0;
13489  __Pyx_RefNannyDeclarations
13490  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
13491  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent_3mwl___get__(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self));
13492 
13493  /* function exit code */
13494  __Pyx_RefNannyFinishContext();
13495  return __pyx_r;
13496 }
13497 
13498 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_3mwl___get__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self) {
13499  PyObject *__pyx_r = NULL;
13500  __Pyx_RefNannyDeclarations
13501  PyObject *__pyx_t_1 = NULL;
13502  int __pyx_lineno = 0;
13503  const char *__pyx_filename = NULL;
13504  int __pyx_clineno = 0;
13505  __Pyx_RefNannySetupContext("__get__", 0);
13506  __Pyx_XDECREF(__pyx_r);
13507  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 39, __pyx_L1_error)
13508  __Pyx_GOTREF(__pyx_t_1);
13509  __pyx_r = __pyx_t_1;
13510  __pyx_t_1 = 0;
13511  goto __pyx_L0;
13512 
13513  /* function exit code */
13514  __pyx_L1_error:;
13515  __Pyx_XDECREF(__pyx_t_1);
13516  __Pyx_AddTraceback("WaveTools.SteadyCurrent.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13517  __pyx_r = NULL;
13518  __pyx_L0:;
13519  __Pyx_XGIVEREF(__pyx_r);
13520  __Pyx_RefNannyFinishContext();
13521  return __pyx_r;
13522 }
13523 
13524 /* Python wrapper */
13525 static int __pyx_pw_9WaveTools_13SteadyCurrent_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
13526 static int __pyx_pw_9WaveTools_13SteadyCurrent_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
13527  int __pyx_r;
13528  __Pyx_RefNannyDeclarations
13529  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
13530  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent_3mwl_2__set__(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self), ((PyObject *)__pyx_v_value));
13531 
13532  /* function exit code */
13533  __Pyx_RefNannyFinishContext();
13534  return __pyx_r;
13535 }
13536 
13537 static int __pyx_pf_9WaveTools_13SteadyCurrent_3mwl_2__set__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, PyObject *__pyx_v_value) {
13538  int __pyx_r;
13539  __Pyx_RefNannyDeclarations
13540  double __pyx_t_1;
13541  int __pyx_lineno = 0;
13542  const char *__pyx_filename = NULL;
13543  int __pyx_clineno = 0;
13544  __Pyx_RefNannySetupContext("__set__", 0);
13545  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 39, __pyx_L1_error)
13546  __pyx_v_self->mwl = __pyx_t_1;
13547 
13548  /* function exit code */
13549  __pyx_r = 0;
13550  goto __pyx_L0;
13551  __pyx_L1_error:;
13552  __Pyx_AddTraceback("WaveTools.SteadyCurrent.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13553  __pyx_r = -1;
13554  __pyx_L0:;
13555  __Pyx_RefNannyFinishContext();
13556  return __pyx_r;
13557 }
13558 
13559 /* "(tree fragment)":1
13560  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
13561  * cdef tuple state
13562  * cdef object _dict
13563  */
13564 
13565 /* Python wrapper */
13566 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
13567 static PyMethodDef __pyx_mdef_9WaveTools_13SteadyCurrent_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_13SteadyCurrent_7__reduce_cython__, METH_NOARGS, 0};
13568 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
13569  PyObject *__pyx_r = 0;
13570  __Pyx_RefNannyDeclarations
13571  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
13572  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent_6__reduce_cython__(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self));
13573 
13574  /* function exit code */
13575  __Pyx_RefNannyFinishContext();
13576  return __pyx_r;
13577 }
13578 
13579 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_6__reduce_cython__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self) {
13580  PyObject *__pyx_v_state = 0;
13581  PyObject *__pyx_v__dict = 0;
13582  int __pyx_v_use_setstate;
13583  PyObject *__pyx_r = NULL;
13584  __Pyx_RefNannyDeclarations
13585  PyObject *__pyx_t_1 = NULL;
13586  PyObject *__pyx_t_2 = NULL;
13587  PyObject *__pyx_t_3 = NULL;
13588  int __pyx_t_4;
13589  int __pyx_t_5;
13590  int __pyx_lineno = 0;
13591  const char *__pyx_filename = NULL;
13592  int __pyx_clineno = 0;
13593  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
13594 
13595  /* "(tree fragment)":5
13596  * cdef object _dict
13597  * cdef bint use_setstate
13598  * state = (self.U, self.mwl, self.ramp) # <<<<<<<<<<<<<<
13599  * _dict = getattr(self, '__dict__', None)
13600  * if _dict is not None:
13601  */
13602  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
13603  __Pyx_GOTREF(__pyx_t_1);
13604  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->ramp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
13605  __Pyx_GOTREF(__pyx_t_2);
13606  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
13607  __Pyx_GOTREF(__pyx_t_3);
13608  __Pyx_INCREF(((PyObject *)__pyx_v_self->U));
13609  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->U));
13610  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->U));
13611  __Pyx_GIVEREF(__pyx_t_1);
13612  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
13613  __Pyx_GIVEREF(__pyx_t_2);
13614  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
13615  __pyx_t_1 = 0;
13616  __pyx_t_2 = 0;
13617  __pyx_v_state = ((PyObject*)__pyx_t_3);
13618  __pyx_t_3 = 0;
13619 
13620  /* "(tree fragment)":6
13621  * cdef bint use_setstate
13622  * state = (self.U, self.mwl, self.ramp)
13623  * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
13624  * if _dict is not None:
13625  * state += (_dict,)
13626  */
13627  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
13628  __Pyx_GOTREF(__pyx_t_3);
13629  __pyx_v__dict = __pyx_t_3;
13630  __pyx_t_3 = 0;
13631 
13632  /* "(tree fragment)":7
13633  * state = (self.U, self.mwl, self.ramp)
13634  * _dict = getattr(self, '__dict__', None)
13635  * if _dict is not None: # <<<<<<<<<<<<<<
13636  * state += (_dict,)
13637  * use_setstate = True
13638  */
13639  __pyx_t_4 = (__pyx_v__dict != Py_None);
13640  __pyx_t_5 = (__pyx_t_4 != 0);
13641  if (__pyx_t_5) {
13642 
13643  /* "(tree fragment)":8
13644  * _dict = getattr(self, '__dict__', None)
13645  * if _dict is not None:
13646  * state += (_dict,) # <<<<<<<<<<<<<<
13647  * use_setstate = True
13648  * else:
13649  */
13650  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
13651  __Pyx_GOTREF(__pyx_t_3);
13652  __Pyx_INCREF(__pyx_v__dict);
13653  __Pyx_GIVEREF(__pyx_v__dict);
13654  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
13655  __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
13656  __Pyx_GOTREF(__pyx_t_2);
13657  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13658  __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
13659  __pyx_t_2 = 0;
13660 
13661  /* "(tree fragment)":9
13662  * if _dict is not None:
13663  * state += (_dict,)
13664  * use_setstate = True # <<<<<<<<<<<<<<
13665  * else:
13666  * use_setstate = self.U is not None
13667  */
13668  __pyx_v_use_setstate = 1;
13669 
13670  /* "(tree fragment)":7
13671  * state = (self.U, self.mwl, self.ramp)
13672  * _dict = getattr(self, '__dict__', None)
13673  * if _dict is not None: # <<<<<<<<<<<<<<
13674  * state += (_dict,)
13675  * use_setstate = True
13676  */
13677  goto __pyx_L3;
13678  }
13679 
13680  /* "(tree fragment)":11
13681  * use_setstate = True
13682  * else:
13683  * use_setstate = self.U is not None # <<<<<<<<<<<<<<
13684  * if use_setstate:
13685  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, None), state
13686  */
13687  /*else*/ {
13688  __pyx_t_5 = (((PyObject *)__pyx_v_self->U) != Py_None);
13689  __pyx_v_use_setstate = __pyx_t_5;
13690  }
13691  __pyx_L3:;
13692 
13693  /* "(tree fragment)":12
13694  * else:
13695  * use_setstate = self.U is not None
13696  * if use_setstate: # <<<<<<<<<<<<<<
13697  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, None), state
13698  * else:
13699  */
13700  __pyx_t_5 = (__pyx_v_use_setstate != 0);
13701  if (__pyx_t_5) {
13702 
13703  /* "(tree fragment)":13
13704  * use_setstate = self.U is not None
13705  * if use_setstate:
13706  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, None), state # <<<<<<<<<<<<<<
13707  * else:
13708  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state)
13709  */
13710  __Pyx_XDECREF(__pyx_r);
13711  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_SteadyCurrent); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
13712  __Pyx_GOTREF(__pyx_t_2);
13713  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
13714  __Pyx_GOTREF(__pyx_t_3);
13715  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
13716  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
13717  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
13718  __Pyx_INCREF(__pyx_int_237135047);
13719  __Pyx_GIVEREF(__pyx_int_237135047);
13720  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_237135047);
13721  __Pyx_INCREF(Py_None);
13722  __Pyx_GIVEREF(Py_None);
13723  PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
13724  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
13725  __Pyx_GOTREF(__pyx_t_1);
13726  __Pyx_GIVEREF(__pyx_t_2);
13727  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
13728  __Pyx_GIVEREF(__pyx_t_3);
13729  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
13730  __Pyx_INCREF(__pyx_v_state);
13731  __Pyx_GIVEREF(__pyx_v_state);
13732  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
13733  __pyx_t_2 = 0;
13734  __pyx_t_3 = 0;
13735  __pyx_r = __pyx_t_1;
13736  __pyx_t_1 = 0;
13737  goto __pyx_L0;
13738 
13739  /* "(tree fragment)":12
13740  * else:
13741  * use_setstate = self.U is not None
13742  * if use_setstate: # <<<<<<<<<<<<<<
13743  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, None), state
13744  * else:
13745  */
13746  }
13747 
13748  /* "(tree fragment)":15
13749  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, None), state
13750  * else:
13751  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state) # <<<<<<<<<<<<<<
13752  * def __setstate_cython__(self, __pyx_state):
13753  * __pyx_unpickle_SteadyCurrent__set_state(self, __pyx_state)
13754  */
13755  /*else*/ {
13756  __Pyx_XDECREF(__pyx_r);
13757  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_SteadyCurrent); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
13758  __Pyx_GOTREF(__pyx_t_1);
13759  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
13760  __Pyx_GOTREF(__pyx_t_3);
13761  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
13762  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
13763  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
13764  __Pyx_INCREF(__pyx_int_237135047);
13765  __Pyx_GIVEREF(__pyx_int_237135047);
13766  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_237135047);
13767  __Pyx_INCREF(__pyx_v_state);
13768  __Pyx_GIVEREF(__pyx_v_state);
13769  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
13770  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
13771  __Pyx_GOTREF(__pyx_t_2);
13772  __Pyx_GIVEREF(__pyx_t_1);
13773  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
13774  __Pyx_GIVEREF(__pyx_t_3);
13775  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
13776  __pyx_t_1 = 0;
13777  __pyx_t_3 = 0;
13778  __pyx_r = __pyx_t_2;
13779  __pyx_t_2 = 0;
13780  goto __pyx_L0;
13781  }
13782 
13783  /* "(tree fragment)":1
13784  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
13785  * cdef tuple state
13786  * cdef object _dict
13787  */
13788 
13789  /* function exit code */
13790  __pyx_L1_error:;
13791  __Pyx_XDECREF(__pyx_t_1);
13792  __Pyx_XDECREF(__pyx_t_2);
13793  __Pyx_XDECREF(__pyx_t_3);
13794  __Pyx_AddTraceback("WaveTools.SteadyCurrent.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13795  __pyx_r = NULL;
13796  __pyx_L0:;
13797  __Pyx_XDECREF(__pyx_v_state);
13798  __Pyx_XDECREF(__pyx_v__dict);
13799  __Pyx_XGIVEREF(__pyx_r);
13800  __Pyx_RefNannyFinishContext();
13801  return __pyx_r;
13802 }
13803 
13804 /* "(tree fragment)":16
13805  * else:
13806  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state)
13807  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
13808  * __pyx_unpickle_SteadyCurrent__set_state(self, __pyx_state)
13809  */
13810 
13811 /* Python wrapper */
13812 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
13813 static PyMethodDef __pyx_mdef_9WaveTools_13SteadyCurrent_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_13SteadyCurrent_9__setstate_cython__, METH_O, 0};
13814 static PyObject *__pyx_pw_9WaveTools_13SteadyCurrent_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
13815  PyObject *__pyx_r = 0;
13816  __Pyx_RefNannyDeclarations
13817  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
13818  __pyx_r = __pyx_pf_9WaveTools_13SteadyCurrent_8__setstate_cython__(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
13819 
13820  /* function exit code */
13821  __Pyx_RefNannyFinishContext();
13822  return __pyx_r;
13823 }
13824 
13825 static PyObject *__pyx_pf_9WaveTools_13SteadyCurrent_8__setstate_cython__(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
13826  PyObject *__pyx_r = NULL;
13827  __Pyx_RefNannyDeclarations
13828  PyObject *__pyx_t_1 = NULL;
13829  int __pyx_lineno = 0;
13830  const char *__pyx_filename = NULL;
13831  int __pyx_clineno = 0;
13832  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
13833 
13834  /* "(tree fragment)":17
13835  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state)
13836  * def __setstate_cython__(self, __pyx_state):
13837  * __pyx_unpickle_SteadyCurrent__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
13838  */
13839  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
13840  __pyx_t_1 = __pyx_f_9WaveTools___pyx_unpickle_SteadyCurrent__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
13841  __Pyx_GOTREF(__pyx_t_1);
13842  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13843 
13844  /* "(tree fragment)":16
13845  * else:
13846  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state)
13847  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
13848  * __pyx_unpickle_SteadyCurrent__set_state(self, __pyx_state)
13849  */
13850 
13851  /* function exit code */
13852  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13853  goto __pyx_L0;
13854  __pyx_L1_error:;
13855  __Pyx_XDECREF(__pyx_t_1);
13856  __Pyx_AddTraceback("WaveTools.SteadyCurrent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13857  __pyx_r = NULL;
13858  __pyx_L0:;
13859  __Pyx_XGIVEREF(__pyx_r);
13860  __Pyx_RefNannyFinishContext();
13861  return __pyx_r;
13862 }
13863 
13864 /* "WaveTools.py":798
13865  *
13866  * """
13867  * def __init__(self, # <<<<<<<<<<<<<<
13868  * waveHeight,
13869  * mwl,
13870  */
13871 
13872 /* Python wrapper */
13873 static int __pyx_pw_9WaveTools_12SolitaryWave_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13874 static int __pyx_pw_9WaveTools_12SolitaryWave_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13875  PyObject *__pyx_v_waveHeight = 0;
13876  PyObject *__pyx_v_mwl = 0;
13877  PyObject *__pyx_v_depth = 0;
13878  PyObject *__pyx_v_g = 0;
13879  PyObject *__pyx_v_waveDir = 0;
13880  PyObject *__pyx_v_trans = 0;
13881  PyObject *__pyx_v_fast = 0;
13882  int __pyx_lineno = 0;
13883  const char *__pyx_filename = NULL;
13884  int __pyx_clineno = 0;
13885  int __pyx_r;
13886  __Pyx_RefNannyDeclarations
13887  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
13888  {
13889  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_waveHeight,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_g,&__pyx_n_s_waveDir,&__pyx_n_s_trans,&__pyx_n_s_fast,0};
13890  PyObject* values[7] = {0,0,0,0,0,0,0};
13891  values[5] = __pyx_k__12;
13892 
13893  /* "WaveTools.py":805
13894  * waveDir,
13895  * trans = np.zeros(3,"d"),
13896  * fast = True): # <<<<<<<<<<<<<<
13897  *
13898  * self.H = waveHeight
13899  */
13900  values[6] = ((PyObject *)Py_True);
13901  if (unlikely(__pyx_kwds)) {
13902  Py_ssize_t kw_args;
13903  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13904  switch (pos_args) {
13905  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
13906  CYTHON_FALLTHROUGH;
13907  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
13908  CYTHON_FALLTHROUGH;
13909  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
13910  CYTHON_FALLTHROUGH;
13911  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
13912  CYTHON_FALLTHROUGH;
13913  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13914  CYTHON_FALLTHROUGH;
13915  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13916  CYTHON_FALLTHROUGH;
13917  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13918  CYTHON_FALLTHROUGH;
13919  case 0: break;
13920  default: goto __pyx_L5_argtuple_error;
13921  }
13922  kw_args = PyDict_Size(__pyx_kwds);
13923  switch (pos_args) {
13924  case 0:
13925  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveHeight)) != 0)) kw_args--;
13926  else goto __pyx_L5_argtuple_error;
13927  CYTHON_FALLTHROUGH;
13928  case 1:
13929  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
13930  else {
13931  __Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 1); __PYX_ERR(0, 798, __pyx_L3_error)
13932  }
13933  CYTHON_FALLTHROUGH;
13934  case 2:
13935  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
13936  else {
13937  __Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 2); __PYX_ERR(0, 798, __pyx_L3_error)
13938  }
13939  CYTHON_FALLTHROUGH;
13940  case 3:
13941  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
13942  else {
13943  __Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 3); __PYX_ERR(0, 798, __pyx_L3_error)
13944  }
13945  CYTHON_FALLTHROUGH;
13946  case 4:
13947  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
13948  else {
13949  __Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 4); __PYX_ERR(0, 798, __pyx_L3_error)
13950  }
13951  CYTHON_FALLTHROUGH;
13952  case 5:
13953  if (kw_args > 0) {
13954  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trans);
13955  if (value) { values[5] = value; kw_args--; }
13956  }
13957  CYTHON_FALLTHROUGH;
13958  case 6:
13959  if (kw_args > 0) {
13960  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
13961  if (value) { values[6] = value; kw_args--; }
13962  }
13963  }
13964  if (unlikely(kw_args > 0)) {
13965  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 798, __pyx_L3_error)
13966  }
13967  } else {
13968  switch (PyTuple_GET_SIZE(__pyx_args)) {
13969  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
13970  CYTHON_FALLTHROUGH;
13971  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
13972  CYTHON_FALLTHROUGH;
13973  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
13974  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
13975  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13976  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13977  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13978  break;
13979  default: goto __pyx_L5_argtuple_error;
13980  }
13981  }
13982  __pyx_v_waveHeight = values[0];
13983  __pyx_v_mwl = values[1];
13984  __pyx_v_depth = values[2];
13985  __pyx_v_g = values[3];
13986  __pyx_v_waveDir = values[4];
13987  __pyx_v_trans = values[5];
13988  __pyx_v_fast = values[6];
13989  }
13990  goto __pyx_L4_argument_unpacking_done;
13991  __pyx_L5_argtuple_error:;
13992  __Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 798, __pyx_L3_error)
13993  __pyx_L3_error:;
13994  __Pyx_AddTraceback("WaveTools.SolitaryWave.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13995  __Pyx_RefNannyFinishContext();
13996  return -1;
13997  __pyx_L4_argument_unpacking_done:;
13998  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave___init__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self), __pyx_v_waveHeight, __pyx_v_mwl, __pyx_v_depth, __pyx_v_g, __pyx_v_waveDir, __pyx_v_trans, __pyx_v_fast);
13999 
14000  /* "WaveTools.py":798
14001  *
14002  * """
14003  * def __init__(self, # <<<<<<<<<<<<<<
14004  * waveHeight,
14005  * mwl,
14006  */
14007 
14008  /* function exit code */
14009  __Pyx_RefNannyFinishContext();
14010  return __pyx_r;
14011 }
14012 
14013 static int __pyx_pf_9WaveTools_12SolitaryWave___init__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_trans, PyObject *__pyx_v_fast) {
14014  int __pyx_r;
14015  __Pyx_RefNannyDeclarations
14016  double __pyx_t_1;
14017  bool __pyx_t_2;
14018  PyObject *__pyx_t_3 = NULL;
14019  PyObject *__pyx_t_4 = NULL;
14020  PyObject *__pyx_t_5 = NULL;
14021  PyObject *__pyx_t_6 = NULL;
14022  PyObject *__pyx_t_7 = NULL;
14023  double __pyx_t_8;
14024  PyObject *__pyx_t_9 = NULL;
14025  int __pyx_t_10;
14026  int __pyx_lineno = 0;
14027  const char *__pyx_filename = NULL;
14028  int __pyx_clineno = 0;
14029  __Pyx_RefNannySetupContext("__init__", 0);
14030 
14031  /* "WaveTools.py":807
14032  * fast = True):
14033  *
14034  * self.H = waveHeight # <<<<<<<<<<<<<<
14035  * self.fast = fast
14036  * self.g = np.array(g)
14037  */
14038  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_waveHeight); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 807, __pyx_L1_error)
14039  __pyx_v_self->H = __pyx_t_1;
14040 
14041  /* "WaveTools.py":808
14042  *
14043  * self.H = waveHeight
14044  * self.fast = fast # <<<<<<<<<<<<<<
14045  * self.g = np.array(g)
14046  * self.waveDir = setDirVector(np.array(waveDir))
14047  */
14048  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 808, __pyx_L1_error)
14049  __pyx_v_self->fast = __pyx_t_2;
14050 
14051  /* "WaveTools.py":809
14052  * self.H = waveHeight
14053  * self.fast = fast
14054  * self.g = np.array(g) # <<<<<<<<<<<<<<
14055  * self.waveDir = setDirVector(np.array(waveDir))
14056  * self.vDir = setVertDir(g)
14057  */
14058  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 809, __pyx_L1_error)
14059  __Pyx_GOTREF(__pyx_t_4);
14060  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 809, __pyx_L1_error)
14061  __Pyx_GOTREF(__pyx_t_5);
14062  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14063  __pyx_t_4 = NULL;
14064  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
14065  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
14066  if (likely(__pyx_t_4)) {
14067  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14068  __Pyx_INCREF(__pyx_t_4);
14069  __Pyx_INCREF(function);
14070  __Pyx_DECREF_SET(__pyx_t_5, function);
14071  }
14072  }
14073  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g);
14074  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
14075  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 809, __pyx_L1_error)
14076  __Pyx_GOTREF(__pyx_t_3);
14077  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14078  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 809, __pyx_L1_error)
14079  __Pyx_GIVEREF(__pyx_t_3);
14080  __Pyx_GOTREF(__pyx_v_self->g);
14081  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
14082  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_3);
14083  __pyx_t_3 = 0;
14084 
14085  /* "WaveTools.py":810
14086  * self.fast = fast
14087  * self.g = np.array(g)
14088  * self.waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
14089  * self.vDir = setVertDir(g)
14090  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
14091  */
14092  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 810, __pyx_L1_error)
14093  __Pyx_GOTREF(__pyx_t_5);
14094  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 810, __pyx_L1_error)
14095  __Pyx_GOTREF(__pyx_t_6);
14096  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error)
14097  __Pyx_GOTREF(__pyx_t_7);
14098  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14099  __pyx_t_6 = NULL;
14100  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
14101  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
14102  if (likely(__pyx_t_6)) {
14103  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
14104  __Pyx_INCREF(__pyx_t_6);
14105  __Pyx_INCREF(function);
14106  __Pyx_DECREF_SET(__pyx_t_7, function);
14107  }
14108  }
14109  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_waveDir) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_waveDir);
14110  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
14111  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 810, __pyx_L1_error)
14112  __Pyx_GOTREF(__pyx_t_4);
14113  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14114  __pyx_t_7 = NULL;
14115  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
14116  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
14117  if (likely(__pyx_t_7)) {
14118  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14119  __Pyx_INCREF(__pyx_t_7);
14120  __Pyx_INCREF(function);
14121  __Pyx_DECREF_SET(__pyx_t_5, function);
14122  }
14123  }
14124  __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4);
14125  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
14126  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14127  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error)
14128  __Pyx_GOTREF(__pyx_t_3);
14129  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14130  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 810, __pyx_L1_error)
14131  __Pyx_GIVEREF(__pyx_t_3);
14132  __Pyx_GOTREF(__pyx_v_self->waveDir);
14133  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
14134  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_3);
14135  __pyx_t_3 = 0;
14136 
14137  /* "WaveTools.py":811
14138  * self.g = np.array(g)
14139  * self.waveDir = setDirVector(np.array(waveDir))
14140  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
14141  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
14142  * self.trans = trans
14143  */
14144  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 811, __pyx_L1_error)
14145  __Pyx_GOTREF(__pyx_t_5);
14146  __pyx_t_4 = NULL;
14147  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
14148  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
14149  if (likely(__pyx_t_4)) {
14150  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14151  __Pyx_INCREF(__pyx_t_4);
14152  __Pyx_INCREF(function);
14153  __Pyx_DECREF_SET(__pyx_t_5, function);
14154  }
14155  }
14156  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g);
14157  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
14158  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 811, __pyx_L1_error)
14159  __Pyx_GOTREF(__pyx_t_3);
14160  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14161  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 811, __pyx_L1_error)
14162  __Pyx_GIVEREF(__pyx_t_3);
14163  __Pyx_GOTREF(__pyx_v_self->vDir);
14164  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
14165  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_3);
14166  __pyx_t_3 = 0;
14167 
14168  /* "WaveTools.py":812
14169  * self.waveDir = setDirVector(np.array(waveDir))
14170  * self.vDir = setVertDir(g)
14171  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
14172  * self.trans = trans
14173  * self.c = np.sqrt(self.gAbs * (depth+self.H))
14174  */
14175  __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 812, __pyx_L1_error)
14176  __Pyx_GOTREF(__pyx_t_3);
14177  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 812, __pyx_L1_error)
14178  __Pyx_GOTREF(__pyx_t_5);
14179  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 812, __pyx_L1_error)
14180  __Pyx_GOTREF(__pyx_t_4);
14181  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14182  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14183  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 812, __pyx_L1_error)
14184  __Pyx_GOTREF(__pyx_t_5);
14185  __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 812, __pyx_L1_error)
14186  __Pyx_GOTREF(__pyx_t_3);
14187  __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 812, __pyx_L1_error)
14188  __Pyx_GOTREF(__pyx_t_7);
14189  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14190  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14191  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 812, __pyx_L1_error)
14192  __Pyx_GOTREF(__pyx_t_3);
14193  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14194  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14195  __pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 812, __pyx_L1_error)
14196  __Pyx_GOTREF(__pyx_t_7);
14197  __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 812, __pyx_L1_error)
14198  __Pyx_GOTREF(__pyx_t_4);
14199  __pyx_t_5 = PyNumber_Multiply(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 812, __pyx_L1_error)
14200  __Pyx_GOTREF(__pyx_t_5);
14201  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14202  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14203  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 812, __pyx_L1_error)
14204  __Pyx_GOTREF(__pyx_t_4);
14205  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14206  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14207  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 812, __pyx_L1_error)
14208  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14209  __pyx_v_self->gAbs = sqrt(__pyx_t_1);
14210 
14211  /* "WaveTools.py":813
14212  * self.vDir = setVertDir(g)
14213  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
14214  * self.trans = trans # <<<<<<<<<<<<<<
14215  * self.c = np.sqrt(self.gAbs * (depth+self.H))
14216  * self.mwl = mwl
14217  */
14218  if (!(likely(((__pyx_v_trans) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_trans, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 813, __pyx_L1_error)
14219  __pyx_t_4 = __pyx_v_trans;
14220  __Pyx_INCREF(__pyx_t_4);
14221  __Pyx_GIVEREF(__pyx_t_4);
14222  __Pyx_GOTREF(__pyx_v_self->trans);
14223  __Pyx_DECREF(((PyObject *)__pyx_v_self->trans));
14224  __pyx_v_self->trans = ((PyArrayObject *)__pyx_t_4);
14225  __pyx_t_4 = 0;
14226 
14227  /* "WaveTools.py":814
14228  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
14229  * self.trans = trans
14230  * self.c = np.sqrt(self.gAbs * (depth+self.H)) # <<<<<<<<<<<<<<
14231  * self.mwl = mwl
14232  * self.depth = depth
14233  */
14234  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 814, __pyx_L1_error)
14235  __Pyx_GOTREF(__pyx_t_5);
14236  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 814, __pyx_L1_error)
14237  __Pyx_GOTREF(__pyx_t_3);
14238  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14239  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 814, __pyx_L1_error)
14240  __Pyx_GOTREF(__pyx_t_5);
14241  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->H); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 814, __pyx_L1_error)
14242  __Pyx_GOTREF(__pyx_t_7);
14243  __pyx_t_6 = PyNumber_Add(__pyx_v_depth, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 814, __pyx_L1_error)
14244  __Pyx_GOTREF(__pyx_t_6);
14245  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14246  __pyx_t_7 = PyNumber_Multiply(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 814, __pyx_L1_error)
14247  __Pyx_GOTREF(__pyx_t_7);
14248  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14249  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14250  __pyx_t_6 = NULL;
14251  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
14252  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
14253  if (likely(__pyx_t_6)) {
14254  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14255  __Pyx_INCREF(__pyx_t_6);
14256  __Pyx_INCREF(function);
14257  __Pyx_DECREF_SET(__pyx_t_3, function);
14258  }
14259  }
14260  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7);
14261  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
14262  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14263  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 814, __pyx_L1_error)
14264  __Pyx_GOTREF(__pyx_t_4);
14265  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14266  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 814, __pyx_L1_error)
14267  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14268  __pyx_v_self->c = __pyx_t_1;
14269 
14270  /* "WaveTools.py":815
14271  * self.trans = trans
14272  * self.c = np.sqrt(self.gAbs * (depth+self.H))
14273  * self.mwl = mwl # <<<<<<<<<<<<<<
14274  * self.depth = depth
14275  * self.K = old_div(np.sqrt(3. *self.H/ (4. * self.depth)),self.depth)
14276  */
14277  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 815, __pyx_L1_error)
14278  __pyx_v_self->mwl = __pyx_t_1;
14279 
14280  /* "WaveTools.py":816
14281  * self.c = np.sqrt(self.gAbs * (depth+self.H))
14282  * self.mwl = mwl
14283  * self.depth = depth # <<<<<<<<<<<<<<
14284  * self.K = old_div(np.sqrt(3. *self.H/ (4. * self.depth)),self.depth)
14285  * self.d2 = depth*depth
14286  */
14287  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 816, __pyx_L1_error)
14288  __pyx_v_self->depth = __pyx_t_1;
14289 
14290  /* "WaveTools.py":817
14291  * self.mwl = mwl
14292  * self.depth = depth
14293  * self.K = old_div(np.sqrt(3. *self.H/ (4. * self.depth)),self.depth) # <<<<<<<<<<<<<<
14294  * self.d2 = depth*depth
14295  * self.d3 = self.d2 * depth
14296  */
14297  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L1_error)
14298  __Pyx_GOTREF(__pyx_t_3);
14299  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 817, __pyx_L1_error)
14300  __Pyx_GOTREF(__pyx_t_6);
14301  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 817, __pyx_L1_error)
14302  __Pyx_GOTREF(__pyx_t_5);
14303  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14304  __pyx_t_1 = (3. * __pyx_v_self->H);
14305  __pyx_t_8 = (4. * __pyx_v_self->depth);
14306  if (unlikely(__pyx_t_8 == 0)) {
14307  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
14308  __PYX_ERR(0, 817, __pyx_L1_error)
14309  }
14310  __pyx_t_6 = PyFloat_FromDouble((__pyx_t_1 / __pyx_t_8)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 817, __pyx_L1_error)
14311  __Pyx_GOTREF(__pyx_t_6);
14312  __pyx_t_9 = NULL;
14313  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
14314  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
14315  if (likely(__pyx_t_9)) {
14316  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14317  __Pyx_INCREF(__pyx_t_9);
14318  __Pyx_INCREF(function);
14319  __Pyx_DECREF_SET(__pyx_t_5, function);
14320  }
14321  }
14322  __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
14323  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
14324  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14325  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 817, __pyx_L1_error)
14326  __Pyx_GOTREF(__pyx_t_7);
14327  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14328  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 817, __pyx_L1_error)
14329  __Pyx_GOTREF(__pyx_t_5);
14330  __pyx_t_6 = NULL;
14331  __pyx_t_10 = 0;
14332  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
14333  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
14334  if (likely(__pyx_t_6)) {
14335  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14336  __Pyx_INCREF(__pyx_t_6);
14337  __Pyx_INCREF(function);
14338  __Pyx_DECREF_SET(__pyx_t_3, function);
14339  __pyx_t_10 = 1;
14340  }
14341  }
14342  #if CYTHON_FAST_PYCALL
14343  if (PyFunction_Check(__pyx_t_3)) {
14344  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_5};
14345  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 817, __pyx_L1_error)
14346  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
14347  __Pyx_GOTREF(__pyx_t_4);
14348  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14349  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14350  } else
14351  #endif
14352  #if CYTHON_FAST_PYCCALL
14353  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
14354  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_5};
14355  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 817, __pyx_L1_error)
14356  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
14357  __Pyx_GOTREF(__pyx_t_4);
14358  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14359  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14360  } else
14361  #endif
14362  {
14363  __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 817, __pyx_L1_error)
14364  __Pyx_GOTREF(__pyx_t_9);
14365  if (__pyx_t_6) {
14366  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
14367  }
14368  __Pyx_GIVEREF(__pyx_t_7);
14369  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_7);
14370  __Pyx_GIVEREF(__pyx_t_5);
14371  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
14372  __pyx_t_7 = 0;
14373  __pyx_t_5 = 0;
14374  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 817, __pyx_L1_error)
14375  __Pyx_GOTREF(__pyx_t_4);
14376  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
14377  }
14378  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14379  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 817, __pyx_L1_error)
14380  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14381  __pyx_v_self->K = __pyx_t_8;
14382 
14383  /* "WaveTools.py":818
14384  * self.depth = depth
14385  * self.K = old_div(np.sqrt(3. *self.H/ (4. * self.depth)),self.depth)
14386  * self.d2 = depth*depth # <<<<<<<<<<<<<<
14387  * self.d3 = self.d2 * depth
14388  * #Checking if g and waveDir are perpendicular
14389  */
14390  __pyx_t_4 = PyNumber_Multiply(__pyx_v_depth, __pyx_v_depth); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 818, __pyx_L1_error)
14391  __Pyx_GOTREF(__pyx_t_4);
14392  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 818, __pyx_L1_error)
14393  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14394  __pyx_v_self->d2 = __pyx_t_8;
14395 
14396  /* "WaveTools.py":819
14397  * self.K = old_div(np.sqrt(3. *self.H/ (4. * self.depth)),self.depth)
14398  * self.d2 = depth*depth
14399  * self.d3 = self.d2 * depth # <<<<<<<<<<<<<<
14400  * #Checking if g and waveDir are perpendicular
14401  * dirCheck(self.waveDir,self.vDir)
14402  */
14403  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->d2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 819, __pyx_L1_error)
14404  __Pyx_GOTREF(__pyx_t_4);
14405  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_v_depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 819, __pyx_L1_error)
14406  __Pyx_GOTREF(__pyx_t_3);
14407  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14408  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 819, __pyx_L1_error)
14409  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14410  __pyx_v_self->d3 = __pyx_t_8;
14411 
14412  /* "WaveTools.py":821
14413  * self.d3 = self.d2 * depth
14414  * #Checking if g and waveDir are perpendicular
14415  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
14416  *
14417  * def eta(self,x,t):
14418  */
14419  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_dirCheck); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 821, __pyx_L1_error)
14420  __Pyx_GOTREF(__pyx_t_4);
14421  __pyx_t_9 = NULL;
14422  __pyx_t_10 = 0;
14423  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
14424  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
14425  if (likely(__pyx_t_9)) {
14426  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
14427  __Pyx_INCREF(__pyx_t_9);
14428  __Pyx_INCREF(function);
14429  __Pyx_DECREF_SET(__pyx_t_4, function);
14430  __pyx_t_10 = 1;
14431  }
14432  }
14433  #if CYTHON_FAST_PYCALL
14434  if (PyFunction_Check(__pyx_t_4)) {
14435  PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
14436  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 821, __pyx_L1_error)
14437  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
14438  __Pyx_GOTREF(__pyx_t_3);
14439  } else
14440  #endif
14441  #if CYTHON_FAST_PYCCALL
14442  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
14443  PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
14444  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 821, __pyx_L1_error)
14445  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
14446  __Pyx_GOTREF(__pyx_t_3);
14447  } else
14448  #endif
14449  {
14450  __pyx_t_5 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 821, __pyx_L1_error)
14451  __Pyx_GOTREF(__pyx_t_5);
14452  if (__pyx_t_9) {
14453  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __pyx_t_9 = NULL;
14454  }
14455  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
14456  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->waveDir));
14457  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_10, ((PyObject *)__pyx_v_self->waveDir));
14458  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
14459  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->vDir));
14460  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_10, ((PyObject *)__pyx_v_self->vDir));
14461  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 821, __pyx_L1_error)
14462  __Pyx_GOTREF(__pyx_t_3);
14463  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14464  }
14465  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14466  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14467 
14468  /* "WaveTools.py":798
14469  *
14470  * """
14471  * def __init__(self, # <<<<<<<<<<<<<<
14472  * waveHeight,
14473  * mwl,
14474  */
14475 
14476  /* function exit code */
14477  __pyx_r = 0;
14478  goto __pyx_L0;
14479  __pyx_L1_error:;
14480  __Pyx_XDECREF(__pyx_t_3);
14481  __Pyx_XDECREF(__pyx_t_4);
14482  __Pyx_XDECREF(__pyx_t_5);
14483  __Pyx_XDECREF(__pyx_t_6);
14484  __Pyx_XDECREF(__pyx_t_7);
14485  __Pyx_XDECREF(__pyx_t_9);
14486  __Pyx_AddTraceback("WaveTools.SolitaryWave.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14487  __pyx_r = -1;
14488  __pyx_L0:;
14489  __Pyx_RefNannyFinishContext();
14490  return __pyx_r;
14491 }
14492 
14493 /* "WaveTools.py":823
14494  * dirCheck(self.waveDir,self.vDir)
14495  *
14496  * def eta(self,x,t): # <<<<<<<<<<<<<<
14497  * """Calculates free surface elevation (SolitaryWave class)
14498  * Parameters
14499  */
14500 
14501 /* Python wrapper */
14502 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14503 static char __pyx_doc_9WaveTools_12SolitaryWave_2eta[] = "Calculates free surface elevation (SolitaryWave class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
14504 static PyMethodDef __pyx_mdef_9WaveTools_12SolitaryWave_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12SolitaryWave_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12SolitaryWave_2eta};
14505 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
14506  PyObject *__pyx_v_x = 0;
14507  PyObject *__pyx_v_t = 0;
14508  int __pyx_lineno = 0;
14509  const char *__pyx_filename = NULL;
14510  int __pyx_clineno = 0;
14511  PyObject *__pyx_r = 0;
14512  __Pyx_RefNannyDeclarations
14513  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
14514  {
14515  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
14516  PyObject* values[2] = {0,0};
14517  if (unlikely(__pyx_kwds)) {
14518  Py_ssize_t kw_args;
14519  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14520  switch (pos_args) {
14521  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14522  CYTHON_FALLTHROUGH;
14523  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14524  CYTHON_FALLTHROUGH;
14525  case 0: break;
14526  default: goto __pyx_L5_argtuple_error;
14527  }
14528  kw_args = PyDict_Size(__pyx_kwds);
14529  switch (pos_args) {
14530  case 0:
14531  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
14532  else goto __pyx_L5_argtuple_error;
14533  CYTHON_FALLTHROUGH;
14534  case 1:
14535  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
14536  else {
14537  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 823, __pyx_L3_error)
14538  }
14539  }
14540  if (unlikely(kw_args > 0)) {
14541  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 823, __pyx_L3_error)
14542  }
14543  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
14544  goto __pyx_L5_argtuple_error;
14545  } else {
14546  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14547  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14548  }
14549  __pyx_v_x = values[0];
14550  __pyx_v_t = values[1];
14551  }
14552  goto __pyx_L4_argument_unpacking_done;
14553  __pyx_L5_argtuple_error:;
14554  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 823, __pyx_L3_error)
14555  __pyx_L3_error:;
14556  __Pyx_AddTraceback("WaveTools.SolitaryWave.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
14557  __Pyx_RefNannyFinishContext();
14558  return NULL;
14559  __pyx_L4_argument_unpacking_done:;
14560  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_2eta(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
14561 
14562  /* function exit code */
14563  __Pyx_RefNannyFinishContext();
14564  return __pyx_r;
14565 }
14566 
14567 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_2eta(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
14568  PyObject *__pyx_v_phase = NULL;
14569  PyObject *__pyx_v_a1 = NULL;
14570  PyObject *__pyx_r = NULL;
14571  __Pyx_RefNannyDeclarations
14572  PyObject *__pyx_t_1 = NULL;
14573  PyObject *__pyx_t_2 = NULL;
14574  PyObject *__pyx_t_3 = NULL;
14575  double __pyx_t_4;
14576  double __pyx_t_5;
14577  double __pyx_t_6;
14578  int __pyx_lineno = 0;
14579  const char *__pyx_filename = NULL;
14580  int __pyx_clineno = 0;
14581  __Pyx_RefNannySetupContext("eta", 0);
14582 
14583  /* "WaveTools.py":838
14584  *
14585  * """
14586  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t # <<<<<<<<<<<<<<
14587  * a1 = self.K*phase
14588  * return self.H*1.0/ cosh(a1)**2
14589  */
14590  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
14591  __Pyx_GOTREF(__pyx_t_1);
14592  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->trans), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 838, __pyx_L1_error)
14593  __Pyx_GOTREF(__pyx_t_2);
14594  __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 838, __pyx_L1_error)
14595  __Pyx_GOTREF(__pyx_t_3);
14596  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14597  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14598  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 838, __pyx_L1_error)
14599  __Pyx_GOTREF(__pyx_t_2);
14600  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
14601  __Pyx_GOTREF(__pyx_t_1);
14602  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14603  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14604  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 838, __pyx_L1_error)
14605  __Pyx_GOTREF(__pyx_t_2);
14606  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14607  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->c); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
14608  __Pyx_GOTREF(__pyx_t_1);
14609  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 838, __pyx_L1_error)
14610  __Pyx_GOTREF(__pyx_t_3);
14611  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14612  __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
14613  __Pyx_GOTREF(__pyx_t_1);
14614  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14615  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14616  __pyx_v_phase = __pyx_t_1;
14617  __pyx_t_1 = 0;
14618 
14619  /* "WaveTools.py":839
14620  * """
14621  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
14622  * a1 = self.K*phase # <<<<<<<<<<<<<<
14623  * return self.H*1.0/ cosh(a1)**2
14624  * def u(self,x,t):
14625  */
14626  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->K); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 839, __pyx_L1_error)
14627  __Pyx_GOTREF(__pyx_t_1);
14628  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 839, __pyx_L1_error)
14629  __Pyx_GOTREF(__pyx_t_3);
14630  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14631  __pyx_v_a1 = __pyx_t_3;
14632  __pyx_t_3 = 0;
14633 
14634  /* "WaveTools.py":840
14635  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
14636  * a1 = self.K*phase
14637  * return self.H*1.0/ cosh(a1)**2 # <<<<<<<<<<<<<<
14638  * def u(self,x,t):
14639  * """Calculates wave velocity vector (SolitaryWave class).
14640  */
14641  __Pyx_XDECREF(__pyx_r);
14642  __pyx_t_4 = (__pyx_v_self->H * 1.0);
14643  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_a1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 840, __pyx_L1_error)
14644  __pyx_t_6 = pow(cosh(__pyx_t_5), 2.0);
14645  if (unlikely(__pyx_t_6 == 0)) {
14646  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
14647  __PYX_ERR(0, 840, __pyx_L1_error)
14648  }
14649  __pyx_t_3 = PyFloat_FromDouble((__pyx_t_4 / __pyx_t_6)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 840, __pyx_L1_error)
14650  __Pyx_GOTREF(__pyx_t_3);
14651  __pyx_r = __pyx_t_3;
14652  __pyx_t_3 = 0;
14653  goto __pyx_L0;
14654 
14655  /* "WaveTools.py":823
14656  * dirCheck(self.waveDir,self.vDir)
14657  *
14658  * def eta(self,x,t): # <<<<<<<<<<<<<<
14659  * """Calculates free surface elevation (SolitaryWave class)
14660  * Parameters
14661  */
14662 
14663  /* function exit code */
14664  __pyx_L1_error:;
14665  __Pyx_XDECREF(__pyx_t_1);
14666  __Pyx_XDECREF(__pyx_t_2);
14667  __Pyx_XDECREF(__pyx_t_3);
14668  __Pyx_AddTraceback("WaveTools.SolitaryWave.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
14669  __pyx_r = NULL;
14670  __pyx_L0:;
14671  __Pyx_XDECREF(__pyx_v_phase);
14672  __Pyx_XDECREF(__pyx_v_a1);
14673  __Pyx_XGIVEREF(__pyx_r);
14674  __Pyx_RefNannyFinishContext();
14675  return __pyx_r;
14676 }
14677 
14678 /* "WaveTools.py":841
14679  * a1 = self.K*phase
14680  * return self.H*1.0/ cosh(a1)**2
14681  * def u(self,x,t): # <<<<<<<<<<<<<<
14682  * """Calculates wave velocity vector (SolitaryWave class).
14683  * Parameters
14684  */
14685 
14686 /* Python wrapper */
14687 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
14688 static char __pyx_doc_9WaveTools_12SolitaryWave_4u[] = "Calculates wave velocity vector (SolitaryWave class).\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
14689 static PyMethodDef __pyx_mdef_9WaveTools_12SolitaryWave_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12SolitaryWave_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12SolitaryWave_4u};
14690 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
14691  PyObject *__pyx_v_x = 0;
14692  PyObject *__pyx_v_t = 0;
14693  int __pyx_lineno = 0;
14694  const char *__pyx_filename = NULL;
14695  int __pyx_clineno = 0;
14696  PyObject *__pyx_r = 0;
14697  __Pyx_RefNannyDeclarations
14698  __Pyx_RefNannySetupContext("u (wrapper)", 0);
14699  {
14700  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
14701  PyObject* values[2] = {0,0};
14702  if (unlikely(__pyx_kwds)) {
14703  Py_ssize_t kw_args;
14704  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14705  switch (pos_args) {
14706  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14707  CYTHON_FALLTHROUGH;
14708  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14709  CYTHON_FALLTHROUGH;
14710  case 0: break;
14711  default: goto __pyx_L5_argtuple_error;
14712  }
14713  kw_args = PyDict_Size(__pyx_kwds);
14714  switch (pos_args) {
14715  case 0:
14716  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
14717  else goto __pyx_L5_argtuple_error;
14718  CYTHON_FALLTHROUGH;
14719  case 1:
14720  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
14721  else {
14722  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 841, __pyx_L3_error)
14723  }
14724  }
14725  if (unlikely(kw_args > 0)) {
14726  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 841, __pyx_L3_error)
14727  }
14728  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
14729  goto __pyx_L5_argtuple_error;
14730  } else {
14731  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14732  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14733  }
14734  __pyx_v_x = values[0];
14735  __pyx_v_t = values[1];
14736  }
14737  goto __pyx_L4_argument_unpacking_done;
14738  __pyx_L5_argtuple_error:;
14739  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 841, __pyx_L3_error)
14740  __pyx_L3_error:;
14741  __Pyx_AddTraceback("WaveTools.SolitaryWave.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
14742  __Pyx_RefNannyFinishContext();
14743  return NULL;
14744  __pyx_L4_argument_unpacking_done:;
14745  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_4u(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
14746 
14747  /* function exit code */
14748  __Pyx_RefNannyFinishContext();
14749  return __pyx_r;
14750 }
14751 
14752 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_4u(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
14753  PyObject *__pyx_v_phase = NULL;
14754  double __pyx_v_a1;
14755  double __pyx_v_a2;
14756  PyObject *__pyx_v_Z = NULL;
14757  PyObject *__pyx_v_Uhorz = NULL;
14758  PyObject *__pyx_v_Uvert = NULL;
14759  PyObject *__pyx_r = NULL;
14760  __Pyx_RefNannyDeclarations
14761  PyObject *__pyx_t_1 = NULL;
14762  PyObject *__pyx_t_2 = NULL;
14763  PyObject *__pyx_t_3 = NULL;
14764  double __pyx_t_4;
14765  PyObject *__pyx_t_5 = NULL;
14766  PyObject *__pyx_t_6 = NULL;
14767  PyObject *__pyx_t_7 = NULL;
14768  int __pyx_t_8;
14769  PyObject *__pyx_t_9 = NULL;
14770  double __pyx_t_10;
14771  int __pyx_lineno = 0;
14772  const char *__pyx_filename = NULL;
14773  int __pyx_clineno = 0;
14774  __Pyx_RefNannySetupContext("u", 0);
14775 
14776  /* "WaveTools.py":856
14777  *
14778  * """
14779  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t # <<<<<<<<<<<<<<
14780  * a1 = cosh(self.K*phase*2.)
14781  * a2 = cosh(self.K*phase)
14782  */
14783  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
14784  __Pyx_GOTREF(__pyx_t_1);
14785  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->trans), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 856, __pyx_L1_error)
14786  __Pyx_GOTREF(__pyx_t_2);
14787  __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 856, __pyx_L1_error)
14788  __Pyx_GOTREF(__pyx_t_3);
14789  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14790  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14791  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 856, __pyx_L1_error)
14792  __Pyx_GOTREF(__pyx_t_2);
14793  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
14794  __Pyx_GOTREF(__pyx_t_1);
14795  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14796  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14797  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 856, __pyx_L1_error)
14798  __Pyx_GOTREF(__pyx_t_2);
14799  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14800  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->c); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
14801  __Pyx_GOTREF(__pyx_t_1);
14802  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 856, __pyx_L1_error)
14803  __Pyx_GOTREF(__pyx_t_3);
14804  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14805  __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
14806  __Pyx_GOTREF(__pyx_t_1);
14807  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14808  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14809  __pyx_v_phase = __pyx_t_1;
14810  __pyx_t_1 = 0;
14811 
14812  /* "WaveTools.py":857
14813  * """
14814  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
14815  * a1 = cosh(self.K*phase*2.) # <<<<<<<<<<<<<<
14816  * a2 = cosh(self.K*phase)
14817  *
14818  */
14819  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->K); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
14820  __Pyx_GOTREF(__pyx_t_1);
14821  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 857, __pyx_L1_error)
14822  __Pyx_GOTREF(__pyx_t_3);
14823  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14824  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_float_2_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
14825  __Pyx_GOTREF(__pyx_t_1);
14826  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14827  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 857, __pyx_L1_error)
14828  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14829  __pyx_v_a1 = cosh(__pyx_t_4);
14830 
14831  /* "WaveTools.py":858
14832  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
14833  * a1 = cosh(self.K*phase*2.)
14834  * a2 = cosh(self.K*phase) # <<<<<<<<<<<<<<
14835  *
14836  * Z = (self.vDir[0]*x[0] + self.vDir[1]*x[1]+ self.vDir[2]*x[2]) - self.mwl
14837  */
14838  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->K); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error)
14839  __Pyx_GOTREF(__pyx_t_1);
14840  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L1_error)
14841  __Pyx_GOTREF(__pyx_t_3);
14842  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14843  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 858, __pyx_L1_error)
14844  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14845  __pyx_v_a2 = cosh(__pyx_t_4);
14846 
14847  /* "WaveTools.py":860
14848  * a2 = cosh(self.K*phase)
14849  *
14850  * Z = (self.vDir[0]*x[0] + self.vDir[1]*x[1]+ self.vDir[2]*x[2]) - self.mwl # <<<<<<<<<<<<<<
14851  *
14852  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *(
14853  */
14854  __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->vDir), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error)
14855  __Pyx_GOTREF(__pyx_t_3);
14856  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error)
14857  __Pyx_GOTREF(__pyx_t_1);
14858  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error)
14859  __Pyx_GOTREF(__pyx_t_2);
14860  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14861  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14862  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->vDir), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error)
14863  __Pyx_GOTREF(__pyx_t_1);
14864  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error)
14865  __Pyx_GOTREF(__pyx_t_3);
14866  __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 860, __pyx_L1_error)
14867  __Pyx_GOTREF(__pyx_t_5);
14868  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14869  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14870  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error)
14871  __Pyx_GOTREF(__pyx_t_3);
14872  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14873  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14874  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->vDir), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 860, __pyx_L1_error)
14875  __Pyx_GOTREF(__pyx_t_5);
14876  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error)
14877  __Pyx_GOTREF(__pyx_t_2);
14878  __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error)
14879  __Pyx_GOTREF(__pyx_t_1);
14880  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14881  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14882  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error)
14883  __Pyx_GOTREF(__pyx_t_2);
14884  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14885  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14886  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error)
14887  __Pyx_GOTREF(__pyx_t_1);
14888  __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error)
14889  __Pyx_GOTREF(__pyx_t_3);
14890  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14891  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14892  __pyx_v_Z = __pyx_t_3;
14893  __pyx_t_3 = 0;
14894 
14895  /* "WaveTools.py":862
14896  * Z = (self.vDir[0]*x[0] + self.vDir[1]*x[1]+ self.vDir[2]*x[2]) - self.mwl
14897  *
14898  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *( # <<<<<<<<<<<<<<
14899  * 2.0 * self.d3 + self.d2 * self.H + 12.0 * self.depth * self.H * Z + 6.0 * self.H * Z**2.0 +
14900  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4
14901  */
14902  __pyx_t_4 = (4.0 * pow(__pyx_v_self->depth, 4.0));
14903  if (unlikely(__pyx_t_4 == 0)) {
14904  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
14905  __PYX_ERR(0, 862, __pyx_L1_error)
14906  }
14907  __pyx_t_3 = PyFloat_FromDouble((1.0 / __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error)
14908  __Pyx_GOTREF(__pyx_t_3);
14909  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
14910  __Pyx_GOTREF(__pyx_t_2);
14911  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 862, __pyx_L1_error)
14912  __Pyx_GOTREF(__pyx_t_5);
14913  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14914  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->gAbs * __pyx_v_self->depth)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
14915  __Pyx_GOTREF(__pyx_t_2);
14916  __pyx_t_6 = NULL;
14917  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
14918  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
14919  if (likely(__pyx_t_6)) {
14920  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14921  __Pyx_INCREF(__pyx_t_6);
14922  __Pyx_INCREF(function);
14923  __Pyx_DECREF_SET(__pyx_t_5, function);
14924  }
14925  }
14926  __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2);
14927  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
14928  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14929  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
14930  __Pyx_GOTREF(__pyx_t_1);
14931  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14932  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 862, __pyx_L1_error)
14933  __Pyx_GOTREF(__pyx_t_5);
14934  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14935  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14936  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->H); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
14937  __Pyx_GOTREF(__pyx_t_1);
14938  __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error)
14939  __Pyx_GOTREF(__pyx_t_3);
14940  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14941  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14942 
14943  /* "WaveTools.py":863
14944  *
14945  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *(
14946  * 2.0 * self.d3 + self.d2 * self.H + 12.0 * self.depth * self.H * Z + 6.0 * self.H * Z**2.0 + # <<<<<<<<<<<<<<
14947  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4
14948  *
14949  */
14950  __pyx_t_1 = PyFloat_FromDouble(((2.0 * __pyx_v_self->d3) + (__pyx_v_self->d2 * __pyx_v_self->H))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
14951  __Pyx_GOTREF(__pyx_t_1);
14952  __pyx_t_5 = PyFloat_FromDouble(((12.0 * __pyx_v_self->depth) * __pyx_v_self->H)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 863, __pyx_L1_error)
14953  __Pyx_GOTREF(__pyx_t_5);
14954  __pyx_t_2 = PyNumber_Multiply(__pyx_t_5, __pyx_v_Z); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
14955  __Pyx_GOTREF(__pyx_t_2);
14956  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14957  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 863, __pyx_L1_error)
14958  __Pyx_GOTREF(__pyx_t_5);
14959  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14960  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14961  __pyx_t_2 = PyFloat_FromDouble((6.0 * __pyx_v_self->H)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
14962  __Pyx_GOTREF(__pyx_t_2);
14963  __pyx_t_1 = PyNumber_Power(__pyx_v_Z, __pyx_float_2_0, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
14964  __Pyx_GOTREF(__pyx_t_1);
14965  __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 863, __pyx_L1_error)
14966  __Pyx_GOTREF(__pyx_t_6);
14967  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14968  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14969  __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
14970  __Pyx_GOTREF(__pyx_t_1);
14971  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14972  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14973 
14974  /* "WaveTools.py":864
14975  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *(
14976  * 2.0 * self.d3 + self.d2 * self.H + 12.0 * self.depth * self.H * Z + 6.0 * self.H * Z**2.0 +
14977  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4 # <<<<<<<<<<<<<<
14978  *
14979  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*(
14980  */
14981  __pyx_t_6 = PyFloat_FromDouble(((2.0 * __pyx_v_self->d3) - (__pyx_v_self->d2 * __pyx_v_self->H))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 864, __pyx_L1_error)
14982  __Pyx_GOTREF(__pyx_t_6);
14983  __pyx_t_5 = PyFloat_FromDouble(((6.0 * __pyx_v_self->depth) * __pyx_v_self->H)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 864, __pyx_L1_error)
14984  __Pyx_GOTREF(__pyx_t_5);
14985  __pyx_t_2 = PyNumber_Multiply(__pyx_t_5, __pyx_v_Z); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 864, __pyx_L1_error)
14986  __Pyx_GOTREF(__pyx_t_2);
14987  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14988  __pyx_t_5 = PyNumber_Subtract(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 864, __pyx_L1_error)
14989  __Pyx_GOTREF(__pyx_t_5);
14990  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14991  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14992  __pyx_t_2 = PyFloat_FromDouble((3.0 * __pyx_v_self->H)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 864, __pyx_L1_error)
14993  __Pyx_GOTREF(__pyx_t_2);
14994  __pyx_t_6 = PyNumber_Power(__pyx_v_Z, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 864, __pyx_L1_error)
14995  __Pyx_GOTREF(__pyx_t_6);
14996  __pyx_t_7 = PyNumber_Multiply(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 864, __pyx_L1_error)
14997  __Pyx_GOTREF(__pyx_t_7);
14998  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14999  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15000  __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 864, __pyx_L1_error)
15001  __Pyx_GOTREF(__pyx_t_6);
15002  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15003  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15004  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_a1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 864, __pyx_L1_error)
15005  __Pyx_GOTREF(__pyx_t_7);
15006  __pyx_t_5 = PyNumber_Multiply(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 864, __pyx_L1_error)
15007  __Pyx_GOTREF(__pyx_t_5);
15008  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15009  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15010 
15011  /* "WaveTools.py":863
15012  *
15013  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *(
15014  * 2.0 * self.d3 + self.d2 * self.H + 12.0 * self.depth * self.H * Z + 6.0 * self.H * Z**2.0 + # <<<<<<<<<<<<<<
15015  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4
15016  *
15017  */
15018  __pyx_t_7 = PyNumber_Add(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 863, __pyx_L1_error)
15019  __Pyx_GOTREF(__pyx_t_7);
15020  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15021  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15022 
15023  /* "WaveTools.py":862
15024  * Z = (self.vDir[0]*x[0] + self.vDir[1]*x[1]+ self.vDir[2]*x[2]) - self.mwl
15025  *
15026  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *( # <<<<<<<<<<<<<<
15027  * 2.0 * self.d3 + self.d2 * self.H + 12.0 * self.depth * self.H * Z + 6.0 * self.H * Z**2.0 +
15028  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4
15029  */
15030  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 862, __pyx_L1_error)
15031  __Pyx_GOTREF(__pyx_t_5);
15032  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15033  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15034 
15035  /* "WaveTools.py":864
15036  * Uhorz = 1.0 /(4.0 * self.depth**4 ) * np.sqrt(self.gAbs * self.depth) * self.H *(
15037  * 2.0 * self.d3 + self.d2 * self.H + 12.0 * self.depth * self.H * Z + 6.0 * self.H * Z**2.0 +
15038  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4 # <<<<<<<<<<<<<<
15039  *
15040  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*(
15041  */
15042  __pyx_t_7 = PyFloat_FromDouble(pow(__pyx_v_a2, 4.0)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 864, __pyx_L1_error)
15043  __Pyx_GOTREF(__pyx_t_7);
15044  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 864, __pyx_L1_error)
15045  __Pyx_GOTREF(__pyx_t_3);
15046  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15047  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15048  __pyx_v_Uhorz = __pyx_t_3;
15049  __pyx_t_3 = 0;
15050 
15051  /* "WaveTools.py":866
15052  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4
15053  *
15054  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*( # <<<<<<<<<<<<<<
15055  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 +
15056  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15057  */
15058  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 866, __pyx_L1_error)
15059  __Pyx_GOTREF(__pyx_t_7);
15060  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15061  __Pyx_GOTREF(__pyx_t_5);
15062  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15063  __pyx_t_7 = PyFloat_FromDouble((__pyx_v_self->gAbs * __pyx_v_self->depth)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 866, __pyx_L1_error)
15064  __Pyx_GOTREF(__pyx_t_7);
15065  __pyx_t_1 = NULL;
15066  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
15067  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
15068  if (likely(__pyx_t_1)) {
15069  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
15070  __Pyx_INCREF(__pyx_t_1);
15071  __Pyx_INCREF(function);
15072  __Pyx_DECREF_SET(__pyx_t_5, function);
15073  }
15074  }
15075  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7);
15076  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
15077  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15078  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 866, __pyx_L1_error)
15079  __Pyx_GOTREF(__pyx_t_3);
15080  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15081  __pyx_t_5 = PyNumber_Multiply(__pyx_float_4_0, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15082  __Pyx_GOTREF(__pyx_t_5);
15083  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15084  __pyx_t_3 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 866, __pyx_L1_error)
15085  __Pyx_GOTREF(__pyx_t_3);
15086  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15087  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 866, __pyx_L1_error)
15088  __Pyx_GOTREF(__pyx_t_7);
15089  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
15090  __Pyx_GOTREF(__pyx_t_1);
15091  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15092  __pyx_t_7 = NULL;
15093  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
15094  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
15095  if (likely(__pyx_t_7)) {
15096  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
15097  __Pyx_INCREF(__pyx_t_7);
15098  __Pyx_INCREF(function);
15099  __Pyx_DECREF_SET(__pyx_t_1, function);
15100  }
15101  }
15102  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_float_3_0) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_float_3_0);
15103  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
15104  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15105  __Pyx_GOTREF(__pyx_t_5);
15106  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15107  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
15108  __Pyx_GOTREF(__pyx_t_1);
15109  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15110  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15111  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15112  __Pyx_GOTREF(__pyx_t_5);
15113  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 866, __pyx_L1_error)
15114  __Pyx_GOTREF(__pyx_t_3);
15115  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15116  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15117  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
15118  __Pyx_GOTREF(__pyx_t_1);
15119  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->H); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 866, __pyx_L1_error)
15120  __Pyx_GOTREF(__pyx_t_7);
15121  __pyx_t_6 = PyFloat_FromDouble(pow(__pyx_v_self->depth, 3.0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 866, __pyx_L1_error)
15122  __Pyx_GOTREF(__pyx_t_6);
15123  __pyx_t_2 = NULL;
15124  __pyx_t_8 = 0;
15125  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
15126  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
15127  if (likely(__pyx_t_2)) {
15128  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
15129  __Pyx_INCREF(__pyx_t_2);
15130  __Pyx_INCREF(function);
15131  __Pyx_DECREF_SET(__pyx_t_1, function);
15132  __pyx_t_8 = 1;
15133  }
15134  }
15135  #if CYTHON_FAST_PYCALL
15136  if (PyFunction_Check(__pyx_t_1)) {
15137  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_6};
15138  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15139  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
15140  __Pyx_GOTREF(__pyx_t_5);
15141  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15142  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15143  } else
15144  #endif
15145  #if CYTHON_FAST_PYCCALL
15146  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
15147  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_6};
15148  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15149  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
15150  __Pyx_GOTREF(__pyx_t_5);
15151  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15152  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15153  } else
15154  #endif
15155  {
15156  __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 866, __pyx_L1_error)
15157  __Pyx_GOTREF(__pyx_t_9);
15158  if (__pyx_t_2) {
15159  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
15160  }
15161  __Pyx_GIVEREF(__pyx_t_7);
15162  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_7);
15163  __Pyx_GIVEREF(__pyx_t_6);
15164  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6);
15165  __pyx_t_7 = 0;
15166  __pyx_t_6 = 0;
15167  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15168  __Pyx_GOTREF(__pyx_t_5);
15169  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15170  }
15171  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15172  __pyx_t_1 = PyNumber_Power(__pyx_t_5, __pyx_float_1_5, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
15173  __Pyx_GOTREF(__pyx_t_1);
15174  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15175  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 866, __pyx_L1_error)
15176  __Pyx_GOTREF(__pyx_t_5);
15177  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15178  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15179  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
15180  __Pyx_GOTREF(__pyx_t_1);
15181  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_v_Z); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 866, __pyx_L1_error)
15182  __Pyx_GOTREF(__pyx_t_3);
15183  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15184  __pyx_t_1 = PyNumber_Multiply(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
15185  __Pyx_GOTREF(__pyx_t_1);
15186  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15187  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15188 
15189  /* "WaveTools.py":867
15190  *
15191  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*(
15192  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 + # <<<<<<<<<<<<<<
15193  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15194  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15195  */
15196  __pyx_t_3 = PyFloat_FromDouble(((2.0 * pow(__pyx_v_self->depth, 3.0)) - ((7.0 * pow(__pyx_v_self->depth, 2.0)) * __pyx_v_self->H))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 867, __pyx_L1_error)
15197  __Pyx_GOTREF(__pyx_t_3);
15198  __pyx_t_5 = PyFloat_FromDouble(((10.0 * __pyx_v_self->depth) * __pyx_v_self->H)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 867, __pyx_L1_error)
15199  __Pyx_GOTREF(__pyx_t_5);
15200  __pyx_t_9 = PyNumber_Multiply(__pyx_t_5, __pyx_v_Z); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 867, __pyx_L1_error)
15201  __Pyx_GOTREF(__pyx_t_9);
15202  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15203  __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 867, __pyx_L1_error)
15204  __Pyx_GOTREF(__pyx_t_5);
15205  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15206  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15207  __pyx_t_9 = PyFloat_FromDouble((5.0 * __pyx_v_self->H)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 867, __pyx_L1_error)
15208  __Pyx_GOTREF(__pyx_t_9);
15209  __pyx_t_3 = PyNumber_Power(__pyx_v_Z, __pyx_float_2_0, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 867, __pyx_L1_error)
15210  __Pyx_GOTREF(__pyx_t_3);
15211  __pyx_t_6 = PyNumber_Multiply(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 867, __pyx_L1_error)
15212  __Pyx_GOTREF(__pyx_t_6);
15213  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15214  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15215  __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 867, __pyx_L1_error)
15216  __Pyx_GOTREF(__pyx_t_3);
15217  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15218  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15219 
15220  /* "WaveTools.py":868
15221  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*(
15222  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 +
15223  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)* # <<<<<<<<<<<<<<
15224  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15225  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15226  */
15227  __pyx_t_6 = PyFloat_FromDouble(((2.0 * pow(__pyx_v_self->depth, 3.0)) + (pow(__pyx_v_self->depth, 2.0) * __pyx_v_self->H))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 868, __pyx_L1_error)
15228  __Pyx_GOTREF(__pyx_t_6);
15229  __pyx_t_5 = PyFloat_FromDouble(((2.0 * __pyx_v_self->depth) * __pyx_v_self->H)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 868, __pyx_L1_error)
15230  __Pyx_GOTREF(__pyx_t_5);
15231  __pyx_t_9 = PyNumber_Multiply(__pyx_t_5, __pyx_v_Z); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 868, __pyx_L1_error)
15232  __Pyx_GOTREF(__pyx_t_9);
15233  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15234  __pyx_t_5 = PyNumber_Subtract(__pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 868, __pyx_L1_error)
15235  __Pyx_GOTREF(__pyx_t_5);
15236  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15237  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15238  __pyx_t_9 = PyFloat_FromDouble(__pyx_v_self->H); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 868, __pyx_L1_error)
15239  __Pyx_GOTREF(__pyx_t_9);
15240  __pyx_t_6 = PyNumber_Power(__pyx_v_Z, __pyx_float_2_0, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 868, __pyx_L1_error)
15241  __Pyx_GOTREF(__pyx_t_6);
15242  __pyx_t_7 = PyNumber_Multiply(__pyx_t_9, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 868, __pyx_L1_error)
15243  __Pyx_GOTREF(__pyx_t_7);
15244  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15245  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15246  __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 868, __pyx_L1_error)
15247  __Pyx_GOTREF(__pyx_t_6);
15248  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15249  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15250 
15251  /* "WaveTools.py":869
15252  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 +
15253  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15254  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/( # <<<<<<<<<<<<<<
15255  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15256  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase ))
15257  */
15258  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 869, __pyx_L1_error)
15259  __Pyx_GOTREF(__pyx_t_5);
15260  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 869, __pyx_L1_error)
15261  __Pyx_GOTREF(__pyx_t_9);
15262  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15263  __pyx_t_4 = (3.0 * __pyx_v_self->H);
15264  __pyx_t_10 = pow(__pyx_v_self->depth, 3.0);
15265  if (unlikely(__pyx_t_10 == 0)) {
15266  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
15267  __PYX_ERR(0, 869, __pyx_L1_error)
15268  }
15269  __pyx_t_5 = PyFloat_FromDouble((__pyx_t_4 / __pyx_t_10)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 869, __pyx_L1_error)
15270  __Pyx_GOTREF(__pyx_t_5);
15271  __pyx_t_2 = NULL;
15272  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
15273  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
15274  if (likely(__pyx_t_2)) {
15275  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
15276  __Pyx_INCREF(__pyx_t_2);
15277  __Pyx_INCREF(function);
15278  __Pyx_DECREF_SET(__pyx_t_9, function);
15279  }
15280  }
15281  __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5);
15282  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
15283  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15284  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 869, __pyx_L1_error)
15285  __Pyx_GOTREF(__pyx_t_7);
15286  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15287  __pyx_t_9 = PyNumber_Multiply(__pyx_t_7, __pyx_v_phase); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 869, __pyx_L1_error)
15288  __Pyx_GOTREF(__pyx_t_9);
15289  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15290  __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 869, __pyx_L1_error)
15291  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15292  __pyx_t_9 = PyFloat_FromDouble(cosh(__pyx_t_10)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 869, __pyx_L1_error)
15293  __Pyx_GOTREF(__pyx_t_9);
15294 
15295  /* "WaveTools.py":868
15296  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*(
15297  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 +
15298  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)* # <<<<<<<<<<<<<<
15299  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15300  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15301  */
15302  __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 868, __pyx_L1_error)
15303  __Pyx_GOTREF(__pyx_t_7);
15304  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15305  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15306 
15307  /* "WaveTools.py":867
15308  *
15309  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*(
15310  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 + # <<<<<<<<<<<<<<
15311  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15312  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15313  */
15314  __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 867, __pyx_L1_error)
15315  __Pyx_GOTREF(__pyx_t_9);
15316  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15317  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15318 
15319  /* "WaveTools.py":866
15320  * (2.0 * self.d3 - self.d2 * self.H - 6.0 * self.depth * self.H * Z - 3.0 * self.H * Z**2 ) * a1)/(a2)**4
15321  *
15322  * Uvert = 1.0 / ( 4.0 * np.sqrt(self.gAbs* self.depth) ) * np.sqrt(3.0) * self.gAbs * (old_div(self.H, self.depth**3.0))** 1.5 * (self.depth + Z)*( # <<<<<<<<<<<<<<
15323  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 +
15324  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15325  */
15326  __pyx_t_7 = PyNumber_Multiply(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 866, __pyx_L1_error)
15327  __Pyx_GOTREF(__pyx_t_7);
15328  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15329  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15330 
15331  /* "WaveTools.py":870
15332  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15333  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15334  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))* # <<<<<<<<<<<<<<
15335  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase ))
15336  * """
15337  */
15338  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 870, __pyx_L1_error)
15339  __Pyx_GOTREF(__pyx_t_1);
15340  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 870, __pyx_L1_error)
15341  __Pyx_GOTREF(__pyx_t_3);
15342  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15343  __pyx_t_10 = (3.0 * __pyx_v_self->H);
15344  __pyx_t_4 = (4.0 * pow(__pyx_v_self->depth, 3.0));
15345  if (unlikely(__pyx_t_4 == 0)) {
15346  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
15347  __PYX_ERR(0, 870, __pyx_L1_error)
15348  }
15349  __pyx_t_1 = PyFloat_FromDouble((__pyx_t_10 / __pyx_t_4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 870, __pyx_L1_error)
15350  __Pyx_GOTREF(__pyx_t_1);
15351  __pyx_t_6 = NULL;
15352  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
15353  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
15354  if (likely(__pyx_t_6)) {
15355  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
15356  __Pyx_INCREF(__pyx_t_6);
15357  __Pyx_INCREF(function);
15358  __Pyx_DECREF_SET(__pyx_t_3, function);
15359  }
15360  }
15361  __pyx_t_9 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1);
15362  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15363  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15364  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 870, __pyx_L1_error)
15365  __Pyx_GOTREF(__pyx_t_9);
15366  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15367 
15368  /* "WaveTools.py":871
15369  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15370  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15371  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase )) # <<<<<<<<<<<<<<
15372  * """
15373  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
15374  */
15375  __pyx_t_3 = PyNumber_Multiply(__pyx_t_9, __pyx_v_phase); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 870, __pyx_L1_error)
15376  __Pyx_GOTREF(__pyx_t_3);
15377  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15378 
15379  /* "WaveTools.py":870
15380  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15381  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15382  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))* # <<<<<<<<<<<<<<
15383  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase ))
15384  * """
15385  */
15386  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L1_error)
15387  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15388 
15389  /* "WaveTools.py":871
15390  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15391  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15392  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase )) # <<<<<<<<<<<<<<
15393  * """
15394  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
15395  */
15396  __pyx_t_3 = PyFloat_FromDouble(pow(cosh(__pyx_t_4), 4.0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error)
15397  __Pyx_GOTREF(__pyx_t_3);
15398 
15399  /* "WaveTools.py":869
15400  * 2.0 * self.depth**3 - 7.0 * self.depth**2.0 * self.H + 10.0 * self.depth * self.H * Z + 5.0 * self.H * Z**2.0 +
15401  * (2.0 * self.depth**3.0 + self.depth**2.0 * self.H - 2.0 * self.depth * self.H * Z - self.H * Z**2.0)*
15402  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/( # <<<<<<<<<<<<<<
15403  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15404  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase ))
15405  */
15406  __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 869, __pyx_L1_error)
15407  __Pyx_GOTREF(__pyx_t_9);
15408  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15409  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15410 
15411  /* "WaveTools.py":871
15412  * cosh(np.sqrt( 3.0 * self.H / self.depth**3.0) * phase ))/(
15413  * cosh(np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*
15414  * phase ) )** 4.0*( tanh( np.sqrt( 3.0 * self.H / ( 4.0 * self.depth**3.0))*phase )) # <<<<<<<<<<<<<<
15415  * """
15416  * phase = sum( (x[:]-self.trans[:])*self.waveDir[:]) - self.c * t
15417  */
15418  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 871, __pyx_L1_error)
15419  __Pyx_GOTREF(__pyx_t_7);
15420  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 871, __pyx_L1_error)
15421  __Pyx_GOTREF(__pyx_t_1);
15422  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15423  __pyx_t_4 = (3.0 * __pyx_v_self->H);
15424  __pyx_t_10 = (4.0 * pow(__pyx_v_self->depth, 3.0));
15425  if (unlikely(__pyx_t_10 == 0)) {
15426  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
15427  __PYX_ERR(0, 871, __pyx_L1_error)
15428  }
15429  __pyx_t_7 = PyFloat_FromDouble((__pyx_t_4 / __pyx_t_10)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 871, __pyx_L1_error)
15430  __Pyx_GOTREF(__pyx_t_7);
15431  __pyx_t_6 = NULL;
15432  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
15433  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
15434  if (likely(__pyx_t_6)) {
15435  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
15436  __Pyx_INCREF(__pyx_t_6);
15437  __Pyx_INCREF(function);
15438  __Pyx_DECREF_SET(__pyx_t_1, function);
15439  }
15440  }
15441  __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7);
15442  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15443  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15444  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error)
15445  __Pyx_GOTREF(__pyx_t_3);
15446  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15447  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_v_phase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 871, __pyx_L1_error)
15448  __Pyx_GOTREF(__pyx_t_1);
15449  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15450  __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 871, __pyx_L1_error)
15451  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15452  __pyx_t_1 = PyFloat_FromDouble(tanh(__pyx_t_10)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 871, __pyx_L1_error)
15453  __Pyx_GOTREF(__pyx_t_1);
15454  __pyx_t_3 = PyNumber_Multiply(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 871, __pyx_L1_error)
15455  __Pyx_GOTREF(__pyx_t_3);
15456  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
15457  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15458  __pyx_v_Uvert = __pyx_t_3;
15459  __pyx_t_3 = 0;
15460 
15461  /* "WaveTools.py":883
15462  * Uvert = -np.sqrt( self.gAbs * self.depth) * ( Z / self.depth) * ( 1 - ( self.H / ( 4 * self.depth)) * ( 1 / ( a1**2))) * ( ( 2 * self.H / self.depth) * self.K * ( a2 / ( a1**2)))
15463  * """
15464  * return self.waveDir*Uhorz + self.vDir*Uvert # <<<<<<<<<<<<<<
15465  *
15466  *
15467  */
15468  __Pyx_XDECREF(__pyx_r);
15469  __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->waveDir), __pyx_v_Uhorz); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error)
15470  __Pyx_GOTREF(__pyx_t_3);
15471  __pyx_t_1 = PyNumber_Multiply(((PyObject *)__pyx_v_self->vDir), __pyx_v_Uvert); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 883, __pyx_L1_error)
15472  __Pyx_GOTREF(__pyx_t_1);
15473  __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 883, __pyx_L1_error)
15474  __Pyx_GOTREF(__pyx_t_9);
15475  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15476  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15477  __pyx_r = __pyx_t_9;
15478  __pyx_t_9 = 0;
15479  goto __pyx_L0;
15480 
15481  /* "WaveTools.py":841
15482  * a1 = self.K*phase
15483  * return self.H*1.0/ cosh(a1)**2
15484  * def u(self,x,t): # <<<<<<<<<<<<<<
15485  * """Calculates wave velocity vector (SolitaryWave class).
15486  * Parameters
15487  */
15488 
15489  /* function exit code */
15490  __pyx_L1_error:;
15491  __Pyx_XDECREF(__pyx_t_1);
15492  __Pyx_XDECREF(__pyx_t_2);
15493  __Pyx_XDECREF(__pyx_t_3);
15494  __Pyx_XDECREF(__pyx_t_5);
15495  __Pyx_XDECREF(__pyx_t_6);
15496  __Pyx_XDECREF(__pyx_t_7);
15497  __Pyx_XDECREF(__pyx_t_9);
15498  __Pyx_AddTraceback("WaveTools.SolitaryWave.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
15499  __pyx_r = NULL;
15500  __pyx_L0:;
15501  __Pyx_XDECREF(__pyx_v_phase);
15502  __Pyx_XDECREF(__pyx_v_Z);
15503  __Pyx_XDECREF(__pyx_v_Uhorz);
15504  __Pyx_XDECREF(__pyx_v_Uvert);
15505  __Pyx_XGIVEREF(__pyx_r);
15506  __Pyx_RefNannyFinishContext();
15507  return __pyx_r;
15508 }
15509 
15510 /* "WaveTools.pxd":45
15511  * cdef double H,gAbs,K,depth,d2,d3
15512  * cdef public:
15513  * double mwl,c # <<<<<<<<<<<<<<
15514  * cdef np.ndarray g,waveDir,vDir,trans
15515  * cdef bool fast
15516  */
15517 
15518 /* Python wrapper */
15519 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
15520 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_3mwl_1__get__(PyObject *__pyx_v_self) {
15521  PyObject *__pyx_r = 0;
15522  __Pyx_RefNannyDeclarations
15523  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
15524  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_3mwl___get__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self));
15525 
15526  /* function exit code */
15527  __Pyx_RefNannyFinishContext();
15528  return __pyx_r;
15529 }
15530 
15531 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_3mwl___get__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self) {
15532  PyObject *__pyx_r = NULL;
15533  __Pyx_RefNannyDeclarations
15534  PyObject *__pyx_t_1 = NULL;
15535  int __pyx_lineno = 0;
15536  const char *__pyx_filename = NULL;
15537  int __pyx_clineno = 0;
15538  __Pyx_RefNannySetupContext("__get__", 0);
15539  __Pyx_XDECREF(__pyx_r);
15540  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 45, __pyx_L1_error)
15541  __Pyx_GOTREF(__pyx_t_1);
15542  __pyx_r = __pyx_t_1;
15543  __pyx_t_1 = 0;
15544  goto __pyx_L0;
15545 
15546  /* function exit code */
15547  __pyx_L1_error:;
15548  __Pyx_XDECREF(__pyx_t_1);
15549  __Pyx_AddTraceback("WaveTools.SolitaryWave.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15550  __pyx_r = NULL;
15551  __pyx_L0:;
15552  __Pyx_XGIVEREF(__pyx_r);
15553  __Pyx_RefNannyFinishContext();
15554  return __pyx_r;
15555 }
15556 
15557 /* Python wrapper */
15558 static int __pyx_pw_9WaveTools_12SolitaryWave_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
15559 static int __pyx_pw_9WaveTools_12SolitaryWave_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
15560  int __pyx_r;
15561  __Pyx_RefNannyDeclarations
15562  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
15563  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_3mwl_2__set__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
15564 
15565  /* function exit code */
15566  __Pyx_RefNannyFinishContext();
15567  return __pyx_r;
15568 }
15569 
15570 static int __pyx_pf_9WaveTools_12SolitaryWave_3mwl_2__set__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_value) {
15571  int __pyx_r;
15572  __Pyx_RefNannyDeclarations
15573  double __pyx_t_1;
15574  int __pyx_lineno = 0;
15575  const char *__pyx_filename = NULL;
15576  int __pyx_clineno = 0;
15577  __Pyx_RefNannySetupContext("__set__", 0);
15578  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 45, __pyx_L1_error)
15579  __pyx_v_self->mwl = __pyx_t_1;
15580 
15581  /* function exit code */
15582  __pyx_r = 0;
15583  goto __pyx_L0;
15584  __pyx_L1_error:;
15585  __Pyx_AddTraceback("WaveTools.SolitaryWave.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15586  __pyx_r = -1;
15587  __pyx_L0:;
15588  __Pyx_RefNannyFinishContext();
15589  return __pyx_r;
15590 }
15591 
15592 /* Python wrapper */
15593 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_1c_1__get__(PyObject *__pyx_v_self); /*proto*/
15594 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_1c_1__get__(PyObject *__pyx_v_self) {
15595  PyObject *__pyx_r = 0;
15596  __Pyx_RefNannyDeclarations
15597  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
15598  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_1c___get__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self));
15599 
15600  /* function exit code */
15601  __Pyx_RefNannyFinishContext();
15602  return __pyx_r;
15603 }
15604 
15605 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_1c___get__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self) {
15606  PyObject *__pyx_r = NULL;
15607  __Pyx_RefNannyDeclarations
15608  PyObject *__pyx_t_1 = NULL;
15609  int __pyx_lineno = 0;
15610  const char *__pyx_filename = NULL;
15611  int __pyx_clineno = 0;
15612  __Pyx_RefNannySetupContext("__get__", 0);
15613  __Pyx_XDECREF(__pyx_r);
15614  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->c); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 45, __pyx_L1_error)
15615  __Pyx_GOTREF(__pyx_t_1);
15616  __pyx_r = __pyx_t_1;
15617  __pyx_t_1 = 0;
15618  goto __pyx_L0;
15619 
15620  /* function exit code */
15621  __pyx_L1_error:;
15622  __Pyx_XDECREF(__pyx_t_1);
15623  __Pyx_AddTraceback("WaveTools.SolitaryWave.c.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15624  __pyx_r = NULL;
15625  __pyx_L0:;
15626  __Pyx_XGIVEREF(__pyx_r);
15627  __Pyx_RefNannyFinishContext();
15628  return __pyx_r;
15629 }
15630 
15631 /* Python wrapper */
15632 static int __pyx_pw_9WaveTools_12SolitaryWave_1c_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
15633 static int __pyx_pw_9WaveTools_12SolitaryWave_1c_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
15634  int __pyx_r;
15635  __Pyx_RefNannyDeclarations
15636  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
15637  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_1c_2__set__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
15638 
15639  /* function exit code */
15640  __Pyx_RefNannyFinishContext();
15641  return __pyx_r;
15642 }
15643 
15644 static int __pyx_pf_9WaveTools_12SolitaryWave_1c_2__set__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v_value) {
15645  int __pyx_r;
15646  __Pyx_RefNannyDeclarations
15647  double __pyx_t_1;
15648  int __pyx_lineno = 0;
15649  const char *__pyx_filename = NULL;
15650  int __pyx_clineno = 0;
15651  __Pyx_RefNannySetupContext("__set__", 0);
15652  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 45, __pyx_L1_error)
15653  __pyx_v_self->c = __pyx_t_1;
15654 
15655  /* function exit code */
15656  __pyx_r = 0;
15657  goto __pyx_L0;
15658  __pyx_L1_error:;
15659  __Pyx_AddTraceback("WaveTools.SolitaryWave.c.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15660  __pyx_r = -1;
15661  __pyx_L0:;
15662  __Pyx_RefNannyFinishContext();
15663  return __pyx_r;
15664 }
15665 
15666 /* "(tree fragment)":1
15667  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
15668  * cdef tuple state
15669  * cdef object _dict
15670  */
15671 
15672 /* Python wrapper */
15673 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
15674 static PyMethodDef __pyx_mdef_9WaveTools_12SolitaryWave_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_12SolitaryWave_7__reduce_cython__, METH_NOARGS, 0};
15675 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
15676  PyObject *__pyx_r = 0;
15677  __Pyx_RefNannyDeclarations
15678  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
15679  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_6__reduce_cython__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self));
15680 
15681  /* function exit code */
15682  __Pyx_RefNannyFinishContext();
15683  return __pyx_r;
15684 }
15685 
15686 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_6__reduce_cython__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self) {
15687  PyObject *__pyx_v_state = 0;
15688  PyObject *__pyx_v__dict = 0;
15689  int __pyx_v_use_setstate;
15690  PyObject *__pyx_r = NULL;
15691  __Pyx_RefNannyDeclarations
15692  PyObject *__pyx_t_1 = NULL;
15693  PyObject *__pyx_t_2 = NULL;
15694  PyObject *__pyx_t_3 = NULL;
15695  PyObject *__pyx_t_4 = NULL;
15696  PyObject *__pyx_t_5 = NULL;
15697  PyObject *__pyx_t_6 = NULL;
15698  PyObject *__pyx_t_7 = NULL;
15699  PyObject *__pyx_t_8 = NULL;
15700  PyObject *__pyx_t_9 = NULL;
15701  PyObject *__pyx_t_10 = NULL;
15702  int __pyx_t_11;
15703  int __pyx_t_12;
15704  int __pyx_t_13;
15705  int __pyx_lineno = 0;
15706  const char *__pyx_filename = NULL;
15707  int __pyx_clineno = 0;
15708  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
15709 
15710  /* "(tree fragment)":5
15711  * cdef object _dict
15712  * cdef bint use_setstate
15713  * state = (self.H, self.K, self.c, self.d2, self.d3, self.depth, self.fast, self.g, self.gAbs, self.mwl, self.trans, self.vDir, self.waveDir) # <<<<<<<<<<<<<<
15714  * _dict = getattr(self, '__dict__', None)
15715  * if _dict is not None:
15716  */
15717  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->H); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
15718  __Pyx_GOTREF(__pyx_t_1);
15719  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->K); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
15720  __Pyx_GOTREF(__pyx_t_2);
15721  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->c); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
15722  __Pyx_GOTREF(__pyx_t_3);
15723  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->d2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
15724  __Pyx_GOTREF(__pyx_t_4);
15725  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->d3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 5, __pyx_L1_error)
15726  __Pyx_GOTREF(__pyx_t_5);
15727  __pyx_t_6 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 5, __pyx_L1_error)
15728  __Pyx_GOTREF(__pyx_t_6);
15729  __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->fast); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 5, __pyx_L1_error)
15730  __Pyx_GOTREF(__pyx_t_7);
15731  __pyx_t_8 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 5, __pyx_L1_error)
15732  __Pyx_GOTREF(__pyx_t_8);
15733  __pyx_t_9 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 5, __pyx_L1_error)
15734  __Pyx_GOTREF(__pyx_t_9);
15735  __pyx_t_10 = PyTuple_New(13); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 5, __pyx_L1_error)
15736  __Pyx_GOTREF(__pyx_t_10);
15737  __Pyx_GIVEREF(__pyx_t_1);
15738  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
15739  __Pyx_GIVEREF(__pyx_t_2);
15740  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
15741  __Pyx_GIVEREF(__pyx_t_3);
15742  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
15743  __Pyx_GIVEREF(__pyx_t_4);
15744  PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_4);
15745  __Pyx_GIVEREF(__pyx_t_5);
15746  PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_5);
15747  __Pyx_GIVEREF(__pyx_t_6);
15748  PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_6);
15749  __Pyx_GIVEREF(__pyx_t_7);
15750  PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_7);
15751  __Pyx_INCREF(((PyObject *)__pyx_v_self->g));
15752  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->g));
15753  PyTuple_SET_ITEM(__pyx_t_10, 7, ((PyObject *)__pyx_v_self->g));
15754  __Pyx_GIVEREF(__pyx_t_8);
15755  PyTuple_SET_ITEM(__pyx_t_10, 8, __pyx_t_8);
15756  __Pyx_GIVEREF(__pyx_t_9);
15757  PyTuple_SET_ITEM(__pyx_t_10, 9, __pyx_t_9);
15758  __Pyx_INCREF(((PyObject *)__pyx_v_self->trans));
15759  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->trans));
15760  PyTuple_SET_ITEM(__pyx_t_10, 10, ((PyObject *)__pyx_v_self->trans));
15761  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
15762  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->vDir));
15763  PyTuple_SET_ITEM(__pyx_t_10, 11, ((PyObject *)__pyx_v_self->vDir));
15764  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
15765  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->waveDir));
15766  PyTuple_SET_ITEM(__pyx_t_10, 12, ((PyObject *)__pyx_v_self->waveDir));
15767  __pyx_t_1 = 0;
15768  __pyx_t_2 = 0;
15769  __pyx_t_3 = 0;
15770  __pyx_t_4 = 0;
15771  __pyx_t_5 = 0;
15772  __pyx_t_6 = 0;
15773  __pyx_t_7 = 0;
15774  __pyx_t_8 = 0;
15775  __pyx_t_9 = 0;
15776  __pyx_v_state = ((PyObject*)__pyx_t_10);
15777  __pyx_t_10 = 0;
15778 
15779  /* "(tree fragment)":6
15780  * cdef bint use_setstate
15781  * state = (self.H, self.K, self.c, self.d2, self.d3, self.depth, self.fast, self.g, self.gAbs, self.mwl, self.trans, self.vDir, self.waveDir)
15782  * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<<
15783  * if _dict is not None:
15784  * state += (_dict,)
15785  */
15786  __pyx_t_10 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 6, __pyx_L1_error)
15787  __Pyx_GOTREF(__pyx_t_10);
15788  __pyx_v__dict = __pyx_t_10;
15789  __pyx_t_10 = 0;
15790 
15791  /* "(tree fragment)":7
15792  * state = (self.H, self.K, self.c, self.d2, self.d3, self.depth, self.fast, self.g, self.gAbs, self.mwl, self.trans, self.vDir, self.waveDir)
15793  * _dict = getattr(self, '__dict__', None)
15794  * if _dict is not None: # <<<<<<<<<<<<<<
15795  * state += (_dict,)
15796  * use_setstate = True
15797  */
15798  __pyx_t_11 = (__pyx_v__dict != Py_None);
15799  __pyx_t_12 = (__pyx_t_11 != 0);
15800  if (__pyx_t_12) {
15801 
15802  /* "(tree fragment)":8
15803  * _dict = getattr(self, '__dict__', None)
15804  * if _dict is not None:
15805  * state += (_dict,) # <<<<<<<<<<<<<<
15806  * use_setstate = True
15807  * else:
15808  */
15809  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 8, __pyx_L1_error)
15810  __Pyx_GOTREF(__pyx_t_10);
15811  __Pyx_INCREF(__pyx_v__dict);
15812  __Pyx_GIVEREF(__pyx_v__dict);
15813  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v__dict);
15814  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 8, __pyx_L1_error)
15815  __Pyx_GOTREF(__pyx_t_9);
15816  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
15817  __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_9));
15818  __pyx_t_9 = 0;
15819 
15820  /* "(tree fragment)":9
15821  * if _dict is not None:
15822  * state += (_dict,)
15823  * use_setstate = True # <<<<<<<<<<<<<<
15824  * else:
15825  * use_setstate = self.g is not None or self.trans is not None or self.vDir is not None or self.waveDir is not None
15826  */
15827  __pyx_v_use_setstate = 1;
15828 
15829  /* "(tree fragment)":7
15830  * state = (self.H, self.K, self.c, self.d2, self.d3, self.depth, self.fast, self.g, self.gAbs, self.mwl, self.trans, self.vDir, self.waveDir)
15831  * _dict = getattr(self, '__dict__', None)
15832  * if _dict is not None: # <<<<<<<<<<<<<<
15833  * state += (_dict,)
15834  * use_setstate = True
15835  */
15836  goto __pyx_L3;
15837  }
15838 
15839  /* "(tree fragment)":11
15840  * use_setstate = True
15841  * else:
15842  * use_setstate = self.g is not None or self.trans is not None or self.vDir is not None or self.waveDir is not None # <<<<<<<<<<<<<<
15843  * if use_setstate:
15844  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, None), state
15845  */
15846  /*else*/ {
15847  __pyx_t_11 = (((PyObject *)__pyx_v_self->g) != Py_None);
15848  __pyx_t_13 = (__pyx_t_11 != 0);
15849  if (!__pyx_t_13) {
15850  } else {
15851  __pyx_t_12 = __pyx_t_13;
15852  goto __pyx_L4_bool_binop_done;
15853  }
15854  __pyx_t_13 = (((PyObject *)__pyx_v_self->trans) != Py_None);
15855  __pyx_t_11 = (__pyx_t_13 != 0);
15856  if (!__pyx_t_11) {
15857  } else {
15858  __pyx_t_12 = __pyx_t_11;
15859  goto __pyx_L4_bool_binop_done;
15860  }
15861  __pyx_t_11 = (((PyObject *)__pyx_v_self->vDir) != Py_None);
15862  __pyx_t_13 = (__pyx_t_11 != 0);
15863  if (!__pyx_t_13) {
15864  } else {
15865  __pyx_t_12 = __pyx_t_13;
15866  goto __pyx_L4_bool_binop_done;
15867  }
15868  __pyx_t_13 = (((PyObject *)__pyx_v_self->waveDir) != Py_None);
15869  __pyx_t_11 = (__pyx_t_13 != 0);
15870  __pyx_t_12 = __pyx_t_11;
15871  __pyx_L4_bool_binop_done:;
15872  __pyx_v_use_setstate = __pyx_t_12;
15873  }
15874  __pyx_L3:;
15875 
15876  /* "(tree fragment)":12
15877  * else:
15878  * use_setstate = self.g is not None or self.trans is not None or self.vDir is not None or self.waveDir is not None
15879  * if use_setstate: # <<<<<<<<<<<<<<
15880  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, None), state
15881  * else:
15882  */
15883  __pyx_t_12 = (__pyx_v_use_setstate != 0);
15884  if (__pyx_t_12) {
15885 
15886  /* "(tree fragment)":13
15887  * use_setstate = self.g is not None or self.trans is not None or self.vDir is not None or self.waveDir is not None
15888  * if use_setstate:
15889  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, None), state # <<<<<<<<<<<<<<
15890  * else:
15891  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state)
15892  */
15893  __Pyx_XDECREF(__pyx_r);
15894  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_pyx_unpickle_SolitaryWave); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 13, __pyx_L1_error)
15895  __Pyx_GOTREF(__pyx_t_9);
15896  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 13, __pyx_L1_error)
15897  __Pyx_GOTREF(__pyx_t_10);
15898  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15899  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15900  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15901  __Pyx_INCREF(__pyx_int_161707632);
15902  __Pyx_GIVEREF(__pyx_int_161707632);
15903  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_161707632);
15904  __Pyx_INCREF(Py_None);
15905  __Pyx_GIVEREF(Py_None);
15906  PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None);
15907  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L1_error)
15908  __Pyx_GOTREF(__pyx_t_8);
15909  __Pyx_GIVEREF(__pyx_t_9);
15910  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9);
15911  __Pyx_GIVEREF(__pyx_t_10);
15912  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_10);
15913  __Pyx_INCREF(__pyx_v_state);
15914  __Pyx_GIVEREF(__pyx_v_state);
15915  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_state);
15916  __pyx_t_9 = 0;
15917  __pyx_t_10 = 0;
15918  __pyx_r = __pyx_t_8;
15919  __pyx_t_8 = 0;
15920  goto __pyx_L0;
15921 
15922  /* "(tree fragment)":12
15923  * else:
15924  * use_setstate = self.g is not None or self.trans is not None or self.vDir is not None or self.waveDir is not None
15925  * if use_setstate: # <<<<<<<<<<<<<<
15926  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, None), state
15927  * else:
15928  */
15929  }
15930 
15931  /* "(tree fragment)":15
15932  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, None), state
15933  * else:
15934  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state) # <<<<<<<<<<<<<<
15935  * def __setstate_cython__(self, __pyx_state):
15936  * __pyx_unpickle_SolitaryWave__set_state(self, __pyx_state)
15937  */
15938  /*else*/ {
15939  __Pyx_XDECREF(__pyx_r);
15940  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pyx_unpickle_SolitaryWave); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 15, __pyx_L1_error)
15941  __Pyx_GOTREF(__pyx_t_8);
15942  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 15, __pyx_L1_error)
15943  __Pyx_GOTREF(__pyx_t_10);
15944  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15945  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15946  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15947  __Pyx_INCREF(__pyx_int_161707632);
15948  __Pyx_GIVEREF(__pyx_int_161707632);
15949  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_161707632);
15950  __Pyx_INCREF(__pyx_v_state);
15951  __Pyx_GIVEREF(__pyx_v_state);
15952  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_v_state);
15953  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 15, __pyx_L1_error)
15954  __Pyx_GOTREF(__pyx_t_9);
15955  __Pyx_GIVEREF(__pyx_t_8);
15956  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
15957  __Pyx_GIVEREF(__pyx_t_10);
15958  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_10);
15959  __pyx_t_8 = 0;
15960  __pyx_t_10 = 0;
15961  __pyx_r = __pyx_t_9;
15962  __pyx_t_9 = 0;
15963  goto __pyx_L0;
15964  }
15965 
15966  /* "(tree fragment)":1
15967  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
15968  * cdef tuple state
15969  * cdef object _dict
15970  */
15971 
15972  /* function exit code */
15973  __pyx_L1_error:;
15974  __Pyx_XDECREF(__pyx_t_1);
15975  __Pyx_XDECREF(__pyx_t_2);
15976  __Pyx_XDECREF(__pyx_t_3);
15977  __Pyx_XDECREF(__pyx_t_4);
15978  __Pyx_XDECREF(__pyx_t_5);
15979  __Pyx_XDECREF(__pyx_t_6);
15980  __Pyx_XDECREF(__pyx_t_7);
15981  __Pyx_XDECREF(__pyx_t_8);
15982  __Pyx_XDECREF(__pyx_t_9);
15983  __Pyx_XDECREF(__pyx_t_10);
15984  __Pyx_AddTraceback("WaveTools.SolitaryWave.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15985  __pyx_r = NULL;
15986  __pyx_L0:;
15987  __Pyx_XDECREF(__pyx_v_state);
15988  __Pyx_XDECREF(__pyx_v__dict);
15989  __Pyx_XGIVEREF(__pyx_r);
15990  __Pyx_RefNannyFinishContext();
15991  return __pyx_r;
15992 }
15993 
15994 /* "(tree fragment)":16
15995  * else:
15996  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state)
15997  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
15998  * __pyx_unpickle_SolitaryWave__set_state(self, __pyx_state)
15999  */
16000 
16001 /* Python wrapper */
16002 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
16003 static PyMethodDef __pyx_mdef_9WaveTools_12SolitaryWave_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_12SolitaryWave_9__setstate_cython__, METH_O, 0};
16004 static PyObject *__pyx_pw_9WaveTools_12SolitaryWave_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
16005  PyObject *__pyx_r = 0;
16006  __Pyx_RefNannyDeclarations
16007  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
16008  __pyx_r = __pyx_pf_9WaveTools_12SolitaryWave_8__setstate_cython__(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
16009 
16010  /* function exit code */
16011  __Pyx_RefNannyFinishContext();
16012  return __pyx_r;
16013 }
16014 
16015 static PyObject *__pyx_pf_9WaveTools_12SolitaryWave_8__setstate_cython__(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
16016  PyObject *__pyx_r = NULL;
16017  __Pyx_RefNannyDeclarations
16018  PyObject *__pyx_t_1 = NULL;
16019  int __pyx_lineno = 0;
16020  const char *__pyx_filename = NULL;
16021  int __pyx_clineno = 0;
16022  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
16023 
16024  /* "(tree fragment)":17
16025  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state)
16026  * def __setstate_cython__(self, __pyx_state):
16027  * __pyx_unpickle_SolitaryWave__set_state(self, __pyx_state) # <<<<<<<<<<<<<<
16028  */
16029  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
16030  __pyx_t_1 = __pyx_f_9WaveTools___pyx_unpickle_SolitaryWave__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
16031  __Pyx_GOTREF(__pyx_t_1);
16032  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16033 
16034  /* "(tree fragment)":16
16035  * else:
16036  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state)
16037  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
16038  * __pyx_unpickle_SolitaryWave__set_state(self, __pyx_state)
16039  */
16040 
16041  /* function exit code */
16042  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
16043  goto __pyx_L0;
16044  __pyx_L1_error:;
16045  __Pyx_XDECREF(__pyx_t_1);
16046  __Pyx_AddTraceback("WaveTools.SolitaryWave.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16047  __pyx_r = NULL;
16048  __pyx_L0:;
16049  __Pyx_XGIVEREF(__pyx_r);
16050  __Pyx_RefNannyFinishContext();
16051  return __pyx_r;
16052 }
16053 
16054 /* "WaveTools.py":941
16055  *
16056  * """
16057  * def __init__(self, # <<<<<<<<<<<<<<
16058  * period,
16059  * waveHeight,
16060  */
16061 
16062 /* Python wrapper */
16063 static int __pyx_pw_9WaveTools_18MonochromaticWaves_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16064 static int __pyx_pw_9WaveTools_18MonochromaticWaves_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16065  PyObject *__pyx_v_period = 0;
16066  PyObject *__pyx_v_waveHeight = 0;
16067  PyObject *__pyx_v_mwl = 0;
16068  PyObject *__pyx_v_depth = 0;
16069  PyObject *__pyx_v_g = 0;
16070  PyObject *__pyx_v_waveDir = 0;
16071  PyObject *__pyx_v_wavelength = 0;
16072  PyObject *__pyx_v_waveType = 0;
16073  PyObject *__pyx_v_autoFenton = 0;
16074  PyObject *__pyx_v_autoFentonOpts = 0;
16075  PyObject *__pyx_v_Ycoeff = 0;
16076  PyObject *__pyx_v_Bcoeff = 0;
16077  PyObject *__pyx_v_Nf = 0;
16078  PyObject *__pyx_v_meanVelocity = 0;
16079  PyObject *__pyx_v_phi0 = 0;
16080  PyObject *__pyx_v_fast = 0;
16081  int __pyx_lineno = 0;
16082  const char *__pyx_filename = NULL;
16083  int __pyx_clineno = 0;
16084  int __pyx_r;
16085  __Pyx_RefNannyDeclarations
16086  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
16087  {
16088  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_period,&__pyx_n_s_waveHeight,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_g,&__pyx_n_s_waveDir,&__pyx_n_s_wavelength,&__pyx_n_s_waveType,&__pyx_n_s_autoFenton,&__pyx_n_s_autoFentonOpts,&__pyx_n_s_Ycoeff,&__pyx_n_s_Bcoeff,&__pyx_n_s_Nf,&__pyx_n_s_meanVelocity,&__pyx_n_s_phi0,&__pyx_n_s_fast,0};
16089  PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
16090 
16091  /* "WaveTools.py":948
16092  * g,
16093  * waveDir,
16094  * wavelength=None, # <<<<<<<<<<<<<<
16095  * waveType="Linear",
16096  * autoFenton=True,
16097  */
16098  values[6] = ((PyObject *)Py_None);
16099  values[7] = ((PyObject *)__pyx_n_s_Linear);
16100 
16101  /* "WaveTools.py":950
16102  * wavelength=None,
16103  * waveType="Linear",
16104  * autoFenton=True, # <<<<<<<<<<<<<<
16105  * autoFentonOpts=None,
16106  * Ycoeff = np.zeros(1000,),
16107  */
16108  values[8] = ((PyObject *)Py_True);
16109 
16110  /* "WaveTools.py":951
16111  * waveType="Linear",
16112  * autoFenton=True,
16113  * autoFentonOpts=None, # <<<<<<<<<<<<<<
16114  * Ycoeff = np.zeros(1000,),
16115  * Bcoeff =np.zeros(1000,),
16116  */
16117  values[9] = ((PyObject *)Py_None);
16118  values[10] = __pyx_k__13;
16119  values[11] = __pyx_k__14;
16120  values[12] = ((PyObject *)__pyx_int_1000);
16121  values[13] = __pyx_k__15;
16122  values[14] = ((PyObject *)__pyx_float_0_);
16123 
16124  /* "WaveTools.py":957
16125  * meanVelocity = np.array([0.,0,0.]),
16126  * phi0 = 0.,
16127  * fast = True): # <<<<<<<<<<<<<<
16128  * if waveType=="Fenton" and (autoFenton) and (Nf > 999):
16129  * logEvent("ERROR!!: Number of Fourier modes is not set, please define a reasonable number of Fourier modes e.g. Nf = 12")
16130  */
16131  values[15] = ((PyObject *)Py_True);
16132  if (unlikely(__pyx_kwds)) {
16133  Py_ssize_t kw_args;
16134  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16135  switch (pos_args) {
16136  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
16137  CYTHON_FALLTHROUGH;
16138  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
16139  CYTHON_FALLTHROUGH;
16140  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
16141  CYTHON_FALLTHROUGH;
16142  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
16143  CYTHON_FALLTHROUGH;
16144  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
16145  CYTHON_FALLTHROUGH;
16146  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
16147  CYTHON_FALLTHROUGH;
16148  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
16149  CYTHON_FALLTHROUGH;
16150  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
16151  CYTHON_FALLTHROUGH;
16152  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
16153  CYTHON_FALLTHROUGH;
16154  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
16155  CYTHON_FALLTHROUGH;
16156  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
16157  CYTHON_FALLTHROUGH;
16158  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
16159  CYTHON_FALLTHROUGH;
16160  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
16161  CYTHON_FALLTHROUGH;
16162  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16163  CYTHON_FALLTHROUGH;
16164  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16165  CYTHON_FALLTHROUGH;
16166  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16167  CYTHON_FALLTHROUGH;
16168  case 0: break;
16169  default: goto __pyx_L5_argtuple_error;
16170  }
16171  kw_args = PyDict_Size(__pyx_kwds);
16172  switch (pos_args) {
16173  case 0:
16174  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_period)) != 0)) kw_args--;
16175  else goto __pyx_L5_argtuple_error;
16176  CYTHON_FALLTHROUGH;
16177  case 1:
16178  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveHeight)) != 0)) kw_args--;
16179  else {
16180  __Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 16, 1); __PYX_ERR(0, 941, __pyx_L3_error)
16181  }
16182  CYTHON_FALLTHROUGH;
16183  case 2:
16184  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
16185  else {
16186  __Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 16, 2); __PYX_ERR(0, 941, __pyx_L3_error)
16187  }
16188  CYTHON_FALLTHROUGH;
16189  case 3:
16190  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
16191  else {
16192  __Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 16, 3); __PYX_ERR(0, 941, __pyx_L3_error)
16193  }
16194  CYTHON_FALLTHROUGH;
16195  case 4:
16196  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
16197  else {
16198  __Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 16, 4); __PYX_ERR(0, 941, __pyx_L3_error)
16199  }
16200  CYTHON_FALLTHROUGH;
16201  case 5:
16202  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
16203  else {
16204  __Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 16, 5); __PYX_ERR(0, 941, __pyx_L3_error)
16205  }
16206  CYTHON_FALLTHROUGH;
16207  case 6:
16208  if (kw_args > 0) {
16209  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wavelength);
16210  if (value) { values[6] = value; kw_args--; }
16211  }
16212  CYTHON_FALLTHROUGH;
16213  case 7:
16214  if (kw_args > 0) {
16215  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveType);
16216  if (value) { values[7] = value; kw_args--; }
16217  }
16218  CYTHON_FALLTHROUGH;
16219  case 8:
16220  if (kw_args > 0) {
16221  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_autoFenton);
16222  if (value) { values[8] = value; kw_args--; }
16223  }
16224  CYTHON_FALLTHROUGH;
16225  case 9:
16226  if (kw_args > 0) {
16227  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_autoFentonOpts);
16228  if (value) { values[9] = value; kw_args--; }
16229  }
16230  CYTHON_FALLTHROUGH;
16231  case 10:
16232  if (kw_args > 0) {
16233  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Ycoeff);
16234  if (value) { values[10] = value; kw_args--; }
16235  }
16236  CYTHON_FALLTHROUGH;
16237  case 11:
16238  if (kw_args > 0) {
16239  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Bcoeff);
16240  if (value) { values[11] = value; kw_args--; }
16241  }
16242  CYTHON_FALLTHROUGH;
16243  case 12:
16244  if (kw_args > 0) {
16245  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
16246  if (value) { values[12] = value; kw_args--; }
16247  }
16248  CYTHON_FALLTHROUGH;
16249  case 13:
16250  if (kw_args > 0) {
16251  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_meanVelocity);
16252  if (value) { values[13] = value; kw_args--; }
16253  }
16254  CYTHON_FALLTHROUGH;
16255  case 14:
16256  if (kw_args > 0) {
16257  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi0);
16258  if (value) { values[14] = value; kw_args--; }
16259  }
16260  CYTHON_FALLTHROUGH;
16261  case 15:
16262  if (kw_args > 0) {
16263  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
16264  if (value) { values[15] = value; kw_args--; }
16265  }
16266  }
16267  if (unlikely(kw_args > 0)) {
16268  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 941, __pyx_L3_error)
16269  }
16270  } else {
16271  switch (PyTuple_GET_SIZE(__pyx_args)) {
16272  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
16273  CYTHON_FALLTHROUGH;
16274  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
16275  CYTHON_FALLTHROUGH;
16276  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
16277  CYTHON_FALLTHROUGH;
16278  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
16279  CYTHON_FALLTHROUGH;
16280  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
16281  CYTHON_FALLTHROUGH;
16282  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
16283  CYTHON_FALLTHROUGH;
16284  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
16285  CYTHON_FALLTHROUGH;
16286  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
16287  CYTHON_FALLTHROUGH;
16288  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
16289  CYTHON_FALLTHROUGH;
16290  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
16291  CYTHON_FALLTHROUGH;
16292  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
16293  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
16294  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
16295  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16296  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16297  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16298  break;
16299  default: goto __pyx_L5_argtuple_error;
16300  }
16301  }
16302  __pyx_v_period = values[0];
16303  __pyx_v_waveHeight = values[1];
16304  __pyx_v_mwl = values[2];
16305  __pyx_v_depth = values[3];
16306  __pyx_v_g = values[4];
16307  __pyx_v_waveDir = values[5];
16308  __pyx_v_wavelength = values[6];
16309  __pyx_v_waveType = values[7];
16310  __pyx_v_autoFenton = values[8];
16311  __pyx_v_autoFentonOpts = values[9];
16312  __pyx_v_Ycoeff = values[10];
16313  __pyx_v_Bcoeff = values[11];
16314  __pyx_v_Nf = values[12];
16315  __pyx_v_meanVelocity = values[13];
16316  __pyx_v_phi0 = values[14];
16317  __pyx_v_fast = values[15];
16318  }
16319  goto __pyx_L4_argument_unpacking_done;
16320  __pyx_L5_argtuple_error:;
16321  __Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 941, __pyx_L3_error)
16322  __pyx_L3_error:;
16323  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16324  __Pyx_RefNannyFinishContext();
16325  return -1;
16326  __pyx_L4_argument_unpacking_done:;
16327  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves___init__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self), __pyx_v_period, __pyx_v_waveHeight, __pyx_v_mwl, __pyx_v_depth, __pyx_v_g, __pyx_v_waveDir, __pyx_v_wavelength, __pyx_v_waveType, __pyx_v_autoFenton, __pyx_v_autoFentonOpts, __pyx_v_Ycoeff, __pyx_v_Bcoeff, __pyx_v_Nf, __pyx_v_meanVelocity, __pyx_v_phi0, __pyx_v_fast);
16328 
16329  /* "WaveTools.py":941
16330  *
16331  * """
16332  * def __init__(self, # <<<<<<<<<<<<<<
16333  * period,
16334  * waveHeight,
16335  */
16336 
16337  /* function exit code */
16338  __Pyx_RefNannyFinishContext();
16339  return __pyx_r;
16340 }
16341 
16342 static int __pyx_pf_9WaveTools_18MonochromaticWaves___init__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_period, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_wavelength, PyObject *__pyx_v_waveType, PyObject *__pyx_v_autoFenton, PyObject *__pyx_v_autoFentonOpts, PyObject *__pyx_v_Ycoeff, PyObject *__pyx_v_Bcoeff, PyObject *__pyx_v_Nf, PyObject *__pyx_v_meanVelocity, PyObject *__pyx_v_phi0, PyObject *__pyx_v_fast) {
16343  PyObject *__pyx_v_knownWaveTypes = NULL;
16344  PyObject *__pyx_v_ii = NULL;
16345  PyObject *__pyx_v_kk = NULL;
16346  PyObject *__pyx_v_Fenton = NULL;
16347  PyObject *__pyx_v_comm = NULL;
16348  PyObject *__pyx_v_ij = NULL;
16349  int __pyx_r;
16350  __Pyx_RefNannyDeclarations
16351  int __pyx_t_1;
16352  int __pyx_t_2;
16353  PyObject *__pyx_t_3 = NULL;
16354  PyObject *__pyx_t_4 = NULL;
16355  PyObject *__pyx_t_5 = NULL;
16356  bool __pyx_t_6;
16357  PyObject *__pyx_t_7 = NULL;
16358  PyObject *__pyx_t_8 = NULL;
16359  double __pyx_t_9;
16360  int __pyx_t_10;
16361  PyObject *__pyx_t_11 = NULL;
16362  PyObject *__pyx_t_12 = NULL;
16363  PyObject *__pyx_t_13 = NULL;
16364  PyObject *__pyx_t_14 = NULL;
16365  Py_ssize_t __pyx_t_15;
16366  PyObject *(*__pyx_t_16)(PyObject *);
16367  PyObject *(*__pyx_t_17)(PyObject *);
16368  Py_ssize_t __pyx_t_18;
16369  double *__pyx_t_19;
16370  double (*__pyx_t_20)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double);
16371  void (*__pyx_t_21)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double);
16372  double (*__pyx_t_22)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double);
16373  void (*__pyx_t_23)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double);
16374  int __pyx_lineno = 0;
16375  const char *__pyx_filename = NULL;
16376  int __pyx_clineno = 0;
16377  __Pyx_RefNannySetupContext("__init__", 0);
16378  __Pyx_INCREF(__pyx_v_autoFentonOpts);
16379 
16380  /* "WaveTools.py":958
16381  * phi0 = 0.,
16382  * fast = True):
16383  * if waveType=="Fenton" and (autoFenton) and (Nf > 999): # <<<<<<<<<<<<<<
16384  * logEvent("ERROR!!: Number of Fourier modes is not set, please define a reasonable number of Fourier modes e.g. Nf = 12")
16385  * sys.exit(1)
16386  */
16387  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_waveType, __pyx_n_s_Fenton, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 958, __pyx_L1_error)
16388  if (__pyx_t_2) {
16389  } else {
16390  __pyx_t_1 = __pyx_t_2;
16391  goto __pyx_L4_bool_binop_done;
16392  }
16393  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_autoFenton); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 958, __pyx_L1_error)
16394  if (__pyx_t_2) {
16395  } else {
16396  __pyx_t_1 = __pyx_t_2;
16397  goto __pyx_L4_bool_binop_done;
16398  }
16399  __pyx_t_3 = PyObject_RichCompare(__pyx_v_Nf, __pyx_int_999, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 958, __pyx_L1_error)
16400  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 958, __pyx_L1_error)
16401  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16402  __pyx_t_1 = __pyx_t_2;
16403  __pyx_L4_bool_binop_done:;
16404  if (__pyx_t_1) {
16405 
16406  /* "WaveTools.py":959
16407  * fast = True):
16408  * if waveType=="Fenton" and (autoFenton) and (Nf > 999):
16409  * logEvent("ERROR!!: Number of Fourier modes is not set, please define a reasonable number of Fourier modes e.g. Nf = 12") # <<<<<<<<<<<<<<
16410  * sys.exit(1)
16411  *
16412  */
16413  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 959, __pyx_L1_error)
16414  __Pyx_GOTREF(__pyx_t_4);
16415  __pyx_t_5 = NULL;
16416  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
16417  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
16418  if (likely(__pyx_t_5)) {
16419  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
16420  __Pyx_INCREF(__pyx_t_5);
16421  __Pyx_INCREF(function);
16422  __Pyx_DECREF_SET(__pyx_t_4, function);
16423  }
16424  }
16425  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_ERROR_Number_of_Fourier_modes_is) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_ERROR_Number_of_Fourier_modes_is);
16426  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
16427  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 959, __pyx_L1_error)
16428  __Pyx_GOTREF(__pyx_t_3);
16429  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16430  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16431 
16432  /* "WaveTools.py":960
16433  * if waveType=="Fenton" and (autoFenton) and (Nf > 999):
16434  * logEvent("ERROR!!: Number of Fourier modes is not set, please define a reasonable number of Fourier modes e.g. Nf = 12")
16435  * sys.exit(1) # <<<<<<<<<<<<<<
16436  *
16437  * self.fast = fast
16438  */
16439  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 960, __pyx_L1_error)
16440  __Pyx_GOTREF(__pyx_t_4);
16441  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 960, __pyx_L1_error)
16442  __Pyx_GOTREF(__pyx_t_5);
16443  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16444  __pyx_t_4 = NULL;
16445  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
16446  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
16447  if (likely(__pyx_t_4)) {
16448  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
16449  __Pyx_INCREF(__pyx_t_4);
16450  __Pyx_INCREF(function);
16451  __Pyx_DECREF_SET(__pyx_t_5, function);
16452  }
16453  }
16454  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_1);
16455  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
16456  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error)
16457  __Pyx_GOTREF(__pyx_t_3);
16458  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16459  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16460 
16461  /* "WaveTools.py":958
16462  * phi0 = 0.,
16463  * fast = True):
16464  * if waveType=="Fenton" and (autoFenton) and (Nf > 999): # <<<<<<<<<<<<<<
16465  * logEvent("ERROR!!: Number of Fourier modes is not set, please define a reasonable number of Fourier modes e.g. Nf = 12")
16466  * sys.exit(1)
16467  */
16468  }
16469 
16470  /* "WaveTools.py":962
16471  * sys.exit(1)
16472  *
16473  * self.fast = fast # <<<<<<<<<<<<<<
16474  * knownWaveTypes = ["Linear","Fenton"]
16475  * self.waveType = waveType
16476  */
16477  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 962, __pyx_L1_error)
16478  __pyx_v_self->fast = __pyx_t_6;
16479 
16480  /* "WaveTools.py":963
16481  *
16482  * self.fast = fast
16483  * knownWaveTypes = ["Linear","Fenton"] # <<<<<<<<<<<<<<
16484  * self.waveType = waveType
16485  * if waveType not in knownWaveTypes:
16486  */
16487  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 963, __pyx_L1_error)
16488  __Pyx_GOTREF(__pyx_t_3);
16489  __Pyx_INCREF(__pyx_n_s_Linear);
16490  __Pyx_GIVEREF(__pyx_n_s_Linear);
16491  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Linear);
16492  __Pyx_INCREF(__pyx_n_s_Fenton);
16493  __Pyx_GIVEREF(__pyx_n_s_Fenton);
16494  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_Fenton);
16495  __pyx_v_knownWaveTypes = ((PyObject*)__pyx_t_3);
16496  __pyx_t_3 = 0;
16497 
16498  /* "WaveTools.py":964
16499  * self.fast = fast
16500  * knownWaveTypes = ["Linear","Fenton"]
16501  * self.waveType = waveType # <<<<<<<<<<<<<<
16502  * if waveType not in knownWaveTypes:
16503  * logEvent("ERROR!!: Wrong wavetype given: Valid wavetypes are %s" %(knownWaveTypes), level=0)
16504  */
16505  __Pyx_INCREF(__pyx_v_waveType);
16506  __Pyx_GIVEREF(__pyx_v_waveType);
16507  __Pyx_GOTREF(__pyx_v_self->waveType);
16508  __Pyx_DECREF(__pyx_v_self->waveType);
16509  __pyx_v_self->waveType = __pyx_v_waveType;
16510 
16511  /* "WaveTools.py":965
16512  * knownWaveTypes = ["Linear","Fenton"]
16513  * self.waveType = waveType
16514  * if waveType not in knownWaveTypes: # <<<<<<<<<<<<<<
16515  * logEvent("ERROR!!: Wrong wavetype given: Valid wavetypes are %s" %(knownWaveTypes), level=0)
16516  * sys.exit(1)
16517  */
16518  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_waveType, __pyx_v_knownWaveTypes, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 965, __pyx_L1_error)
16519  __pyx_t_2 = (__pyx_t_1 != 0);
16520  if (__pyx_t_2) {
16521 
16522  /* "WaveTools.py":966
16523  * self.waveType = waveType
16524  * if waveType not in knownWaveTypes:
16525  * logEvent("ERROR!!: Wrong wavetype given: Valid wavetypes are %s" %(knownWaveTypes), level=0) # <<<<<<<<<<<<<<
16526  * sys.exit(1)
16527  * self.g = np.array(g)
16528  */
16529  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 966, __pyx_L1_error)
16530  __Pyx_GOTREF(__pyx_t_3);
16531  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_ERROR_Wrong_wavetype_given_Valid, __pyx_v_knownWaveTypes); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 966, __pyx_L1_error)
16532  __Pyx_GOTREF(__pyx_t_5);
16533  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 966, __pyx_L1_error)
16534  __Pyx_GOTREF(__pyx_t_4);
16535  __Pyx_GIVEREF(__pyx_t_5);
16536  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
16537  __pyx_t_5 = 0;
16538  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 966, __pyx_L1_error)
16539  __Pyx_GOTREF(__pyx_t_5);
16540  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 966, __pyx_L1_error)
16541  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 966, __pyx_L1_error)
16542  __Pyx_GOTREF(__pyx_t_7);
16543  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16544  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16545  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16546  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16547 
16548  /* "WaveTools.py":967
16549  * if waveType not in knownWaveTypes:
16550  * logEvent("ERROR!!: Wrong wavetype given: Valid wavetypes are %s" %(knownWaveTypes), level=0)
16551  * sys.exit(1) # <<<<<<<<<<<<<<
16552  * self.g = np.array(g)
16553  * self.waveDir = setDirVector(np.array(waveDir))
16554  */
16555  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 967, __pyx_L1_error)
16556  __Pyx_GOTREF(__pyx_t_5);
16557  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 967, __pyx_L1_error)
16558  __Pyx_GOTREF(__pyx_t_4);
16559  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16560  __pyx_t_5 = NULL;
16561  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
16562  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
16563  if (likely(__pyx_t_5)) {
16564  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
16565  __Pyx_INCREF(__pyx_t_5);
16566  __Pyx_INCREF(function);
16567  __Pyx_DECREF_SET(__pyx_t_4, function);
16568  }
16569  }
16570  __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
16571  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
16572  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 967, __pyx_L1_error)
16573  __Pyx_GOTREF(__pyx_t_7);
16574  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16575  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16576 
16577  /* "WaveTools.py":965
16578  * knownWaveTypes = ["Linear","Fenton"]
16579  * self.waveType = waveType
16580  * if waveType not in knownWaveTypes: # <<<<<<<<<<<<<<
16581  * logEvent("ERROR!!: Wrong wavetype given: Valid wavetypes are %s" %(knownWaveTypes), level=0)
16582  * sys.exit(1)
16583  */
16584  }
16585 
16586  /* "WaveTools.py":968
16587  * logEvent("ERROR!!: Wrong wavetype given: Valid wavetypes are %s" %(knownWaveTypes), level=0)
16588  * sys.exit(1)
16589  * self.g = np.array(g) # <<<<<<<<<<<<<<
16590  * self.waveDir = setDirVector(np.array(waveDir))
16591  * self.vDir = setVertDir(g)
16592  */
16593  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 968, __pyx_L1_error)
16594  __Pyx_GOTREF(__pyx_t_4);
16595  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 968, __pyx_L1_error)
16596  __Pyx_GOTREF(__pyx_t_5);
16597  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16598  __pyx_t_4 = NULL;
16599  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
16600  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
16601  if (likely(__pyx_t_4)) {
16602  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
16603  __Pyx_INCREF(__pyx_t_4);
16604  __Pyx_INCREF(function);
16605  __Pyx_DECREF_SET(__pyx_t_5, function);
16606  }
16607  }
16608  __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g);
16609  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
16610  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 968, __pyx_L1_error)
16611  __Pyx_GOTREF(__pyx_t_7);
16612  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16613  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 968, __pyx_L1_error)
16614  __Pyx_GIVEREF(__pyx_t_7);
16615  __Pyx_GOTREF(__pyx_v_self->g);
16616  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
16617  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_7);
16618  __pyx_t_7 = 0;
16619 
16620  /* "WaveTools.py":969
16621  * sys.exit(1)
16622  * self.g = np.array(g)
16623  * self.waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
16624  * self.vDir = setVertDir(g)
16625  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
16626  */
16627  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 969, __pyx_L1_error)
16628  __Pyx_GOTREF(__pyx_t_5);
16629  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 969, __pyx_L1_error)
16630  __Pyx_GOTREF(__pyx_t_3);
16631  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 969, __pyx_L1_error)
16632  __Pyx_GOTREF(__pyx_t_8);
16633  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16634  __pyx_t_3 = NULL;
16635  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
16636  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
16637  if (likely(__pyx_t_3)) {
16638  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
16639  __Pyx_INCREF(__pyx_t_3);
16640  __Pyx_INCREF(function);
16641  __Pyx_DECREF_SET(__pyx_t_8, function);
16642  }
16643  }
16644  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_3, __pyx_v_waveDir) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_waveDir);
16645  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16646  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 969, __pyx_L1_error)
16647  __Pyx_GOTREF(__pyx_t_4);
16648  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16649  __pyx_t_8 = NULL;
16650  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
16651  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
16652  if (likely(__pyx_t_8)) {
16653  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
16654  __Pyx_INCREF(__pyx_t_8);
16655  __Pyx_INCREF(function);
16656  __Pyx_DECREF_SET(__pyx_t_5, function);
16657  }
16658  }
16659  __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4);
16660  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
16661  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16662  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 969, __pyx_L1_error)
16663  __Pyx_GOTREF(__pyx_t_7);
16664  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16665  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 969, __pyx_L1_error)
16666  __Pyx_GIVEREF(__pyx_t_7);
16667  __Pyx_GOTREF(__pyx_v_self->waveDir);
16668  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
16669  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_7);
16670  __pyx_t_7 = 0;
16671 
16672  /* "WaveTools.py":970
16673  * self.g = np.array(g)
16674  * self.waveDir = setDirVector(np.array(waveDir))
16675  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
16676  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
16677  *
16678  */
16679  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 970, __pyx_L1_error)
16680  __Pyx_GOTREF(__pyx_t_5);
16681  __pyx_t_4 = NULL;
16682  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
16683  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
16684  if (likely(__pyx_t_4)) {
16685  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
16686  __Pyx_INCREF(__pyx_t_4);
16687  __Pyx_INCREF(function);
16688  __Pyx_DECREF_SET(__pyx_t_5, function);
16689  }
16690  }
16691  __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g);
16692  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
16693  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 970, __pyx_L1_error)
16694  __Pyx_GOTREF(__pyx_t_7);
16695  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16696  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 970, __pyx_L1_error)
16697  __Pyx_GIVEREF(__pyx_t_7);
16698  __Pyx_GOTREF(__pyx_v_self->vDir);
16699  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
16700  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_7);
16701  __pyx_t_7 = 0;
16702 
16703  /* "WaveTools.py":971
16704  * self.waveDir = setDirVector(np.array(waveDir))
16705  * self.vDir = setVertDir(g)
16706  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
16707  *
16708  * #Checking if g and waveDir are perpendicular
16709  */
16710  __pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 971, __pyx_L1_error)
16711  __Pyx_GOTREF(__pyx_t_7);
16712  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 971, __pyx_L1_error)
16713  __Pyx_GOTREF(__pyx_t_5);
16714  __pyx_t_4 = PyNumber_Multiply(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 971, __pyx_L1_error)
16715  __Pyx_GOTREF(__pyx_t_4);
16716  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16717  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16718  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 971, __pyx_L1_error)
16719  __Pyx_GOTREF(__pyx_t_5);
16720  __pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 971, __pyx_L1_error)
16721  __Pyx_GOTREF(__pyx_t_7);
16722  __pyx_t_8 = PyNumber_Multiply(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 971, __pyx_L1_error)
16723  __Pyx_GOTREF(__pyx_t_8);
16724  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16725  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16726  __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 971, __pyx_L1_error)
16727  __Pyx_GOTREF(__pyx_t_7);
16728  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16729  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16730  __pyx_t_8 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 971, __pyx_L1_error)
16731  __Pyx_GOTREF(__pyx_t_8);
16732  __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 971, __pyx_L1_error)
16733  __Pyx_GOTREF(__pyx_t_4);
16734  __pyx_t_5 = PyNumber_Multiply(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 971, __pyx_L1_error)
16735  __Pyx_GOTREF(__pyx_t_5);
16736  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16737  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16738  __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 971, __pyx_L1_error)
16739  __Pyx_GOTREF(__pyx_t_4);
16740  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16741  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16742  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 971, __pyx_L1_error)
16743  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16744  __pyx_v_self->gAbs = sqrt(__pyx_t_9);
16745 
16746  /* "WaveTools.py":974
16747  *
16748  * #Checking if g and waveDir are perpendicular
16749  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
16750  * self.phi0=phi0
16751  * self.mwl = mwl
16752  */
16753  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_dirCheck); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 974, __pyx_L1_error)
16754  __Pyx_GOTREF(__pyx_t_5);
16755  __pyx_t_7 = NULL;
16756  __pyx_t_10 = 0;
16757  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
16758  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
16759  if (likely(__pyx_t_7)) {
16760  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
16761  __Pyx_INCREF(__pyx_t_7);
16762  __Pyx_INCREF(function);
16763  __Pyx_DECREF_SET(__pyx_t_5, function);
16764  __pyx_t_10 = 1;
16765  }
16766  }
16767  #if CYTHON_FAST_PYCALL
16768  if (PyFunction_Check(__pyx_t_5)) {
16769  PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
16770  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 974, __pyx_L1_error)
16771  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
16772  __Pyx_GOTREF(__pyx_t_4);
16773  } else
16774  #endif
16775  #if CYTHON_FAST_PYCCALL
16776  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
16777  PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
16778  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 974, __pyx_L1_error)
16779  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
16780  __Pyx_GOTREF(__pyx_t_4);
16781  } else
16782  #endif
16783  {
16784  __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 974, __pyx_L1_error)
16785  __Pyx_GOTREF(__pyx_t_8);
16786  if (__pyx_t_7) {
16787  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
16788  }
16789  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
16790  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->waveDir));
16791  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, ((PyObject *)__pyx_v_self->waveDir));
16792  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
16793  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->vDir));
16794  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, ((PyObject *)__pyx_v_self->vDir));
16795  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 974, __pyx_L1_error)
16796  __Pyx_GOTREF(__pyx_t_4);
16797  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16798  }
16799  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16800  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16801 
16802  /* "WaveTools.py":975
16803  * #Checking if g and waveDir are perpendicular
16804  * dirCheck(self.waveDir,self.vDir)
16805  * self.phi0=phi0 # <<<<<<<<<<<<<<
16806  * self.mwl = mwl
16807  * self.depth = depth
16808  */
16809  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_phi0); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 975, __pyx_L1_error)
16810  __pyx_v_self->phi0 = __pyx_t_9;
16811 
16812  /* "WaveTools.py":976
16813  * dirCheck(self.waveDir,self.vDir)
16814  * self.phi0=phi0
16815  * self.mwl = mwl # <<<<<<<<<<<<<<
16816  * self.depth = depth
16817  * self.omega = 2.0*M_PI/period
16818  */
16819  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 976, __pyx_L1_error)
16820  __pyx_v_self->mwl = __pyx_t_9;
16821 
16822  /* "WaveTools.py":977
16823  * self.phi0=phi0
16824  * self.mwl = mwl
16825  * self.depth = depth # <<<<<<<<<<<<<<
16826  * self.omega = 2.0*M_PI/period
16827  *
16828  */
16829  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 977, __pyx_L1_error)
16830  __pyx_v_self->depth = __pyx_t_9;
16831 
16832  /* "WaveTools.py":978
16833  * self.mwl = mwl
16834  * self.depth = depth
16835  * self.omega = 2.0*M_PI/period # <<<<<<<<<<<<<<
16836  *
16837  * self.Nf = Nf
16838  */
16839  __pyx_t_4 = PyFloat_FromDouble((2.0 * M_PI)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 978, __pyx_L1_error)
16840  __Pyx_GOTREF(__pyx_t_4);
16841  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_v_period); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 978, __pyx_L1_error)
16842  __Pyx_GOTREF(__pyx_t_5);
16843  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16844  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 978, __pyx_L1_error)
16845  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16846  __pyx_v_self->omega = __pyx_t_9;
16847 
16848  /* "WaveTools.py":980
16849  * self.omega = 2.0*M_PI/period
16850  *
16851  * self.Nf = Nf # <<<<<<<<<<<<<<
16852  * self.Ycoeff = Ycoeff
16853  * self.Bcoeff = Bcoeff
16854  */
16855  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_Nf); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 980, __pyx_L1_error)
16856  __pyx_v_self->Nf = __pyx_t_10;
16857 
16858  /* "WaveTools.py":981
16859  *
16860  * self.Nf = Nf
16861  * self.Ycoeff = Ycoeff # <<<<<<<<<<<<<<
16862  * self.Bcoeff = Bcoeff
16863  * self.tanhF = np.zeros(Nf,"d")
16864  */
16865  if (!(likely(((__pyx_v_Ycoeff) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_Ycoeff, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 981, __pyx_L1_error)
16866  __pyx_t_5 = __pyx_v_Ycoeff;
16867  __Pyx_INCREF(__pyx_t_5);
16868  __Pyx_GIVEREF(__pyx_t_5);
16869  __Pyx_GOTREF(__pyx_v_self->Ycoeff);
16870  __Pyx_DECREF(((PyObject *)__pyx_v_self->Ycoeff));
16871  __pyx_v_self->Ycoeff = ((PyArrayObject *)__pyx_t_5);
16872  __pyx_t_5 = 0;
16873 
16874  /* "WaveTools.py":982
16875  * self.Nf = Nf
16876  * self.Ycoeff = Ycoeff
16877  * self.Bcoeff = Bcoeff # <<<<<<<<<<<<<<
16878  * self.tanhF = np.zeros(Nf,"d")
16879  * #Calculating / checking wavelength data
16880  */
16881  if (!(likely(((__pyx_v_Bcoeff) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_Bcoeff, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 982, __pyx_L1_error)
16882  __pyx_t_5 = __pyx_v_Bcoeff;
16883  __Pyx_INCREF(__pyx_t_5);
16884  __Pyx_GIVEREF(__pyx_t_5);
16885  __Pyx_GOTREF(__pyx_v_self->Bcoeff);
16886  __Pyx_DECREF(((PyObject *)__pyx_v_self->Bcoeff));
16887  __pyx_v_self->Bcoeff = ((PyArrayObject *)__pyx_t_5);
16888  __pyx_t_5 = 0;
16889 
16890  /* "WaveTools.py":983
16891  * self.Ycoeff = Ycoeff
16892  * self.Bcoeff = Bcoeff
16893  * self.tanhF = np.zeros(Nf,"d") # <<<<<<<<<<<<<<
16894  * #Calculating / checking wavelength data
16895  * if waveType== "Linear":
16896  */
16897  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 983, __pyx_L1_error)
16898  __Pyx_GOTREF(__pyx_t_4);
16899  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 983, __pyx_L1_error)
16900  __Pyx_GOTREF(__pyx_t_8);
16901  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16902  __pyx_t_4 = NULL;
16903  __pyx_t_10 = 0;
16904  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
16905  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
16906  if (likely(__pyx_t_4)) {
16907  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
16908  __Pyx_INCREF(__pyx_t_4);
16909  __Pyx_INCREF(function);
16910  __Pyx_DECREF_SET(__pyx_t_8, function);
16911  __pyx_t_10 = 1;
16912  }
16913  }
16914  #if CYTHON_FAST_PYCALL
16915  if (PyFunction_Check(__pyx_t_8)) {
16916  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Nf, __pyx_n_s_d};
16917  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 983, __pyx_L1_error)
16918  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
16919  __Pyx_GOTREF(__pyx_t_5);
16920  } else
16921  #endif
16922  #if CYTHON_FAST_PYCCALL
16923  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
16924  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Nf, __pyx_n_s_d};
16925  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 983, __pyx_L1_error)
16926  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
16927  __Pyx_GOTREF(__pyx_t_5);
16928  } else
16929  #endif
16930  {
16931  __pyx_t_7 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 983, __pyx_L1_error)
16932  __Pyx_GOTREF(__pyx_t_7);
16933  if (__pyx_t_4) {
16934  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
16935  }
16936  __Pyx_INCREF(__pyx_v_Nf);
16937  __Pyx_GIVEREF(__pyx_v_Nf);
16938  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_10, __pyx_v_Nf);
16939  __Pyx_INCREF(__pyx_n_s_d);
16940  __Pyx_GIVEREF(__pyx_n_s_d);
16941  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_10, __pyx_n_s_d);
16942  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 983, __pyx_L1_error)
16943  __Pyx_GOTREF(__pyx_t_5);
16944  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16945  }
16946  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16947  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 983, __pyx_L1_error)
16948  __Pyx_GIVEREF(__pyx_t_5);
16949  __Pyx_GOTREF(__pyx_v_self->tanhF);
16950  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
16951  __pyx_v_self->tanhF = ((PyArrayObject *)__pyx_t_5);
16952  __pyx_t_5 = 0;
16953 
16954  /* "WaveTools.py":985
16955  * self.tanhF = np.zeros(Nf,"d")
16956  * #Calculating / checking wavelength data
16957  * if waveType== "Linear": # <<<<<<<<<<<<<<
16958  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
16959  * self.wavelength = 2.0*M_PI/self.k
16960  */
16961  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_waveType, __pyx_n_s_Linear, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 985, __pyx_L1_error)
16962  if (__pyx_t_2) {
16963 
16964  /* "WaveTools.py":986
16965  * #Calculating / checking wavelength data
16966  * if waveType== "Linear":
16967  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
16968  * self.wavelength = 2.0*M_PI/self.k
16969  * elif waveType == "Fenton":
16970  */
16971  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 986, __pyx_L1_error)
16972  __Pyx_GOTREF(__pyx_t_5);
16973  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 986, __pyx_L1_error)
16974  __Pyx_GOTREF(__pyx_t_8);
16975  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->omega); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 986, __pyx_L1_error)
16976  __Pyx_GOTREF(__pyx_t_7);
16977  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_w, __pyx_t_7) < 0) __PYX_ERR(0, 986, __pyx_L1_error)
16978  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16979  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 986, __pyx_L1_error)
16980  __Pyx_GOTREF(__pyx_t_7);
16981  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_d, __pyx_t_7) < 0) __PYX_ERR(0, 986, __pyx_L1_error)
16982  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16983  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 986, __pyx_L1_error)
16984  __Pyx_GOTREF(__pyx_t_7);
16985  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_g, __pyx_t_7) < 0) __PYX_ERR(0, 986, __pyx_L1_error)
16986  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16987  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 986, __pyx_L1_error)
16988  __Pyx_GOTREF(__pyx_t_7);
16989  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16990  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16991  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 986, __pyx_L1_error)
16992  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
16993  __pyx_v_self->k = __pyx_t_9;
16994 
16995  /* "WaveTools.py":987
16996  * if waveType== "Linear":
16997  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
16998  * self.wavelength = 2.0*M_PI/self.k # <<<<<<<<<<<<<<
16999  * elif waveType == "Fenton":
17000  * if autoFenton is False:
17001  */
17002  __pyx_t_9 = (2.0 * M_PI);
17003  if (unlikely(__pyx_v_self->k == 0)) {
17004  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
17005  __PYX_ERR(0, 987, __pyx_L1_error)
17006  }
17007  __pyx_v_self->wavelength = (__pyx_t_9 / __pyx_v_self->k);
17008 
17009  /* "WaveTools.py":985
17010  * self.tanhF = np.zeros(Nf,"d")
17011  * #Calculating / checking wavelength data
17012  * if waveType== "Linear": # <<<<<<<<<<<<<<
17013  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
17014  * self.wavelength = 2.0*M_PI/self.k
17015  */
17016  goto __pyx_L8;
17017  }
17018 
17019  /* "WaveTools.py":988
17020  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
17021  * self.wavelength = 2.0*M_PI/self.k
17022  * elif waveType == "Fenton": # <<<<<<<<<<<<<<
17023  * if autoFenton is False:
17024  * try:
17025  */
17026  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_waveType, __pyx_n_s_Fenton, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 988, __pyx_L1_error)
17027  if (__pyx_t_2) {
17028 
17029  /* "WaveTools.py":989
17030  * self.wavelength = 2.0*M_PI/self.k
17031  * elif waveType == "Fenton":
17032  * if autoFenton is False: # <<<<<<<<<<<<<<
17033  * try:
17034  * self.k = 2.0*M_PI/wavelength
17035  */
17036  __pyx_t_2 = (__pyx_v_autoFenton == Py_False);
17037  __pyx_t_1 = (__pyx_t_2 != 0);
17038  if (__pyx_t_1) {
17039 
17040  /* "WaveTools.py":990
17041  * elif waveType == "Fenton":
17042  * if autoFenton is False:
17043  * try: # <<<<<<<<<<<<<<
17044  * self.k = 2.0*M_PI/wavelength
17045  * self.wavelength=wavelength
17046  */
17047  {
17048  __Pyx_PyThreadState_declare
17049  __Pyx_PyThreadState_assign
17050  __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
17051  __Pyx_XGOTREF(__pyx_t_11);
17052  __Pyx_XGOTREF(__pyx_t_12);
17053  __Pyx_XGOTREF(__pyx_t_13);
17054  /*try:*/ {
17055 
17056  /* "WaveTools.py":991
17057  * if autoFenton is False:
17058  * try:
17059  * self.k = 2.0*M_PI/wavelength # <<<<<<<<<<<<<<
17060  * self.wavelength=wavelength
17061  * except:
17062  */
17063  __pyx_t_7 = PyFloat_FromDouble((2.0 * M_PI)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 991, __pyx_L10_error)
17064  __Pyx_GOTREF(__pyx_t_7);
17065  __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_v_wavelength); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 991, __pyx_L10_error)
17066  __Pyx_GOTREF(__pyx_t_8);
17067  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17068  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 991, __pyx_L10_error)
17069  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17070  __pyx_v_self->k = __pyx_t_9;
17071 
17072  /* "WaveTools.py":992
17073  * try:
17074  * self.k = 2.0*M_PI/wavelength
17075  * self.wavelength=wavelength # <<<<<<<<<<<<<<
17076  * except:
17077  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
17078  */
17079  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_wavelength); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 992, __pyx_L10_error)
17080  __pyx_v_self->wavelength = __pyx_t_9;
17081 
17082  /* "WaveTools.py":990
17083  * elif waveType == "Fenton":
17084  * if autoFenton is False:
17085  * try: # <<<<<<<<<<<<<<
17086  * self.k = 2.0*M_PI/wavelength
17087  * self.wavelength=wavelength
17088  */
17089  }
17090  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
17091  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
17092  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
17093  goto __pyx_L15_try_end;
17094  __pyx_L10_error:;
17095  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17096  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
17097  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17098  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17099  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17100 
17101  /* "WaveTools.py":993
17102  * self.k = 2.0*M_PI/wavelength
17103  * self.wavelength=wavelength
17104  * except: # <<<<<<<<<<<<<<
17105  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
17106  * sys.exit(1)
17107  */
17108  /*except:*/ {
17109  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17110  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_5) < 0) __PYX_ERR(0, 993, __pyx_L12_except_error)
17111  __Pyx_GOTREF(__pyx_t_8);
17112  __Pyx_GOTREF(__pyx_t_7);
17113  __Pyx_GOTREF(__pyx_t_5);
17114 
17115  /* "WaveTools.py":994
17116  * self.wavelength=wavelength
17117  * except:
17118  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0) # <<<<<<<<<<<<<<
17119  * sys.exit(1)
17120  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ):
17121  */
17122  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 994, __pyx_L12_except_error)
17123  __Pyx_GOTREF(__pyx_t_4);
17124  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 994, __pyx_L12_except_error)
17125  __Pyx_GOTREF(__pyx_t_3);
17126  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 994, __pyx_L12_except_error)
17127  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__16, __pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 994, __pyx_L12_except_error)
17128  __Pyx_GOTREF(__pyx_t_14);
17129  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17130  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17131  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17132 
17133  /* "WaveTools.py":995
17134  * except:
17135  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
17136  * sys.exit(1) # <<<<<<<<<<<<<<
17137  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ):
17138  * logEvent("ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero",level=0)
17139  */
17140  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 995, __pyx_L12_except_error)
17141  __Pyx_GOTREF(__pyx_t_3);
17142  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 995, __pyx_L12_except_error)
17143  __Pyx_GOTREF(__pyx_t_4);
17144  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17145  __pyx_t_3 = NULL;
17146  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
17147  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
17148  if (likely(__pyx_t_3)) {
17149  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
17150  __Pyx_INCREF(__pyx_t_3);
17151  __Pyx_INCREF(function);
17152  __Pyx_DECREF_SET(__pyx_t_4, function);
17153  }
17154  }
17155  __pyx_t_14 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
17156  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17157  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 995, __pyx_L12_except_error)
17158  __Pyx_GOTREF(__pyx_t_14);
17159  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17160  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17161  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17162  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17163  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17164  goto __pyx_L11_exception_handled;
17165  }
17166  __pyx_L12_except_error:;
17167 
17168  /* "WaveTools.py":990
17169  * elif waveType == "Fenton":
17170  * if autoFenton is False:
17171  * try: # <<<<<<<<<<<<<<
17172  * self.k = 2.0*M_PI/wavelength
17173  * self.wavelength=wavelength
17174  */
17175  __Pyx_XGIVEREF(__pyx_t_11);
17176  __Pyx_XGIVEREF(__pyx_t_12);
17177  __Pyx_XGIVEREF(__pyx_t_13);
17178  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
17179  goto __pyx_L1_error;
17180  __pyx_L11_exception_handled:;
17181  __Pyx_XGIVEREF(__pyx_t_11);
17182  __Pyx_XGIVEREF(__pyx_t_12);
17183  __Pyx_XGIVEREF(__pyx_t_13);
17184  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
17185  __pyx_L15_try_end:;
17186  }
17187 
17188  /* "WaveTools.py":996
17189  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
17190  * sys.exit(1)
17191  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ): # <<<<<<<<<<<<<<
17192  * logEvent("ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero",level=0)
17193  * sys.exit(1)
17194  */
17195  __pyx_t_5 = ((PyObject *)__pyx_v_self->Ycoeff);
17196  __Pyx_INCREF(__pyx_t_5);
17197  __pyx_t_15 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 996, __pyx_L1_error)
17198  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17199  __pyx_t_2 = ((__pyx_t_15 != __pyx_v_self->Nf) != 0);
17200  if (!__pyx_t_2) {
17201  } else {
17202  __pyx_t_1 = __pyx_t_2;
17203  goto __pyx_L19_bool_binop_done;
17204  }
17205  __pyx_t_5 = ((PyObject *)__pyx_v_self->Bcoeff);
17206  __Pyx_INCREF(__pyx_t_5);
17207  __pyx_t_15 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 996, __pyx_L1_error)
17208  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17209  __pyx_t_2 = ((__pyx_t_15 != __pyx_v_self->Nf) != 0);
17210  if (!__pyx_t_2) {
17211  } else {
17212  __pyx_t_1 = __pyx_t_2;
17213  goto __pyx_L19_bool_binop_done;
17214  }
17215  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_Ycoeff, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 996, __pyx_L1_error)
17216  __Pyx_GOTREF(__pyx_t_5);
17217  __pyx_t_7 = __Pyx_PyFloat_EqObjC(__pyx_t_5, __pyx_float_0_, 0., 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 996, __pyx_L1_error)
17218  __Pyx_GOTREF(__pyx_t_7);
17219  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17220  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 996, __pyx_L1_error)
17221  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17222  if (!__pyx_t_2) {
17223  } else {
17224  __pyx_t_1 = __pyx_t_2;
17225  goto __pyx_L19_bool_binop_done;
17226  }
17227  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_Bcoeff, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 996, __pyx_L1_error)
17228  __Pyx_GOTREF(__pyx_t_7);
17229  __pyx_t_5 = __Pyx_PyFloat_EqObjC(__pyx_t_7, __pyx_float_0_, 0., 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 996, __pyx_L1_error)
17230  __Pyx_GOTREF(__pyx_t_5);
17231  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17232  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 996, __pyx_L1_error)
17233  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17234  __pyx_t_1 = __pyx_t_2;
17235  __pyx_L19_bool_binop_done:;
17236  if (__pyx_t_1) {
17237 
17238  /* "WaveTools.py":997
17239  * sys.exit(1)
17240  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ):
17241  * logEvent("ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero",level=0) # <<<<<<<<<<<<<<
17242  * sys.exit(1)
17243  * else:
17244  */
17245  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 997, __pyx_L1_error)
17246  __Pyx_GOTREF(__pyx_t_5);
17247  __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 997, __pyx_L1_error)
17248  __Pyx_GOTREF(__pyx_t_7);
17249  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 997, __pyx_L1_error)
17250  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__17, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 997, __pyx_L1_error)
17251  __Pyx_GOTREF(__pyx_t_8);
17252  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17253  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17254  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17255 
17256  /* "WaveTools.py":998
17257  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ):
17258  * logEvent("ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero",level=0)
17259  * sys.exit(1) # <<<<<<<<<<<<<<
17260  * else:
17261  * for ii in range(len(self.tanhF)):
17262  */
17263  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 998, __pyx_L1_error)
17264  __Pyx_GOTREF(__pyx_t_7);
17265  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 998, __pyx_L1_error)
17266  __Pyx_GOTREF(__pyx_t_5);
17267  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17268  __pyx_t_7 = NULL;
17269  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
17270  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
17271  if (likely(__pyx_t_7)) {
17272  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
17273  __Pyx_INCREF(__pyx_t_7);
17274  __Pyx_INCREF(function);
17275  __Pyx_DECREF_SET(__pyx_t_5, function);
17276  }
17277  }
17278  __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_1);
17279  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17280  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 998, __pyx_L1_error)
17281  __Pyx_GOTREF(__pyx_t_8);
17282  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17283  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17284 
17285  /* "WaveTools.py":996
17286  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
17287  * sys.exit(1)
17288  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ): # <<<<<<<<<<<<<<
17289  * logEvent("ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero",level=0)
17290  * sys.exit(1)
17291  */
17292  goto __pyx_L18;
17293  }
17294 
17295  /* "WaveTools.py":1000
17296  * sys.exit(1)
17297  * else:
17298  * for ii in range(len(self.tanhF)): # <<<<<<<<<<<<<<
17299  * kk = (ii+1)*self.k
17300  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
17301  */
17302  /*else*/ {
17303  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_range); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1000, __pyx_L1_error)
17304  __Pyx_GOTREF(__pyx_t_5);
17305  __pyx_t_7 = ((PyObject *)__pyx_v_self->tanhF);
17306  __Pyx_INCREF(__pyx_t_7);
17307  __pyx_t_15 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1000, __pyx_L1_error)
17308  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17309  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1000, __pyx_L1_error)
17310  __Pyx_GOTREF(__pyx_t_7);
17311  __pyx_t_14 = NULL;
17312  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
17313  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
17314  if (likely(__pyx_t_14)) {
17315  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
17316  __Pyx_INCREF(__pyx_t_14);
17317  __Pyx_INCREF(function);
17318  __Pyx_DECREF_SET(__pyx_t_5, function);
17319  }
17320  }
17321  __pyx_t_8 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_14, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7);
17322  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
17323  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17324  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1000, __pyx_L1_error)
17325  __Pyx_GOTREF(__pyx_t_8);
17326  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17327  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
17328  __pyx_t_5 = __pyx_t_8; __Pyx_INCREF(__pyx_t_5); __pyx_t_15 = 0;
17329  __pyx_t_16 = NULL;
17330  } else {
17331  __pyx_t_15 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1000, __pyx_L1_error)
17332  __Pyx_GOTREF(__pyx_t_5);
17333  __pyx_t_16 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1000, __pyx_L1_error)
17334  }
17335  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17336  for (;;) {
17337  if (likely(!__pyx_t_16)) {
17338  if (likely(PyList_CheckExact(__pyx_t_5))) {
17339  if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_5)) break;
17340  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
17341  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_15); __Pyx_INCREF(__pyx_t_8); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error)
17342  #else
17343  __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1000, __pyx_L1_error)
17344  __Pyx_GOTREF(__pyx_t_8);
17345  #endif
17346  } else {
17347  if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
17348  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
17349  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_15); __Pyx_INCREF(__pyx_t_8); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1000, __pyx_L1_error)
17350  #else
17351  __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1000, __pyx_L1_error)
17352  __Pyx_GOTREF(__pyx_t_8);
17353  #endif
17354  }
17355  } else {
17356  __pyx_t_8 = __pyx_t_16(__pyx_t_5);
17357  if (unlikely(!__pyx_t_8)) {
17358  PyObject* exc_type = PyErr_Occurred();
17359  if (exc_type) {
17360  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
17361  else __PYX_ERR(0, 1000, __pyx_L1_error)
17362  }
17363  break;
17364  }
17365  __Pyx_GOTREF(__pyx_t_8);
17366  }
17367  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_8);
17368  __pyx_t_8 = 0;
17369 
17370  /* "WaveTools.py":1001
17371  * else:
17372  * for ii in range(len(self.tanhF)):
17373  * kk = (ii+1)*self.k # <<<<<<<<<<<<<<
17374  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
17375  * elif autoFenton is True:
17376  */
17377  __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_v_ii, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1001, __pyx_L1_error)
17378  __Pyx_GOTREF(__pyx_t_8);
17379  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1001, __pyx_L1_error)
17380  __Pyx_GOTREF(__pyx_t_7);
17381  __pyx_t_14 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1001, __pyx_L1_error)
17382  __Pyx_GOTREF(__pyx_t_14);
17383  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17384  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17385  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_14);
17386  __pyx_t_14 = 0;
17387 
17388  /* "WaveTools.py":1002
17389  * for ii in range(len(self.tanhF)):
17390  * kk = (ii+1)*self.k
17391  * self.tanhF[ii] = float(np.tanh(kk*self.depth) ) # <<<<<<<<<<<<<<
17392  * elif autoFenton is True:
17393  * from proteus.fenton import Fenton
17394  */
17395  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1002, __pyx_L1_error)
17396  __Pyx_GOTREF(__pyx_t_7);
17397  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_tanh); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1002, __pyx_L1_error)
17398  __Pyx_GOTREF(__pyx_t_8);
17399  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17400  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1002, __pyx_L1_error)
17401  __Pyx_GOTREF(__pyx_t_7);
17402  __pyx_t_4 = PyNumber_Multiply(__pyx_v_kk, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1002, __pyx_L1_error)
17403  __Pyx_GOTREF(__pyx_t_4);
17404  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17405  __pyx_t_7 = NULL;
17406  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
17407  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
17408  if (likely(__pyx_t_7)) {
17409  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
17410  __Pyx_INCREF(__pyx_t_7);
17411  __Pyx_INCREF(function);
17412  __Pyx_DECREF_SET(__pyx_t_8, function);
17413  }
17414  }
17415  __pyx_t_14 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4);
17416  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17417  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17418  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1002, __pyx_L1_error)
17419  __Pyx_GOTREF(__pyx_t_14);
17420  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17421  __pyx_t_8 = __Pyx_PyNumber_Float(__pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1002, __pyx_L1_error)
17422  __Pyx_GOTREF(__pyx_t_8);
17423  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17424  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->tanhF), __pyx_v_ii, __pyx_t_8) < 0)) __PYX_ERR(0, 1002, __pyx_L1_error)
17425  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17426 
17427  /* "WaveTools.py":1000
17428  * sys.exit(1)
17429  * else:
17430  * for ii in range(len(self.tanhF)): # <<<<<<<<<<<<<<
17431  * kk = (ii+1)*self.k
17432  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
17433  */
17434  }
17435  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17436  }
17437  __pyx_L18:;
17438 
17439  /* "WaveTools.py":989
17440  * self.wavelength = 2.0*M_PI/self.k
17441  * elif waveType == "Fenton":
17442  * if autoFenton is False: # <<<<<<<<<<<<<<
17443  * try:
17444  * self.k = 2.0*M_PI/wavelength
17445  */
17446  goto __pyx_L9;
17447  }
17448 
17449  /* "WaveTools.py":1003
17450  * kk = (ii+1)*self.k
17451  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
17452  * elif autoFenton is True: # <<<<<<<<<<<<<<
17453  * from proteus.fenton import Fenton
17454  * comm = Comm.get()
17455  */
17456  __pyx_t_1 = (__pyx_v_autoFenton == Py_True);
17457  __pyx_t_2 = (__pyx_t_1 != 0);
17458  if (__pyx_t_2) {
17459 
17460  /* "WaveTools.py":1004
17461  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
17462  * elif autoFenton is True:
17463  * from proteus.fenton import Fenton # <<<<<<<<<<<<<<
17464  * comm = Comm.get()
17465  * if comm.isMaster():
17466  */
17467  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1004, __pyx_L1_error)
17468  __Pyx_GOTREF(__pyx_t_5);
17469  __Pyx_INCREF(__pyx_n_s_Fenton);
17470  __Pyx_GIVEREF(__pyx_n_s_Fenton);
17471  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_n_s_Fenton);
17472  __pyx_t_8 = __Pyx_Import(__pyx_n_s_proteus_fenton, __pyx_t_5, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1004, __pyx_L1_error)
17473  __Pyx_GOTREF(__pyx_t_8);
17474  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17475  __pyx_t_5 = __Pyx_ImportFrom(__pyx_t_8, __pyx_n_s_Fenton); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1004, __pyx_L1_error)
17476  __Pyx_GOTREF(__pyx_t_5);
17477  __Pyx_INCREF(__pyx_t_5);
17478  __pyx_v_Fenton = __pyx_t_5;
17479  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17480  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17481 
17482  /* "WaveTools.py":1005
17483  * elif autoFenton is True:
17484  * from proteus.fenton import Fenton
17485  * comm = Comm.get() # <<<<<<<<<<<<<<
17486  * if comm.isMaster():
17487  * if autoFentonOpts is None:
17488  */
17489  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Comm); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1005, __pyx_L1_error)
17490  __Pyx_GOTREF(__pyx_t_5);
17491  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_get); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1005, __pyx_L1_error)
17492  __Pyx_GOTREF(__pyx_t_14);
17493  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17494  __pyx_t_5 = NULL;
17495  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
17496  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_14);
17497  if (likely(__pyx_t_5)) {
17498  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
17499  __Pyx_INCREF(__pyx_t_5);
17500  __Pyx_INCREF(function);
17501  __Pyx_DECREF_SET(__pyx_t_14, function);
17502  }
17503  }
17504  __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
17505  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17506  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1005, __pyx_L1_error)
17507  __Pyx_GOTREF(__pyx_t_8);
17508  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17509  __pyx_v_comm = __pyx_t_8;
17510  __pyx_t_8 = 0;
17511 
17512  /* "WaveTools.py":1006
17513  * from proteus.fenton import Fenton
17514  * comm = Comm.get()
17515  * if comm.isMaster(): # <<<<<<<<<<<<<<
17516  * if autoFentonOpts is None:
17517  * autoFentonOpts = {'mode': 'Period',
17518  */
17519  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_comm, __pyx_n_s_isMaster); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1006, __pyx_L1_error)
17520  __Pyx_GOTREF(__pyx_t_14);
17521  __pyx_t_5 = NULL;
17522  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
17523  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_14);
17524  if (likely(__pyx_t_5)) {
17525  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
17526  __Pyx_INCREF(__pyx_t_5);
17527  __Pyx_INCREF(function);
17528  __Pyx_DECREF_SET(__pyx_t_14, function);
17529  }
17530  }
17531  __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
17532  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17533  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1006, __pyx_L1_error)
17534  __Pyx_GOTREF(__pyx_t_8);
17535  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17536  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1006, __pyx_L1_error)
17537  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17538  if (__pyx_t_2) {
17539 
17540  /* "WaveTools.py":1007
17541  * comm = Comm.get()
17542  * if comm.isMaster():
17543  * if autoFentonOpts is None: # <<<<<<<<<<<<<<
17544  * autoFentonOpts = {'mode': 'Period',
17545  * 'current_criterion': 1,
17546  */
17547  __pyx_t_2 = (__pyx_v_autoFentonOpts == Py_None);
17548  __pyx_t_1 = (__pyx_t_2 != 0);
17549  if (__pyx_t_1) {
17550 
17551  /* "WaveTools.py":1008
17552  * if comm.isMaster():
17553  * if autoFentonOpts is None:
17554  * autoFentonOpts = {'mode': 'Period', # <<<<<<<<<<<<<<
17555  * 'current_criterion': 1,
17556  * 'height_steps': 1,
17557  */
17558  __pyx_t_8 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1008, __pyx_L1_error)
17559  __Pyx_GOTREF(__pyx_t_8);
17560  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_mode, __pyx_n_s_Period) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17561  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_current_criterion, __pyx_int_1) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17562  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_height_steps, __pyx_int_1) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17563  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_niter, __pyx_int_40) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17564  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_conv_crit, __pyx_float_1eneg_05) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17565  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_points_freesurface, __pyx_int_50) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17566  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_points_velocity, __pyx_int_16) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17567  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_points_vertical, __pyx_int_20) < 0) __PYX_ERR(0, 1008, __pyx_L1_error)
17568  __Pyx_DECREF_SET(__pyx_v_autoFentonOpts, __pyx_t_8);
17569  __pyx_t_8 = 0;
17570 
17571  /* "WaveTools.py":1007
17572  * comm = Comm.get()
17573  * if comm.isMaster():
17574  * if autoFentonOpts is None: # <<<<<<<<<<<<<<
17575  * autoFentonOpts = {'mode': 'Period',
17576  * 'current_criterion': 1,
17577  */
17578  }
17579 
17580  /* "WaveTools.py":1016
17581  * 'points_velocity': 16,
17582  * 'points_vertical': 20}
17583  * Fenton.writeInput(waveheight=waveHeight, # <<<<<<<<<<<<<<
17584  * depth=depth,
17585  * period=period,
17586  */
17587  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_Fenton, __pyx_n_s_writeInput); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1016, __pyx_L1_error)
17588  __Pyx_GOTREF(__pyx_t_8);
17589  __pyx_t_14 = __Pyx_PyDict_NewPresized(14); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1016, __pyx_L1_error)
17590  __Pyx_GOTREF(__pyx_t_14);
17591  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_waveheight, __pyx_v_waveHeight) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17592 
17593  /* "WaveTools.py":1017
17594  * 'points_vertical': 20}
17595  * Fenton.writeInput(waveheight=waveHeight,
17596  * depth=depth, # <<<<<<<<<<<<<<
17597  * period=period,
17598  * mode=autoFentonOpts['mode'],
17599  */
17600  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_depth, __pyx_v_depth) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17601 
17602  /* "WaveTools.py":1018
17603  * Fenton.writeInput(waveheight=waveHeight,
17604  * depth=depth,
17605  * period=period, # <<<<<<<<<<<<<<
17606  * mode=autoFentonOpts['mode'],
17607  * current_criterion=autoFentonOpts['current_criterion'],
17608  */
17609  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_period, __pyx_v_period) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17610 
17611  /* "WaveTools.py":1019
17612  * depth=depth,
17613  * period=period,
17614  * mode=autoFentonOpts['mode'], # <<<<<<<<<<<<<<
17615  * current_criterion=autoFentonOpts['current_criterion'],
17616  * current_magnitude=0,
17617  */
17618  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1019, __pyx_L1_error)
17619  __Pyx_GOTREF(__pyx_t_5);
17620  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_mode, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17621  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17622 
17623  /* "WaveTools.py":1020
17624  * period=period,
17625  * mode=autoFentonOpts['mode'],
17626  * current_criterion=autoFentonOpts['current_criterion'], # <<<<<<<<<<<<<<
17627  * current_magnitude=0,
17628  * ncoeffs=Nf,
17629  */
17630  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_current_criterion); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1020, __pyx_L1_error)
17631  __Pyx_GOTREF(__pyx_t_5);
17632  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_current_criterion, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17633  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17634  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_current_magnitude, __pyx_int_0) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17635 
17636  /* "WaveTools.py":1022
17637  * current_criterion=autoFentonOpts['current_criterion'],
17638  * current_magnitude=0,
17639  * ncoeffs=Nf, # <<<<<<<<<<<<<<
17640  * height_steps=autoFentonOpts['height_steps'],
17641  * g=np.linalg.norm(g),
17642  */
17643  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_ncoeffs, __pyx_v_Nf) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17644 
17645  /* "WaveTools.py":1023
17646  * current_magnitude=0,
17647  * ncoeffs=Nf,
17648  * height_steps=autoFentonOpts['height_steps'], # <<<<<<<<<<<<<<
17649  * g=np.linalg.norm(g),
17650  * niter=autoFentonOpts['niter'],
17651  */
17652  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_height_steps); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1023, __pyx_L1_error)
17653  __Pyx_GOTREF(__pyx_t_5);
17654  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_height_steps, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17655  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17656 
17657  /* "WaveTools.py":1024
17658  * ncoeffs=Nf,
17659  * height_steps=autoFentonOpts['height_steps'],
17660  * g=np.linalg.norm(g), # <<<<<<<<<<<<<<
17661  * niter=autoFentonOpts['niter'],
17662  * conv_crit=autoFentonOpts['conv_crit'],
17663  */
17664  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1024, __pyx_L1_error)
17665  __Pyx_GOTREF(__pyx_t_4);
17666  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_linalg); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1024, __pyx_L1_error)
17667  __Pyx_GOTREF(__pyx_t_7);
17668  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17669  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_norm); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1024, __pyx_L1_error)
17670  __Pyx_GOTREF(__pyx_t_4);
17671  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17672  __pyx_t_7 = NULL;
17673  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
17674  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
17675  if (likely(__pyx_t_7)) {
17676  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
17677  __Pyx_INCREF(__pyx_t_7);
17678  __Pyx_INCREF(function);
17679  __Pyx_DECREF_SET(__pyx_t_4, function);
17680  }
17681  }
17682  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_g);
17683  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17684  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1024, __pyx_L1_error)
17685  __Pyx_GOTREF(__pyx_t_5);
17686  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17687  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_g, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17688  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17689 
17690  /* "WaveTools.py":1025
17691  * height_steps=autoFentonOpts['height_steps'],
17692  * g=np.linalg.norm(g),
17693  * niter=autoFentonOpts['niter'], # <<<<<<<<<<<<<<
17694  * conv_crit=autoFentonOpts['conv_crit'],
17695  * points_freesurface=autoFentonOpts['points_freesurface'],
17696  */
17697  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_niter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1025, __pyx_L1_error)
17698  __Pyx_GOTREF(__pyx_t_5);
17699  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_niter, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17700  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17701 
17702  /* "WaveTools.py":1026
17703  * g=np.linalg.norm(g),
17704  * niter=autoFentonOpts['niter'],
17705  * conv_crit=autoFentonOpts['conv_crit'], # <<<<<<<<<<<<<<
17706  * points_freesurface=autoFentonOpts['points_freesurface'],
17707  * points_velocity=autoFentonOpts['points_velocity'],
17708  */
17709  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_conv_crit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1026, __pyx_L1_error)
17710  __Pyx_GOTREF(__pyx_t_5);
17711  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_conv_crit, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17712  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17713 
17714  /* "WaveTools.py":1027
17715  * niter=autoFentonOpts['niter'],
17716  * conv_crit=autoFentonOpts['conv_crit'],
17717  * points_freesurface=autoFentonOpts['points_freesurface'], # <<<<<<<<<<<<<<
17718  * points_velocity=autoFentonOpts['points_velocity'],
17719  * points_vertical=autoFentonOpts['points_vertical'])
17720  */
17721  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_points_freesurface); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1027, __pyx_L1_error)
17722  __Pyx_GOTREF(__pyx_t_5);
17723  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_points_freesurface, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17724  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17725 
17726  /* "WaveTools.py":1028
17727  * conv_crit=autoFentonOpts['conv_crit'],
17728  * points_freesurface=autoFentonOpts['points_freesurface'],
17729  * points_velocity=autoFentonOpts['points_velocity'], # <<<<<<<<<<<<<<
17730  * points_vertical=autoFentonOpts['points_vertical'])
17731  * Fenton.runFourier()
17732  */
17733  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_points_velocity); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1028, __pyx_L1_error)
17734  __Pyx_GOTREF(__pyx_t_5);
17735  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_points_velocity, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17736  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17737 
17738  /* "WaveTools.py":1029
17739  * points_freesurface=autoFentonOpts['points_freesurface'],
17740  * points_velocity=autoFentonOpts['points_velocity'],
17741  * points_vertical=autoFentonOpts['points_vertical']) # <<<<<<<<<<<<<<
17742  * Fenton.runFourier()
17743  * Fenton.copyFiles()
17744  */
17745  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_autoFentonOpts, __pyx_n_s_points_vertical); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1029, __pyx_L1_error)
17746  __Pyx_GOTREF(__pyx_t_5);
17747  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_points_vertical, __pyx_t_5) < 0) __PYX_ERR(0, 1016, __pyx_L1_error)
17748  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17749 
17750  /* "WaveTools.py":1016
17751  * 'points_velocity': 16,
17752  * 'points_vertical': 20}
17753  * Fenton.writeInput(waveheight=waveHeight, # <<<<<<<<<<<<<<
17754  * depth=depth,
17755  * period=period,
17756  */
17757  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1016, __pyx_L1_error)
17758  __Pyx_GOTREF(__pyx_t_5);
17759  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17760  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17761  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17762 
17763  /* "WaveTools.py":1030
17764  * points_velocity=autoFentonOpts['points_velocity'],
17765  * points_vertical=autoFentonOpts['points_vertical'])
17766  * Fenton.runFourier() # <<<<<<<<<<<<<<
17767  * Fenton.copyFiles()
17768  * comm.barrier()
17769  */
17770  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Fenton, __pyx_n_s_runFourier); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1030, __pyx_L1_error)
17771  __Pyx_GOTREF(__pyx_t_14);
17772  __pyx_t_8 = NULL;
17773  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
17774  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_14);
17775  if (likely(__pyx_t_8)) {
17776  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
17777  __Pyx_INCREF(__pyx_t_8);
17778  __Pyx_INCREF(function);
17779  __Pyx_DECREF_SET(__pyx_t_14, function);
17780  }
17781  }
17782  __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
17783  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17784  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1030, __pyx_L1_error)
17785  __Pyx_GOTREF(__pyx_t_5);
17786  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17787  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17788 
17789  /* "WaveTools.py":1031
17790  * points_vertical=autoFentonOpts['points_vertical'])
17791  * Fenton.runFourier()
17792  * Fenton.copyFiles() # <<<<<<<<<<<<<<
17793  * comm.barrier()
17794  * self.Bcoeff, self.Ycoeff = Fenton.getBYCoeffs()
17795  */
17796  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Fenton, __pyx_n_s_copyFiles); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1031, __pyx_L1_error)
17797  __Pyx_GOTREF(__pyx_t_14);
17798  __pyx_t_8 = NULL;
17799  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
17800  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_14);
17801  if (likely(__pyx_t_8)) {
17802  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
17803  __Pyx_INCREF(__pyx_t_8);
17804  __Pyx_INCREF(function);
17805  __Pyx_DECREF_SET(__pyx_t_14, function);
17806  }
17807  }
17808  __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
17809  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17810  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1031, __pyx_L1_error)
17811  __Pyx_GOTREF(__pyx_t_5);
17812  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17813  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17814 
17815  /* "WaveTools.py":1006
17816  * from proteus.fenton import Fenton
17817  * comm = Comm.get()
17818  * if comm.isMaster(): # <<<<<<<<<<<<<<
17819  * if autoFentonOpts is None:
17820  * autoFentonOpts = {'mode': 'Period',
17821  */
17822  }
17823 
17824  /* "WaveTools.py":1032
17825  * Fenton.runFourier()
17826  * Fenton.copyFiles()
17827  * comm.barrier() # <<<<<<<<<<<<<<
17828  * self.Bcoeff, self.Ycoeff = Fenton.getBYCoeffs()
17829  * self.wavelength = Fenton.getWavelength()*depth
17830  */
17831  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_comm, __pyx_n_s_barrier); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1032, __pyx_L1_error)
17832  __Pyx_GOTREF(__pyx_t_14);
17833  __pyx_t_8 = NULL;
17834  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
17835  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_14);
17836  if (likely(__pyx_t_8)) {
17837  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
17838  __Pyx_INCREF(__pyx_t_8);
17839  __Pyx_INCREF(function);
17840  __Pyx_DECREF_SET(__pyx_t_14, function);
17841  }
17842  }
17843  __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
17844  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17845  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1032, __pyx_L1_error)
17846  __Pyx_GOTREF(__pyx_t_5);
17847  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17848  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17849 
17850  /* "WaveTools.py":1033
17851  * Fenton.copyFiles()
17852  * comm.barrier()
17853  * self.Bcoeff, self.Ycoeff = Fenton.getBYCoeffs() # <<<<<<<<<<<<<<
17854  * self.wavelength = Fenton.getWavelength()*depth
17855  * self.k = 2.0*M_PI/self.wavelength
17856  */
17857  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Fenton, __pyx_n_s_getBYCoeffs); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1033, __pyx_L1_error)
17858  __Pyx_GOTREF(__pyx_t_14);
17859  __pyx_t_8 = NULL;
17860  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
17861  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_14);
17862  if (likely(__pyx_t_8)) {
17863  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
17864  __Pyx_INCREF(__pyx_t_8);
17865  __Pyx_INCREF(function);
17866  __Pyx_DECREF_SET(__pyx_t_14, function);
17867  }
17868  }
17869  __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
17870  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17871  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1033, __pyx_L1_error)
17872  __Pyx_GOTREF(__pyx_t_5);
17873  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17874  if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
17875  PyObject* sequence = __pyx_t_5;
17876  Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
17877  if (unlikely(size != 2)) {
17878  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
17879  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
17880  __PYX_ERR(0, 1033, __pyx_L1_error)
17881  }
17882  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
17883  if (likely(PyTuple_CheckExact(sequence))) {
17884  __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0);
17885  __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
17886  } else {
17887  __pyx_t_14 = PyList_GET_ITEM(sequence, 0);
17888  __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
17889  }
17890  __Pyx_INCREF(__pyx_t_14);
17891  __Pyx_INCREF(__pyx_t_8);
17892  #else
17893  __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1033, __pyx_L1_error)
17894  __Pyx_GOTREF(__pyx_t_14);
17895  __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1033, __pyx_L1_error)
17896  __Pyx_GOTREF(__pyx_t_8);
17897  #endif
17898  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17899  } else {
17900  Py_ssize_t index = -1;
17901  __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1033, __pyx_L1_error)
17902  __Pyx_GOTREF(__pyx_t_4);
17903  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17904  __pyx_t_17 = Py_TYPE(__pyx_t_4)->tp_iternext;
17905  index = 0; __pyx_t_14 = __pyx_t_17(__pyx_t_4); if (unlikely(!__pyx_t_14)) goto __pyx_L27_unpacking_failed;
17906  __Pyx_GOTREF(__pyx_t_14);
17907  index = 1; __pyx_t_8 = __pyx_t_17(__pyx_t_4); if (unlikely(!__pyx_t_8)) goto __pyx_L27_unpacking_failed;
17908  __Pyx_GOTREF(__pyx_t_8);
17909  if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1033, __pyx_L1_error)
17910  __pyx_t_17 = NULL;
17911  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17912  goto __pyx_L28_unpacking_done;
17913  __pyx_L27_unpacking_failed:;
17914  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17915  __pyx_t_17 = NULL;
17916  if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
17917  __PYX_ERR(0, 1033, __pyx_L1_error)
17918  __pyx_L28_unpacking_done:;
17919  }
17920  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1033, __pyx_L1_error)
17921  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1033, __pyx_L1_error)
17922  __Pyx_GIVEREF(__pyx_t_14);
17923  __Pyx_GOTREF(__pyx_v_self->Bcoeff);
17924  __Pyx_DECREF(((PyObject *)__pyx_v_self->Bcoeff));
17925  __pyx_v_self->Bcoeff = ((PyArrayObject *)__pyx_t_14);
17926  __pyx_t_14 = 0;
17927  __Pyx_GIVEREF(__pyx_t_8);
17928  __Pyx_GOTREF(__pyx_v_self->Ycoeff);
17929  __Pyx_DECREF(((PyObject *)__pyx_v_self->Ycoeff));
17930  __pyx_v_self->Ycoeff = ((PyArrayObject *)__pyx_t_8);
17931  __pyx_t_8 = 0;
17932 
17933  /* "WaveTools.py":1034
17934  * comm.barrier()
17935  * self.Bcoeff, self.Ycoeff = Fenton.getBYCoeffs()
17936  * self.wavelength = Fenton.getWavelength()*depth # <<<<<<<<<<<<<<
17937  * self.k = 2.0*M_PI/self.wavelength
17938  * for ii in range(len(self.tanhF)):
17939  */
17940  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_Fenton, __pyx_n_s_getWavelength); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1034, __pyx_L1_error)
17941  __Pyx_GOTREF(__pyx_t_8);
17942  __pyx_t_14 = NULL;
17943  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
17944  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_8);
17945  if (likely(__pyx_t_14)) {
17946  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
17947  __Pyx_INCREF(__pyx_t_14);
17948  __Pyx_INCREF(function);
17949  __Pyx_DECREF_SET(__pyx_t_8, function);
17950  }
17951  }
17952  __pyx_t_5 = (__pyx_t_14) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_14) : __Pyx_PyObject_CallNoArg(__pyx_t_8);
17953  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
17954  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1034, __pyx_L1_error)
17955  __Pyx_GOTREF(__pyx_t_5);
17956  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17957  __pyx_t_8 = PyNumber_Multiply(__pyx_t_5, __pyx_v_depth); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1034, __pyx_L1_error)
17958  __Pyx_GOTREF(__pyx_t_8);
17959  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17960  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1034, __pyx_L1_error)
17961  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17962  __pyx_v_self->wavelength = __pyx_t_9;
17963 
17964  /* "WaveTools.py":1035
17965  * self.Bcoeff, self.Ycoeff = Fenton.getBYCoeffs()
17966  * self.wavelength = Fenton.getWavelength()*depth
17967  * self.k = 2.0*M_PI/self.wavelength # <<<<<<<<<<<<<<
17968  * for ii in range(len(self.tanhF)):
17969  * kk = (ii+1)*self.k
17970  */
17971  __pyx_t_9 = (2.0 * M_PI);
17972  if (unlikely(__pyx_v_self->wavelength == 0)) {
17973  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
17974  __PYX_ERR(0, 1035, __pyx_L1_error)
17975  }
17976  __pyx_v_self->k = (__pyx_t_9 / __pyx_v_self->wavelength);
17977 
17978  /* "WaveTools.py":1036
17979  * self.wavelength = Fenton.getWavelength()*depth
17980  * self.k = 2.0*M_PI/self.wavelength
17981  * for ii in range(len(self.tanhF)): # <<<<<<<<<<<<<<
17982  * kk = (ii+1)*self.k
17983  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
17984  */
17985  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_range); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1036, __pyx_L1_error)
17986  __Pyx_GOTREF(__pyx_t_5);
17987  __pyx_t_14 = ((PyObject *)__pyx_v_self->tanhF);
17988  __Pyx_INCREF(__pyx_t_14);
17989  __pyx_t_15 = PyObject_Length(__pyx_t_14); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1036, __pyx_L1_error)
17990  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
17991  __pyx_t_14 = PyInt_FromSsize_t(__pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1036, __pyx_L1_error)
17992  __Pyx_GOTREF(__pyx_t_14);
17993  __pyx_t_4 = NULL;
17994  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
17995  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
17996  if (likely(__pyx_t_4)) {
17997  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
17998  __Pyx_INCREF(__pyx_t_4);
17999  __Pyx_INCREF(function);
18000  __Pyx_DECREF_SET(__pyx_t_5, function);
18001  }
18002  }
18003  __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_14);
18004  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
18005  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
18006  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1036, __pyx_L1_error)
18007  __Pyx_GOTREF(__pyx_t_8);
18008  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18009  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
18010  __pyx_t_5 = __pyx_t_8; __Pyx_INCREF(__pyx_t_5); __pyx_t_15 = 0;
18011  __pyx_t_16 = NULL;
18012  } else {
18013  __pyx_t_15 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1036, __pyx_L1_error)
18014  __Pyx_GOTREF(__pyx_t_5);
18015  __pyx_t_16 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1036, __pyx_L1_error)
18016  }
18017  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18018  for (;;) {
18019  if (likely(!__pyx_t_16)) {
18020  if (likely(PyList_CheckExact(__pyx_t_5))) {
18021  if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_5)) break;
18022  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18023  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_15); __Pyx_INCREF(__pyx_t_8); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1036, __pyx_L1_error)
18024  #else
18025  __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1036, __pyx_L1_error)
18026  __Pyx_GOTREF(__pyx_t_8);
18027  #endif
18028  } else {
18029  if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
18030  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18031  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_15); __Pyx_INCREF(__pyx_t_8); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1036, __pyx_L1_error)
18032  #else
18033  __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1036, __pyx_L1_error)
18034  __Pyx_GOTREF(__pyx_t_8);
18035  #endif
18036  }
18037  } else {
18038  __pyx_t_8 = __pyx_t_16(__pyx_t_5);
18039  if (unlikely(!__pyx_t_8)) {
18040  PyObject* exc_type = PyErr_Occurred();
18041  if (exc_type) {
18042  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
18043  else __PYX_ERR(0, 1036, __pyx_L1_error)
18044  }
18045  break;
18046  }
18047  __Pyx_GOTREF(__pyx_t_8);
18048  }
18049  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_8);
18050  __pyx_t_8 = 0;
18051 
18052  /* "WaveTools.py":1037
18053  * self.k = 2.0*M_PI/self.wavelength
18054  * for ii in range(len(self.tanhF)):
18055  * kk = (ii+1)*self.k # <<<<<<<<<<<<<<
18056  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
18057  *
18058  */
18059  __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_v_ii, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1037, __pyx_L1_error)
18060  __Pyx_GOTREF(__pyx_t_8);
18061  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->k); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1037, __pyx_L1_error)
18062  __Pyx_GOTREF(__pyx_t_14);
18063  __pyx_t_4 = PyNumber_Multiply(__pyx_t_8, __pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1037, __pyx_L1_error)
18064  __Pyx_GOTREF(__pyx_t_4);
18065  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18066  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
18067  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_4);
18068  __pyx_t_4 = 0;
18069 
18070  /* "WaveTools.py":1038
18071  * for ii in range(len(self.tanhF)):
18072  * kk = (ii+1)*self.k
18073  * self.tanhF[ii] = float(np.tanh(kk*self.depth) ) # <<<<<<<<<<<<<<
18074  *
18075  *
18076  */
18077  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1038, __pyx_L1_error)
18078  __Pyx_GOTREF(__pyx_t_14);
18079  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_tanh); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1038, __pyx_L1_error)
18080  __Pyx_GOTREF(__pyx_t_8);
18081  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
18082  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1038, __pyx_L1_error)
18083  __Pyx_GOTREF(__pyx_t_14);
18084  __pyx_t_7 = PyNumber_Multiply(__pyx_v_kk, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1038, __pyx_L1_error)
18085  __Pyx_GOTREF(__pyx_t_7);
18086  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
18087  __pyx_t_14 = NULL;
18088  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
18089  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_8);
18090  if (likely(__pyx_t_14)) {
18091  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
18092  __Pyx_INCREF(__pyx_t_14);
18093  __Pyx_INCREF(function);
18094  __Pyx_DECREF_SET(__pyx_t_8, function);
18095  }
18096  }
18097  __pyx_t_4 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_14, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
18098  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
18099  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18100  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1038, __pyx_L1_error)
18101  __Pyx_GOTREF(__pyx_t_4);
18102  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18103  __pyx_t_8 = __Pyx_PyNumber_Float(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1038, __pyx_L1_error)
18104  __Pyx_GOTREF(__pyx_t_8);
18105  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18106  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->tanhF), __pyx_v_ii, __pyx_t_8) < 0)) __PYX_ERR(0, 1038, __pyx_L1_error)
18107  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18108 
18109  /* "WaveTools.py":1036
18110  * self.wavelength = Fenton.getWavelength()*depth
18111  * self.k = 2.0*M_PI/self.wavelength
18112  * for ii in range(len(self.tanhF)): # <<<<<<<<<<<<<<
18113  * kk = (ii+1)*self.k
18114  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
18115  */
18116  }
18117  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18118 
18119  /* "WaveTools.py":1003
18120  * kk = (ii+1)*self.k
18121  * self.tanhF[ii] = float(np.tanh(kk*self.depth) )
18122  * elif autoFenton is True: # <<<<<<<<<<<<<<
18123  * from proteus.fenton import Fenton
18124  * comm = Comm.get()
18125  */
18126  }
18127  __pyx_L9:;
18128 
18129  /* "WaveTools.py":988
18130  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
18131  * self.wavelength = 2.0*M_PI/self.k
18132  * elif waveType == "Fenton": # <<<<<<<<<<<<<<
18133  * if autoFenton is False:
18134  * try:
18135  */
18136  }
18137  __pyx_L8:;
18138 
18139  /* "WaveTools.py":1041
18140  *
18141  *
18142  * self.kDir = self.k * self.waveDir # <<<<<<<<<<<<<<
18143  * self.amplitude = 0.5*waveHeight
18144  * self.mV = np.array(meanVelocity)
18145  */
18146  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->k); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1041, __pyx_L1_error)
18147  __Pyx_GOTREF(__pyx_t_5);
18148  __pyx_t_8 = PyNumber_Multiply(__pyx_t_5, ((PyObject *)__pyx_v_self->waveDir)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1041, __pyx_L1_error)
18149  __Pyx_GOTREF(__pyx_t_8);
18150  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18151  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1041, __pyx_L1_error)
18152  __Pyx_GIVEREF(__pyx_t_8);
18153  __Pyx_GOTREF(__pyx_v_self->kDir);
18154  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
18155  __pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_8);
18156  __pyx_t_8 = 0;
18157 
18158  /* "WaveTools.py":1042
18159  *
18160  * self.kDir = self.k * self.waveDir
18161  * self.amplitude = 0.5*waveHeight # <<<<<<<<<<<<<<
18162  * self.mV = np.array(meanVelocity)
18163  * #Checking that meanvelocity is a vector
18164  */
18165  __pyx_t_8 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_waveHeight); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1042, __pyx_L1_error)
18166  __Pyx_GOTREF(__pyx_t_8);
18167  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1042, __pyx_L1_error)
18168  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18169  __pyx_v_self->amplitude = __pyx_t_9;
18170 
18171  /* "WaveTools.py":1043
18172  * self.kDir = self.k * self.waveDir
18173  * self.amplitude = 0.5*waveHeight
18174  * self.mV = np.array(meanVelocity) # <<<<<<<<<<<<<<
18175  * #Checking that meanvelocity is a vector
18176  *
18177  */
18178  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1043, __pyx_L1_error)
18179  __Pyx_GOTREF(__pyx_t_5);
18180  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1043, __pyx_L1_error)
18181  __Pyx_GOTREF(__pyx_t_4);
18182  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18183  __pyx_t_5 = NULL;
18184  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
18185  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
18186  if (likely(__pyx_t_5)) {
18187  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
18188  __Pyx_INCREF(__pyx_t_5);
18189  __Pyx_INCREF(function);
18190  __Pyx_DECREF_SET(__pyx_t_4, function);
18191  }
18192  }
18193  __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_meanVelocity) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_meanVelocity);
18194  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18195  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1043, __pyx_L1_error)
18196  __Pyx_GOTREF(__pyx_t_8);
18197  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18198  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1043, __pyx_L1_error)
18199  __Pyx_GIVEREF(__pyx_t_8);
18200  __Pyx_GOTREF(__pyx_v_self->mV);
18201  __Pyx_DECREF(((PyObject *)__pyx_v_self->mV));
18202  __pyx_v_self->mV = ((PyArrayObject *)__pyx_t_8);
18203  __pyx_t_8 = 0;
18204 
18205  /* "WaveTools.py":1046
18206  * #Checking that meanvelocity is a vector
18207  *
18208  * if(len(meanVelocity) != 3): # <<<<<<<<<<<<<<
18209  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0)
18210  * sys.exit(1)
18211  */
18212  __pyx_t_15 = PyObject_Length(__pyx_v_meanVelocity); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1046, __pyx_L1_error)
18213  __pyx_t_1 = ((__pyx_t_15 != 3) != 0);
18214  if (__pyx_t_1) {
18215 
18216  /* "WaveTools.py":1047
18217  *
18218  * if(len(meanVelocity) != 3):
18219  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0) # <<<<<<<<<<<<<<
18220  * sys.exit(1)
18221  * if(self.Nf > 1000) and waveType == "Fenton":
18222  */
18223  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1047, __pyx_L1_error)
18224  __Pyx_GOTREF(__pyx_t_8);
18225  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1047, __pyx_L1_error)
18226  __Pyx_GOTREF(__pyx_t_4);
18227  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 1047, __pyx_L1_error)
18228  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__18, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1047, __pyx_L1_error)
18229  __Pyx_GOTREF(__pyx_t_5);
18230  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18231  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18232  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18233 
18234  /* "WaveTools.py":1048
18235  * if(len(meanVelocity) != 3):
18236  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0)
18237  * sys.exit(1) # <<<<<<<<<<<<<<
18238  * if(self.Nf > 1000) and waveType == "Fenton":
18239  * logEvent("ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ",level=0)
18240  */
18241  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1048, __pyx_L1_error)
18242  __Pyx_GOTREF(__pyx_t_4);
18243  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1048, __pyx_L1_error)
18244  __Pyx_GOTREF(__pyx_t_8);
18245  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18246  __pyx_t_4 = NULL;
18247  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
18248  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
18249  if (likely(__pyx_t_4)) {
18250  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
18251  __Pyx_INCREF(__pyx_t_4);
18252  __Pyx_INCREF(function);
18253  __Pyx_DECREF_SET(__pyx_t_8, function);
18254  }
18255  }
18256  __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_4, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_1);
18257  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
18258  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1048, __pyx_L1_error)
18259  __Pyx_GOTREF(__pyx_t_5);
18260  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18261  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18262 
18263  /* "WaveTools.py":1046
18264  * #Checking that meanvelocity is a vector
18265  *
18266  * if(len(meanVelocity) != 3): # <<<<<<<<<<<<<<
18267  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0)
18268  * sys.exit(1)
18269  */
18270  }
18271 
18272  /* "WaveTools.py":1049
18273  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0)
18274  * sys.exit(1)
18275  * if(self.Nf > 1000) and waveType == "Fenton": # <<<<<<<<<<<<<<
18276  * logEvent("ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ",level=0)
18277  * sys.exit(1)
18278  */
18279  __pyx_t_2 = ((__pyx_v_self->Nf > 0x3E8) != 0);
18280  if (__pyx_t_2) {
18281  } else {
18282  __pyx_t_1 = __pyx_t_2;
18283  goto __pyx_L33_bool_binop_done;
18284  }
18285  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_waveType, __pyx_n_s_Fenton, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error)
18286  __pyx_t_1 = __pyx_t_2;
18287  __pyx_L33_bool_binop_done:;
18288  if (__pyx_t_1) {
18289 
18290  /* "WaveTools.py":1050
18291  * sys.exit(1)
18292  * if(self.Nf > 1000) and waveType == "Fenton":
18293  * logEvent("ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ",level=0) # <<<<<<<<<<<<<<
18294  * sys.exit(1)
18295  *
18296  */
18297  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1050, __pyx_L1_error)
18298  __Pyx_GOTREF(__pyx_t_5);
18299  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1050, __pyx_L1_error)
18300  __Pyx_GOTREF(__pyx_t_8);
18301  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 1050, __pyx_L1_error)
18302  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__19, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1050, __pyx_L1_error)
18303  __Pyx_GOTREF(__pyx_t_4);
18304  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18305  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18306  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18307 
18308  /* "WaveTools.py":1051
18309  * if(self.Nf > 1000) and waveType == "Fenton":
18310  * logEvent("ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ",level=0)
18311  * sys.exit(1) # <<<<<<<<<<<<<<
18312  *
18313  * # C++ declarations
18314  */
18315  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_sys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1051, __pyx_L1_error)
18316  __Pyx_GOTREF(__pyx_t_8);
18317  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1051, __pyx_L1_error)
18318  __Pyx_GOTREF(__pyx_t_5);
18319  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18320  __pyx_t_8 = NULL;
18321  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
18322  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
18323  if (likely(__pyx_t_8)) {
18324  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
18325  __Pyx_INCREF(__pyx_t_8);
18326  __Pyx_INCREF(function);
18327  __Pyx_DECREF_SET(__pyx_t_5, function);
18328  }
18329  }
18330  __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_1);
18331  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
18332  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1051, __pyx_L1_error)
18333  __Pyx_GOTREF(__pyx_t_4);
18334  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18335  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18336 
18337  /* "WaveTools.py":1049
18338  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0)
18339  * sys.exit(1)
18340  * if(self.Nf > 1000) and waveType == "Fenton": # <<<<<<<<<<<<<<
18341  * logEvent("ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ",level=0)
18342  * sys.exit(1)
18343  */
18344  }
18345 
18346  /* "WaveTools.py":1055
18347  * # C++ declarations
18348  *
18349  * self.tanhL =float(np.tanh(self.k*self.depth)) # <<<<<<<<<<<<<<
18350  * for ij in range(3):
18351  * self.kDir_c[ij] = self.kDir[ij]
18352  */
18353  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1055, __pyx_L1_error)
18354  __Pyx_GOTREF(__pyx_t_5);
18355  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tanh); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1055, __pyx_L1_error)
18356  __Pyx_GOTREF(__pyx_t_8);
18357  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18358  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_self->k * __pyx_v_self->depth)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1055, __pyx_L1_error)
18359  __Pyx_GOTREF(__pyx_t_5);
18360  __pyx_t_7 = NULL;
18361  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
18362  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
18363  if (likely(__pyx_t_7)) {
18364  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
18365  __Pyx_INCREF(__pyx_t_7);
18366  __Pyx_INCREF(function);
18367  __Pyx_DECREF_SET(__pyx_t_8, function);
18368  }
18369  }
18370  __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5);
18371  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
18372  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18373  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1055, __pyx_L1_error)
18374  __Pyx_GOTREF(__pyx_t_4);
18375  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18376  __pyx_t_9 = __Pyx_PyObject_AsDouble(__pyx_t_4); if (unlikely(__pyx_t_9 == ((double)((double)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1055, __pyx_L1_error)
18377  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18378  __pyx_v_self->tanhL = __pyx_t_9;
18379 
18380  /* "WaveTools.py":1056
18381  *
18382  * self.tanhL =float(np.tanh(self.k*self.depth))
18383  * for ij in range(3): # <<<<<<<<<<<<<<
18384  * self.kDir_c[ij] = self.kDir[ij]
18385  * self.waveDir_c[ij] = self.waveDir[ij]
18386  */
18387  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1056, __pyx_L1_error)
18388  __Pyx_GOTREF(__pyx_t_8);
18389  __pyx_t_5 = NULL;
18390  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
18391  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
18392  if (likely(__pyx_t_5)) {
18393  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
18394  __Pyx_INCREF(__pyx_t_5);
18395  __Pyx_INCREF(function);
18396  __Pyx_DECREF_SET(__pyx_t_8, function);
18397  }
18398  }
18399  __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_3);
18400  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18401  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
18402  __Pyx_GOTREF(__pyx_t_4);
18403  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18404  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
18405  __pyx_t_8 = __pyx_t_4; __Pyx_INCREF(__pyx_t_8); __pyx_t_15 = 0;
18406  __pyx_t_16 = NULL;
18407  } else {
18408  __pyx_t_15 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1056, __pyx_L1_error)
18409  __Pyx_GOTREF(__pyx_t_8);
18410  __pyx_t_16 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1056, __pyx_L1_error)
18411  }
18412  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18413  for (;;) {
18414  if (likely(!__pyx_t_16)) {
18415  if (likely(PyList_CheckExact(__pyx_t_8))) {
18416  if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_8)) break;
18417  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18418  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_15); __Pyx_INCREF(__pyx_t_4); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1056, __pyx_L1_error)
18419  #else
18420  __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
18421  __Pyx_GOTREF(__pyx_t_4);
18422  #endif
18423  } else {
18424  if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
18425  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18426  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_15); __Pyx_INCREF(__pyx_t_4); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1056, __pyx_L1_error)
18427  #else
18428  __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
18429  __Pyx_GOTREF(__pyx_t_4);
18430  #endif
18431  }
18432  } else {
18433  __pyx_t_4 = __pyx_t_16(__pyx_t_8);
18434  if (unlikely(!__pyx_t_4)) {
18435  PyObject* exc_type = PyErr_Occurred();
18436  if (exc_type) {
18437  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
18438  else __PYX_ERR(0, 1056, __pyx_L1_error)
18439  }
18440  break;
18441  }
18442  __Pyx_GOTREF(__pyx_t_4);
18443  }
18444  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_4);
18445  __pyx_t_4 = 0;
18446 
18447  /* "WaveTools.py":1057
18448  * self.tanhL =float(np.tanh(self.k*self.depth))
18449  * for ij in range(3):
18450  * self.kDir_c[ij] = self.kDir[ij] # <<<<<<<<<<<<<<
18451  * self.waveDir_c[ij] = self.waveDir[ij]
18452  * self.vDir_c[ij] = self.vDir[ij]
18453  */
18454  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1057, __pyx_L1_error)
18455  __Pyx_GOTREF(__pyx_t_4);
18456  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1057, __pyx_L1_error)
18457  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18458  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1057, __pyx_L1_error)
18459  (__pyx_v_self->kDir_c[__pyx_t_18]) = __pyx_t_9;
18460 
18461  /* "WaveTools.py":1058
18462  * for ij in range(3):
18463  * self.kDir_c[ij] = self.kDir[ij]
18464  * self.waveDir_c[ij] = self.waveDir[ij] # <<<<<<<<<<<<<<
18465  * self.vDir_c[ij] = self.vDir[ij]
18466  * self.mV_c[ij] = self.mV[ij]
18467  */
18468  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDir), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1058, __pyx_L1_error)
18469  __Pyx_GOTREF(__pyx_t_4);
18470  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1058, __pyx_L1_error)
18471  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18472  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1058, __pyx_L1_error)
18473  (__pyx_v_self->waveDir_c[__pyx_t_18]) = __pyx_t_9;
18474 
18475  /* "WaveTools.py":1059
18476  * self.kDir_c[ij] = self.kDir[ij]
18477  * self.waveDir_c[ij] = self.waveDir[ij]
18478  * self.vDir_c[ij] = self.vDir[ij] # <<<<<<<<<<<<<<
18479  * self.mV_c[ij] = self.mV[ij]
18480  * self.kDir_ = self.kDir_c
18481  */
18482  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->vDir), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1059, __pyx_L1_error)
18483  __Pyx_GOTREF(__pyx_t_4);
18484  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1059, __pyx_L1_error)
18485  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18486  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1059, __pyx_L1_error)
18487  (__pyx_v_self->vDir_c[__pyx_t_18]) = __pyx_t_9;
18488 
18489  /* "WaveTools.py":1060
18490  * self.waveDir_c[ij] = self.waveDir[ij]
18491  * self.vDir_c[ij] = self.vDir[ij]
18492  * self.mV_c[ij] = self.mV[ij] # <<<<<<<<<<<<<<
18493  * self.kDir_ = self.kDir_c
18494  * self.waveDir_ = self.waveDir_c
18495  */
18496  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->mV), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1060, __pyx_L1_error)
18497  __Pyx_GOTREF(__pyx_t_4);
18498  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1060, __pyx_L1_error)
18499  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18500  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1060, __pyx_L1_error)
18501  (__pyx_v_self->mV_c[__pyx_t_18]) = __pyx_t_9;
18502 
18503  /* "WaveTools.py":1056
18504  *
18505  * self.tanhL =float(np.tanh(self.k*self.depth))
18506  * for ij in range(3): # <<<<<<<<<<<<<<
18507  * self.kDir_c[ij] = self.kDir[ij]
18508  * self.waveDir_c[ij] = self.waveDir[ij]
18509  */
18510  }
18511  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18512 
18513  /* "WaveTools.py":1061
18514  * self.vDir_c[ij] = self.vDir[ij]
18515  * self.mV_c[ij] = self.mV[ij]
18516  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
18517  * self.waveDir_ = self.waveDir_c
18518  * self.vDir_ = self.vDir_c
18519  */
18520  __pyx_t_19 = __pyx_v_self->kDir_c;
18521  __pyx_v_self->kDir_ = __pyx_t_19;
18522 
18523  /* "WaveTools.py":1062
18524  * self.mV_c[ij] = self.mV[ij]
18525  * self.kDir_ = self.kDir_c
18526  * self.waveDir_ = self.waveDir_c # <<<<<<<<<<<<<<
18527  * self.vDir_ = self.vDir_c
18528  * self.mV_ = self.mV_c
18529  */
18530  __pyx_t_19 = __pyx_v_self->waveDir_c;
18531  __pyx_v_self->waveDir_ = __pyx_t_19;
18532 
18533  /* "WaveTools.py":1063
18534  * self.kDir_ = self.kDir_c
18535  * self.waveDir_ = self.waveDir_c
18536  * self.vDir_ = self.vDir_c # <<<<<<<<<<<<<<
18537  * self.mV_ = self.mV_c
18538  *
18539  */
18540  __pyx_t_19 = __pyx_v_self->vDir_c;
18541  __pyx_v_self->vDir_ = __pyx_t_19;
18542 
18543  /* "WaveTools.py":1064
18544  * self.waveDir_ = self.waveDir_c
18545  * self.vDir_ = self.vDir_c
18546  * self.mV_ = self.mV_c # <<<<<<<<<<<<<<
18547  *
18548  *
18549  */
18550  __pyx_t_19 = __pyx_v_self->mV_c;
18551  __pyx_v_self->mV_ = __pyx_t_19;
18552 
18553  /* "WaveTools.py":1069
18554  *
18555  *
18556  * if "Fenton" in self.waveType: # <<<<<<<<<<<<<<
18557  * for ij in range(Nf):
18558  * self.Ycoeff_c[ij] = self.Ycoeff[ij]
18559  */
18560  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_Fenton, __pyx_v_self->waveType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1069, __pyx_L1_error)
18561  __pyx_t_2 = (__pyx_t_1 != 0);
18562  if (__pyx_t_2) {
18563 
18564  /* "WaveTools.py":1070
18565  *
18566  * if "Fenton" in self.waveType:
18567  * for ij in range(Nf): # <<<<<<<<<<<<<<
18568  * self.Ycoeff_c[ij] = self.Ycoeff[ij]
18569  * self.Bcoeff_c[ij] = self.Bcoeff[ij]
18570  */
18571  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1070, __pyx_L1_error)
18572  __Pyx_GOTREF(__pyx_t_4);
18573  __pyx_t_5 = NULL;
18574  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
18575  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
18576  if (likely(__pyx_t_5)) {
18577  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
18578  __Pyx_INCREF(__pyx_t_5);
18579  __Pyx_INCREF(function);
18580  __Pyx_DECREF_SET(__pyx_t_4, function);
18581  }
18582  }
18583  __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_Nf) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_Nf);
18584  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18585  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1070, __pyx_L1_error)
18586  __Pyx_GOTREF(__pyx_t_8);
18587  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18588  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
18589  __pyx_t_4 = __pyx_t_8; __Pyx_INCREF(__pyx_t_4); __pyx_t_15 = 0;
18590  __pyx_t_16 = NULL;
18591  } else {
18592  __pyx_t_15 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1070, __pyx_L1_error)
18593  __Pyx_GOTREF(__pyx_t_4);
18594  __pyx_t_16 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1070, __pyx_L1_error)
18595  }
18596  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18597  for (;;) {
18598  if (likely(!__pyx_t_16)) {
18599  if (likely(PyList_CheckExact(__pyx_t_4))) {
18600  if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_4)) break;
18601  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18602  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_15); __Pyx_INCREF(__pyx_t_8); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1070, __pyx_L1_error)
18603  #else
18604  __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1070, __pyx_L1_error)
18605  __Pyx_GOTREF(__pyx_t_8);
18606  #endif
18607  } else {
18608  if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
18609  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18610  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_15); __Pyx_INCREF(__pyx_t_8); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 1070, __pyx_L1_error)
18611  #else
18612  __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1070, __pyx_L1_error)
18613  __Pyx_GOTREF(__pyx_t_8);
18614  #endif
18615  }
18616  } else {
18617  __pyx_t_8 = __pyx_t_16(__pyx_t_4);
18618  if (unlikely(!__pyx_t_8)) {
18619  PyObject* exc_type = PyErr_Occurred();
18620  if (exc_type) {
18621  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
18622  else __PYX_ERR(0, 1070, __pyx_L1_error)
18623  }
18624  break;
18625  }
18626  __Pyx_GOTREF(__pyx_t_8);
18627  }
18628  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_8);
18629  __pyx_t_8 = 0;
18630 
18631  /* "WaveTools.py":1071
18632  * if "Fenton" in self.waveType:
18633  * for ij in range(Nf):
18634  * self.Ycoeff_c[ij] = self.Ycoeff[ij] # <<<<<<<<<<<<<<
18635  * self.Bcoeff_c[ij] = self.Bcoeff[ij]
18636  * self.tanh_c[ij] = self.tanhF[ij]
18637  */
18638  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->Ycoeff), __pyx_v_ij); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1071, __pyx_L1_error)
18639  __Pyx_GOTREF(__pyx_t_8);
18640  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1071, __pyx_L1_error)
18641  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18642  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1071, __pyx_L1_error)
18643  (__pyx_v_self->Ycoeff_c[__pyx_t_18]) = __pyx_t_9;
18644 
18645  /* "WaveTools.py":1072
18646  * for ij in range(Nf):
18647  * self.Ycoeff_c[ij] = self.Ycoeff[ij]
18648  * self.Bcoeff_c[ij] = self.Bcoeff[ij] # <<<<<<<<<<<<<<
18649  * self.tanh_c[ij] = self.tanhF[ij]
18650  * self.Ycoeff_ = self.Ycoeff_c
18651  */
18652  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->Bcoeff), __pyx_v_ij); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1072, __pyx_L1_error)
18653  __Pyx_GOTREF(__pyx_t_8);
18654  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1072, __pyx_L1_error)
18655  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18656  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1072, __pyx_L1_error)
18657  (__pyx_v_self->Bcoeff_c[__pyx_t_18]) = __pyx_t_9;
18658 
18659  /* "WaveTools.py":1073
18660  * self.Ycoeff_c[ij] = self.Ycoeff[ij]
18661  * self.Bcoeff_c[ij] = self.Bcoeff[ij]
18662  * self.tanh_c[ij] = self.tanhF[ij] # <<<<<<<<<<<<<<
18663  * self.Ycoeff_ = self.Ycoeff_c
18664  * self.Bcoeff_ = self.Bcoeff_c
18665  */
18666  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->tanhF), __pyx_v_ij); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1073, __pyx_L1_error)
18667  __Pyx_GOTREF(__pyx_t_8);
18668  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1073, __pyx_L1_error)
18669  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18670  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1073, __pyx_L1_error)
18671  (__pyx_v_self->tanh_c[__pyx_t_18]) = __pyx_t_9;
18672 
18673  /* "WaveTools.py":1070
18674  *
18675  * if "Fenton" in self.waveType:
18676  * for ij in range(Nf): # <<<<<<<<<<<<<<
18677  * self.Ycoeff_c[ij] = self.Ycoeff[ij]
18678  * self.Bcoeff_c[ij] = self.Bcoeff[ij]
18679  */
18680  }
18681  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18682 
18683  /* "WaveTools.py":1074
18684  * self.Bcoeff_c[ij] = self.Bcoeff[ij]
18685  * self.tanh_c[ij] = self.tanhF[ij]
18686  * self.Ycoeff_ = self.Ycoeff_c # <<<<<<<<<<<<<<
18687  * self.Bcoeff_ = self.Bcoeff_c
18688  * self.tanhF_ = self.tanh_c
18689  */
18690  __pyx_t_19 = __pyx_v_self->Ycoeff_c;
18691  __pyx_v_self->Ycoeff_ = __pyx_t_19;
18692 
18693  /* "WaveTools.py":1075
18694  * self.tanh_c[ij] = self.tanhF[ij]
18695  * self.Ycoeff_ = self.Ycoeff_c
18696  * self.Bcoeff_ = self.Bcoeff_c # <<<<<<<<<<<<<<
18697  * self.tanhF_ = self.tanh_c
18698  *
18699  */
18700  __pyx_t_19 = __pyx_v_self->Bcoeff_c;
18701  __pyx_v_self->Bcoeff_ = __pyx_t_19;
18702 
18703  /* "WaveTools.py":1076
18704  * self.Ycoeff_ = self.Ycoeff_c
18705  * self.Bcoeff_ = self.Bcoeff_c
18706  * self.tanhF_ = self.tanh_c # <<<<<<<<<<<<<<
18707  *
18708  *
18709  */
18710  __pyx_t_19 = __pyx_v_self->tanh_c;
18711  __pyx_v_self->tanhF_ = __pyx_t_19;
18712 
18713  /* "WaveTools.py":1069
18714  *
18715  *
18716  * if "Fenton" in self.waveType: # <<<<<<<<<<<<<<
18717  * for ij in range(Nf):
18718  * self.Ycoeff_c[ij] = self.Ycoeff[ij]
18719  */
18720  }
18721 
18722  /* "WaveTools.py":1083
18723  *
18724  *
18725  * if self.waveType == "Linear": # <<<<<<<<<<<<<<
18726  * self._cpp_eta = self.etaLinear
18727  * self._cpp_u = self.uLinear
18728  */
18729  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_self->waveType, __pyx_n_s_Linear, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1083, __pyx_L1_error)
18730  if (__pyx_t_2) {
18731 
18732  /* "WaveTools.py":1084
18733  *
18734  * if self.waveType == "Linear":
18735  * self._cpp_eta = self.etaLinear # <<<<<<<<<<<<<<
18736  * self._cpp_u = self.uLinear
18737  * else:
18738  */
18739  __pyx_t_20 = ((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->etaLinear;
18740  __pyx_v_self->_cpp_eta = __pyx_t_20;
18741 
18742  /* "WaveTools.py":1085
18743  * if self.waveType == "Linear":
18744  * self._cpp_eta = self.etaLinear
18745  * self._cpp_u = self.uLinear # <<<<<<<<<<<<<<
18746  * else:
18747  * self._cpp_eta = self.etaFenton
18748  */
18749  __pyx_t_21 = ((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->uLinear;
18750  __pyx_v_self->_cpp_u = __pyx_t_21;
18751 
18752  /* "WaveTools.py":1083
18753  *
18754  *
18755  * if self.waveType == "Linear": # <<<<<<<<<<<<<<
18756  * self._cpp_eta = self.etaLinear
18757  * self._cpp_u = self.uLinear
18758  */
18759  goto __pyx_L40;
18760  }
18761 
18762  /* "WaveTools.py":1087
18763  * self._cpp_u = self.uLinear
18764  * else:
18765  * self._cpp_eta = self.etaFenton # <<<<<<<<<<<<<<
18766  * self._cpp_u = self.uFenton
18767  *
18768  */
18769  /*else*/ {
18770  __pyx_t_22 = ((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->etaFenton;
18771  __pyx_v_self->_cpp_eta = __pyx_t_22;
18772 
18773  /* "WaveTools.py":1088
18774  * else:
18775  * self._cpp_eta = self.etaFenton
18776  * self._cpp_u = self.uFenton # <<<<<<<<<<<<<<
18777  *
18778  *
18779  */
18780  __pyx_t_23 = ((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->uFenton;
18781  __pyx_v_self->_cpp_u = __pyx_t_23;
18782  }
18783  __pyx_L40:;
18784 
18785  /* "WaveTools.py":941
18786  *
18787  * """
18788  * def __init__(self, # <<<<<<<<<<<<<<
18789  * period,
18790  * waveHeight,
18791  */
18792 
18793  /* function exit code */
18794  __pyx_r = 0;
18795  goto __pyx_L0;
18796  __pyx_L1_error:;
18797  __Pyx_XDECREF(__pyx_t_3);
18798  __Pyx_XDECREF(__pyx_t_4);
18799  __Pyx_XDECREF(__pyx_t_5);
18800  __Pyx_XDECREF(__pyx_t_7);
18801  __Pyx_XDECREF(__pyx_t_8);
18802  __Pyx_XDECREF(__pyx_t_14);
18803  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18804  __pyx_r = -1;
18805  __pyx_L0:;
18806  __Pyx_XDECREF(__pyx_v_knownWaveTypes);
18807  __Pyx_XDECREF(__pyx_v_ii);
18808  __Pyx_XDECREF(__pyx_v_kk);
18809  __Pyx_XDECREF(__pyx_v_Fenton);
18810  __Pyx_XDECREF(__pyx_v_comm);
18811  __Pyx_XDECREF(__pyx_v_ij);
18812  __Pyx_XDECREF(__pyx_v_autoFentonOpts);
18813  __Pyx_RefNannyFinishContext();
18814  return __pyx_r;
18815 }
18816 
18817 /* "WaveTools.py":1091
18818  *
18819  *
18820  * def etaLinear(self, x, t): # <<<<<<<<<<<<<<
18821  *
18822  * return __cpp_eta_mode(x ,t, self.kDir_,self.omega,self.phi0,self.amplitude, self.fast)
18823  */
18824 
18825 static double __pyx_f_9WaveTools_18MonochromaticWaves_etaLinear(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
18826  double __pyx_r;
18827  __Pyx_RefNannyDeclarations
18828  __Pyx_RefNannySetupContext("etaLinear", 0);
18829 
18830  /* "WaveTools.py":1093
18831  * def etaLinear(self, x, t):
18832  *
18833  * return __cpp_eta_mode(x ,t, self.kDir_,self.omega,self.phi0,self.amplitude, self.fast) # <<<<<<<<<<<<<<
18834  *
18835  * def etaFenton(self, x, t):
18836  */
18837  __pyx_r = proteus::__cpp_eta_mode(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->omega, __pyx_v_self->phi0, __pyx_v_self->amplitude, __pyx_v_self->fast);
18838  goto __pyx_L0;
18839 
18840  /* "WaveTools.py":1091
18841  *
18842  *
18843  * def etaLinear(self, x, t): # <<<<<<<<<<<<<<
18844  *
18845  * return __cpp_eta_mode(x ,t, self.kDir_,self.omega,self.phi0,self.amplitude, self.fast)
18846  */
18847 
18848  /* function exit code */
18849  __pyx_L0:;
18850  __Pyx_RefNannyFinishContext();
18851  return __pyx_r;
18852 }
18853 
18854 /* "WaveTools.py":1095
18855  * return __cpp_eta_mode(x ,t, self.kDir_,self.omega,self.phi0,self.amplitude, self.fast)
18856  *
18857  * def etaFenton(self, x, t): # <<<<<<<<<<<<<<
18858  *
18859  * return __cpp_etaFenton(x,t,self.kDir_, self.k, self.omega,self.phi0,self.amplitude, self.Nf, self.Ycoeff_, self.fast)
18860  */
18861 
18862 static double __pyx_f_9WaveTools_18MonochromaticWaves_etaFenton(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
18863  double __pyx_r;
18864  __Pyx_RefNannyDeclarations
18865  __Pyx_RefNannySetupContext("etaFenton", 0);
18866 
18867  /* "WaveTools.py":1097
18868  * def etaFenton(self, x, t):
18869  *
18870  * return __cpp_etaFenton(x,t,self.kDir_, self.k, self.omega,self.phi0,self.amplitude, self.Nf, self.Ycoeff_, self.fast) # <<<<<<<<<<<<<<
18871  *
18872  *
18873  */
18874  __pyx_r = proteus::__cpp_etaFenton(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->k, __pyx_v_self->omega, __pyx_v_self->phi0, __pyx_v_self->amplitude, __pyx_v_self->Nf, __pyx_v_self->Ycoeff_, __pyx_v_self->fast);
18875  goto __pyx_L0;
18876 
18877  /* "WaveTools.py":1095
18878  * return __cpp_eta_mode(x ,t, self.kDir_,self.omega,self.phi0,self.amplitude, self.fast)
18879  *
18880  * def etaFenton(self, x, t): # <<<<<<<<<<<<<<
18881  *
18882  * return __cpp_etaFenton(x,t,self.kDir_, self.k, self.omega,self.phi0,self.amplitude, self.Nf, self.Ycoeff_, self.fast)
18883  */
18884 
18885  /* function exit code */
18886  __pyx_L0:;
18887  __Pyx_RefNannyFinishContext();
18888  return __pyx_r;
18889 }
18890 
18891 /* "WaveTools.py":1100
18892  *
18893  *
18894  * def uLinear(self, U, x, t): # <<<<<<<<<<<<<<
18895  * __cpp_vel_mode_p(U, x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.waveDir_,self.vDir_, self.tanhL, self.gAbs, self.fast)
18896  *
18897  */
18898 
18899 static void __pyx_f_9WaveTools_18MonochromaticWaves_uLinear(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
18900  __Pyx_RefNannyDeclarations
18901  __Pyx_RefNannySetupContext("uLinear", 0);
18902 
18903  /* "WaveTools.py":1101
18904  *
18905  * def uLinear(self, U, x, t):
18906  * __cpp_vel_mode_p(U, x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.waveDir_,self.vDir_, self.tanhL, self.gAbs, self.fast) # <<<<<<<<<<<<<<
18907  *
18908  * def uFenton(self, U, x, t):
18909  */
18910  proteus::__cpp_vel_mode_p(__pyx_v_U, __pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->k, __pyx_v_self->omega, __pyx_v_self->phi0, __pyx_v_self->amplitude, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanhL, __pyx_v_self->gAbs, __pyx_v_self->fast);
18911 
18912  /* "WaveTools.py":1100
18913  *
18914  *
18915  * def uLinear(self, U, x, t): # <<<<<<<<<<<<<<
18916  * __cpp_vel_mode_p(U, x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.waveDir_,self.vDir_, self.tanhL, self.gAbs, self.fast)
18917  *
18918  */
18919 
18920  /* function exit code */
18921  __Pyx_RefNannyFinishContext();
18922 }
18923 
18924 /* "WaveTools.py":1103
18925  * __cpp_vel_mode_p(U, x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.waveDir_,self.vDir_, self.tanhL, self.gAbs, self.fast)
18926  *
18927  * def uFenton(self, U, x, t): # <<<<<<<<<<<<<<
18928  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast)
18929  *
18930  */
18931 
18932 static void __pyx_f_9WaveTools_18MonochromaticWaves_uFenton(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
18933  __Pyx_RefNannyDeclarations
18934  __Pyx_RefNannySetupContext("uFenton", 0);
18935 
18936  /* "WaveTools.py":1104
18937  *
18938  * def uFenton(self, U, x, t):
18939  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast) # <<<<<<<<<<<<<<
18940  *
18941  * def eta(self,x,t):
18942  */
18943  proteus::__cpp_uFenton(__pyx_v_U, __pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->k, __pyx_v_self->omega, __pyx_v_self->phi0, __pyx_v_self->amplitude, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->gAbs, __pyx_v_self->Nf, __pyx_v_self->Bcoeff_, __pyx_v_self->mV_, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanhF_, __pyx_v_self->fast);
18944 
18945  /* "WaveTools.py":1103
18946  * __cpp_vel_mode_p(U, x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.waveDir_,self.vDir_, self.tanhL, self.gAbs, self.fast)
18947  *
18948  * def uFenton(self, U, x, t): # <<<<<<<<<<<<<<
18949  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast)
18950  *
18951  */
18952 
18953  /* function exit code */
18954  __Pyx_RefNannyFinishContext();
18955 }
18956 
18957 /* "WaveTools.py":1106
18958  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast)
18959  *
18960  * def eta(self,x,t): # <<<<<<<<<<<<<<
18961  * """Calculates free surface elevation (MonochromaticWaves class)
18962  * Parameters
18963  */
18964 
18965 /* Python wrapper */
18966 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
18967 static char __pyx_doc_9WaveTools_18MonochromaticWaves_2eta[] = "Calculates free surface elevation (MonochromaticWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
18968 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_18MonochromaticWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_2eta};
18969 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
18970  PyObject *__pyx_v_x = 0;
18971  PyObject *__pyx_v_t = 0;
18972  int __pyx_lineno = 0;
18973  const char *__pyx_filename = NULL;
18974  int __pyx_clineno = 0;
18975  PyObject *__pyx_r = 0;
18976  __Pyx_RefNannyDeclarations
18977  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
18978  {
18979  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
18980  PyObject* values[2] = {0,0};
18981  if (unlikely(__pyx_kwds)) {
18982  Py_ssize_t kw_args;
18983  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
18984  switch (pos_args) {
18985  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
18986  CYTHON_FALLTHROUGH;
18987  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
18988  CYTHON_FALLTHROUGH;
18989  case 0: break;
18990  default: goto __pyx_L5_argtuple_error;
18991  }
18992  kw_args = PyDict_Size(__pyx_kwds);
18993  switch (pos_args) {
18994  case 0:
18995  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
18996  else goto __pyx_L5_argtuple_error;
18997  CYTHON_FALLTHROUGH;
18998  case 1:
18999  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
19000  else {
19001  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 1106, __pyx_L3_error)
19002  }
19003  }
19004  if (unlikely(kw_args > 0)) {
19005  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 1106, __pyx_L3_error)
19006  }
19007  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
19008  goto __pyx_L5_argtuple_error;
19009  } else {
19010  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19011  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19012  }
19013  __pyx_v_x = values[0];
19014  __pyx_v_t = values[1];
19015  }
19016  goto __pyx_L4_argument_unpacking_done;
19017  __pyx_L5_argtuple_error:;
19018  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1106, __pyx_L3_error)
19019  __pyx_L3_error:;
19020  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
19021  __Pyx_RefNannyFinishContext();
19022  return NULL;
19023  __pyx_L4_argument_unpacking_done:;
19024  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_2eta(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
19025 
19026  /* function exit code */
19027  __Pyx_RefNannyFinishContext();
19028  return __pyx_r;
19029 }
19030 
19031 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_2eta(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
19032  double __pyx_v_xx[3];
19033  PyObject *__pyx_r = NULL;
19034  __Pyx_RefNannyDeclarations
19035  PyObject *__pyx_t_1 = NULL;
19036  double __pyx_t_2;
19037  int __pyx_t_3;
19038  int __pyx_lineno = 0;
19039  const char *__pyx_filename = NULL;
19040  int __pyx_clineno = 0;
19041  __Pyx_RefNannySetupContext("eta", 0);
19042 
19043  /* "WaveTools.py":1122
19044  * """
19045  * cython.declare(xx=cython.double[3])
19046  * xx[0] = x[0] # <<<<<<<<<<<<<<
19047  * xx[1] = x[1]
19048  * xx[2] = x[2]
19049  */
19050  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error)
19051  __Pyx_GOTREF(__pyx_t_1);
19052  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1122, __pyx_L1_error)
19053  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19054  (__pyx_v_xx[0]) = __pyx_t_2;
19055 
19056  /* "WaveTools.py":1123
19057  * cython.declare(xx=cython.double[3])
19058  * xx[0] = x[0]
19059  * xx[1] = x[1] # <<<<<<<<<<<<<<
19060  * xx[2] = x[2]
19061  * if self.waveType =="Linear":
19062  */
19063  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1123, __pyx_L1_error)
19064  __Pyx_GOTREF(__pyx_t_1);
19065  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1123, __pyx_L1_error)
19066  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19067  (__pyx_v_xx[1]) = __pyx_t_2;
19068 
19069  /* "WaveTools.py":1124
19070  * xx[0] = x[0]
19071  * xx[1] = x[1]
19072  * xx[2] = x[2] # <<<<<<<<<<<<<<
19073  * if self.waveType =="Linear":
19074  * return self.etaLinear(xx,t)
19075  */
19076  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1124, __pyx_L1_error)
19077  __Pyx_GOTREF(__pyx_t_1);
19078  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1124, __pyx_L1_error)
19079  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19080  (__pyx_v_xx[2]) = __pyx_t_2;
19081 
19082  /* "WaveTools.py":1125
19083  * xx[1] = x[1]
19084  * xx[2] = x[2]
19085  * if self.waveType =="Linear": # <<<<<<<<<<<<<<
19086  * return self.etaLinear(xx,t)
19087  * else:
19088  */
19089  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->waveType, __pyx_n_s_Linear, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1125, __pyx_L1_error)
19090  if (__pyx_t_3) {
19091 
19092  /* "WaveTools.py":1126
19093  * xx[2] = x[2]
19094  * if self.waveType =="Linear":
19095  * return self.etaLinear(xx,t) # <<<<<<<<<<<<<<
19096  * else:
19097  * return self.etaFenton(xx,t)
19098  */
19099  __Pyx_XDECREF(__pyx_r);
19100  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1126, __pyx_L1_error)
19101  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->etaLinear(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1126, __pyx_L1_error)
19102  __Pyx_GOTREF(__pyx_t_1);
19103  __pyx_r = __pyx_t_1;
19104  __pyx_t_1 = 0;
19105  goto __pyx_L0;
19106 
19107  /* "WaveTools.py":1125
19108  * xx[1] = x[1]
19109  * xx[2] = x[2]
19110  * if self.waveType =="Linear": # <<<<<<<<<<<<<<
19111  * return self.etaLinear(xx,t)
19112  * else:
19113  */
19114  }
19115 
19116  /* "WaveTools.py":1128
19117  * return self.etaLinear(xx,t)
19118  * else:
19119  * return self.etaFenton(xx,t) # <<<<<<<<<<<<<<
19120  *
19121  * def u(self,x,t):
19122  */
19123  /*else*/ {
19124  __Pyx_XDECREF(__pyx_r);
19125  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1128, __pyx_L1_error)
19126  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->etaFenton(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1128, __pyx_L1_error)
19127  __Pyx_GOTREF(__pyx_t_1);
19128  __pyx_r = __pyx_t_1;
19129  __pyx_t_1 = 0;
19130  goto __pyx_L0;
19131  }
19132 
19133  /* "WaveTools.py":1106
19134  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast)
19135  *
19136  * def eta(self,x,t): # <<<<<<<<<<<<<<
19137  * """Calculates free surface elevation (MonochromaticWaves class)
19138  * Parameters
19139  */
19140 
19141  /* function exit code */
19142  __pyx_L1_error:;
19143  __Pyx_XDECREF(__pyx_t_1);
19144  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
19145  __pyx_r = NULL;
19146  __pyx_L0:;
19147  __Pyx_XGIVEREF(__pyx_r);
19148  __Pyx_RefNannyFinishContext();
19149  return __pyx_r;
19150 }
19151 
19152 /* "WaveTools.py":1130
19153  * return self.etaFenton(xx,t)
19154  *
19155  * def u(self,x,t): # <<<<<<<<<<<<<<
19156  * """Calculates wave velocity vector (MonochromaticWaves class).
19157  * Parameters
19158  */
19159 
19160 /* Python wrapper */
19161 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
19162 static char __pyx_doc_9WaveTools_18MonochromaticWaves_4u[] = "Calculates wave velocity vector (MonochromaticWaves class).\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
19163 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_18MonochromaticWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_4u};
19164 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
19165  PyObject *__pyx_v_x = 0;
19166  PyObject *__pyx_v_t = 0;
19167  int __pyx_lineno = 0;
19168  const char *__pyx_filename = NULL;
19169  int __pyx_clineno = 0;
19170  PyObject *__pyx_r = 0;
19171  __Pyx_RefNannyDeclarations
19172  __Pyx_RefNannySetupContext("u (wrapper)", 0);
19173  {
19174  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
19175  PyObject* values[2] = {0,0};
19176  if (unlikely(__pyx_kwds)) {
19177  Py_ssize_t kw_args;
19178  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
19179  switch (pos_args) {
19180  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19181  CYTHON_FALLTHROUGH;
19182  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19183  CYTHON_FALLTHROUGH;
19184  case 0: break;
19185  default: goto __pyx_L5_argtuple_error;
19186  }
19187  kw_args = PyDict_Size(__pyx_kwds);
19188  switch (pos_args) {
19189  case 0:
19190  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
19191  else goto __pyx_L5_argtuple_error;
19192  CYTHON_FALLTHROUGH;
19193  case 1:
19194  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
19195  else {
19196  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 1130, __pyx_L3_error)
19197  }
19198  }
19199  if (unlikely(kw_args > 0)) {
19200  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 1130, __pyx_L3_error)
19201  }
19202  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
19203  goto __pyx_L5_argtuple_error;
19204  } else {
19205  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19206  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19207  }
19208  __pyx_v_x = values[0];
19209  __pyx_v_t = values[1];
19210  }
19211  goto __pyx_L4_argument_unpacking_done;
19212  __pyx_L5_argtuple_error:;
19213  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1130, __pyx_L3_error)
19214  __pyx_L3_error:;
19215  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
19216  __Pyx_RefNannyFinishContext();
19217  return NULL;
19218  __pyx_L4_argument_unpacking_done:;
19219  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_4u(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
19220 
19221  /* function exit code */
19222  __Pyx_RefNannyFinishContext();
19223  return __pyx_r;
19224 }
19225 
19226 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_4u(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
19227  double __pyx_v_xx[3];
19228  double __pyx_v_cppU[3];
19229  PyObject *__pyx_v_ii = NULL;
19230  PyObject *__pyx_v_U = NULL;
19231  PyObject *__pyx_r = NULL;
19232  __Pyx_RefNannyDeclarations
19233  PyObject *__pyx_t_1 = NULL;
19234  PyObject *__pyx_t_2 = NULL;
19235  PyObject *__pyx_t_3 = NULL;
19236  Py_ssize_t __pyx_t_4;
19237  PyObject *(*__pyx_t_5)(PyObject *);
19238  double __pyx_t_6;
19239  Py_ssize_t __pyx_t_7;
19240  int __pyx_t_8;
19241  int __pyx_lineno = 0;
19242  const char *__pyx_filename = NULL;
19243  int __pyx_clineno = 0;
19244  __Pyx_RefNannySetupContext("u", 0);
19245 
19246  /* "WaveTools.py":1147
19247  * cython.declare(xx=cython.double[3])
19248  * cython.declare(cppU=cython.double[3])
19249  * for ii in range(3): # <<<<<<<<<<<<<<
19250  * xx[ii] = x[ii]
19251  * cppU[ii] = 0.
19252  */
19253  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error)
19254  __Pyx_GOTREF(__pyx_t_2);
19255  __pyx_t_3 = NULL;
19256  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
19257  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
19258  if (likely(__pyx_t_3)) {
19259  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
19260  __Pyx_INCREF(__pyx_t_3);
19261  __Pyx_INCREF(function);
19262  __Pyx_DECREF_SET(__pyx_t_2, function);
19263  }
19264  }
19265  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
19266  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19267  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
19268  __Pyx_GOTREF(__pyx_t_1);
19269  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19270  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
19271  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
19272  __pyx_t_5 = NULL;
19273  } else {
19274  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error)
19275  __Pyx_GOTREF(__pyx_t_2);
19276  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1147, __pyx_L1_error)
19277  }
19278  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19279  for (;;) {
19280  if (likely(!__pyx_t_5)) {
19281  if (likely(PyList_CheckExact(__pyx_t_2))) {
19282  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
19283  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
19284  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1147, __pyx_L1_error)
19285  #else
19286  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
19287  __Pyx_GOTREF(__pyx_t_1);
19288  #endif
19289  } else {
19290  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
19291  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
19292  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1147, __pyx_L1_error)
19293  #else
19294  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
19295  __Pyx_GOTREF(__pyx_t_1);
19296  #endif
19297  }
19298  } else {
19299  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
19300  if (unlikely(!__pyx_t_1)) {
19301  PyObject* exc_type = PyErr_Occurred();
19302  if (exc_type) {
19303  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
19304  else __PYX_ERR(0, 1147, __pyx_L1_error)
19305  }
19306  break;
19307  }
19308  __Pyx_GOTREF(__pyx_t_1);
19309  }
19310  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
19311  __pyx_t_1 = 0;
19312 
19313  /* "WaveTools.py":1148
19314  * cython.declare(cppU=cython.double[3])
19315  * for ii in range(3):
19316  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
19317  * cppU[ii] = 0.
19318  *
19319  */
19320  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L1_error)
19321  __Pyx_GOTREF(__pyx_t_1);
19322  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1148, __pyx_L1_error)
19323  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19324  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1148, __pyx_L1_error)
19325  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
19326 
19327  /* "WaveTools.py":1149
19328  * for ii in range(3):
19329  * xx[ii] = x[ii]
19330  * cppU[ii] = 0. # <<<<<<<<<<<<<<
19331  *
19332  *
19333  */
19334  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1149, __pyx_L1_error)
19335  (__pyx_v_cppU[__pyx_t_7]) = 0.;
19336 
19337  /* "WaveTools.py":1147
19338  * cython.declare(xx=cython.double[3])
19339  * cython.declare(cppU=cython.double[3])
19340  * for ii in range(3): # <<<<<<<<<<<<<<
19341  * xx[ii] = x[ii]
19342  * cppU[ii] = 0.
19343  */
19344  }
19345  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19346 
19347  /* "WaveTools.py":1152
19348  *
19349  *
19350  * U = np.zeros(3,) # <<<<<<<<<<<<<<
19351  * if self.waveType =="Linear":
19352  * self.uLinear(cppU,xx,t)
19353  */
19354  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error)
19355  __Pyx_GOTREF(__pyx_t_1);
19356  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1152, __pyx_L1_error)
19357  __Pyx_GOTREF(__pyx_t_3);
19358  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19359  __pyx_t_1 = NULL;
19360  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
19361  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
19362  if (likely(__pyx_t_1)) {
19363  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
19364  __Pyx_INCREF(__pyx_t_1);
19365  __Pyx_INCREF(function);
19366  __Pyx_DECREF_SET(__pyx_t_3, function);
19367  }
19368  }
19369  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
19370  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
19371  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1152, __pyx_L1_error)
19372  __Pyx_GOTREF(__pyx_t_2);
19373  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19374  __pyx_v_U = __pyx_t_2;
19375  __pyx_t_2 = 0;
19376 
19377  /* "WaveTools.py":1153
19378  *
19379  * U = np.zeros(3,)
19380  * if self.waveType =="Linear": # <<<<<<<<<<<<<<
19381  * self.uLinear(cppU,xx,t)
19382  * U[0] = cppU[0]
19383  */
19384  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_self->waveType, __pyx_n_s_Linear, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error)
19385  if (__pyx_t_8) {
19386 
19387  /* "WaveTools.py":1154
19388  * U = np.zeros(3,)
19389  * if self.waveType =="Linear":
19390  * self.uLinear(cppU,xx,t) # <<<<<<<<<<<<<<
19391  * U[0] = cppU[0]
19392  * U[1] = cppU[1]
19393  */
19394  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1154, __pyx_L1_error)
19395  ((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->uLinear(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
19396 
19397  /* "WaveTools.py":1155
19398  * if self.waveType =="Linear":
19399  * self.uLinear(cppU,xx,t)
19400  * U[0] = cppU[0] # <<<<<<<<<<<<<<
19401  * U[1] = cppU[1]
19402  * U[2] = cppU[2]
19403  */
19404  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1155, __pyx_L1_error)
19405  __Pyx_GOTREF(__pyx_t_2);
19406  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1155, __pyx_L1_error)
19407  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19408 
19409  /* "WaveTools.py":1156
19410  * self.uLinear(cppU,xx,t)
19411  * U[0] = cppU[0]
19412  * U[1] = cppU[1] # <<<<<<<<<<<<<<
19413  * U[2] = cppU[2]
19414  * else:
19415  */
19416  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1156, __pyx_L1_error)
19417  __Pyx_GOTREF(__pyx_t_2);
19418  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1156, __pyx_L1_error)
19419  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19420 
19421  /* "WaveTools.py":1157
19422  * U[0] = cppU[0]
19423  * U[1] = cppU[1]
19424  * U[2] = cppU[2] # <<<<<<<<<<<<<<
19425  * else:
19426  * self.uFenton(cppU,xx,t)
19427  */
19428  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1157, __pyx_L1_error)
19429  __Pyx_GOTREF(__pyx_t_2);
19430  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1157, __pyx_L1_error)
19431  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19432 
19433  /* "WaveTools.py":1153
19434  *
19435  * U = np.zeros(3,)
19436  * if self.waveType =="Linear": # <<<<<<<<<<<<<<
19437  * self.uLinear(cppU,xx,t)
19438  * U[0] = cppU[0]
19439  */
19440  goto __pyx_L5;
19441  }
19442 
19443  /* "WaveTools.py":1159
19444  * U[2] = cppU[2]
19445  * else:
19446  * self.uFenton(cppU,xx,t) # <<<<<<<<<<<<<<
19447  * U[0] = cppU[0]
19448  * U[1] = cppU[1]
19449  */
19450  /*else*/ {
19451  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1159, __pyx_L1_error)
19452  ((struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves *)__pyx_v_self->__pyx_vtab)->uFenton(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
19453 
19454  /* "WaveTools.py":1160
19455  * else:
19456  * self.uFenton(cppU,xx,t)
19457  * U[0] = cppU[0] # <<<<<<<<<<<<<<
19458  * U[1] = cppU[1]
19459  * U[2] = cppU[2]
19460  */
19461  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1160, __pyx_L1_error)
19462  __Pyx_GOTREF(__pyx_t_2);
19463  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1160, __pyx_L1_error)
19464  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19465 
19466  /* "WaveTools.py":1161
19467  * self.uFenton(cppU,xx,t)
19468  * U[0] = cppU[0]
19469  * U[1] = cppU[1] # <<<<<<<<<<<<<<
19470  * U[2] = cppU[2]
19471  * return U
19472  */
19473  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1161, __pyx_L1_error)
19474  __Pyx_GOTREF(__pyx_t_2);
19475  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1161, __pyx_L1_error)
19476  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19477 
19478  /* "WaveTools.py":1162
19479  * U[0] = cppU[0]
19480  * U[1] = cppU[1]
19481  * U[2] = cppU[2] # <<<<<<<<<<<<<<
19482  * return U
19483  *
19484  */
19485  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1162, __pyx_L1_error)
19486  __Pyx_GOTREF(__pyx_t_2);
19487  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1162, __pyx_L1_error)
19488  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19489  }
19490  __pyx_L5:;
19491 
19492  /* "WaveTools.py":1163
19493  * U[1] = cppU[1]
19494  * U[2] = cppU[2]
19495  * return U # <<<<<<<<<<<<<<
19496  *
19497  * class NewWave(object):
19498  */
19499  __Pyx_XDECREF(__pyx_r);
19500  __Pyx_INCREF(__pyx_v_U);
19501  __pyx_r = __pyx_v_U;
19502  goto __pyx_L0;
19503 
19504  /* "WaveTools.py":1130
19505  * return self.etaFenton(xx,t)
19506  *
19507  * def u(self,x,t): # <<<<<<<<<<<<<<
19508  * """Calculates wave velocity vector (MonochromaticWaves class).
19509  * Parameters
19510  */
19511 
19512  /* function exit code */
19513  __pyx_L1_error:;
19514  __Pyx_XDECREF(__pyx_t_1);
19515  __Pyx_XDECREF(__pyx_t_2);
19516  __Pyx_XDECREF(__pyx_t_3);
19517  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
19518  __pyx_r = NULL;
19519  __pyx_L0:;
19520  __Pyx_XDECREF(__pyx_v_ii);
19521  __Pyx_XDECREF(__pyx_v_U);
19522  __Pyx_XGIVEREF(__pyx_r);
19523  __Pyx_RefNannyFinishContext();
19524  return __pyx_r;
19525 }
19526 
19527 /* "WaveTools.pxd":69
19528  * cdef double[1000] tanh_c
19529  * cdef public:
19530  * double wavelength # <<<<<<<<<<<<<<
19531  * double mwl
19532  * cdef cfeta _cpp_eta
19533  */
19534 
19535 /* Python wrapper */
19536 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_10wavelength_1__get__(PyObject *__pyx_v_self); /*proto*/
19537 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_10wavelength_1__get__(PyObject *__pyx_v_self) {
19538  PyObject *__pyx_r = 0;
19539  __Pyx_RefNannyDeclarations
19540  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
19541  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_10wavelength___get__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self));
19542 
19543  /* function exit code */
19544  __Pyx_RefNannyFinishContext();
19545  return __pyx_r;
19546 }
19547 
19548 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_10wavelength___get__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self) {
19549  PyObject *__pyx_r = NULL;
19550  __Pyx_RefNannyDeclarations
19551  PyObject *__pyx_t_1 = NULL;
19552  int __pyx_lineno = 0;
19553  const char *__pyx_filename = NULL;
19554  int __pyx_clineno = 0;
19555  __Pyx_RefNannySetupContext("__get__", 0);
19556  __Pyx_XDECREF(__pyx_r);
19557  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->wavelength); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 69, __pyx_L1_error)
19558  __Pyx_GOTREF(__pyx_t_1);
19559  __pyx_r = __pyx_t_1;
19560  __pyx_t_1 = 0;
19561  goto __pyx_L0;
19562 
19563  /* function exit code */
19564  __pyx_L1_error:;
19565  __Pyx_XDECREF(__pyx_t_1);
19566  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.wavelength.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19567  __pyx_r = NULL;
19568  __pyx_L0:;
19569  __Pyx_XGIVEREF(__pyx_r);
19570  __Pyx_RefNannyFinishContext();
19571  return __pyx_r;
19572 }
19573 
19574 /* Python wrapper */
19575 static int __pyx_pw_9WaveTools_18MonochromaticWaves_10wavelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
19576 static int __pyx_pw_9WaveTools_18MonochromaticWaves_10wavelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
19577  int __pyx_r;
19578  __Pyx_RefNannyDeclarations
19579  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
19580  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_10wavelength_2__set__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
19581 
19582  /* function exit code */
19583  __Pyx_RefNannyFinishContext();
19584  return __pyx_r;
19585 }
19586 
19587 static int __pyx_pf_9WaveTools_18MonochromaticWaves_10wavelength_2__set__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_value) {
19588  int __pyx_r;
19589  __Pyx_RefNannyDeclarations
19590  double __pyx_t_1;
19591  int __pyx_lineno = 0;
19592  const char *__pyx_filename = NULL;
19593  int __pyx_clineno = 0;
19594  __Pyx_RefNannySetupContext("__set__", 0);
19595  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 69, __pyx_L1_error)
19596  __pyx_v_self->wavelength = __pyx_t_1;
19597 
19598  /* function exit code */
19599  __pyx_r = 0;
19600  goto __pyx_L0;
19601  __pyx_L1_error:;
19602  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.wavelength.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19603  __pyx_r = -1;
19604  __pyx_L0:;
19605  __Pyx_RefNannyFinishContext();
19606  return __pyx_r;
19607 }
19608 
19609 /* "WaveTools.pxd":70
19610  * cdef public:
19611  * double wavelength
19612  * double mwl # <<<<<<<<<<<<<<
19613  * cdef cfeta _cpp_eta
19614  * cdef cfvel _cpp_u
19615  */
19616 
19617 /* Python wrapper */
19618 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
19619 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3mwl_1__get__(PyObject *__pyx_v_self) {
19620  PyObject *__pyx_r = 0;
19621  __Pyx_RefNannyDeclarations
19622  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
19623  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_3mwl___get__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self));
19624 
19625  /* function exit code */
19626  __Pyx_RefNannyFinishContext();
19627  return __pyx_r;
19628 }
19629 
19630 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_3mwl___get__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self) {
19631  PyObject *__pyx_r = NULL;
19632  __Pyx_RefNannyDeclarations
19633  PyObject *__pyx_t_1 = NULL;
19634  int __pyx_lineno = 0;
19635  const char *__pyx_filename = NULL;
19636  int __pyx_clineno = 0;
19637  __Pyx_RefNannySetupContext("__get__", 0);
19638  __Pyx_XDECREF(__pyx_r);
19639  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 70, __pyx_L1_error)
19640  __Pyx_GOTREF(__pyx_t_1);
19641  __pyx_r = __pyx_t_1;
19642  __pyx_t_1 = 0;
19643  goto __pyx_L0;
19644 
19645  /* function exit code */
19646  __pyx_L1_error:;
19647  __Pyx_XDECREF(__pyx_t_1);
19648  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19649  __pyx_r = NULL;
19650  __pyx_L0:;
19651  __Pyx_XGIVEREF(__pyx_r);
19652  __Pyx_RefNannyFinishContext();
19653  return __pyx_r;
19654 }
19655 
19656 /* Python wrapper */
19657 static int __pyx_pw_9WaveTools_18MonochromaticWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
19658 static int __pyx_pw_9WaveTools_18MonochromaticWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
19659  int __pyx_r;
19660  __Pyx_RefNannyDeclarations
19661  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
19662  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_3mwl_2__set__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
19663 
19664  /* function exit code */
19665  __Pyx_RefNannyFinishContext();
19666  return __pyx_r;
19667 }
19668 
19669 static int __pyx_pf_9WaveTools_18MonochromaticWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, PyObject *__pyx_v_value) {
19670  int __pyx_r;
19671  __Pyx_RefNannyDeclarations
19672  double __pyx_t_1;
19673  int __pyx_lineno = 0;
19674  const char *__pyx_filename = NULL;
19675  int __pyx_clineno = 0;
19676  __Pyx_RefNannySetupContext("__set__", 0);
19677  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 70, __pyx_L1_error)
19678  __pyx_v_self->mwl = __pyx_t_1;
19679 
19680  /* function exit code */
19681  __pyx_r = 0;
19682  goto __pyx_L0;
19683  __pyx_L1_error:;
19684  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19685  __pyx_r = -1;
19686  __pyx_L0:;
19687  __Pyx_RefNannyFinishContext();
19688  return __pyx_r;
19689 }
19690 
19691 /* "(tree fragment)":1
19692  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
19693  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19694  * def __setstate_cython__(self, __pyx_state):
19695  */
19696 
19697 /* Python wrapper */
19698 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
19699 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_7__reduce_cython__, METH_NOARGS, 0};
19700 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
19701  PyObject *__pyx_r = 0;
19702  __Pyx_RefNannyDeclarations
19703  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
19704  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_6__reduce_cython__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self));
19705 
19706  /* function exit code */
19707  __Pyx_RefNannyFinishContext();
19708  return __pyx_r;
19709 }
19710 
19711 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self) {
19712  PyObject *__pyx_r = NULL;
19713  __Pyx_RefNannyDeclarations
19714  PyObject *__pyx_t_1 = NULL;
19715  int __pyx_lineno = 0;
19716  const char *__pyx_filename = NULL;
19717  int __pyx_clineno = 0;
19718  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
19719 
19720  /* "(tree fragment)":2
19721  * def __reduce_cython__(self):
19722  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
19723  * def __setstate_cython__(self, __pyx_state):
19724  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19725  */
19726  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
19727  __Pyx_GOTREF(__pyx_t_1);
19728  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
19729  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19730  __PYX_ERR(1, 2, __pyx_L1_error)
19731 
19732  /* "(tree fragment)":1
19733  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
19734  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19735  * def __setstate_cython__(self, __pyx_state):
19736  */
19737 
19738  /* function exit code */
19739  __pyx_L1_error:;
19740  __Pyx_XDECREF(__pyx_t_1);
19741  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19742  __pyx_r = NULL;
19743  __Pyx_XGIVEREF(__pyx_r);
19744  __Pyx_RefNannyFinishContext();
19745  return __pyx_r;
19746 }
19747 
19748 /* "(tree fragment)":3
19749  * def __reduce_cython__(self):
19750  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19751  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
19752  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19753  */
19754 
19755 /* Python wrapper */
19756 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
19757 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_9__setstate_cython__, METH_O, 0};
19758 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
19759  PyObject *__pyx_r = 0;
19760  __Pyx_RefNannyDeclarations
19761  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
19762  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_8__setstate_cython__(((struct __pyx_obj_9WaveTools_MonochromaticWaves *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
19763 
19764  /* function exit code */
19765  __Pyx_RefNannyFinishContext();
19766  return __pyx_r;
19767 }
19768 
19769 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MonochromaticWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
19770  PyObject *__pyx_r = NULL;
19771  __Pyx_RefNannyDeclarations
19772  PyObject *__pyx_t_1 = NULL;
19773  int __pyx_lineno = 0;
19774  const char *__pyx_filename = NULL;
19775  int __pyx_clineno = 0;
19776  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
19777 
19778  /* "(tree fragment)":4
19779  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19780  * def __setstate_cython__(self, __pyx_state):
19781  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
19782  */
19783  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
19784  __Pyx_GOTREF(__pyx_t_1);
19785  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
19786  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19787  __PYX_ERR(1, 4, __pyx_L1_error)
19788 
19789  /* "(tree fragment)":3
19790  * def __reduce_cython__(self):
19791  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19792  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
19793  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
19794  */
19795 
19796  /* function exit code */
19797  __pyx_L1_error:;
19798  __Pyx_XDECREF(__pyx_t_1);
19799  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19800  __pyx_r = NULL;
19801  __Pyx_XGIVEREF(__pyx_r);
19802  __Pyx_RefNannyFinishContext();
19803  return __pyx_r;
19804 }
19805 
19806 /* "WaveTools.py":1204
19807  * Switch for optimised functions
19808  * """
19809  * def __cinit__(self, # <<<<<<<<<<<<<<
19810  * Tp,
19811  * Hs,
19812  */
19813 
19814 /* Python wrapper */
19815 static int __pyx_pw_9WaveTools_7NewWave_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
19816 static int __pyx_pw_9WaveTools_7NewWave_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
19817  PyObject *__pyx_v_Tp = 0;
19818  PyObject *__pyx_v_Hs = 0;
19819  PyObject *__pyx_v_mwl = 0;
19820  PyObject *__pyx_v_depth = 0;
19821  PyObject *__pyx_v_waveDir = 0;
19822  PyObject *__pyx_v_g = 0;
19823  PyObject *__pyx_v_N = 0;
19824  PyObject *__pyx_v_bandFactor = 0;
19825  PyObject *__pyx_v_spectName = 0;
19826  PyObject *__pyx_v_spectral_params = 0;
19827  CYTHON_UNUSED PyObject *__pyx_v_crestFocus = 0;
19828  PyObject *__pyx_v_xfocus = 0;
19829  PyObject *__pyx_v_tfocus = 0;
19830  PyObject *__pyx_v_fast = 0;
19831  PyObject *__pyx_v_Nmax = 0;
19832  int __pyx_lineno = 0;
19833  const char *__pyx_filename = NULL;
19834  int __pyx_clineno = 0;
19835  int __pyx_r;
19836  __Pyx_RefNannyDeclarations
19837  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
19838  {
19839  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_crestFocus,&__pyx_n_s_xfocus,&__pyx_n_s_tfocus,&__pyx_n_s_fast,&__pyx_n_s_Nmax,0};
19840  PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
19841 
19842  /* "WaveTools.py":1214
19843  * bandFactor, #accelerationof gravity
19844  * spectName ,# random words will result in error and return the available spectra
19845  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
19846  * crestFocus=True,
19847  * xfocus=np.array([0.,0.,0]),
19848  */
19849  values[9] = ((PyObject *)Py_None);
19850 
19851  /* "WaveTools.py":1215
19852  * spectName ,# random words will result in error and return the available spectra
19853  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
19854  * crestFocus=True, # <<<<<<<<<<<<<<
19855  * xfocus=np.array([0.,0.,0]),
19856  * tfocus=0.,
19857  */
19858  values[10] = ((PyObject *)Py_True);
19859  values[11] = __pyx_k__22;
19860  values[12] = ((PyObject *)__pyx_float_0_);
19861 
19862  /* "WaveTools.py":1218
19863  * xfocus=np.array([0.,0.,0]),
19864  * tfocus=0.,
19865  * fast = True, # <<<<<<<<<<<<<<
19866  * Nmax = 1000
19867  * ):
19868  */
19869  values[13] = ((PyObject *)Py_True);
19870  values[14] = ((PyObject *)__pyx_int_1000);
19871  if (unlikely(__pyx_kwds)) {
19872  Py_ssize_t kw_args;
19873  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
19874  switch (pos_args) {
19875  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
19876  CYTHON_FALLTHROUGH;
19877  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
19878  CYTHON_FALLTHROUGH;
19879  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
19880  CYTHON_FALLTHROUGH;
19881  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
19882  CYTHON_FALLTHROUGH;
19883  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
19884  CYTHON_FALLTHROUGH;
19885  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
19886  CYTHON_FALLTHROUGH;
19887  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
19888  CYTHON_FALLTHROUGH;
19889  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
19890  CYTHON_FALLTHROUGH;
19891  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
19892  CYTHON_FALLTHROUGH;
19893  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
19894  CYTHON_FALLTHROUGH;
19895  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
19896  CYTHON_FALLTHROUGH;
19897  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
19898  CYTHON_FALLTHROUGH;
19899  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
19900  CYTHON_FALLTHROUGH;
19901  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19902  CYTHON_FALLTHROUGH;
19903  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19904  CYTHON_FALLTHROUGH;
19905  case 0: break;
19906  default: goto __pyx_L5_argtuple_error;
19907  }
19908  kw_args = PyDict_Size(__pyx_kwds);
19909  switch (pos_args) {
19910  case 0:
19911  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
19912  else goto __pyx_L5_argtuple_error;
19913  CYTHON_FALLTHROUGH;
19914  case 1:
19915  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
19916  else {
19917  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 1); __PYX_ERR(0, 1204, __pyx_L3_error)
19918  }
19919  CYTHON_FALLTHROUGH;
19920  case 2:
19921  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
19922  else {
19923  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 2); __PYX_ERR(0, 1204, __pyx_L3_error)
19924  }
19925  CYTHON_FALLTHROUGH;
19926  case 3:
19927  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
19928  else {
19929  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 3); __PYX_ERR(0, 1204, __pyx_L3_error)
19930  }
19931  CYTHON_FALLTHROUGH;
19932  case 4:
19933  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
19934  else {
19935  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 4); __PYX_ERR(0, 1204, __pyx_L3_error)
19936  }
19937  CYTHON_FALLTHROUGH;
19938  case 5:
19939  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
19940  else {
19941  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 5); __PYX_ERR(0, 1204, __pyx_L3_error)
19942  }
19943  CYTHON_FALLTHROUGH;
19944  case 6:
19945  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
19946  else {
19947  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 6); __PYX_ERR(0, 1204, __pyx_L3_error)
19948  }
19949  CYTHON_FALLTHROUGH;
19950  case 7:
19951  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
19952  else {
19953  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 7); __PYX_ERR(0, 1204, __pyx_L3_error)
19954  }
19955  CYTHON_FALLTHROUGH;
19956  case 8:
19957  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
19958  else {
19959  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, 8); __PYX_ERR(0, 1204, __pyx_L3_error)
19960  }
19961  CYTHON_FALLTHROUGH;
19962  case 9:
19963  if (kw_args > 0) {
19964  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params);
19965  if (value) { values[9] = value; kw_args--; }
19966  }
19967  CYTHON_FALLTHROUGH;
19968  case 10:
19969  if (kw_args > 0) {
19970  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_crestFocus);
19971  if (value) { values[10] = value; kw_args--; }
19972  }
19973  CYTHON_FALLTHROUGH;
19974  case 11:
19975  if (kw_args > 0) {
19976  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfocus);
19977  if (value) { values[11] = value; kw_args--; }
19978  }
19979  CYTHON_FALLTHROUGH;
19980  case 12:
19981  if (kw_args > 0) {
19982  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tfocus);
19983  if (value) { values[12] = value; kw_args--; }
19984  }
19985  CYTHON_FALLTHROUGH;
19986  case 13:
19987  if (kw_args > 0) {
19988  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
19989  if (value) { values[13] = value; kw_args--; }
19990  }
19991  CYTHON_FALLTHROUGH;
19992  case 14:
19993  if (kw_args > 0) {
19994  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nmax);
19995  if (value) { values[14] = value; kw_args--; }
19996  }
19997  }
19998  if (unlikely(kw_args > 0)) {
19999  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1204, __pyx_L3_error)
20000  }
20001  } else {
20002  switch (PyTuple_GET_SIZE(__pyx_args)) {
20003  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
20004  CYTHON_FALLTHROUGH;
20005  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
20006  CYTHON_FALLTHROUGH;
20007  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
20008  CYTHON_FALLTHROUGH;
20009  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
20010  CYTHON_FALLTHROUGH;
20011  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
20012  CYTHON_FALLTHROUGH;
20013  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
20014  CYTHON_FALLTHROUGH;
20015  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
20016  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
20017  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
20018  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
20019  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
20020  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
20021  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
20022  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
20023  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
20024  break;
20025  default: goto __pyx_L5_argtuple_error;
20026  }
20027  }
20028  __pyx_v_Tp = values[0];
20029  __pyx_v_Hs = values[1];
20030  __pyx_v_mwl = values[2];
20031  __pyx_v_depth = values[3];
20032  __pyx_v_waveDir = values[4];
20033  __pyx_v_g = values[5];
20034  __pyx_v_N = values[6];
20035  __pyx_v_bandFactor = values[7];
20036  __pyx_v_spectName = values[8];
20037  __pyx_v_spectral_params = values[9];
20038  __pyx_v_crestFocus = values[10];
20039  __pyx_v_xfocus = values[11];
20040  __pyx_v_tfocus = values[12];
20041  __pyx_v_fast = values[13];
20042  __pyx_v_Nmax = values[14];
20043  }
20044  goto __pyx_L4_argument_unpacking_done;
20045  __pyx_L5_argtuple_error:;
20046  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 15, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1204, __pyx_L3_error)
20047  __pyx_L3_error:;
20048  __Pyx_AddTraceback("WaveTools.NewWave.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
20049  __Pyx_RefNannyFinishContext();
20050  return -1;
20051  __pyx_L4_argument_unpacking_done:;
20052  __pyx_r = __pyx_pf_9WaveTools_7NewWave___cinit__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_crestFocus, __pyx_v_xfocus, __pyx_v_tfocus, __pyx_v_fast, __pyx_v_Nmax);
20053 
20054  /* "WaveTools.py":1204
20055  * Switch for optimised functions
20056  * """
20057  * def __cinit__(self, # <<<<<<<<<<<<<<
20058  * Tp,
20059  * Hs,
20060  */
20061 
20062  /* function exit code */
20063  __Pyx_RefNannyFinishContext();
20064  return __pyx_r;
20065 }
20066 static PyObject *__pyx_gb_9WaveTools_7NewWave_9__cinit___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
20067 
20068 /* "WaveTools.py":1268
20069  * if(self.N > 10000):
20070  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
20071  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega # <<<<<<<<<<<<<<
20072  *
20073  *
20074  */
20075 
20076 static PyObject *__pyx_pf_9WaveTools_7NewWave_9__cinit___genexpr(PyObject *__pyx_self) {
20077  struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
20078  PyObject *__pyx_r = NULL;
20079  __Pyx_RefNannyDeclarations
20080  int __pyx_lineno = 0;
20081  const char *__pyx_filename = NULL;
20082  int __pyx_clineno = 0;
20083  __Pyx_RefNannySetupContext("genexpr", 0);
20084  __pyx_cur_scope = (struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *)__pyx_tp_new_9WaveTools___pyx_scope_struct_1_genexpr(__pyx_ptype_9WaveTools___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
20085  if (unlikely(!__pyx_cur_scope)) {
20086  __pyx_cur_scope = ((struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *)Py_None);
20087  __Pyx_INCREF(Py_None);
20088  __PYX_ERR(0, 1268, __pyx_L1_error)
20089  } else {
20090  __Pyx_GOTREF(__pyx_cur_scope);
20091  }
20092  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *) __pyx_self;
20093  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
20094  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
20095  {
20096  __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9WaveTools_7NewWave_9__cinit___2generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_cinit___locals_genexpr, __pyx_n_s_WaveTools); if (unlikely(!gen)) __PYX_ERR(0, 1268, __pyx_L1_error)
20097  __Pyx_DECREF(__pyx_cur_scope);
20098  __Pyx_RefNannyFinishContext();
20099  return (PyObject *) gen;
20100  }
20101 
20102  /* function exit code */
20103  __pyx_L1_error:;
20104  __Pyx_AddTraceback("WaveTools.NewWave.__cinit__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
20105  __pyx_r = NULL;
20106  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
20107  __Pyx_XGIVEREF(__pyx_r);
20108  __Pyx_RefNannyFinishContext();
20109  return __pyx_r;
20110 }
20111 
20112 static PyObject *__pyx_gb_9WaveTools_7NewWave_9__cinit___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
20113 {
20114  struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
20115  PyObject *__pyx_r = NULL;
20116  PyObject *__pyx_t_1 = NULL;
20117  PyObject *__pyx_t_2 = NULL;
20118  PyObject *__pyx_t_3 = NULL;
20119  Py_ssize_t __pyx_t_4;
20120  PyObject *(*__pyx_t_5)(PyObject *);
20121  PyObject *__pyx_t_6 = NULL;
20122  int __pyx_lineno = 0;
20123  const char *__pyx_filename = NULL;
20124  int __pyx_clineno = 0;
20125  __Pyx_RefNannyDeclarations
20126  __Pyx_RefNannySetupContext("genexpr", 0);
20127  switch (__pyx_generator->resume_label) {
20128  case 0: goto __pyx_L3_first_run;
20129  case 1: goto __pyx_L6_resume_from_yield;
20130  default: /* CPython raises the right error here */
20131  __Pyx_RefNannyFinishContext();
20132  return NULL;
20133  }
20134  __pyx_L3_first_run:;
20135  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1268, __pyx_L1_error)
20136  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1268, __pyx_L1_error)
20137  __Pyx_GOTREF(__pyx_t_2);
20138  __pyx_t_3 = NULL;
20139  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
20140  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
20141  if (likely(__pyx_t_3)) {
20142  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
20143  __Pyx_INCREF(__pyx_t_3);
20144  __Pyx_INCREF(function);
20145  __Pyx_DECREF_SET(__pyx_t_2, function);
20146  }
20147  }
20148  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
20149  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20150  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
20151  __Pyx_GOTREF(__pyx_t_1);
20152  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20153  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
20154  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
20155  __pyx_t_5 = NULL;
20156  } else {
20157  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1268, __pyx_L1_error)
20158  __Pyx_GOTREF(__pyx_t_2);
20159  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1268, __pyx_L1_error)
20160  }
20161  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20162  for (;;) {
20163  if (likely(!__pyx_t_5)) {
20164  if (likely(PyList_CheckExact(__pyx_t_2))) {
20165  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
20166  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
20167  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1268, __pyx_L1_error)
20168  #else
20169  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
20170  __Pyx_GOTREF(__pyx_t_1);
20171  #endif
20172  } else {
20173  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
20174  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
20175  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1268, __pyx_L1_error)
20176  #else
20177  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
20178  __Pyx_GOTREF(__pyx_t_1);
20179  #endif
20180  }
20181  } else {
20182  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
20183  if (unlikely(!__pyx_t_1)) {
20184  PyObject* exc_type = PyErr_Occurred();
20185  if (exc_type) {
20186  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
20187  else __PYX_ERR(0, 1268, __pyx_L1_error)
20188  }
20189  break;
20190  }
20191  __Pyx_GOTREF(__pyx_t_1);
20192  }
20193  __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_j);
20194  __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_j, __pyx_t_1);
20195  __Pyx_GIVEREF(__pyx_t_1);
20196  __pyx_t_1 = 0;
20197  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1268, __pyx_L1_error) }
20198  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
20199  __Pyx_GOTREF(__pyx_t_1);
20200  __Pyx_INCREF(__pyx_slice__4);
20201  __Pyx_GIVEREF(__pyx_slice__4);
20202  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__4);
20203  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_j);
20204  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_j);
20205  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_j);
20206  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->kDir), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L1_error)
20207  __Pyx_GOTREF(__pyx_t_3);
20208  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20209  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_xfocus)) { __Pyx_RaiseClosureNameError("xfocus"); __PYX_ERR(0, 1268, __pyx_L1_error) }
20210  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_xfocus, __pyx_cur_scope->__pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
20211  __Pyx_GOTREF(__pyx_t_1);
20212  __pyx_t_6 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1268, __pyx_L1_error)
20213  __Pyx_GOTREF(__pyx_t_6);
20214  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20215  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20216  __pyx_r = __pyx_t_6;
20217  __pyx_t_6 = 0;
20218  __Pyx_XGIVEREF(__pyx_t_2);
20219  __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
20220  __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
20221  __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
20222  __Pyx_XGIVEREF(__pyx_r);
20223  __Pyx_RefNannyFinishContext();
20224  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
20225  /* return from generator, yielding value */
20226  __pyx_generator->resume_label = 1;
20227  return __pyx_r;
20228  __pyx_L6_resume_from_yield:;
20229  __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
20230  __pyx_cur_scope->__pyx_t_0 = 0;
20231  __Pyx_XGOTREF(__pyx_t_2);
20232  __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
20233  __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
20234  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1268, __pyx_L1_error)
20235  }
20236  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20237  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
20238 
20239  /* function exit code */
20240  PyErr_SetNone(PyExc_StopIteration);
20241  goto __pyx_L0;
20242  __pyx_L1_error:;
20243  __Pyx_XDECREF(__pyx_t_1);
20244  __Pyx_XDECREF(__pyx_t_2);
20245  __Pyx_XDECREF(__pyx_t_3);
20246  __Pyx_XDECREF(__pyx_t_6);
20247  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
20248  __pyx_L0:;
20249  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
20250  #if !CYTHON_USE_EXC_INFO_STACK
20251  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
20252  #endif
20253  __pyx_generator->resume_label = -1;
20254  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
20255  __Pyx_RefNannyFinishContext();
20256  return __pyx_r;
20257 }
20258 
20259 /* "WaveTools.py":1204
20260  * Switch for optimised functions
20261  * """
20262  * def __cinit__(self, # <<<<<<<<<<<<<<
20263  * Tp,
20264  * Hs,
20265  */
20266 
20267 static int __pyx_pf_9WaveTools_7NewWave___cinit__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, CYTHON_UNUSED PyObject *__pyx_v_crestFocus, PyObject *__pyx_v_xfocus, PyObject *__pyx_v_tfocus, PyObject *__pyx_v_fast, PyObject *__pyx_v_Nmax) {
20268  struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *__pyx_cur_scope;
20269  PyObject *__pyx_v_validSpectra = NULL;
20270  PyObject *__pyx_v_spec_fun = NULL;
20271  double __pyx_v_fmax;
20272  PyObject *__pyx_v_fmin = NULL;
20273  PyObject *__pyx_v_fim = NULL;
20274  PyObject *__pyx_v_wim = NULL;
20275  PyObject *__pyx_v_ii = NULL;
20276  PyObject *__pyx_v_mm = NULL;
20277  PyObject *__pyx_v_m0 = NULL;
20278  PyObject *__pyx_v_An = NULL;
20279  PyObject *__pyx_v_ij = NULL;
20280  PyObject *__pyx_v_kk = NULL;
20281  PyObject *__pyx_gb_9WaveTools_7NewWave_9__cinit___2generator = 0;
20282  int __pyx_r;
20283  __Pyx_RefNannyDeclarations
20284  bool __pyx_t_1;
20285  PyObject *__pyx_t_2 = NULL;
20286  PyObject *__pyx_t_3 = NULL;
20287  PyObject *__pyx_t_4 = NULL;
20288  int __pyx_t_5;
20289  PyObject *__pyx_t_6 = NULL;
20290  PyObject *__pyx_t_7 = NULL;
20291  double __pyx_t_8;
20292  PyObject *__pyx_t_9 = NULL;
20293  int __pyx_t_10;
20294  int __pyx_t_11;
20295  PyObject *__pyx_t_12 = NULL;
20296  PyObject *__pyx_t_13 = NULL;
20297  PyObject *__pyx_t_14 = NULL;
20298  PyObject *__pyx_t_15 = NULL;
20299  Py_ssize_t __pyx_t_16;
20300  PyObject *(*__pyx_t_17)(PyObject *);
20301  Py_ssize_t __pyx_t_18;
20302  double *__pyx_t_19;
20303  PyObject *(*__pyx_t_20)(PyObject *);
20304  Py_ssize_t __pyx_t_21;
20305  int __pyx_lineno = 0;
20306  const char *__pyx_filename = NULL;
20307  int __pyx_clineno = 0;
20308  __Pyx_RefNannySetupContext("__cinit__", 0);
20309  __pyx_cur_scope = (struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *)__pyx_tp_new_9WaveTools___pyx_scope_struct____cinit__(__pyx_ptype_9WaveTools___pyx_scope_struct____cinit__, __pyx_empty_tuple, NULL);
20310  if (unlikely(!__pyx_cur_scope)) {
20311  __pyx_cur_scope = ((struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *)Py_None);
20312  __Pyx_INCREF(Py_None);
20313  __PYX_ERR(0, 1204, __pyx_L1_error)
20314  } else {
20315  __Pyx_GOTREF(__pyx_cur_scope);
20316  }
20317  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
20318  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
20319  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
20320  __pyx_cur_scope->__pyx_v_xfocus = __pyx_v_xfocus;
20321  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_xfocus);
20322  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_xfocus);
20323  __Pyx_INCREF(__pyx_v_waveDir);
20324 
20325  /* "WaveTools.py":1221
20326  * Nmax = 1000
20327  * ):
20328  * self.fast= fast # <<<<<<<<<<<<<<
20329  * validSpectra = [JONSWAP,PM_mod]
20330  * spec_fun =loadExistingFunction(spectName, validSpectra)
20331  */
20332  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1221, __pyx_L1_error)
20333  __pyx_cur_scope->__pyx_v_self->fast = __pyx_t_1;
20334 
20335  /* "WaveTools.py":1222
20336  * ):
20337  * self.fast= fast
20338  * validSpectra = [JONSWAP,PM_mod] # <<<<<<<<<<<<<<
20339  * spec_fun =loadExistingFunction(spectName, validSpectra)
20340  * self.g = np.array(g)
20341  */
20342  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_JONSWAP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1222, __pyx_L1_error)
20343  __Pyx_GOTREF(__pyx_t_2);
20344  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PM_mod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1222, __pyx_L1_error)
20345  __Pyx_GOTREF(__pyx_t_3);
20346  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1222, __pyx_L1_error)
20347  __Pyx_GOTREF(__pyx_t_4);
20348  __Pyx_GIVEREF(__pyx_t_2);
20349  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
20350  __Pyx_GIVEREF(__pyx_t_3);
20351  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
20352  __pyx_t_2 = 0;
20353  __pyx_t_3 = 0;
20354  __pyx_v_validSpectra = ((PyObject*)__pyx_t_4);
20355  __pyx_t_4 = 0;
20356 
20357  /* "WaveTools.py":1223
20358  * self.fast= fast
20359  * validSpectra = [JONSWAP,PM_mod]
20360  * spec_fun =loadExistingFunction(spectName, validSpectra) # <<<<<<<<<<<<<<
20361  * self.g = np.array(g)
20362  * waveDir = setDirVector(np.array(waveDir))
20363  */
20364  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1223, __pyx_L1_error)
20365  __Pyx_GOTREF(__pyx_t_3);
20366  __pyx_t_2 = NULL;
20367  __pyx_t_5 = 0;
20368  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
20369  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
20370  if (likely(__pyx_t_2)) {
20371  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20372  __Pyx_INCREF(__pyx_t_2);
20373  __Pyx_INCREF(function);
20374  __Pyx_DECREF_SET(__pyx_t_3, function);
20375  __pyx_t_5 = 1;
20376  }
20377  }
20378  #if CYTHON_FAST_PYCALL
20379  if (PyFunction_Check(__pyx_t_3)) {
20380  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_spectName, __pyx_v_validSpectra};
20381  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1223, __pyx_L1_error)
20382  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20383  __Pyx_GOTREF(__pyx_t_4);
20384  } else
20385  #endif
20386  #if CYTHON_FAST_PYCCALL
20387  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
20388  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_spectName, __pyx_v_validSpectra};
20389  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1223, __pyx_L1_error)
20390  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20391  __Pyx_GOTREF(__pyx_t_4);
20392  } else
20393  #endif
20394  {
20395  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1223, __pyx_L1_error)
20396  __Pyx_GOTREF(__pyx_t_6);
20397  if (__pyx_t_2) {
20398  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
20399  }
20400  __Pyx_INCREF(__pyx_v_spectName);
20401  __Pyx_GIVEREF(__pyx_v_spectName);
20402  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_spectName);
20403  __Pyx_INCREF(__pyx_v_validSpectra);
20404  __Pyx_GIVEREF(__pyx_v_validSpectra);
20405  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_validSpectra);
20406  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1223, __pyx_L1_error)
20407  __Pyx_GOTREF(__pyx_t_4);
20408  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20409  }
20410  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20411  __pyx_v_spec_fun = __pyx_t_4;
20412  __pyx_t_4 = 0;
20413 
20414  /* "WaveTools.py":1224
20415  * validSpectra = [JONSWAP,PM_mod]
20416  * spec_fun =loadExistingFunction(spectName, validSpectra)
20417  * self.g = np.array(g) # <<<<<<<<<<<<<<
20418  * waveDir = setDirVector(np.array(waveDir))
20419  * self.waveDir = waveDir
20420  */
20421  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1224, __pyx_L1_error)
20422  __Pyx_GOTREF(__pyx_t_3);
20423  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1224, __pyx_L1_error)
20424  __Pyx_GOTREF(__pyx_t_6);
20425  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20426  __pyx_t_3 = NULL;
20427  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20428  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
20429  if (likely(__pyx_t_3)) {
20430  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20431  __Pyx_INCREF(__pyx_t_3);
20432  __Pyx_INCREF(function);
20433  __Pyx_DECREF_SET(__pyx_t_6, function);
20434  }
20435  }
20436  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g);
20437  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20438  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1224, __pyx_L1_error)
20439  __Pyx_GOTREF(__pyx_t_4);
20440  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20441  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1224, __pyx_L1_error)
20442  __Pyx_GIVEREF(__pyx_t_4);
20443  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->g);
20444  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->g));
20445  __pyx_cur_scope->__pyx_v_self->g = ((PyArrayObject *)__pyx_t_4);
20446  __pyx_t_4 = 0;
20447 
20448  /* "WaveTools.py":1225
20449  * spec_fun =loadExistingFunction(spectName, validSpectra)
20450  * self.g = np.array(g)
20451  * waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
20452  * self.waveDir = waveDir
20453  * self.vDir = setVertDir(g)
20454  */
20455  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1225, __pyx_L1_error)
20456  __Pyx_GOTREF(__pyx_t_6);
20457  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error)
20458  __Pyx_GOTREF(__pyx_t_2);
20459  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1225, __pyx_L1_error)
20460  __Pyx_GOTREF(__pyx_t_7);
20461  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20462  __pyx_t_2 = NULL;
20463  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
20464  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
20465  if (likely(__pyx_t_2)) {
20466  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
20467  __Pyx_INCREF(__pyx_t_2);
20468  __Pyx_INCREF(function);
20469  __Pyx_DECREF_SET(__pyx_t_7, function);
20470  }
20471  }
20472  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_v_waveDir) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_waveDir);
20473  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20474  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1225, __pyx_L1_error)
20475  __Pyx_GOTREF(__pyx_t_3);
20476  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20477  __pyx_t_7 = NULL;
20478  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20479  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
20480  if (likely(__pyx_t_7)) {
20481  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20482  __Pyx_INCREF(__pyx_t_7);
20483  __Pyx_INCREF(function);
20484  __Pyx_DECREF_SET(__pyx_t_6, function);
20485  }
20486  }
20487  __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
20488  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
20489  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20490  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1225, __pyx_L1_error)
20491  __Pyx_GOTREF(__pyx_t_4);
20492  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20493  __Pyx_DECREF_SET(__pyx_v_waveDir, __pyx_t_4);
20494  __pyx_t_4 = 0;
20495 
20496  /* "WaveTools.py":1226
20497  * self.g = np.array(g)
20498  * waveDir = setDirVector(np.array(waveDir))
20499  * self.waveDir = waveDir # <<<<<<<<<<<<<<
20500  * self.vDir = setVertDir(g)
20501  * dirCheck(self.waveDir,self.vDir)
20502  */
20503  if (!(likely(((__pyx_v_waveDir) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_waveDir, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1226, __pyx_L1_error)
20504  __pyx_t_4 = __pyx_v_waveDir;
20505  __Pyx_INCREF(__pyx_t_4);
20506  __Pyx_GIVEREF(__pyx_t_4);
20507  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->waveDir);
20508  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir));
20509  __pyx_cur_scope->__pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_4);
20510  __pyx_t_4 = 0;
20511 
20512  /* "WaveTools.py":1227
20513  * waveDir = setDirVector(np.array(waveDir))
20514  * self.waveDir = waveDir
20515  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
20516  * dirCheck(self.waveDir,self.vDir)
20517  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
20518  */
20519  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1227, __pyx_L1_error)
20520  __Pyx_GOTREF(__pyx_t_6);
20521  __pyx_t_3 = NULL;
20522  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20523  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
20524  if (likely(__pyx_t_3)) {
20525  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20526  __Pyx_INCREF(__pyx_t_3);
20527  __Pyx_INCREF(function);
20528  __Pyx_DECREF_SET(__pyx_t_6, function);
20529  }
20530  }
20531  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g);
20532  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20533  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1227, __pyx_L1_error)
20534  __Pyx_GOTREF(__pyx_t_4);
20535  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20536  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1227, __pyx_L1_error)
20537  __Pyx_GIVEREF(__pyx_t_4);
20538  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->vDir);
20539  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir));
20540  __pyx_cur_scope->__pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_4);
20541  __pyx_t_4 = 0;
20542 
20543  /* "WaveTools.py":1228
20544  * self.waveDir = waveDir
20545  * self.vDir = setVertDir(g)
20546  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
20547  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
20548  * self.Hs = Hs
20549  */
20550  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_dirCheck); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1228, __pyx_L1_error)
20551  __Pyx_GOTREF(__pyx_t_6);
20552  __pyx_t_3 = NULL;
20553  __pyx_t_5 = 0;
20554  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20555  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
20556  if (likely(__pyx_t_3)) {
20557  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20558  __Pyx_INCREF(__pyx_t_3);
20559  __Pyx_INCREF(function);
20560  __Pyx_DECREF_SET(__pyx_t_6, function);
20561  __pyx_t_5 = 1;
20562  }
20563  }
20564  #if CYTHON_FAST_PYCALL
20565  if (PyFunction_Check(__pyx_t_6)) {
20566  PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir), ((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir)};
20567  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1228, __pyx_L1_error)
20568  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20569  __Pyx_GOTREF(__pyx_t_4);
20570  } else
20571  #endif
20572  #if CYTHON_FAST_PYCCALL
20573  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
20574  PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir), ((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir)};
20575  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1228, __pyx_L1_error)
20576  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20577  __Pyx_GOTREF(__pyx_t_4);
20578  } else
20579  #endif
20580  {
20581  __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1228, __pyx_L1_error)
20582  __Pyx_GOTREF(__pyx_t_7);
20583  if (__pyx_t_3) {
20584  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
20585  }
20586  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir));
20587  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir));
20588  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir));
20589  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir));
20590  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir));
20591  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir));
20592  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1228, __pyx_L1_error)
20593  __Pyx_GOTREF(__pyx_t_4);
20594  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20595  }
20596  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20597  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20598 
20599  /* "WaveTools.py":1229
20600  * self.vDir = setVertDir(g)
20601  * dirCheck(self.waveDir,self.vDir)
20602  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
20603  * self.Hs = Hs
20604  * self.depth = depth
20605  */
20606  __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1229, __pyx_L1_error)
20607  __Pyx_GOTREF(__pyx_t_4);
20608  __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1229, __pyx_L1_error)
20609  __Pyx_GOTREF(__pyx_t_6);
20610  __pyx_t_7 = PyNumber_Multiply(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1229, __pyx_L1_error)
20611  __Pyx_GOTREF(__pyx_t_7);
20612  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20613  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20614  __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1229, __pyx_L1_error)
20615  __Pyx_GOTREF(__pyx_t_6);
20616  __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1229, __pyx_L1_error)
20617  __Pyx_GOTREF(__pyx_t_4);
20618  __pyx_t_3 = PyNumber_Multiply(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1229, __pyx_L1_error)
20619  __Pyx_GOTREF(__pyx_t_3);
20620  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20621  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20622  __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1229, __pyx_L1_error)
20623  __Pyx_GOTREF(__pyx_t_4);
20624  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20625  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20626  __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1229, __pyx_L1_error)
20627  __Pyx_GOTREF(__pyx_t_3);
20628  __pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_cur_scope->__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1229, __pyx_L1_error)
20629  __Pyx_GOTREF(__pyx_t_7);
20630  __pyx_t_6 = PyNumber_Multiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1229, __pyx_L1_error)
20631  __Pyx_GOTREF(__pyx_t_6);
20632  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20633  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20634  __pyx_t_7 = PyNumber_Add(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1229, __pyx_L1_error)
20635  __Pyx_GOTREF(__pyx_t_7);
20636  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20637  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20638  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1229, __pyx_L1_error)
20639  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20640  __pyx_cur_scope->__pyx_v_self->gAbs = sqrt(__pyx_t_8);
20641 
20642  /* "WaveTools.py":1230
20643  * dirCheck(self.waveDir,self.vDir)
20644  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
20645  * self.Hs = Hs # <<<<<<<<<<<<<<
20646  * self.depth = depth
20647  * self.Tp = Tp
20648  */
20649  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_Hs); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1230, __pyx_L1_error)
20650  __pyx_cur_scope->__pyx_v_self->Hs = __pyx_t_8;
20651 
20652  /* "WaveTools.py":1231
20653  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
20654  * self.Hs = Hs
20655  * self.depth = depth # <<<<<<<<<<<<<<
20656  * self.Tp = Tp
20657  * self.fp = old_div(1.,Tp)
20658  */
20659  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1231, __pyx_L1_error)
20660  __pyx_cur_scope->__pyx_v_self->depth = __pyx_t_8;
20661 
20662  /* "WaveTools.py":1232
20663  * self.Hs = Hs
20664  * self.depth = depth
20665  * self.Tp = Tp # <<<<<<<<<<<<<<
20666  * self.fp = old_div(1.,Tp)
20667  * self.bandFactor = bandFactor
20668  */
20669  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_Tp); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1232, __pyx_L1_error)
20670  __pyx_cur_scope->__pyx_v_self->Tp = __pyx_t_8;
20671 
20672  /* "WaveTools.py":1233
20673  * self.depth = depth
20674  * self.Tp = Tp
20675  * self.fp = old_div(1.,Tp) # <<<<<<<<<<<<<<
20676  * self.bandFactor = bandFactor
20677  * self.N = N
20678  */
20679  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1233, __pyx_L1_error)
20680  __Pyx_GOTREF(__pyx_t_6);
20681  __pyx_t_4 = NULL;
20682  __pyx_t_5 = 0;
20683  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20684  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
20685  if (likely(__pyx_t_4)) {
20686  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20687  __Pyx_INCREF(__pyx_t_4);
20688  __Pyx_INCREF(function);
20689  __Pyx_DECREF_SET(__pyx_t_6, function);
20690  __pyx_t_5 = 1;
20691  }
20692  }
20693  #if CYTHON_FAST_PYCALL
20694  if (PyFunction_Check(__pyx_t_6)) {
20695  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_float_1_, __pyx_v_Tp};
20696  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1233, __pyx_L1_error)
20697  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
20698  __Pyx_GOTREF(__pyx_t_7);
20699  } else
20700  #endif
20701  #if CYTHON_FAST_PYCCALL
20702  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
20703  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_float_1_, __pyx_v_Tp};
20704  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1233, __pyx_L1_error)
20705  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
20706  __Pyx_GOTREF(__pyx_t_7);
20707  } else
20708  #endif
20709  {
20710  __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1233, __pyx_L1_error)
20711  __Pyx_GOTREF(__pyx_t_3);
20712  if (__pyx_t_4) {
20713  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
20714  }
20715  __Pyx_INCREF(__pyx_float_1_);
20716  __Pyx_GIVEREF(__pyx_float_1_);
20717  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_float_1_);
20718  __Pyx_INCREF(__pyx_v_Tp);
20719  __Pyx_GIVEREF(__pyx_v_Tp);
20720  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_Tp);
20721  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1233, __pyx_L1_error)
20722  __Pyx_GOTREF(__pyx_t_7);
20723  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20724  }
20725  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20726  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1233, __pyx_L1_error)
20727  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20728  __pyx_cur_scope->__pyx_v_self->fp = __pyx_t_8;
20729 
20730  /* "WaveTools.py":1234
20731  * self.Tp = Tp
20732  * self.fp = old_div(1.,Tp)
20733  * self.bandFactor = bandFactor # <<<<<<<<<<<<<<
20734  * self.N = N
20735  * self.mwl = mwl
20736  */
20737  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_bandFactor); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L1_error)
20738  __pyx_cur_scope->__pyx_v_self->bandFactor = __pyx_t_8;
20739 
20740  /* "WaveTools.py":1235
20741  * self.fp = old_div(1.,Tp)
20742  * self.bandFactor = bandFactor
20743  * self.N = N # <<<<<<<<<<<<<<
20744  * self.mwl = mwl
20745  * fmax = self.bandFactor*self.fp
20746  */
20747  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_N); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1235, __pyx_L1_error)
20748  __pyx_cur_scope->__pyx_v_self->N = __pyx_t_5;
20749 
20750  /* "WaveTools.py":1236
20751  * self.bandFactor = bandFactor
20752  * self.N = N
20753  * self.mwl = mwl # <<<<<<<<<<<<<<
20754  * fmax = self.bandFactor*self.fp
20755  * fmin = old_div(self.fp,self.bandFactor)
20756  */
20757  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1236, __pyx_L1_error)
20758  __pyx_cur_scope->__pyx_v_self->mwl = __pyx_t_8;
20759 
20760  /* "WaveTools.py":1237
20761  * self.N = N
20762  * self.mwl = mwl
20763  * fmax = self.bandFactor*self.fp # <<<<<<<<<<<<<<
20764  * fmin = old_div(self.fp,self.bandFactor)
20765  * self.df = old_div((fmax-fmin),float(self.N-1))
20766  */
20767  __pyx_v_fmax = (__pyx_cur_scope->__pyx_v_self->bandFactor * __pyx_cur_scope->__pyx_v_self->fp);
20768 
20769  /* "WaveTools.py":1238
20770  * self.mwl = mwl
20771  * fmax = self.bandFactor*self.fp
20772  * fmin = old_div(self.fp,self.bandFactor) # <<<<<<<<<<<<<<
20773  * self.df = old_div((fmax-fmin),float(self.N-1))
20774  * self.fi = np.linspace(fmin,fmax,self.N)
20775  */
20776  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1238, __pyx_L1_error)
20777  __Pyx_GOTREF(__pyx_t_6);
20778  __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->fp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1238, __pyx_L1_error)
20779  __Pyx_GOTREF(__pyx_t_3);
20780  __pyx_t_4 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->bandFactor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1238, __pyx_L1_error)
20781  __Pyx_GOTREF(__pyx_t_4);
20782  __pyx_t_2 = NULL;
20783  __pyx_t_5 = 0;
20784  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20785  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
20786  if (likely(__pyx_t_2)) {
20787  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20788  __Pyx_INCREF(__pyx_t_2);
20789  __Pyx_INCREF(function);
20790  __Pyx_DECREF_SET(__pyx_t_6, function);
20791  __pyx_t_5 = 1;
20792  }
20793  }
20794  #if CYTHON_FAST_PYCALL
20795  if (PyFunction_Check(__pyx_t_6)) {
20796  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_t_4};
20797  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1238, __pyx_L1_error)
20798  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20799  __Pyx_GOTREF(__pyx_t_7);
20800  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20801  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20802  } else
20803  #endif
20804  #if CYTHON_FAST_PYCCALL
20805  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
20806  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_t_4};
20807  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1238, __pyx_L1_error)
20808  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20809  __Pyx_GOTREF(__pyx_t_7);
20810  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20811  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20812  } else
20813  #endif
20814  {
20815  __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1238, __pyx_L1_error)
20816  __Pyx_GOTREF(__pyx_t_9);
20817  if (__pyx_t_2) {
20818  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
20819  }
20820  __Pyx_GIVEREF(__pyx_t_3);
20821  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_3);
20822  __Pyx_GIVEREF(__pyx_t_4);
20823  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_4);
20824  __pyx_t_3 = 0;
20825  __pyx_t_4 = 0;
20826  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1238, __pyx_L1_error)
20827  __Pyx_GOTREF(__pyx_t_7);
20828  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20829  }
20830  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20831  __pyx_v_fmin = __pyx_t_7;
20832  __pyx_t_7 = 0;
20833 
20834  /* "WaveTools.py":1239
20835  * fmax = self.bandFactor*self.fp
20836  * fmin = old_div(self.fp,self.bandFactor)
20837  * self.df = old_div((fmax-fmin),float(self.N-1)) # <<<<<<<<<<<<<<
20838  * self.fi = np.linspace(fmin,fmax,self.N)
20839  * self.omega = 2.*M_PI*self.fi
20840  */
20841  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1239, __pyx_L1_error)
20842  __Pyx_GOTREF(__pyx_t_6);
20843  __pyx_t_9 = PyFloat_FromDouble(__pyx_v_fmax); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1239, __pyx_L1_error)
20844  __Pyx_GOTREF(__pyx_t_9);
20845  __pyx_t_4 = PyNumber_Subtract(__pyx_t_9, __pyx_v_fmin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1239, __pyx_L1_error)
20846  __Pyx_GOTREF(__pyx_t_4);
20847  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20848  __pyx_t_9 = PyFloat_FromDouble(((double)(__pyx_cur_scope->__pyx_v_self->N - 1))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1239, __pyx_L1_error)
20849  __Pyx_GOTREF(__pyx_t_9);
20850  __pyx_t_3 = NULL;
20851  __pyx_t_5 = 0;
20852  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
20853  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
20854  if (likely(__pyx_t_3)) {
20855  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
20856  __Pyx_INCREF(__pyx_t_3);
20857  __Pyx_INCREF(function);
20858  __Pyx_DECREF_SET(__pyx_t_6, function);
20859  __pyx_t_5 = 1;
20860  }
20861  }
20862  #if CYTHON_FAST_PYCALL
20863  if (PyFunction_Check(__pyx_t_6)) {
20864  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_9};
20865  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1239, __pyx_L1_error)
20866  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20867  __Pyx_GOTREF(__pyx_t_7);
20868  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20869  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20870  } else
20871  #endif
20872  #if CYTHON_FAST_PYCCALL
20873  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
20874  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_9};
20875  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1239, __pyx_L1_error)
20876  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20877  __Pyx_GOTREF(__pyx_t_7);
20878  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20879  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20880  } else
20881  #endif
20882  {
20883  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1239, __pyx_L1_error)
20884  __Pyx_GOTREF(__pyx_t_2);
20885  if (__pyx_t_3) {
20886  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
20887  }
20888  __Pyx_GIVEREF(__pyx_t_4);
20889  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_t_4);
20890  __Pyx_GIVEREF(__pyx_t_9);
20891  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_t_9);
20892  __pyx_t_4 = 0;
20893  __pyx_t_9 = 0;
20894  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1239, __pyx_L1_error)
20895  __Pyx_GOTREF(__pyx_t_7);
20896  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20897  }
20898  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20899  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1239, __pyx_L1_error)
20900  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20901  __pyx_cur_scope->__pyx_v_self->df = __pyx_t_8;
20902 
20903  /* "WaveTools.py":1240
20904  * fmin = old_div(self.fp,self.bandFactor)
20905  * self.df = old_div((fmax-fmin),float(self.N-1))
20906  * self.fi = np.linspace(fmin,fmax,self.N) # <<<<<<<<<<<<<<
20907  * self.omega = 2.*M_PI*self.fi
20908  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
20909  */
20910  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1240, __pyx_L1_error)
20911  __Pyx_GOTREF(__pyx_t_6);
20912  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1240, __pyx_L1_error)
20913  __Pyx_GOTREF(__pyx_t_2);
20914  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20915  __pyx_t_6 = PyFloat_FromDouble(__pyx_v_fmax); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1240, __pyx_L1_error)
20916  __Pyx_GOTREF(__pyx_t_6);
20917  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->N); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1240, __pyx_L1_error)
20918  __Pyx_GOTREF(__pyx_t_9);
20919  __pyx_t_4 = NULL;
20920  __pyx_t_5 = 0;
20921  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
20922  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
20923  if (likely(__pyx_t_4)) {
20924  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
20925  __Pyx_INCREF(__pyx_t_4);
20926  __Pyx_INCREF(function);
20927  __Pyx_DECREF_SET(__pyx_t_2, function);
20928  __pyx_t_5 = 1;
20929  }
20930  }
20931  #if CYTHON_FAST_PYCALL
20932  if (PyFunction_Check(__pyx_t_2)) {
20933  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_fmin, __pyx_t_6, __pyx_t_9};
20934  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1240, __pyx_L1_error)
20935  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
20936  __Pyx_GOTREF(__pyx_t_7);
20937  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20938  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20939  } else
20940  #endif
20941  #if CYTHON_FAST_PYCCALL
20942  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
20943  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_fmin, __pyx_t_6, __pyx_t_9};
20944  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1240, __pyx_L1_error)
20945  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
20946  __Pyx_GOTREF(__pyx_t_7);
20947  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20948  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20949  } else
20950  #endif
20951  {
20952  __pyx_t_3 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1240, __pyx_L1_error)
20953  __Pyx_GOTREF(__pyx_t_3);
20954  if (__pyx_t_4) {
20955  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
20956  }
20957  __Pyx_INCREF(__pyx_v_fmin);
20958  __Pyx_GIVEREF(__pyx_v_fmin);
20959  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_fmin);
20960  __Pyx_GIVEREF(__pyx_t_6);
20961  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_t_6);
20962  __Pyx_GIVEREF(__pyx_t_9);
20963  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_t_9);
20964  __pyx_t_6 = 0;
20965  __pyx_t_9 = 0;
20966  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1240, __pyx_L1_error)
20967  __Pyx_GOTREF(__pyx_t_7);
20968  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20969  }
20970  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20971  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1240, __pyx_L1_error)
20972  __Pyx_GIVEREF(__pyx_t_7);
20973  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->fi);
20974  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fi));
20975  __pyx_cur_scope->__pyx_v_self->fi = ((PyArrayObject *)__pyx_t_7);
20976  __pyx_t_7 = 0;
20977 
20978  /* "WaveTools.py":1241
20979  * self.df = old_div((fmax-fmin),float(self.N-1))
20980  * self.fi = np.linspace(fmin,fmax,self.N)
20981  * self.omega = 2.*M_PI*self.fi # <<<<<<<<<<<<<<
20982  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
20983  * fim = reduceToIntervals(self.fi,self.df)
20984  */
20985  __pyx_t_7 = PyFloat_FromDouble((2. * M_PI)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1241, __pyx_L1_error)
20986  __Pyx_GOTREF(__pyx_t_7);
20987  __pyx_t_2 = PyNumber_Multiply(__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1241, __pyx_L1_error)
20988  __Pyx_GOTREF(__pyx_t_2);
20989  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20990  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1241, __pyx_L1_error)
20991  __Pyx_GIVEREF(__pyx_t_2);
20992  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->omega);
20993  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->omega));
20994  __pyx_cur_scope->__pyx_v_self->omega = ((PyArrayObject *)__pyx_t_2);
20995  __pyx_t_2 = 0;
20996 
20997  /* "WaveTools.py":1242
20998  * self.fi = np.linspace(fmin,fmax,self.N)
20999  * self.omega = 2.*M_PI*self.fi
21000  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
21001  * fim = reduceToIntervals(self.fi,self.df)
21002  * self.fim = fim
21003  */
21004  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1242, __pyx_L1_error)
21005  __Pyx_GOTREF(__pyx_t_2);
21006  __pyx_t_7 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->depth); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1242, __pyx_L1_error)
21007  __Pyx_GOTREF(__pyx_t_7);
21008  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1242, __pyx_L1_error)
21009  __Pyx_GOTREF(__pyx_t_3);
21010  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->omega));
21011  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->omega));
21012  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_self->omega));
21013  __Pyx_GIVEREF(__pyx_t_7);
21014  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
21015  __pyx_t_7 = 0;
21016  __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1242, __pyx_L1_error)
21017  __Pyx_GOTREF(__pyx_t_7);
21018  __pyx_t_9 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->gAbs); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1242, __pyx_L1_error)
21019  __Pyx_GOTREF(__pyx_t_9);
21020  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_g, __pyx_t_9) < 0) __PYX_ERR(0, 1242, __pyx_L1_error)
21021  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21022  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1242, __pyx_L1_error)
21023  __Pyx_GOTREF(__pyx_t_9);
21024  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21025  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21026  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21027  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1242, __pyx_L1_error)
21028  __Pyx_GIVEREF(__pyx_t_9);
21029  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->ki);
21030  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->ki));
21031  __pyx_cur_scope->__pyx_v_self->ki = ((PyArrayObject *)__pyx_t_9);
21032  __pyx_t_9 = 0;
21033 
21034  /* "WaveTools.py":1243
21035  * self.omega = 2.*M_PI*self.fi
21036  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
21037  * fim = reduceToIntervals(self.fi,self.df) # <<<<<<<<<<<<<<
21038  * self.fim = fim
21039  * wim = 2*np.pi*self.fim
21040  */
21041  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1243, __pyx_L1_error)
21042  __Pyx_GOTREF(__pyx_t_7);
21043  __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->df); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1243, __pyx_L1_error)
21044  __Pyx_GOTREF(__pyx_t_3);
21045  __pyx_t_2 = NULL;
21046  __pyx_t_5 = 0;
21047  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
21048  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
21049  if (likely(__pyx_t_2)) {
21050  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
21051  __Pyx_INCREF(__pyx_t_2);
21052  __Pyx_INCREF(function);
21053  __Pyx_DECREF_SET(__pyx_t_7, function);
21054  __pyx_t_5 = 1;
21055  }
21056  }
21057  #if CYTHON_FAST_PYCALL
21058  if (PyFunction_Check(__pyx_t_7)) {
21059  PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fi), __pyx_t_3};
21060  __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1243, __pyx_L1_error)
21061  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21062  __Pyx_GOTREF(__pyx_t_9);
21063  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21064  } else
21065  #endif
21066  #if CYTHON_FAST_PYCCALL
21067  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
21068  PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fi), __pyx_t_3};
21069  __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1243, __pyx_L1_error)
21070  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21071  __Pyx_GOTREF(__pyx_t_9);
21072  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21073  } else
21074  #endif
21075  {
21076  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1243, __pyx_L1_error)
21077  __Pyx_GOTREF(__pyx_t_6);
21078  if (__pyx_t_2) {
21079  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
21080  }
21081  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fi));
21082  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fi));
21083  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fi));
21084  __Pyx_GIVEREF(__pyx_t_3);
21085  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
21086  __pyx_t_3 = 0;
21087  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1243, __pyx_L1_error)
21088  __Pyx_GOTREF(__pyx_t_9);
21089  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21090  }
21091  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21092  __pyx_v_fim = __pyx_t_9;
21093  __pyx_t_9 = 0;
21094 
21095  /* "WaveTools.py":1244
21096  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
21097  * fim = reduceToIntervals(self.fi,self.df)
21098  * self.fim = fim # <<<<<<<<<<<<<<
21099  * wim = 2*np.pi*self.fim
21100  * if (spectral_params is None):
21101  */
21102  if (!(likely(((__pyx_v_fim) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fim, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1244, __pyx_L1_error)
21103  __pyx_t_9 = __pyx_v_fim;
21104  __Pyx_INCREF(__pyx_t_9);
21105  __Pyx_GIVEREF(__pyx_t_9);
21106  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->fim);
21107  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->fim));
21108  __pyx_cur_scope->__pyx_v_self->fim = ((PyArrayObject *)__pyx_t_9);
21109  __pyx_t_9 = 0;
21110 
21111  /* "WaveTools.py":1245
21112  * fim = reduceToIntervals(self.fi,self.df)
21113  * self.fim = fim
21114  * wim = 2*np.pi*self.fim # <<<<<<<<<<<<<<
21115  * if (spectral_params is None):
21116  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
21117  */
21118  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1245, __pyx_L1_error)
21119  __Pyx_GOTREF(__pyx_t_9);
21120  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_pi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1245, __pyx_L1_error)
21121  __Pyx_GOTREF(__pyx_t_7);
21122  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21123  __pyx_t_9 = PyNumber_Multiply(__pyx_int_2, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1245, __pyx_L1_error)
21124  __Pyx_GOTREF(__pyx_t_9);
21125  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21126  __pyx_t_7 = PyNumber_Multiply(__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->fim)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1245, __pyx_L1_error)
21127  __Pyx_GOTREF(__pyx_t_7);
21128  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21129  __pyx_v_wim = __pyx_t_7;
21130  __pyx_t_7 = 0;
21131 
21132  /* "WaveTools.py":1246
21133  * self.fim = fim
21134  * wim = 2*np.pi*self.fim
21135  * if (spectral_params is None): # <<<<<<<<<<<<<<
21136  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
21137  * else:
21138  */
21139  __pyx_t_10 = (__pyx_v_spectral_params == Py_None);
21140  __pyx_t_11 = (__pyx_t_10 != 0);
21141  if (__pyx_t_11) {
21142 
21143  /* "WaveTools.py":1247
21144  * wim = 2*np.pi*self.fim
21145  * if (spectral_params is None):
21146  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs) # <<<<<<<<<<<<<<
21147  * else:
21148  * try:
21149  */
21150  __pyx_t_9 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->fp); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1247, __pyx_L1_error)
21151  __Pyx_GOTREF(__pyx_t_9);
21152  __pyx_t_6 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->Hs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1247, __pyx_L1_error)
21153  __Pyx_GOTREF(__pyx_t_6);
21154  __Pyx_INCREF(__pyx_v_spec_fun);
21155  __pyx_t_3 = __pyx_v_spec_fun; __pyx_t_2 = NULL;
21156  __pyx_t_5 = 0;
21157  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
21158  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
21159  if (likely(__pyx_t_2)) {
21160  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
21161  __Pyx_INCREF(__pyx_t_2);
21162  __Pyx_INCREF(function);
21163  __Pyx_DECREF_SET(__pyx_t_3, function);
21164  __pyx_t_5 = 1;
21165  }
21166  }
21167  #if CYTHON_FAST_PYCALL
21168  if (PyFunction_Check(__pyx_t_3)) {
21169  PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_fim, __pyx_t_9, __pyx_t_6};
21170  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error)
21171  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21172  __Pyx_GOTREF(__pyx_t_7);
21173  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21174  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21175  } else
21176  #endif
21177  #if CYTHON_FAST_PYCCALL
21178  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
21179  PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_fim, __pyx_t_9, __pyx_t_6};
21180  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error)
21181  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21182  __Pyx_GOTREF(__pyx_t_7);
21183  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21184  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21185  } else
21186  #endif
21187  {
21188  __pyx_t_4 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1247, __pyx_L1_error)
21189  __Pyx_GOTREF(__pyx_t_4);
21190  if (__pyx_t_2) {
21191  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
21192  }
21193  __Pyx_INCREF(__pyx_v_fim);
21194  __Pyx_GIVEREF(__pyx_v_fim);
21195  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_fim);
21196  __Pyx_GIVEREF(__pyx_t_9);
21197  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_t_9);
21198  __Pyx_GIVEREF(__pyx_t_6);
21199  PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_5, __pyx_t_6);
21200  __pyx_t_9 = 0;
21201  __pyx_t_6 = 0;
21202  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error)
21203  __Pyx_GOTREF(__pyx_t_7);
21204  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21205  }
21206  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21207  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1247, __pyx_L1_error)
21208  __Pyx_GIVEREF(__pyx_t_7);
21209  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->Si_Jm);
21210  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21211  __pyx_cur_scope->__pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_7);
21212  __pyx_t_7 = 0;
21213 
21214  /* "WaveTools.py":1246
21215  * self.fim = fim
21216  * wim = 2*np.pi*self.fim
21217  * if (spectral_params is None): # <<<<<<<<<<<<<<
21218  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
21219  * else:
21220  */
21221  goto __pyx_L3;
21222  }
21223 
21224  /* "WaveTools.py":1249
21225  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
21226  * else:
21227  * try: # <<<<<<<<<<<<<<
21228  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
21229  * except:
21230  */
21231  /*else*/ {
21232  {
21233  __Pyx_PyThreadState_declare
21234  __Pyx_PyThreadState_assign
21235  __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
21236  __Pyx_XGOTREF(__pyx_t_12);
21237  __Pyx_XGOTREF(__pyx_t_13);
21238  __Pyx_XGOTREF(__pyx_t_14);
21239  /*try:*/ {
21240 
21241  /* "WaveTools.py":1250
21242  * else:
21243  * try:
21244  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params) # <<<<<<<<<<<<<<
21245  * except:
21246  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
21247  */
21248  __pyx_t_7 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->fp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1250, __pyx_L4_error)
21249  __Pyx_GOTREF(__pyx_t_7);
21250  __pyx_t_3 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->Hs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1250, __pyx_L4_error)
21251  __Pyx_GOTREF(__pyx_t_3);
21252  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1250, __pyx_L4_error)
21253  __Pyx_GOTREF(__pyx_t_4);
21254  __Pyx_INCREF(__pyx_v_fim);
21255  __Pyx_GIVEREF(__pyx_v_fim);
21256  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_fim);
21257  __Pyx_GIVEREF(__pyx_t_7);
21258  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7);
21259  __Pyx_GIVEREF(__pyx_t_3);
21260  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
21261  __pyx_t_7 = 0;
21262  __pyx_t_3 = 0;
21263  if (unlikely(__pyx_v_spectral_params == Py_None)) {
21264  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
21265  __PYX_ERR(0, 1250, __pyx_L4_error)
21266  }
21267  if (likely(PyDict_CheckExact(__pyx_v_spectral_params))) {
21268  __pyx_t_3 = PyDict_Copy(__pyx_v_spectral_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1250, __pyx_L4_error)
21269  __Pyx_GOTREF(__pyx_t_3);
21270  } else {
21271  __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spectral_params, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1250, __pyx_L4_error)
21272  __Pyx_GOTREF(__pyx_t_3);
21273  }
21274  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_spec_fun, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1250, __pyx_L4_error)
21275  __Pyx_GOTREF(__pyx_t_7);
21276  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21277  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21278  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1250, __pyx_L4_error)
21279  __Pyx_GIVEREF(__pyx_t_7);
21280  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->Si_Jm);
21281  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21282  __pyx_cur_scope->__pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_7);
21283  __pyx_t_7 = 0;
21284 
21285  /* "WaveTools.py":1249
21286  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
21287  * else:
21288  * try: # <<<<<<<<<<<<<<
21289  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
21290  * except:
21291  */
21292  }
21293  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
21294  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
21295  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
21296  goto __pyx_L9_try_end;
21297  __pyx_L4_error:;
21298  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21299  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21300  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
21301  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
21302  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
21303  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
21304 
21305  /* "WaveTools.py":1251
21306  * try:
21307  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
21308  * except: # <<<<<<<<<<<<<<
21309  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
21310  * sys.exit(1)
21311  */
21312  /*except:*/ {
21313  __Pyx_AddTraceback("WaveTools.NewWave.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
21314  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1251, __pyx_L6_except_error)
21315  __Pyx_GOTREF(__pyx_t_7);
21316  __Pyx_GOTREF(__pyx_t_3);
21317  __Pyx_GOTREF(__pyx_t_4);
21318 
21319  /* "WaveTools.py":1252
21320  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
21321  * except:
21322  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
21323  * sys.exit(1)
21324  *
21325  */
21326  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1252, __pyx_L6_except_error)
21327  __Pyx_GOTREF(__pyx_t_9);
21328  __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ERROR_Wavetools_py_Additional_sp, __pyx_v_spectName); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1252, __pyx_L6_except_error)
21329  __Pyx_GOTREF(__pyx_t_2);
21330  __pyx_t_15 = NULL;
21331  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
21332  __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_9);
21333  if (likely(__pyx_t_15)) {
21334  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
21335  __Pyx_INCREF(__pyx_t_15);
21336  __Pyx_INCREF(function);
21337  __Pyx_DECREF_SET(__pyx_t_9, function);
21338  }
21339  }
21340  __pyx_t_6 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_15, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2);
21341  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
21342  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21343  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1252, __pyx_L6_except_error)
21344  __Pyx_GOTREF(__pyx_t_6);
21345  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21346  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21347 
21348  /* "WaveTools.py":1253
21349  * except:
21350  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
21351  * sys.exit(1) # <<<<<<<<<<<<<<
21352  *
21353  * self.tanhF = np.zeros(N,"d")
21354  */
21355  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1253, __pyx_L6_except_error)
21356  __Pyx_GOTREF(__pyx_t_9);
21357  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1253, __pyx_L6_except_error)
21358  __Pyx_GOTREF(__pyx_t_2);
21359  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21360  __pyx_t_9 = NULL;
21361  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
21362  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
21363  if (likely(__pyx_t_9)) {
21364  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
21365  __Pyx_INCREF(__pyx_t_9);
21366  __Pyx_INCREF(function);
21367  __Pyx_DECREF_SET(__pyx_t_2, function);
21368  }
21369  }
21370  __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_9, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_1);
21371  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
21372  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1253, __pyx_L6_except_error)
21373  __Pyx_GOTREF(__pyx_t_6);
21374  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21375  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21376  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
21377  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21378  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
21379  goto __pyx_L5_exception_handled;
21380  }
21381  __pyx_L6_except_error:;
21382 
21383  /* "WaveTools.py":1249
21384  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
21385  * else:
21386  * try: # <<<<<<<<<<<<<<
21387  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
21388  * except:
21389  */
21390  __Pyx_XGIVEREF(__pyx_t_12);
21391  __Pyx_XGIVEREF(__pyx_t_13);
21392  __Pyx_XGIVEREF(__pyx_t_14);
21393  __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
21394  goto __pyx_L1_error;
21395  __pyx_L5_exception_handled:;
21396  __Pyx_XGIVEREF(__pyx_t_12);
21397  __Pyx_XGIVEREF(__pyx_t_13);
21398  __Pyx_XGIVEREF(__pyx_t_14);
21399  __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
21400  __pyx_L9_try_end:;
21401  }
21402  }
21403  __pyx_L3:;
21404 
21405  /* "WaveTools.py":1255
21406  * sys.exit(1)
21407  *
21408  * self.tanhF = np.zeros(N,"d") # <<<<<<<<<<<<<<
21409  * for ii in range(self.N):
21410  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
21411  */
21412  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1255, __pyx_L1_error)
21413  __Pyx_GOTREF(__pyx_t_3);
21414  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1255, __pyx_L1_error)
21415  __Pyx_GOTREF(__pyx_t_7);
21416  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21417  __pyx_t_3 = NULL;
21418  __pyx_t_5 = 0;
21419  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
21420  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
21421  if (likely(__pyx_t_3)) {
21422  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
21423  __Pyx_INCREF(__pyx_t_3);
21424  __Pyx_INCREF(function);
21425  __Pyx_DECREF_SET(__pyx_t_7, function);
21426  __pyx_t_5 = 1;
21427  }
21428  }
21429  #if CYTHON_FAST_PYCALL
21430  if (PyFunction_Check(__pyx_t_7)) {
21431  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_N, __pyx_n_s_d};
21432  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
21433  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21434  __Pyx_GOTREF(__pyx_t_4);
21435  } else
21436  #endif
21437  #if CYTHON_FAST_PYCCALL
21438  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
21439  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_N, __pyx_n_s_d};
21440  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
21441  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21442  __Pyx_GOTREF(__pyx_t_4);
21443  } else
21444  #endif
21445  {
21446  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1255, __pyx_L1_error)
21447  __Pyx_GOTREF(__pyx_t_6);
21448  if (__pyx_t_3) {
21449  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
21450  }
21451  __Pyx_INCREF(__pyx_v_N);
21452  __Pyx_GIVEREF(__pyx_v_N);
21453  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_N);
21454  __Pyx_INCREF(__pyx_n_s_d);
21455  __Pyx_GIVEREF(__pyx_n_s_d);
21456  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_n_s_d);
21457  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
21458  __Pyx_GOTREF(__pyx_t_4);
21459  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21460  }
21461  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21462  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1255, __pyx_L1_error)
21463  __Pyx_GIVEREF(__pyx_t_4);
21464  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->tanhF);
21465  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->tanhF));
21466  __pyx_cur_scope->__pyx_v_self->tanhF = ((PyArrayObject *)__pyx_t_4);
21467  __pyx_t_4 = 0;
21468 
21469  /* "WaveTools.py":1256
21470  *
21471  * self.tanhF = np.zeros(N,"d")
21472  * for ii in range(self.N): # <<<<<<<<<<<<<<
21473  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
21474  *
21475  */
21476  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_range); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1256, __pyx_L1_error)
21477  __Pyx_GOTREF(__pyx_t_7);
21478  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->N); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1256, __pyx_L1_error)
21479  __Pyx_GOTREF(__pyx_t_6);
21480  __pyx_t_3 = NULL;
21481  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
21482  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
21483  if (likely(__pyx_t_3)) {
21484  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
21485  __Pyx_INCREF(__pyx_t_3);
21486  __Pyx_INCREF(function);
21487  __Pyx_DECREF_SET(__pyx_t_7, function);
21488  }
21489  }
21490  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
21491  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21492  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21493  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1256, __pyx_L1_error)
21494  __Pyx_GOTREF(__pyx_t_4);
21495  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21496  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
21497  __pyx_t_7 = __pyx_t_4; __Pyx_INCREF(__pyx_t_7); __pyx_t_16 = 0;
21498  __pyx_t_17 = NULL;
21499  } else {
21500  __pyx_t_16 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1256, __pyx_L1_error)
21501  __Pyx_GOTREF(__pyx_t_7);
21502  __pyx_t_17 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1256, __pyx_L1_error)
21503  }
21504  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21505  for (;;) {
21506  if (likely(!__pyx_t_17)) {
21507  if (likely(PyList_CheckExact(__pyx_t_7))) {
21508  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_7)) break;
21509  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21510  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_16); __Pyx_INCREF(__pyx_t_4); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1256, __pyx_L1_error)
21511  #else
21512  __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1256, __pyx_L1_error)
21513  __Pyx_GOTREF(__pyx_t_4);
21514  #endif
21515  } else {
21516  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
21517  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21518  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_16); __Pyx_INCREF(__pyx_t_4); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1256, __pyx_L1_error)
21519  #else
21520  __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1256, __pyx_L1_error)
21521  __Pyx_GOTREF(__pyx_t_4);
21522  #endif
21523  }
21524  } else {
21525  __pyx_t_4 = __pyx_t_17(__pyx_t_7);
21526  if (unlikely(!__pyx_t_4)) {
21527  PyObject* exc_type = PyErr_Occurred();
21528  if (exc_type) {
21529  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21530  else __PYX_ERR(0, 1256, __pyx_L1_error)
21531  }
21532  break;
21533  }
21534  __Pyx_GOTREF(__pyx_t_4);
21535  }
21536  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_4);
21537  __pyx_t_4 = 0;
21538 
21539  /* "WaveTools.py":1257
21540  * self.tanhF = np.zeros(N,"d")
21541  * for ii in range(self.N):
21542  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) ) # <<<<<<<<<<<<<<
21543  *
21544  * mm = np.sum(returnRectangles(self.Si_Jm,wim))
21545  */
21546  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1257, __pyx_L1_error)
21547  __Pyx_GOTREF(__pyx_t_6);
21548  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_tanh); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1257, __pyx_L1_error)
21549  __Pyx_GOTREF(__pyx_t_3);
21550  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21551  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->ki), __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1257, __pyx_L1_error)
21552  __Pyx_GOTREF(__pyx_t_6);
21553  __pyx_t_2 = PyFloat_FromDouble(__pyx_cur_scope->__pyx_v_self->depth); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1257, __pyx_L1_error)
21554  __Pyx_GOTREF(__pyx_t_2);
21555  __pyx_t_9 = PyNumber_Multiply(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1257, __pyx_L1_error)
21556  __Pyx_GOTREF(__pyx_t_9);
21557  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21558  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21559  __pyx_t_2 = NULL;
21560  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
21561  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
21562  if (likely(__pyx_t_2)) {
21563  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
21564  __Pyx_INCREF(__pyx_t_2);
21565  __Pyx_INCREF(function);
21566  __Pyx_DECREF_SET(__pyx_t_3, function);
21567  }
21568  }
21569  __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9);
21570  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21571  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21572  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1257, __pyx_L1_error)
21573  __Pyx_GOTREF(__pyx_t_4);
21574  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21575  __pyx_t_3 = __Pyx_PyNumber_Float(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1257, __pyx_L1_error)
21576  __Pyx_GOTREF(__pyx_t_3);
21577  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21578  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->tanhF), __pyx_v_ii, __pyx_t_3) < 0)) __PYX_ERR(0, 1257, __pyx_L1_error)
21579  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21580 
21581  /* "WaveTools.py":1256
21582  *
21583  * self.tanhF = np.zeros(N,"d")
21584  * for ii in range(self.N): # <<<<<<<<<<<<<<
21585  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
21586  *
21587  */
21588  }
21589  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21590 
21591  /* "WaveTools.py":1259
21592  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
21593  *
21594  * mm = np.sum(returnRectangles(self.Si_Jm,wim)) # <<<<<<<<<<<<<<
21595  * m0 = Hs*Hs/16.
21596  * An = np.sqrt(2.*m0*np.log(Nmax))
21597  */
21598  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
21599  __Pyx_GOTREF(__pyx_t_3);
21600  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1259, __pyx_L1_error)
21601  __Pyx_GOTREF(__pyx_t_4);
21602  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21603  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1259, __pyx_L1_error)
21604  __Pyx_GOTREF(__pyx_t_9);
21605  __pyx_t_2 = NULL;
21606  __pyx_t_5 = 0;
21607  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
21608  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
21609  if (likely(__pyx_t_2)) {
21610  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
21611  __Pyx_INCREF(__pyx_t_2);
21612  __Pyx_INCREF(function);
21613  __Pyx_DECREF_SET(__pyx_t_9, function);
21614  __pyx_t_5 = 1;
21615  }
21616  }
21617  #if CYTHON_FAST_PYCALL
21618  if (PyFunction_Check(__pyx_t_9)) {
21619  PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm), __pyx_v_wim};
21620  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
21621  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21622  __Pyx_GOTREF(__pyx_t_3);
21623  } else
21624  #endif
21625  #if CYTHON_FAST_PYCCALL
21626  if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
21627  PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm), __pyx_v_wim};
21628  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
21629  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21630  __Pyx_GOTREF(__pyx_t_3);
21631  } else
21632  #endif
21633  {
21634  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1259, __pyx_L1_error)
21635  __Pyx_GOTREF(__pyx_t_6);
21636  if (__pyx_t_2) {
21637  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
21638  }
21639  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21640  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21641  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21642  __Pyx_INCREF(__pyx_v_wim);
21643  __Pyx_GIVEREF(__pyx_v_wim);
21644  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_wim);
21645  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error)
21646  __Pyx_GOTREF(__pyx_t_3);
21647  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21648  }
21649  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21650  __pyx_t_9 = NULL;
21651  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
21652  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
21653  if (likely(__pyx_t_9)) {
21654  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
21655  __Pyx_INCREF(__pyx_t_9);
21656  __Pyx_INCREF(function);
21657  __Pyx_DECREF_SET(__pyx_t_4, function);
21658  }
21659  }
21660  __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_9, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
21661  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
21662  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21663  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1259, __pyx_L1_error)
21664  __Pyx_GOTREF(__pyx_t_7);
21665  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21666  __pyx_v_mm = __pyx_t_7;
21667  __pyx_t_7 = 0;
21668 
21669  /* "WaveTools.py":1260
21670  *
21671  * mm = np.sum(returnRectangles(self.Si_Jm,wim))
21672  * m0 = Hs*Hs/16. # <<<<<<<<<<<<<<
21673  * An = np.sqrt(2.*m0*np.log(Nmax))
21674  * self.ai = An*returnRectangles(self.Si_Jm,wim)/mm
21675  */
21676  __pyx_t_7 = PyNumber_Multiply(__pyx_v_Hs, __pyx_v_Hs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1260, __pyx_L1_error)
21677  __Pyx_GOTREF(__pyx_t_7);
21678  __pyx_t_4 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_7, __pyx_float_16_, 16., 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1260, __pyx_L1_error)
21679  __Pyx_GOTREF(__pyx_t_4);
21680  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21681  __pyx_v_m0 = __pyx_t_4;
21682  __pyx_t_4 = 0;
21683 
21684  /* "WaveTools.py":1261
21685  * mm = np.sum(returnRectangles(self.Si_Jm,wim))
21686  * m0 = Hs*Hs/16.
21687  * An = np.sqrt(2.*m0*np.log(Nmax)) # <<<<<<<<<<<<<<
21688  * self.ai = An*returnRectangles(self.Si_Jm,wim)/mm
21689  * self.kDir = np.zeros((len(self.ki),3),)
21690  */
21691  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1261, __pyx_L1_error)
21692  __Pyx_GOTREF(__pyx_t_7);
21693  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1261, __pyx_L1_error)
21694  __Pyx_GOTREF(__pyx_t_3);
21695  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21696  __pyx_t_7 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_m0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1261, __pyx_L1_error)
21697  __Pyx_GOTREF(__pyx_t_7);
21698  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1261, __pyx_L1_error)
21699  __Pyx_GOTREF(__pyx_t_6);
21700  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1261, __pyx_L1_error)
21701  __Pyx_GOTREF(__pyx_t_2);
21702  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21703  __pyx_t_6 = NULL;
21704  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
21705  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
21706  if (likely(__pyx_t_6)) {
21707  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
21708  __Pyx_INCREF(__pyx_t_6);
21709  __Pyx_INCREF(function);
21710  __Pyx_DECREF_SET(__pyx_t_2, function);
21711  }
21712  }
21713  __pyx_t_9 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_v_Nmax) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_Nmax);
21714  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
21715  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1261, __pyx_L1_error)
21716  __Pyx_GOTREF(__pyx_t_9);
21717  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21718  __pyx_t_2 = PyNumber_Multiply(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1261, __pyx_L1_error)
21719  __Pyx_GOTREF(__pyx_t_2);
21720  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21721  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21722  __pyx_t_9 = NULL;
21723  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
21724  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
21725  if (likely(__pyx_t_9)) {
21726  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
21727  __Pyx_INCREF(__pyx_t_9);
21728  __Pyx_INCREF(function);
21729  __Pyx_DECREF_SET(__pyx_t_3, function);
21730  }
21731  }
21732  __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_9, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
21733  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
21734  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21735  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1261, __pyx_L1_error)
21736  __Pyx_GOTREF(__pyx_t_4);
21737  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21738  __pyx_v_An = __pyx_t_4;
21739  __pyx_t_4 = 0;
21740 
21741  /* "WaveTools.py":1262
21742  * m0 = Hs*Hs/16.
21743  * An = np.sqrt(2.*m0*np.log(Nmax))
21744  * self.ai = An*returnRectangles(self.Si_Jm,wim)/mm # <<<<<<<<<<<<<<
21745  * self.kDir = np.zeros((len(self.ki),3),)
21746  * for ii in range(3):
21747  */
21748  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1262, __pyx_L1_error)
21749  __Pyx_GOTREF(__pyx_t_3);
21750  __pyx_t_2 = NULL;
21751  __pyx_t_5 = 0;
21752  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
21753  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
21754  if (likely(__pyx_t_2)) {
21755  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
21756  __Pyx_INCREF(__pyx_t_2);
21757  __Pyx_INCREF(function);
21758  __Pyx_DECREF_SET(__pyx_t_3, function);
21759  __pyx_t_5 = 1;
21760  }
21761  }
21762  #if CYTHON_FAST_PYCALL
21763  if (PyFunction_Check(__pyx_t_3)) {
21764  PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm), __pyx_v_wim};
21765  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L1_error)
21766  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21767  __Pyx_GOTREF(__pyx_t_4);
21768  } else
21769  #endif
21770  #if CYTHON_FAST_PYCCALL
21771  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
21772  PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm), __pyx_v_wim};
21773  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L1_error)
21774  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21775  __Pyx_GOTREF(__pyx_t_4);
21776  } else
21777  #endif
21778  {
21779  __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1262, __pyx_L1_error)
21780  __Pyx_GOTREF(__pyx_t_9);
21781  if (__pyx_t_2) {
21782  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
21783  }
21784  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21785  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21786  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self->Si_Jm));
21787  __Pyx_INCREF(__pyx_v_wim);
21788  __Pyx_GIVEREF(__pyx_v_wim);
21789  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_v_wim);
21790  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L1_error)
21791  __Pyx_GOTREF(__pyx_t_4);
21792  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21793  }
21794  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21795  __pyx_t_3 = PyNumber_Multiply(__pyx_v_An, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1262, __pyx_L1_error)
21796  __Pyx_GOTREF(__pyx_t_3);
21797  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21798  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_v_mm); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1262, __pyx_L1_error)
21799  __Pyx_GOTREF(__pyx_t_4);
21800  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21801  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1262, __pyx_L1_error)
21802  __Pyx_GIVEREF(__pyx_t_4);
21803  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->ai);
21804  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->ai));
21805  __pyx_cur_scope->__pyx_v_self->ai = ((PyArrayObject *)__pyx_t_4);
21806  __pyx_t_4 = 0;
21807 
21808  /* "WaveTools.py":1263
21809  * An = np.sqrt(2.*m0*np.log(Nmax))
21810  * self.ai = An*returnRectangles(self.Si_Jm,wim)/mm
21811  * self.kDir = np.zeros((len(self.ki),3),) # <<<<<<<<<<<<<<
21812  * for ii in range(3):
21813  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
21814  */
21815  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1263, __pyx_L1_error)
21816  __Pyx_GOTREF(__pyx_t_3);
21817  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1263, __pyx_L1_error)
21818  __Pyx_GOTREF(__pyx_t_9);
21819  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21820  __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->ki);
21821  __Pyx_INCREF(__pyx_t_3);
21822  __pyx_t_16 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1263, __pyx_L1_error)
21823  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21824  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1263, __pyx_L1_error)
21825  __Pyx_GOTREF(__pyx_t_3);
21826  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1263, __pyx_L1_error)
21827  __Pyx_GOTREF(__pyx_t_2);
21828  __Pyx_GIVEREF(__pyx_t_3);
21829  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
21830  __Pyx_INCREF(__pyx_int_3);
21831  __Pyx_GIVEREF(__pyx_int_3);
21832  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_3);
21833  __pyx_t_3 = 0;
21834  __pyx_t_3 = NULL;
21835  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
21836  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
21837  if (likely(__pyx_t_3)) {
21838  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
21839  __Pyx_INCREF(__pyx_t_3);
21840  __Pyx_INCREF(function);
21841  __Pyx_DECREF_SET(__pyx_t_9, function);
21842  }
21843  }
21844  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2);
21845  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
21846  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21847  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1263, __pyx_L1_error)
21848  __Pyx_GOTREF(__pyx_t_4);
21849  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21850  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1263, __pyx_L1_error)
21851  __Pyx_GIVEREF(__pyx_t_4);
21852  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->kDir);
21853  __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->kDir));
21854  __pyx_cur_scope->__pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_4);
21855  __pyx_t_4 = 0;
21856 
21857  /* "WaveTools.py":1264
21858  * self.ai = An*returnRectangles(self.Si_Jm,wim)/mm
21859  * self.kDir = np.zeros((len(self.ki),3),)
21860  * for ii in range(3): # <<<<<<<<<<<<<<
21861  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
21862  * if(self.N > 10000):
21863  */
21864  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_range); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1264, __pyx_L1_error)
21865  __Pyx_GOTREF(__pyx_t_9);
21866  __pyx_t_2 = NULL;
21867  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
21868  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
21869  if (likely(__pyx_t_2)) {
21870  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
21871  __Pyx_INCREF(__pyx_t_2);
21872  __Pyx_INCREF(function);
21873  __Pyx_DECREF_SET(__pyx_t_9, function);
21874  }
21875  }
21876  __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_2, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_3);
21877  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
21878  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1264, __pyx_L1_error)
21879  __Pyx_GOTREF(__pyx_t_4);
21880  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21881  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
21882  __pyx_t_9 = __pyx_t_4; __Pyx_INCREF(__pyx_t_9); __pyx_t_16 = 0;
21883  __pyx_t_17 = NULL;
21884  } else {
21885  __pyx_t_16 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1264, __pyx_L1_error)
21886  __Pyx_GOTREF(__pyx_t_9);
21887  __pyx_t_17 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1264, __pyx_L1_error)
21888  }
21889  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21890  for (;;) {
21891  if (likely(!__pyx_t_17)) {
21892  if (likely(PyList_CheckExact(__pyx_t_9))) {
21893  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_9)) break;
21894  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21895  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_16); __Pyx_INCREF(__pyx_t_4); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1264, __pyx_L1_error)
21896  #else
21897  __pyx_t_4 = PySequence_ITEM(__pyx_t_9, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1264, __pyx_L1_error)
21898  __Pyx_GOTREF(__pyx_t_4);
21899  #endif
21900  } else {
21901  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
21902  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21903  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_16); __Pyx_INCREF(__pyx_t_4); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1264, __pyx_L1_error)
21904  #else
21905  __pyx_t_4 = PySequence_ITEM(__pyx_t_9, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1264, __pyx_L1_error)
21906  __Pyx_GOTREF(__pyx_t_4);
21907  #endif
21908  }
21909  } else {
21910  __pyx_t_4 = __pyx_t_17(__pyx_t_9);
21911  if (unlikely(!__pyx_t_4)) {
21912  PyObject* exc_type = PyErr_Occurred();
21913  if (exc_type) {
21914  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21915  else __PYX_ERR(0, 1264, __pyx_L1_error)
21916  }
21917  break;
21918  }
21919  __Pyx_GOTREF(__pyx_t_4);
21920  }
21921  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_4);
21922  __pyx_t_4 = 0;
21923 
21924  /* "WaveTools.py":1265
21925  * self.kDir = np.zeros((len(self.ki),3),)
21926  * for ii in range(3):
21927  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii] # <<<<<<<<<<<<<<
21928  * if(self.N > 10000):
21929  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
21930  */
21931  __pyx_t_4 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_cur_scope->__pyx_v_self->ki), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1265, __pyx_L1_error)
21932  __Pyx_GOTREF(__pyx_t_4);
21933  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir), __pyx_v_ii); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1265, __pyx_L1_error)
21934  __Pyx_GOTREF(__pyx_t_2);
21935  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1265, __pyx_L1_error)
21936  __Pyx_GOTREF(__pyx_t_3);
21937  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
21938  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21939  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1265, __pyx_L1_error)
21940  __Pyx_GOTREF(__pyx_t_2);
21941  __Pyx_INCREF(__pyx_slice__4);
21942  __Pyx_GIVEREF(__pyx_slice__4);
21943  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__4);
21944  __Pyx_INCREF(__pyx_v_ii);
21945  __Pyx_GIVEREF(__pyx_v_ii);
21946  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ii);
21947  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->kDir), __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 1265, __pyx_L1_error)
21948  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21949  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21950 
21951  /* "WaveTools.py":1264
21952  * self.ai = An*returnRectangles(self.Si_Jm,wim)/mm
21953  * self.kDir = np.zeros((len(self.ki),3),)
21954  * for ii in range(3): # <<<<<<<<<<<<<<
21955  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
21956  * if(self.N > 10000):
21957  */
21958  }
21959  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21960 
21961  /* "WaveTools.py":1266
21962  * for ii in range(3):
21963  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
21964  * if(self.N > 10000): # <<<<<<<<<<<<<<
21965  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
21966  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega
21967  */
21968  __pyx_t_11 = ((__pyx_cur_scope->__pyx_v_self->N > 0x2710) != 0);
21969  if (__pyx_t_11) {
21970 
21971  /* "WaveTools.py":1267
21972  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
21973  * if(self.N > 10000):
21974  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0) # <<<<<<<<<<<<<<
21975  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega
21976  *
21977  */
21978  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1267, __pyx_L1_error)
21979  __Pyx_GOTREF(__pyx_t_9);
21980  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1267, __pyx_L1_error)
21981  __Pyx_GOTREF(__pyx_t_3);
21982  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 1267, __pyx_L1_error)
21983  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__23, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1267, __pyx_L1_error)
21984  __Pyx_GOTREF(__pyx_t_2);
21985  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21986  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21987  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21988 
21989  /* "WaveTools.py":1266
21990  * for ii in range(3):
21991  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
21992  * if(self.N > 10000): # <<<<<<<<<<<<<<
21993  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
21994  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega
21995  */
21996  }
21997 
21998  /* "WaveTools.py":1268
21999  * if(self.N > 10000):
22000  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
22001  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega # <<<<<<<<<<<<<<
22002  *
22003  *
22004  */
22005  __pyx_t_2 = __pyx_pf_9WaveTools_7NewWave_9__cinit___genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1268, __pyx_L1_error)
22006  __Pyx_GOTREF(__pyx_t_2);
22007  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L1_error)
22008  __Pyx_GOTREF(__pyx_t_3);
22009  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22010  __pyx_t_2 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1268, __pyx_L1_error)
22011  __Pyx_GOTREF(__pyx_t_2);
22012  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22013  __pyx_t_3 = PyNumber_Multiply(__pyx_v_tfocus, ((PyObject *)__pyx_cur_scope->__pyx_v_self->omega)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L1_error)
22014  __Pyx_GOTREF(__pyx_t_3);
22015  __pyx_t_9 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1268, __pyx_L1_error)
22016  __Pyx_GOTREF(__pyx_t_9);
22017  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22018  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22019  __Pyx_GIVEREF(__pyx_t_9);
22020  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->phi);
22021  __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->phi);
22022  __pyx_cur_scope->__pyx_v_self->phi = __pyx_t_9;
22023  __pyx_t_9 = 0;
22024 
22025  /* "WaveTools.py":1272
22026  *
22027  * #C++ declarations
22028  * for ij in range(3): # <<<<<<<<<<<<<<
22029  * self.waveDir_c[ij] = self.waveDir[ij]
22030  * self.vDir_c[ij] = self.vDir[ij]
22031  */
22032  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1272, __pyx_L1_error)
22033  __Pyx_GOTREF(__pyx_t_3);
22034  __pyx_t_2 = NULL;
22035  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
22036  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
22037  if (likely(__pyx_t_2)) {
22038  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
22039  __Pyx_INCREF(__pyx_t_2);
22040  __Pyx_INCREF(function);
22041  __Pyx_DECREF_SET(__pyx_t_3, function);
22042  }
22043  }
22044  __pyx_t_9 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
22045  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
22046  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1272, __pyx_L1_error)
22047  __Pyx_GOTREF(__pyx_t_9);
22048  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22049  if (likely(PyList_CheckExact(__pyx_t_9)) || PyTuple_CheckExact(__pyx_t_9)) {
22050  __pyx_t_3 = __pyx_t_9; __Pyx_INCREF(__pyx_t_3); __pyx_t_16 = 0;
22051  __pyx_t_17 = NULL;
22052  } else {
22053  __pyx_t_16 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1272, __pyx_L1_error)
22054  __Pyx_GOTREF(__pyx_t_3);
22055  __pyx_t_17 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1272, __pyx_L1_error)
22056  }
22057  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
22058  for (;;) {
22059  if (likely(!__pyx_t_17)) {
22060  if (likely(PyList_CheckExact(__pyx_t_3))) {
22061  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_3)) break;
22062  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22063  __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_16); __Pyx_INCREF(__pyx_t_9); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1272, __pyx_L1_error)
22064  #else
22065  __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1272, __pyx_L1_error)
22066  __Pyx_GOTREF(__pyx_t_9);
22067  #endif
22068  } else {
22069  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
22070  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22071  __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_16); __Pyx_INCREF(__pyx_t_9); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1272, __pyx_L1_error)
22072  #else
22073  __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1272, __pyx_L1_error)
22074  __Pyx_GOTREF(__pyx_t_9);
22075  #endif
22076  }
22077  } else {
22078  __pyx_t_9 = __pyx_t_17(__pyx_t_3);
22079  if (unlikely(!__pyx_t_9)) {
22080  PyObject* exc_type = PyErr_Occurred();
22081  if (exc_type) {
22082  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
22083  else __PYX_ERR(0, 1272, __pyx_L1_error)
22084  }
22085  break;
22086  }
22087  __Pyx_GOTREF(__pyx_t_9);
22088  }
22089  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_9);
22090  __pyx_t_9 = 0;
22091 
22092  /* "WaveTools.py":1273
22093  * #C++ declarations
22094  * for ij in range(3):
22095  * self.waveDir_c[ij] = self.waveDir[ij] # <<<<<<<<<<<<<<
22096  * self.vDir_c[ij] = self.vDir[ij]
22097  * self.waveDir_ = self.waveDir_c
22098  */
22099  __pyx_t_9 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->waveDir), __pyx_v_ij); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1273, __pyx_L1_error)
22100  __Pyx_GOTREF(__pyx_t_9);
22101  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L1_error)
22102  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
22103  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1273, __pyx_L1_error)
22104  (__pyx_cur_scope->__pyx_v_self->waveDir_c[__pyx_t_18]) = __pyx_t_8;
22105 
22106  /* "WaveTools.py":1274
22107  * for ij in range(3):
22108  * self.waveDir_c[ij] = self.waveDir[ij]
22109  * self.vDir_c[ij] = self.vDir[ij] # <<<<<<<<<<<<<<
22110  * self.waveDir_ = self.waveDir_c
22111  * self.vDir_ = self.vDir_c
22112  */
22113  __pyx_t_9 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->vDir), __pyx_v_ij); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1274, __pyx_L1_error)
22114  __Pyx_GOTREF(__pyx_t_9);
22115  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1274, __pyx_L1_error)
22116  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
22117  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1274, __pyx_L1_error)
22118  (__pyx_cur_scope->__pyx_v_self->vDir_c[__pyx_t_18]) = __pyx_t_8;
22119 
22120  /* "WaveTools.py":1272
22121  *
22122  * #C++ declarations
22123  * for ij in range(3): # <<<<<<<<<<<<<<
22124  * self.waveDir_c[ij] = self.waveDir[ij]
22125  * self.vDir_c[ij] = self.vDir[ij]
22126  */
22127  }
22128  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22129 
22130  /* "WaveTools.py":1275
22131  * self.waveDir_c[ij] = self.waveDir[ij]
22132  * self.vDir_c[ij] = self.vDir[ij]
22133  * self.waveDir_ = self.waveDir_c # <<<<<<<<<<<<<<
22134  * self.vDir_ = self.vDir_c
22135  *
22136  */
22137  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->waveDir_c;
22138  __pyx_cur_scope->__pyx_v_self->waveDir_ = __pyx_t_19;
22139 
22140  /* "WaveTools.py":1276
22141  * self.vDir_c[ij] = self.vDir[ij]
22142  * self.waveDir_ = self.waveDir_c
22143  * self.vDir_ = self.vDir_c # <<<<<<<<<<<<<<
22144  *
22145  *
22146  */
22147  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->vDir_c;
22148  __pyx_cur_scope->__pyx_v_self->vDir_ = __pyx_t_19;
22149 
22150  /* "WaveTools.py":1279
22151  *
22152  *
22153  * for ij in range(self.N): # <<<<<<<<<<<<<<
22154  * for kk in range(3):
22155  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
22156  */
22157  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_range); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1279, __pyx_L1_error)
22158  __Pyx_GOTREF(__pyx_t_9);
22159  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1279, __pyx_L1_error)
22160  __Pyx_GOTREF(__pyx_t_2);
22161  __pyx_t_4 = NULL;
22162  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
22163  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
22164  if (likely(__pyx_t_4)) {
22165  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
22166  __Pyx_INCREF(__pyx_t_4);
22167  __Pyx_INCREF(function);
22168  __Pyx_DECREF_SET(__pyx_t_9, function);
22169  }
22170  }
22171  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2);
22172  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
22173  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22174  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error)
22175  __Pyx_GOTREF(__pyx_t_3);
22176  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
22177  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
22178  __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_16 = 0;
22179  __pyx_t_17 = NULL;
22180  } else {
22181  __pyx_t_16 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1279, __pyx_L1_error)
22182  __Pyx_GOTREF(__pyx_t_9);
22183  __pyx_t_17 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1279, __pyx_L1_error)
22184  }
22185  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22186  for (;;) {
22187  if (likely(!__pyx_t_17)) {
22188  if (likely(PyList_CheckExact(__pyx_t_9))) {
22189  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_9)) break;
22190  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22191  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_16); __Pyx_INCREF(__pyx_t_3); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1279, __pyx_L1_error)
22192  #else
22193  __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error)
22194  __Pyx_GOTREF(__pyx_t_3);
22195  #endif
22196  } else {
22197  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
22198  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22199  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_16); __Pyx_INCREF(__pyx_t_3); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 1279, __pyx_L1_error)
22200  #else
22201  __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error)
22202  __Pyx_GOTREF(__pyx_t_3);
22203  #endif
22204  }
22205  } else {
22206  __pyx_t_3 = __pyx_t_17(__pyx_t_9);
22207  if (unlikely(!__pyx_t_3)) {
22208  PyObject* exc_type = PyErr_Occurred();
22209  if (exc_type) {
22210  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
22211  else __PYX_ERR(0, 1279, __pyx_L1_error)
22212  }
22213  break;
22214  }
22215  __Pyx_GOTREF(__pyx_t_3);
22216  }
22217  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_3);
22218  __pyx_t_3 = 0;
22219 
22220  /* "WaveTools.py":1280
22221  *
22222  * for ij in range(self.N):
22223  * for kk in range(3): # <<<<<<<<<<<<<<
22224  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
22225  * self.omega_c[ij] = self.omega[ij]
22226  */
22227  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1280, __pyx_L1_error)
22228  __Pyx_GOTREF(__pyx_t_2);
22229  __pyx_t_4 = NULL;
22230  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
22231  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
22232  if (likely(__pyx_t_4)) {
22233  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
22234  __Pyx_INCREF(__pyx_t_4);
22235  __Pyx_INCREF(function);
22236  __Pyx_DECREF_SET(__pyx_t_2, function);
22237  }
22238  }
22239  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
22240  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
22241  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1280, __pyx_L1_error)
22242  __Pyx_GOTREF(__pyx_t_3);
22243  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22244  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
22245  __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_18 = 0;
22246  __pyx_t_20 = NULL;
22247  } else {
22248  __pyx_t_18 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1280, __pyx_L1_error)
22249  __Pyx_GOTREF(__pyx_t_2);
22250  __pyx_t_20 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1280, __pyx_L1_error)
22251  }
22252  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22253  for (;;) {
22254  if (likely(!__pyx_t_20)) {
22255  if (likely(PyList_CheckExact(__pyx_t_2))) {
22256  if (__pyx_t_18 >= PyList_GET_SIZE(__pyx_t_2)) break;
22257  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22258  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_18); __Pyx_INCREF(__pyx_t_3); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 1280, __pyx_L1_error)
22259  #else
22260  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1280, __pyx_L1_error)
22261  __Pyx_GOTREF(__pyx_t_3);
22262  #endif
22263  } else {
22264  if (__pyx_t_18 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
22265  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22266  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_18); __Pyx_INCREF(__pyx_t_3); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 1280, __pyx_L1_error)
22267  #else
22268  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1280, __pyx_L1_error)
22269  __Pyx_GOTREF(__pyx_t_3);
22270  #endif
22271  }
22272  } else {
22273  __pyx_t_3 = __pyx_t_20(__pyx_t_2);
22274  if (unlikely(!__pyx_t_3)) {
22275  PyObject* exc_type = PyErr_Occurred();
22276  if (exc_type) {
22277  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
22278  else __PYX_ERR(0, 1280, __pyx_L1_error)
22279  }
22280  break;
22281  }
22282  __Pyx_GOTREF(__pyx_t_3);
22283  }
22284  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_3);
22285  __pyx_t_3 = 0;
22286 
22287  /* "WaveTools.py":1281
22288  * for ij in range(self.N):
22289  * for kk in range(3):
22290  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk] # <<<<<<<<<<<<<<
22291  * self.omega_c[ij] = self.omega[ij]
22292  * self.ki_c[ij] =self.ki[ij]
22293  */
22294  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1281, __pyx_L1_error)
22295  __Pyx_GOTREF(__pyx_t_3);
22296  __Pyx_INCREF(__pyx_v_ij);
22297  __Pyx_GIVEREF(__pyx_v_ij);
22298  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_ij);
22299  __Pyx_INCREF(__pyx_v_kk);
22300  __Pyx_GIVEREF(__pyx_v_kk);
22301  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_kk);
22302  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->kDir), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1281, __pyx_L1_error)
22303  __Pyx_GOTREF(__pyx_t_4);
22304  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22305  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1281, __pyx_L1_error)
22306  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22307  __pyx_t_4 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1281, __pyx_L1_error)
22308  __Pyx_GOTREF(__pyx_t_4);
22309  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_v_kk); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1281, __pyx_L1_error)
22310  __Pyx_GOTREF(__pyx_t_3);
22311  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22312  __pyx_t_21 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_21 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1281, __pyx_L1_error)
22313  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22314  (__pyx_cur_scope->__pyx_v_self->kDir_c[__pyx_t_21]) = __pyx_t_8;
22315 
22316  /* "WaveTools.py":1280
22317  *
22318  * for ij in range(self.N):
22319  * for kk in range(3): # <<<<<<<<<<<<<<
22320  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
22321  * self.omega_c[ij] = self.omega[ij]
22322  */
22323  }
22324  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22325 
22326  /* "WaveTools.py":1282
22327  * for kk in range(3):
22328  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
22329  * self.omega_c[ij] = self.omega[ij] # <<<<<<<<<<<<<<
22330  * self.ki_c[ij] =self.ki[ij]
22331  * self.tanh_c[ij] = self.tanhF[ij]
22332  */
22333  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->omega), __pyx_v_ij); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1282, __pyx_L1_error)
22334  __Pyx_GOTREF(__pyx_t_2);
22335  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L1_error)
22336  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22337  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1282, __pyx_L1_error)
22338  (__pyx_cur_scope->__pyx_v_self->omega_c[__pyx_t_18]) = __pyx_t_8;
22339 
22340  /* "WaveTools.py":1283
22341  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
22342  * self.omega_c[ij] = self.omega[ij]
22343  * self.ki_c[ij] =self.ki[ij] # <<<<<<<<<<<<<<
22344  * self.tanh_c[ij] = self.tanhF[ij]
22345  * self.ai_c[ij] = self.ai[ij]
22346  */
22347  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->ki), __pyx_v_ij); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1283, __pyx_L1_error)
22348  __Pyx_GOTREF(__pyx_t_2);
22349  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1283, __pyx_L1_error)
22350  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22351  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1283, __pyx_L1_error)
22352  (__pyx_cur_scope->__pyx_v_self->ki_c[__pyx_t_18]) = __pyx_t_8;
22353 
22354  /* "WaveTools.py":1284
22355  * self.omega_c[ij] = self.omega[ij]
22356  * self.ki_c[ij] =self.ki[ij]
22357  * self.tanh_c[ij] = self.tanhF[ij] # <<<<<<<<<<<<<<
22358  * self.ai_c[ij] = self.ai[ij]
22359  * self.phi_c[ij] = self.phi[ij]
22360  */
22361  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->tanhF), __pyx_v_ij); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1284, __pyx_L1_error)
22362  __Pyx_GOTREF(__pyx_t_2);
22363  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1284, __pyx_L1_error)
22364  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22365  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1284, __pyx_L1_error)
22366  (__pyx_cur_scope->__pyx_v_self->tanh_c[__pyx_t_18]) = __pyx_t_8;
22367 
22368  /* "WaveTools.py":1285
22369  * self.ki_c[ij] =self.ki[ij]
22370  * self.tanh_c[ij] = self.tanhF[ij]
22371  * self.ai_c[ij] = self.ai[ij] # <<<<<<<<<<<<<<
22372  * self.phi_c[ij] = self.phi[ij]
22373  *
22374  */
22375  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_cur_scope->__pyx_v_self->ai), __pyx_v_ij); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1285, __pyx_L1_error)
22376  __Pyx_GOTREF(__pyx_t_2);
22377  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1285, __pyx_L1_error)
22378  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22379  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1285, __pyx_L1_error)
22380  (__pyx_cur_scope->__pyx_v_self->ai_c[__pyx_t_18]) = __pyx_t_8;
22381 
22382  /* "WaveTools.py":1286
22383  * self.tanh_c[ij] = self.tanhF[ij]
22384  * self.ai_c[ij] = self.ai[ij]
22385  * self.phi_c[ij] = self.phi[ij] # <<<<<<<<<<<<<<
22386  *
22387  * self.kDir_ = self.kDir_c
22388  */
22389  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->phi, __pyx_v_ij); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L1_error)
22390  __Pyx_GOTREF(__pyx_t_2);
22391  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1286, __pyx_L1_error)
22392  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22393  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1286, __pyx_L1_error)
22394  (__pyx_cur_scope->__pyx_v_self->phi_c[__pyx_t_18]) = __pyx_t_8;
22395 
22396  /* "WaveTools.py":1279
22397  *
22398  *
22399  * for ij in range(self.N): # <<<<<<<<<<<<<<
22400  * for kk in range(3):
22401  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
22402  */
22403  }
22404  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
22405 
22406  /* "WaveTools.py":1288
22407  * self.phi_c[ij] = self.phi[ij]
22408  *
22409  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
22410  * self.omega_ = self.omega_c
22411  * self.ki_ =self.ki_c
22412  */
22413  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->kDir_c;
22414  __pyx_cur_scope->__pyx_v_self->kDir_ = __pyx_t_19;
22415 
22416  /* "WaveTools.py":1289
22417  *
22418  * self.kDir_ = self.kDir_c
22419  * self.omega_ = self.omega_c # <<<<<<<<<<<<<<
22420  * self.ki_ =self.ki_c
22421  * self.ai_ = self.ai_c
22422  */
22423  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->omega_c;
22424  __pyx_cur_scope->__pyx_v_self->omega_ = __pyx_t_19;
22425 
22426  /* "WaveTools.py":1290
22427  * self.kDir_ = self.kDir_c
22428  * self.omega_ = self.omega_c
22429  * self.ki_ =self.ki_c # <<<<<<<<<<<<<<
22430  * self.ai_ = self.ai_c
22431  * self.tanh_ = self.tanh_c
22432  */
22433  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->ki_c;
22434  __pyx_cur_scope->__pyx_v_self->ki_ = __pyx_t_19;
22435 
22436  /* "WaveTools.py":1291
22437  * self.omega_ = self.omega_c
22438  * self.ki_ =self.ki_c
22439  * self.ai_ = self.ai_c # <<<<<<<<<<<<<<
22440  * self.tanh_ = self.tanh_c
22441  * self.phi_ = self.phi_c
22442  */
22443  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->ai_c;
22444  __pyx_cur_scope->__pyx_v_self->ai_ = __pyx_t_19;
22445 
22446  /* "WaveTools.py":1292
22447  * self.ki_ =self.ki_c
22448  * self.ai_ = self.ai_c
22449  * self.tanh_ = self.tanh_c # <<<<<<<<<<<<<<
22450  * self.phi_ = self.phi_c
22451  *
22452  */
22453  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->tanh_c;
22454  __pyx_cur_scope->__pyx_v_self->tanh_ = __pyx_t_19;
22455 
22456  /* "WaveTools.py":1293
22457  * self.ai_ = self.ai_c
22458  * self.tanh_ = self.tanh_c
22459  * self.phi_ = self.phi_c # <<<<<<<<<<<<<<
22460  *
22461  * def _cpp_eta(self, x, t):
22462  */
22463  __pyx_t_19 = __pyx_cur_scope->__pyx_v_self->phi_c;
22464  __pyx_cur_scope->__pyx_v_self->phi_ = __pyx_t_19;
22465 
22466  /* "WaveTools.py":1204
22467  * Switch for optimised functions
22468  * """
22469  * def __cinit__(self, # <<<<<<<<<<<<<<
22470  * Tp,
22471  * Hs,
22472  */
22473 
22474  /* function exit code */
22475  __pyx_r = 0;
22476  goto __pyx_L0;
22477  __pyx_L1_error:;
22478  __Pyx_XDECREF(__pyx_t_2);
22479  __Pyx_XDECREF(__pyx_t_3);
22480  __Pyx_XDECREF(__pyx_t_4);
22481  __Pyx_XDECREF(__pyx_t_6);
22482  __Pyx_XDECREF(__pyx_t_7);
22483  __Pyx_XDECREF(__pyx_t_9);
22484  __Pyx_XDECREF(__pyx_t_15);
22485  __Pyx_AddTraceback("WaveTools.NewWave.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
22486  __pyx_r = -1;
22487  __pyx_L0:;
22488  __Pyx_XDECREF(__pyx_v_validSpectra);
22489  __Pyx_XDECREF(__pyx_v_spec_fun);
22490  __Pyx_XDECREF(__pyx_v_fmin);
22491  __Pyx_XDECREF(__pyx_v_fim);
22492  __Pyx_XDECREF(__pyx_v_wim);
22493  __Pyx_XDECREF(__pyx_v_ii);
22494  __Pyx_XDECREF(__pyx_v_mm);
22495  __Pyx_XDECREF(__pyx_v_m0);
22496  __Pyx_XDECREF(__pyx_v_An);
22497  __Pyx_XDECREF(__pyx_v_ij);
22498  __Pyx_XDECREF(__pyx_v_kk);
22499  __Pyx_XDECREF(__pyx_gb_9WaveTools_7NewWave_9__cinit___2generator);
22500  __Pyx_XDECREF(__pyx_v_waveDir);
22501  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
22502  __Pyx_RefNannyFinishContext();
22503  return __pyx_r;
22504 }
22505 
22506 /* "WaveTools.py":1295
22507  * self.phi_ = self.phi_c
22508  *
22509  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
22510  *
22511  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
22512  */
22513 
22514 static double __pyx_f_9WaveTools_7NewWave__cpp_eta(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
22515  double __pyx_r;
22516  __Pyx_RefNannyDeclarations
22517  __Pyx_RefNannySetupContext("_cpp_eta", 0);
22518 
22519  /* "WaveTools.py":1297
22520  * def _cpp_eta(self, x, t):
22521  *
22522  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast) # <<<<<<<<<<<<<<
22523  *
22524  * def eta(self, x, t):
22525  */
22526  __pyx_r = proteus::__cpp_etaRandom(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->N, __pyx_v_self->fast);
22527  goto __pyx_L0;
22528 
22529  /* "WaveTools.py":1295
22530  * self.phi_ = self.phi_c
22531  *
22532  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
22533  *
22534  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
22535  */
22536 
22537  /* function exit code */
22538  __pyx_L0:;
22539  __Pyx_RefNannyFinishContext();
22540  return __pyx_r;
22541 }
22542 
22543 /* "WaveTools.py":1299
22544  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
22545  *
22546  * def eta(self, x, t): # <<<<<<<<<<<<<<
22547  * """Calculates free surface elevation (RandomWaves class)
22548  * Parameters
22549  */
22550 
22551 /* Python wrapper */
22552 static PyObject *__pyx_pw_9WaveTools_7NewWave_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22553 static char __pyx_doc_9WaveTools_7NewWave_2eta[] = "Calculates free surface elevation (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
22554 static PyMethodDef __pyx_mdef_9WaveTools_7NewWave_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7NewWave_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_7NewWave_2eta};
22555 static PyObject *__pyx_pw_9WaveTools_7NewWave_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22556  PyObject *__pyx_v_x = 0;
22557  PyObject *__pyx_v_t = 0;
22558  int __pyx_lineno = 0;
22559  const char *__pyx_filename = NULL;
22560  int __pyx_clineno = 0;
22561  PyObject *__pyx_r = 0;
22562  __Pyx_RefNannyDeclarations
22563  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
22564  {
22565  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
22566  PyObject* values[2] = {0,0};
22567  if (unlikely(__pyx_kwds)) {
22568  Py_ssize_t kw_args;
22569  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22570  switch (pos_args) {
22571  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22572  CYTHON_FALLTHROUGH;
22573  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22574  CYTHON_FALLTHROUGH;
22575  case 0: break;
22576  default: goto __pyx_L5_argtuple_error;
22577  }
22578  kw_args = PyDict_Size(__pyx_kwds);
22579  switch (pos_args) {
22580  case 0:
22581  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
22582  else goto __pyx_L5_argtuple_error;
22583  CYTHON_FALLTHROUGH;
22584  case 1:
22585  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22586  else {
22587  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 1299, __pyx_L3_error)
22588  }
22589  }
22590  if (unlikely(kw_args > 0)) {
22591  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 1299, __pyx_L3_error)
22592  }
22593  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
22594  goto __pyx_L5_argtuple_error;
22595  } else {
22596  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22597  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22598  }
22599  __pyx_v_x = values[0];
22600  __pyx_v_t = values[1];
22601  }
22602  goto __pyx_L4_argument_unpacking_done;
22603  __pyx_L5_argtuple_error:;
22604  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1299, __pyx_L3_error)
22605  __pyx_L3_error:;
22606  __Pyx_AddTraceback("WaveTools.NewWave.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
22607  __Pyx_RefNannyFinishContext();
22608  return NULL;
22609  __pyx_L4_argument_unpacking_done:;
22610  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2eta(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
22611 
22612  /* function exit code */
22613  __Pyx_RefNannyFinishContext();
22614  return __pyx_r;
22615 }
22616 
22617 static PyObject *__pyx_pf_9WaveTools_7NewWave_2eta(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
22618  double __pyx_v_xx[3];
22619  PyObject *__pyx_r = NULL;
22620  __Pyx_RefNannyDeclarations
22621  PyObject *__pyx_t_1 = NULL;
22622  double __pyx_t_2;
22623  int __pyx_lineno = 0;
22624  const char *__pyx_filename = NULL;
22625  int __pyx_clineno = 0;
22626  __Pyx_RefNannySetupContext("eta", 0);
22627 
22628  /* "WaveTools.py":1315
22629  * """
22630  * cython.declare(xx=cython.double[3])
22631  * xx[0] = x[0] # <<<<<<<<<<<<<<
22632  * xx[1] = x[1]
22633  * xx[2] = x[2]
22634  */
22635  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1315, __pyx_L1_error)
22636  __Pyx_GOTREF(__pyx_t_1);
22637  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1315, __pyx_L1_error)
22638  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22639  (__pyx_v_xx[0]) = __pyx_t_2;
22640 
22641  /* "WaveTools.py":1316
22642  * cython.declare(xx=cython.double[3])
22643  * xx[0] = x[0]
22644  * xx[1] = x[1] # <<<<<<<<<<<<<<
22645  * xx[2] = x[2]
22646  * return self._cpp_eta(xx,t)
22647  */
22648  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error)
22649  __Pyx_GOTREF(__pyx_t_1);
22650  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1316, __pyx_L1_error)
22651  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22652  (__pyx_v_xx[1]) = __pyx_t_2;
22653 
22654  /* "WaveTools.py":1317
22655  * xx[0] = x[0]
22656  * xx[1] = x[1]
22657  * xx[2] = x[2] # <<<<<<<<<<<<<<
22658  * return self._cpp_eta(xx,t)
22659  *
22660  */
22661  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1317, __pyx_L1_error)
22662  __Pyx_GOTREF(__pyx_t_1);
22663  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1317, __pyx_L1_error)
22664  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22665  (__pyx_v_xx[2]) = __pyx_t_2;
22666 
22667  /* "WaveTools.py":1318
22668  * xx[1] = x[1]
22669  * xx[2] = x[2]
22670  * return self._cpp_eta(xx,t) # <<<<<<<<<<<<<<
22671  *
22672  * def _cpp_u(self, U, x, t):
22673  */
22674  __Pyx_XDECREF(__pyx_r);
22675  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1318, __pyx_L1_error)
22676  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_NewWave *)__pyx_v_self->__pyx_vtab)->_cpp_eta(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L1_error)
22677  __Pyx_GOTREF(__pyx_t_1);
22678  __pyx_r = __pyx_t_1;
22679  __pyx_t_1 = 0;
22680  goto __pyx_L0;
22681 
22682  /* "WaveTools.py":1299
22683  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
22684  *
22685  * def eta(self, x, t): # <<<<<<<<<<<<<<
22686  * """Calculates free surface elevation (RandomWaves class)
22687  * Parameters
22688  */
22689 
22690  /* function exit code */
22691  __pyx_L1_error:;
22692  __Pyx_XDECREF(__pyx_t_1);
22693  __Pyx_AddTraceback("WaveTools.NewWave.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
22694  __pyx_r = NULL;
22695  __pyx_L0:;
22696  __Pyx_XGIVEREF(__pyx_r);
22697  __Pyx_RefNannyFinishContext();
22698  return __pyx_r;
22699 }
22700 
22701 /* "WaveTools.py":1320
22702  * return self._cpp_eta(xx,t)
22703  *
22704  * def _cpp_u(self, U, x, t): # <<<<<<<<<<<<<<
22705  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
22706  *
22707  */
22708 
22709 static void __pyx_f_9WaveTools_7NewWave__cpp_u(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
22710  __Pyx_RefNannyDeclarations
22711  __Pyx_RefNannySetupContext("_cpp_u", 0);
22712 
22713  /* "WaveTools.py":1321
22714  *
22715  * def _cpp_u(self, U, x, t):
22716  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast) # <<<<<<<<<<<<<<
22717  *
22718  * def u(self, x, t):
22719  */
22720  proteus::__cpp_uRandom(__pyx_v_U, __pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->N, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanh_, __pyx_v_self->gAbs, __pyx_v_self->fast);
22721 
22722  /* "WaveTools.py":1320
22723  * return self._cpp_eta(xx,t)
22724  *
22725  * def _cpp_u(self, U, x, t): # <<<<<<<<<<<<<<
22726  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
22727  *
22728  */
22729 
22730  /* function exit code */
22731  __Pyx_RefNannyFinishContext();
22732 }
22733 
22734 /* "WaveTools.py":1323
22735  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
22736  *
22737  * def u(self, x, t): # <<<<<<<<<<<<<<
22738  * """Calculates wave velocity vector (RandomWaves class)
22739  * Parameters
22740  */
22741 
22742 /* Python wrapper */
22743 static PyObject *__pyx_pw_9WaveTools_7NewWave_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22744 static char __pyx_doc_9WaveTools_7NewWave_4u[] = "Calculates wave velocity vector (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
22745 static PyMethodDef __pyx_mdef_9WaveTools_7NewWave_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7NewWave_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_7NewWave_4u};
22746 static PyObject *__pyx_pw_9WaveTools_7NewWave_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22747  PyObject *__pyx_v_x = 0;
22748  PyObject *__pyx_v_t = 0;
22749  int __pyx_lineno = 0;
22750  const char *__pyx_filename = NULL;
22751  int __pyx_clineno = 0;
22752  PyObject *__pyx_r = 0;
22753  __Pyx_RefNannyDeclarations
22754  __Pyx_RefNannySetupContext("u (wrapper)", 0);
22755  {
22756  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
22757  PyObject* values[2] = {0,0};
22758  if (unlikely(__pyx_kwds)) {
22759  Py_ssize_t kw_args;
22760  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22761  switch (pos_args) {
22762  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22763  CYTHON_FALLTHROUGH;
22764  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22765  CYTHON_FALLTHROUGH;
22766  case 0: break;
22767  default: goto __pyx_L5_argtuple_error;
22768  }
22769  kw_args = PyDict_Size(__pyx_kwds);
22770  switch (pos_args) {
22771  case 0:
22772  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
22773  else goto __pyx_L5_argtuple_error;
22774  CYTHON_FALLTHROUGH;
22775  case 1:
22776  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22777  else {
22778  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 1323, __pyx_L3_error)
22779  }
22780  }
22781  if (unlikely(kw_args > 0)) {
22782  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 1323, __pyx_L3_error)
22783  }
22784  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
22785  goto __pyx_L5_argtuple_error;
22786  } else {
22787  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22788  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22789  }
22790  __pyx_v_x = values[0];
22791  __pyx_v_t = values[1];
22792  }
22793  goto __pyx_L4_argument_unpacking_done;
22794  __pyx_L5_argtuple_error:;
22795  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1323, __pyx_L3_error)
22796  __pyx_L3_error:;
22797  __Pyx_AddTraceback("WaveTools.NewWave.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
22798  __Pyx_RefNannyFinishContext();
22799  return NULL;
22800  __pyx_L4_argument_unpacking_done:;
22801  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4u(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
22802 
22803  /* function exit code */
22804  __Pyx_RefNannyFinishContext();
22805  return __pyx_r;
22806 }
22807 
22808 static PyObject *__pyx_pf_9WaveTools_7NewWave_4u(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
22809  double __pyx_v_xx[3];
22810  double __pyx_v_cppU[3];
22811  PyObject *__pyx_v_ii = NULL;
22812  PyObject *__pyx_v_U = NULL;
22813  PyObject *__pyx_r = NULL;
22814  __Pyx_RefNannyDeclarations
22815  PyObject *__pyx_t_1 = NULL;
22816  PyObject *__pyx_t_2 = NULL;
22817  PyObject *__pyx_t_3 = NULL;
22818  Py_ssize_t __pyx_t_4;
22819  PyObject *(*__pyx_t_5)(PyObject *);
22820  double __pyx_t_6;
22821  Py_ssize_t __pyx_t_7;
22822  int __pyx_lineno = 0;
22823  const char *__pyx_filename = NULL;
22824  int __pyx_clineno = 0;
22825  __Pyx_RefNannySetupContext("u", 0);
22826 
22827  /* "WaveTools.py":1341
22828  * cython.declare(xx=cython.double[3])
22829  * cython.declare(cppU=cython.double[3])
22830  * for ii in range(3): # <<<<<<<<<<<<<<
22831  * xx[ii] = x[ii]
22832  * cppU[ii] = 0.
22833  */
22834  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1341, __pyx_L1_error)
22835  __Pyx_GOTREF(__pyx_t_2);
22836  __pyx_t_3 = NULL;
22837  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
22838  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
22839  if (likely(__pyx_t_3)) {
22840  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
22841  __Pyx_INCREF(__pyx_t_3);
22842  __Pyx_INCREF(function);
22843  __Pyx_DECREF_SET(__pyx_t_2, function);
22844  }
22845  }
22846  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
22847  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
22848  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
22849  __Pyx_GOTREF(__pyx_t_1);
22850  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22851  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
22852  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
22853  __pyx_t_5 = NULL;
22854  } else {
22855  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1341, __pyx_L1_error)
22856  __Pyx_GOTREF(__pyx_t_2);
22857  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1341, __pyx_L1_error)
22858  }
22859  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22860  for (;;) {
22861  if (likely(!__pyx_t_5)) {
22862  if (likely(PyList_CheckExact(__pyx_t_2))) {
22863  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
22864  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22865  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1341, __pyx_L1_error)
22866  #else
22867  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
22868  __Pyx_GOTREF(__pyx_t_1);
22869  #endif
22870  } else {
22871  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
22872  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
22873  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1341, __pyx_L1_error)
22874  #else
22875  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
22876  __Pyx_GOTREF(__pyx_t_1);
22877  #endif
22878  }
22879  } else {
22880  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
22881  if (unlikely(!__pyx_t_1)) {
22882  PyObject* exc_type = PyErr_Occurred();
22883  if (exc_type) {
22884  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
22885  else __PYX_ERR(0, 1341, __pyx_L1_error)
22886  }
22887  break;
22888  }
22889  __Pyx_GOTREF(__pyx_t_1);
22890  }
22891  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
22892  __pyx_t_1 = 0;
22893 
22894  /* "WaveTools.py":1342
22895  * cython.declare(cppU=cython.double[3])
22896  * for ii in range(3):
22897  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
22898  * cppU[ii] = 0.
22899  * U = np.zeros(3,)
22900  */
22901  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
22902  __Pyx_GOTREF(__pyx_t_1);
22903  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L1_error)
22904  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22905  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1342, __pyx_L1_error)
22906  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
22907 
22908  /* "WaveTools.py":1343
22909  * for ii in range(3):
22910  * xx[ii] = x[ii]
22911  * cppU[ii] = 0. # <<<<<<<<<<<<<<
22912  * U = np.zeros(3,)
22913  * self._cpp_u(cppU,xx,t)
22914  */
22915  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1343, __pyx_L1_error)
22916  (__pyx_v_cppU[__pyx_t_7]) = 0.;
22917 
22918  /* "WaveTools.py":1341
22919  * cython.declare(xx=cython.double[3])
22920  * cython.declare(cppU=cython.double[3])
22921  * for ii in range(3): # <<<<<<<<<<<<<<
22922  * xx[ii] = x[ii]
22923  * cppU[ii] = 0.
22924  */
22925  }
22926  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22927 
22928  /* "WaveTools.py":1344
22929  * xx[ii] = x[ii]
22930  * cppU[ii] = 0.
22931  * U = np.zeros(3,) # <<<<<<<<<<<<<<
22932  * self._cpp_u(cppU,xx,t)
22933  * U[0] = cppU[0]
22934  */
22935  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1344, __pyx_L1_error)
22936  __Pyx_GOTREF(__pyx_t_1);
22937  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1344, __pyx_L1_error)
22938  __Pyx_GOTREF(__pyx_t_3);
22939  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22940  __pyx_t_1 = NULL;
22941  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
22942  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
22943  if (likely(__pyx_t_1)) {
22944  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
22945  __Pyx_INCREF(__pyx_t_1);
22946  __Pyx_INCREF(function);
22947  __Pyx_DECREF_SET(__pyx_t_3, function);
22948  }
22949  }
22950  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
22951  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
22952  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1344, __pyx_L1_error)
22953  __Pyx_GOTREF(__pyx_t_2);
22954  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22955  __pyx_v_U = __pyx_t_2;
22956  __pyx_t_2 = 0;
22957 
22958  /* "WaveTools.py":1345
22959  * cppU[ii] = 0.
22960  * U = np.zeros(3,)
22961  * self._cpp_u(cppU,xx,t) # <<<<<<<<<<<<<<
22962  * U[0] = cppU[0]
22963  * U[1] = cppU[1]
22964  */
22965  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1345, __pyx_L1_error)
22966  ((struct __pyx_vtabstruct_9WaveTools_NewWave *)__pyx_v_self->__pyx_vtab)->_cpp_u(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
22967 
22968  /* "WaveTools.py":1346
22969  * U = np.zeros(3,)
22970  * self._cpp_u(cppU,xx,t)
22971  * U[0] = cppU[0] # <<<<<<<<<<<<<<
22972  * U[1] = cppU[1]
22973  * U[2] = cppU[2]
22974  */
22975  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error)
22976  __Pyx_GOTREF(__pyx_t_2);
22977  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1346, __pyx_L1_error)
22978  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22979 
22980  /* "WaveTools.py":1347
22981  * self._cpp_u(cppU,xx,t)
22982  * U[0] = cppU[0]
22983  * U[1] = cppU[1] # <<<<<<<<<<<<<<
22984  * U[2] = cppU[2]
22985  *
22986  */
22987  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1347, __pyx_L1_error)
22988  __Pyx_GOTREF(__pyx_t_2);
22989  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1347, __pyx_L1_error)
22990  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22991 
22992  /* "WaveTools.py":1348
22993  * U[0] = cppU[0]
22994  * U[1] = cppU[1]
22995  * U[2] = cppU[2] # <<<<<<<<<<<<<<
22996  *
22997  * return U
22998  */
22999  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error)
23000  __Pyx_GOTREF(__pyx_t_2);
23001  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1348, __pyx_L1_error)
23002  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23003 
23004  /* "WaveTools.py":1350
23005  * U[2] = cppU[2]
23006  *
23007  * return U # <<<<<<<<<<<<<<
23008  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])):
23009  * """Writes a timeseries of the free-surface elevation
23010  */
23011  __Pyx_XDECREF(__pyx_r);
23012  __Pyx_INCREF(__pyx_v_U);
23013  __pyx_r = __pyx_v_U;
23014  goto __pyx_L0;
23015 
23016  /* "WaveTools.py":1323
23017  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
23018  *
23019  * def u(self, x, t): # <<<<<<<<<<<<<<
23020  * """Calculates wave velocity vector (RandomWaves class)
23021  * Parameters
23022  */
23023 
23024  /* function exit code */
23025  __pyx_L1_error:;
23026  __Pyx_XDECREF(__pyx_t_1);
23027  __Pyx_XDECREF(__pyx_t_2);
23028  __Pyx_XDECREF(__pyx_t_3);
23029  __Pyx_AddTraceback("WaveTools.NewWave.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
23030  __pyx_r = NULL;
23031  __pyx_L0:;
23032  __Pyx_XDECREF(__pyx_v_ii);
23033  __Pyx_XDECREF(__pyx_v_U);
23034  __Pyx_XGIVEREF(__pyx_r);
23035  __Pyx_RefNannyFinishContext();
23036  return __pyx_r;
23037 }
23038 
23039 /* "WaveTools.py":1351
23040  *
23041  * return U
23042  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
23043  * """Writes a timeseries of the free-surface elevation
23044  *
23045  */
23046 
23047 /* Python wrapper */
23048 static PyObject *__pyx_pw_9WaveTools_7NewWave_7writeEtaSeries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
23049 static char __pyx_doc_9WaveTools_7NewWave_6writeEtaSeries[] = "Writes a timeseries of the free-surface elevation\n\n It also returns the free surface elevation as a time-eta array.\n If Lgen !=[0.,0.,0.,] then Tstart is modified to account for the\n wave transformation at the most remote point of the relaxation zone.\n\n Parameters\n ----------\n Tstart : float\n Start time\n Tend : float\n End time\n x0 : numpy.ndarray\n Position vector of the time series\n fname : string\n Filename for timeseries file\n Lgen : Optional[numpy.ndarray]\n Length vector of relaxation zone\n\n\n Returns\n ----------\n numpy.ndarray\n 2D numpy array Nx2 containing free-surface elevation in time.\n ";
23050 static PyMethodDef __pyx_mdef_9WaveTools_7NewWave_7writeEtaSeries = {"writeEtaSeries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7NewWave_7writeEtaSeries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_7NewWave_6writeEtaSeries};
23051 static PyObject *__pyx_pw_9WaveTools_7NewWave_7writeEtaSeries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
23052  PyObject *__pyx_v_Tstart = 0;
23053  PyObject *__pyx_v_Tend = 0;
23054  PyObject *__pyx_v_x0 = 0;
23055  PyObject *__pyx_v_fname = 0;
23056  PyObject *__pyx_v_Lgen = 0;
23057  int __pyx_lineno = 0;
23058  const char *__pyx_filename = NULL;
23059  int __pyx_clineno = 0;
23060  PyObject *__pyx_r = 0;
23061  __Pyx_RefNannyDeclarations
23062  __Pyx_RefNannySetupContext("writeEtaSeries (wrapper)", 0);
23063  {
23064  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Tstart,&__pyx_n_s_Tend,&__pyx_n_s_x0,&__pyx_n_s_fname,&__pyx_n_s_Lgen,0};
23065  PyObject* values[5] = {0,0,0,0,0};
23066  values[4] = __pyx_k__24;
23067  if (unlikely(__pyx_kwds)) {
23068  Py_ssize_t kw_args;
23069  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
23070  switch (pos_args) {
23071  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
23072  CYTHON_FALLTHROUGH;
23073  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
23074  CYTHON_FALLTHROUGH;
23075  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
23076  CYTHON_FALLTHROUGH;
23077  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
23078  CYTHON_FALLTHROUGH;
23079  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
23080  CYTHON_FALLTHROUGH;
23081  case 0: break;
23082  default: goto __pyx_L5_argtuple_error;
23083  }
23084  kw_args = PyDict_Size(__pyx_kwds);
23085  switch (pos_args) {
23086  case 0:
23087  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tstart)) != 0)) kw_args--;
23088  else goto __pyx_L5_argtuple_error;
23089  CYTHON_FALLTHROUGH;
23090  case 1:
23091  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tend)) != 0)) kw_args--;
23092  else {
23093  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, 1); __PYX_ERR(0, 1351, __pyx_L3_error)
23094  }
23095  CYTHON_FALLTHROUGH;
23096  case 2:
23097  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
23098  else {
23099  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, 2); __PYX_ERR(0, 1351, __pyx_L3_error)
23100  }
23101  CYTHON_FALLTHROUGH;
23102  case 3:
23103  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
23104  else {
23105  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, 3); __PYX_ERR(0, 1351, __pyx_L3_error)
23106  }
23107  CYTHON_FALLTHROUGH;
23108  case 4:
23109  if (kw_args > 0) {
23110  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Lgen);
23111  if (value) { values[4] = value; kw_args--; }
23112  }
23113  }
23114  if (unlikely(kw_args > 0)) {
23115  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "writeEtaSeries") < 0)) __PYX_ERR(0, 1351, __pyx_L3_error)
23116  }
23117  } else {
23118  switch (PyTuple_GET_SIZE(__pyx_args)) {
23119  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
23120  CYTHON_FALLTHROUGH;
23121  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
23122  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
23123  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
23124  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
23125  break;
23126  default: goto __pyx_L5_argtuple_error;
23127  }
23128  }
23129  __pyx_v_Tstart = values[0];
23130  __pyx_v_Tend = values[1];
23131  __pyx_v_x0 = values[2];
23132  __pyx_v_fname = values[3];
23133  __pyx_v_Lgen = values[4];
23134  }
23135  goto __pyx_L4_argument_unpacking_done;
23136  __pyx_L5_argtuple_error:;
23137  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1351, __pyx_L3_error)
23138  __pyx_L3_error:;
23139  __Pyx_AddTraceback("WaveTools.NewWave.writeEtaSeries", __pyx_clineno, __pyx_lineno, __pyx_filename);
23140  __Pyx_RefNannyFinishContext();
23141  return NULL;
23142  __pyx_L4_argument_unpacking_done:;
23143  __pyx_r = __pyx_pf_9WaveTools_7NewWave_6writeEtaSeries(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_x0, __pyx_v_fname, __pyx_v_Lgen);
23144 
23145  /* function exit code */
23146  __Pyx_RefNannyFinishContext();
23147  return __pyx_r;
23148 }
23149 
23150 static PyObject *__pyx_pf_9WaveTools_7NewWave_6writeEtaSeries(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_fname, PyObject *__pyx_v_Lgen) {
23151  PyObject *__pyx_v_dt = NULL;
23152  PyObject *__pyx_v_Tlag = NULL;
23153  PyObject *__pyx_v_j = NULL;
23154  PyObject *__pyx_v_Np = NULL;
23155  PyObject *__pyx_v_time = NULL;
23156  PyObject *__pyx_v_etaR = NULL;
23157  PyObject *__pyx_v_jj = NULL;
23158  PyObject *__pyx_v_series = NULL;
23159  PyObject *__pyx_r = NULL;
23160  __Pyx_RefNannyDeclarations
23161  PyObject *__pyx_t_1 = NULL;
23162  PyObject *__pyx_t_2 = NULL;
23163  PyObject *__pyx_t_3 = NULL;
23164  int __pyx_t_4;
23165  PyObject *__pyx_t_5 = NULL;
23166  int __pyx_t_6;
23167  PyObject *__pyx_t_7 = NULL;
23168  Py_ssize_t __pyx_t_8;
23169  PyObject *(*__pyx_t_9)(PyObject *);
23170  PyObject *__pyx_t_10 = NULL;
23171  PyObject *__pyx_t_11 = NULL;
23172  int __pyx_lineno = 0;
23173  const char *__pyx_filename = NULL;
23174  int __pyx_clineno = 0;
23175  __Pyx_RefNannySetupContext("writeEtaSeries", 0);
23176  __Pyx_INCREF(__pyx_v_Tstart);
23177 
23178  /* "WaveTools.py":1377
23179  * 2D numpy array Nx2 containing free-surface elevation in time.
23180  * """
23181  * if sum(Lgen[:]*self.waveDir[:])< 0 : # <<<<<<<<<<<<<<
23182  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
23183  * sys.exit(1)
23184  */
23185  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error)
23186  __Pyx_GOTREF(__pyx_t_1);
23187  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error)
23188  __Pyx_GOTREF(__pyx_t_2);
23189  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error)
23190  __Pyx_GOTREF(__pyx_t_3);
23191  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23192  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23193  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error)
23194  __Pyx_GOTREF(__pyx_t_2);
23195  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23196  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error)
23197  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23198  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1377, __pyx_L1_error)
23199  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23200  if (__pyx_t_4) {
23201 
23202  /* "WaveTools.py":1378
23203  * """
23204  * if sum(Lgen[:]*self.waveDir[:])< 0 :
23205  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction') # <<<<<<<<<<<<<<
23206  * sys.exit(1)
23207  * dt = old_div(self.Tp,50.)
23208  */
23209  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1378, __pyx_L1_error)
23210  __Pyx_GOTREF(__pyx_t_2);
23211  __pyx_t_1 = NULL;
23212  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
23213  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
23214  if (likely(__pyx_t_1)) {
23215  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23216  __Pyx_INCREF(__pyx_t_1);
23217  __Pyx_INCREF(function);
23218  __Pyx_DECREF_SET(__pyx_t_2, function);
23219  }
23220  }
23221  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_kp_s_ERROR_Wavetools_py_Location_vect) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_ERROR_Wavetools_py_Location_vect);
23222  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
23223  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1378, __pyx_L1_error)
23224  __Pyx_GOTREF(__pyx_t_3);
23225  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23226  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23227 
23228  /* "WaveTools.py":1379
23229  * if sum(Lgen[:]*self.waveDir[:])< 0 :
23230  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
23231  * sys.exit(1) # <<<<<<<<<<<<<<
23232  * dt = old_div(self.Tp,50.)
23233  * Tlag = np.zeros(len(self.omega),)
23234  */
23235  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1379, __pyx_L1_error)
23236  __Pyx_GOTREF(__pyx_t_2);
23237  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1379, __pyx_L1_error)
23238  __Pyx_GOTREF(__pyx_t_1);
23239  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23240  __pyx_t_2 = NULL;
23241  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
23242  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
23243  if (likely(__pyx_t_2)) {
23244  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
23245  __Pyx_INCREF(__pyx_t_2);
23246  __Pyx_INCREF(function);
23247  __Pyx_DECREF_SET(__pyx_t_1, function);
23248  }
23249  }
23250  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_1);
23251  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23252  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1379, __pyx_L1_error)
23253  __Pyx_GOTREF(__pyx_t_3);
23254  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23255  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23256 
23257  /* "WaveTools.py":1377
23258  * 2D numpy array Nx2 containing free-surface elevation in time.
23259  * """
23260  * if sum(Lgen[:]*self.waveDir[:])< 0 : # <<<<<<<<<<<<<<
23261  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
23262  * sys.exit(1)
23263  */
23264  }
23265 
23266  /* "WaveTools.py":1380
23267  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
23268  * sys.exit(1)
23269  * dt = old_div(self.Tp,50.) # <<<<<<<<<<<<<<
23270  * Tlag = np.zeros(len(self.omega),)
23271  * for j in range(len(self.omega)):
23272  */
23273  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1380, __pyx_L1_error)
23274  __Pyx_GOTREF(__pyx_t_1);
23275  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Tp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1380, __pyx_L1_error)
23276  __Pyx_GOTREF(__pyx_t_2);
23277  __pyx_t_5 = NULL;
23278  __pyx_t_6 = 0;
23279  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
23280  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
23281  if (likely(__pyx_t_5)) {
23282  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
23283  __Pyx_INCREF(__pyx_t_5);
23284  __Pyx_INCREF(function);
23285  __Pyx_DECREF_SET(__pyx_t_1, function);
23286  __pyx_t_6 = 1;
23287  }
23288  }
23289  #if CYTHON_FAST_PYCALL
23290  if (PyFunction_Check(__pyx_t_1)) {
23291  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_float_50_};
23292  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1380, __pyx_L1_error)
23293  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
23294  __Pyx_GOTREF(__pyx_t_3);
23295  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23296  } else
23297  #endif
23298  #if CYTHON_FAST_PYCCALL
23299  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
23300  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_float_50_};
23301  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1380, __pyx_L1_error)
23302  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
23303  __Pyx_GOTREF(__pyx_t_3);
23304  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23305  } else
23306  #endif
23307  {
23308  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1380, __pyx_L1_error)
23309  __Pyx_GOTREF(__pyx_t_7);
23310  if (__pyx_t_5) {
23311  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
23312  }
23313  __Pyx_GIVEREF(__pyx_t_2);
23314  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2);
23315  __Pyx_INCREF(__pyx_float_50_);
23316  __Pyx_GIVEREF(__pyx_float_50_);
23317  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_float_50_);
23318  __pyx_t_2 = 0;
23319  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1380, __pyx_L1_error)
23320  __Pyx_GOTREF(__pyx_t_3);
23321  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23322  }
23323  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23324  __pyx_v_dt = __pyx_t_3;
23325  __pyx_t_3 = 0;
23326 
23327  /* "WaveTools.py":1381
23328  * sys.exit(1)
23329  * dt = old_div(self.Tp,50.)
23330  * Tlag = np.zeros(len(self.omega),) # <<<<<<<<<<<<<<
23331  * for j in range(len(self.omega)):
23332  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
23333  */
23334  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1381, __pyx_L1_error)
23335  __Pyx_GOTREF(__pyx_t_1);
23336  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1381, __pyx_L1_error)
23337  __Pyx_GOTREF(__pyx_t_7);
23338  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23339  __pyx_t_1 = ((PyObject *)__pyx_v_self->omega);
23340  __Pyx_INCREF(__pyx_t_1);
23341  __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1381, __pyx_L1_error)
23342  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23343  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1381, __pyx_L1_error)
23344  __Pyx_GOTREF(__pyx_t_1);
23345  __pyx_t_2 = NULL;
23346  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
23347  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
23348  if (likely(__pyx_t_2)) {
23349  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
23350  __Pyx_INCREF(__pyx_t_2);
23351  __Pyx_INCREF(function);
23352  __Pyx_DECREF_SET(__pyx_t_7, function);
23353  }
23354  }
23355  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1);
23356  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23357  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23358  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1381, __pyx_L1_error)
23359  __Pyx_GOTREF(__pyx_t_3);
23360  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23361  __pyx_v_Tlag = __pyx_t_3;
23362  __pyx_t_3 = 0;
23363 
23364  /* "WaveTools.py":1382
23365  * dt = old_div(self.Tp,50.)
23366  * Tlag = np.zeros(len(self.omega),)
23367  * for j in range(len(self.omega)): # <<<<<<<<<<<<<<
23368  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
23369  * Tlag = max(Tlag)
23370  */
23371  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_range); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1382, __pyx_L1_error)
23372  __Pyx_GOTREF(__pyx_t_7);
23373  __pyx_t_1 = ((PyObject *)__pyx_v_self->omega);
23374  __Pyx_INCREF(__pyx_t_1);
23375  __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1382, __pyx_L1_error)
23376  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23377  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1382, __pyx_L1_error)
23378  __Pyx_GOTREF(__pyx_t_1);
23379  __pyx_t_2 = NULL;
23380  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
23381  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
23382  if (likely(__pyx_t_2)) {
23383  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
23384  __Pyx_INCREF(__pyx_t_2);
23385  __Pyx_INCREF(function);
23386  __Pyx_DECREF_SET(__pyx_t_7, function);
23387  }
23388  }
23389  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1);
23390  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
23391  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23392  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1382, __pyx_L1_error)
23393  __Pyx_GOTREF(__pyx_t_3);
23394  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23395  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
23396  __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0;
23397  __pyx_t_9 = NULL;
23398  } else {
23399  __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1382, __pyx_L1_error)
23400  __Pyx_GOTREF(__pyx_t_7);
23401  __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1382, __pyx_L1_error)
23402  }
23403  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23404  for (;;) {
23405  if (likely(!__pyx_t_9)) {
23406  if (likely(PyList_CheckExact(__pyx_t_7))) {
23407  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
23408  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
23409  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1382, __pyx_L1_error)
23410  #else
23411  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1382, __pyx_L1_error)
23412  __Pyx_GOTREF(__pyx_t_3);
23413  #endif
23414  } else {
23415  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
23416  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
23417  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1382, __pyx_L1_error)
23418  #else
23419  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1382, __pyx_L1_error)
23420  __Pyx_GOTREF(__pyx_t_3);
23421  #endif
23422  }
23423  } else {
23424  __pyx_t_3 = __pyx_t_9(__pyx_t_7);
23425  if (unlikely(!__pyx_t_3)) {
23426  PyObject* exc_type = PyErr_Occurred();
23427  if (exc_type) {
23428  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
23429  else __PYX_ERR(0, 1382, __pyx_L1_error)
23430  }
23431  break;
23432  }
23433  __Pyx_GOTREF(__pyx_t_3);
23434  }
23435  __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_3);
23436  __pyx_t_3 = 0;
23437 
23438  /* "WaveTools.py":1383
23439  * Tlag = np.zeros(len(self.omega),)
23440  * for j in range(len(self.omega)):
23441  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j]) # <<<<<<<<<<<<<<
23442  * Tlag = max(Tlag)
23443  * Tstart = Tstart - Tlag
23444  */
23445  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error)
23446  __Pyx_GOTREF(__pyx_t_1);
23447  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
23448  __Pyx_GOTREF(__pyx_t_2);
23449  __Pyx_INCREF(__pyx_v_j);
23450  __Pyx_GIVEREF(__pyx_v_j);
23451  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_j);
23452  __Pyx_INCREF(__pyx_slice__4);
23453  __Pyx_GIVEREF(__pyx_slice__4);
23454  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__4);
23455  __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1383, __pyx_L1_error)
23456  __Pyx_GOTREF(__pyx_t_5);
23457  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23458  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
23459  __Pyx_GOTREF(__pyx_t_2);
23460  __pyx_t_10 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1383, __pyx_L1_error)
23461  __Pyx_GOTREF(__pyx_t_10);
23462  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
23463  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23464  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
23465  __Pyx_GOTREF(__pyx_t_2);
23466  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23467  __pyx_t_10 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omega), __pyx_v_j); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1383, __pyx_L1_error)
23468  __Pyx_GOTREF(__pyx_t_10);
23469  __pyx_t_5 = NULL;
23470  __pyx_t_6 = 0;
23471  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
23472  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
23473  if (likely(__pyx_t_5)) {
23474  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
23475  __Pyx_INCREF(__pyx_t_5);
23476  __Pyx_INCREF(function);
23477  __Pyx_DECREF_SET(__pyx_t_1, function);
23478  __pyx_t_6 = 1;
23479  }
23480  }
23481  #if CYTHON_FAST_PYCALL
23482  if (PyFunction_Check(__pyx_t_1)) {
23483  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_10};
23484  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1383, __pyx_L1_error)
23485  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
23486  __Pyx_GOTREF(__pyx_t_3);
23487  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23488  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23489  } else
23490  #endif
23491  #if CYTHON_FAST_PYCCALL
23492  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
23493  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_10};
23494  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1383, __pyx_L1_error)
23495  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
23496  __Pyx_GOTREF(__pyx_t_3);
23497  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23498  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23499  } else
23500  #endif
23501  {
23502  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1383, __pyx_L1_error)
23503  __Pyx_GOTREF(__pyx_t_11);
23504  if (__pyx_t_5) {
23505  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
23506  }
23507  __Pyx_GIVEREF(__pyx_t_2);
23508  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_t_2);
23509  __Pyx_GIVEREF(__pyx_t_10);
23510  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_10);
23511  __pyx_t_2 = 0;
23512  __pyx_t_10 = 0;
23513  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1383, __pyx_L1_error)
23514  __Pyx_GOTREF(__pyx_t_3);
23515  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
23516  }
23517  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23518  if (unlikely(PyObject_SetItem(__pyx_v_Tlag, __pyx_v_j, __pyx_t_3) < 0)) __PYX_ERR(0, 1383, __pyx_L1_error)
23519  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23520 
23521  /* "WaveTools.py":1382
23522  * dt = old_div(self.Tp,50.)
23523  * Tlag = np.zeros(len(self.omega),)
23524  * for j in range(len(self.omega)): # <<<<<<<<<<<<<<
23525  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
23526  * Tlag = max(Tlag)
23527  */
23528  }
23529  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23530 
23531  /* "WaveTools.py":1384
23532  * for j in range(len(self.omega)):
23533  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
23534  * Tlag = max(Tlag) # <<<<<<<<<<<<<<
23535  * Tstart = Tstart - Tlag
23536  * Np = int(old_div((Tend - Tstart),dt))
23537  */
23538  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_Tlag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1384, __pyx_L1_error)
23539  __Pyx_GOTREF(__pyx_t_7);
23540  __Pyx_DECREF_SET(__pyx_v_Tlag, __pyx_t_7);
23541  __pyx_t_7 = 0;
23542 
23543  /* "WaveTools.py":1385
23544  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
23545  * Tlag = max(Tlag)
23546  * Tstart = Tstart - Tlag # <<<<<<<<<<<<<<
23547  * Np = int(old_div((Tend - Tstart),dt))
23548  * time = np.linspace(Tstart,Tend,Np )
23549  */
23550  __pyx_t_7 = PyNumber_Subtract(__pyx_v_Tstart, __pyx_v_Tlag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1385, __pyx_L1_error)
23551  __Pyx_GOTREF(__pyx_t_7);
23552  __Pyx_DECREF_SET(__pyx_v_Tstart, __pyx_t_7);
23553  __pyx_t_7 = 0;
23554 
23555  /* "WaveTools.py":1386
23556  * Tlag = max(Tlag)
23557  * Tstart = Tstart - Tlag
23558  * Np = int(old_div((Tend - Tstart),dt)) # <<<<<<<<<<<<<<
23559  * time = np.linspace(Tstart,Tend,Np )
23560  * etaR = np.zeros(len(time), )
23561  */
23562  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1386, __pyx_L1_error)
23563  __Pyx_GOTREF(__pyx_t_3);
23564  __pyx_t_1 = PyNumber_Subtract(__pyx_v_Tend, __pyx_v_Tstart); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error)
23565  __Pyx_GOTREF(__pyx_t_1);
23566  __pyx_t_11 = NULL;
23567  __pyx_t_6 = 0;
23568  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
23569  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
23570  if (likely(__pyx_t_11)) {
23571  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
23572  __Pyx_INCREF(__pyx_t_11);
23573  __Pyx_INCREF(function);
23574  __Pyx_DECREF_SET(__pyx_t_3, function);
23575  __pyx_t_6 = 1;
23576  }
23577  }
23578  #if CYTHON_FAST_PYCALL
23579  if (PyFunction_Check(__pyx_t_3)) {
23580  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_v_dt};
23581  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1386, __pyx_L1_error)
23582  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
23583  __Pyx_GOTREF(__pyx_t_7);
23584  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23585  } else
23586  #endif
23587  #if CYTHON_FAST_PYCCALL
23588  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
23589  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_v_dt};
23590  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1386, __pyx_L1_error)
23591  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
23592  __Pyx_GOTREF(__pyx_t_7);
23593  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23594  } else
23595  #endif
23596  {
23597  __pyx_t_10 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1386, __pyx_L1_error)
23598  __Pyx_GOTREF(__pyx_t_10);
23599  if (__pyx_t_11) {
23600  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
23601  }
23602  __Pyx_GIVEREF(__pyx_t_1);
23603  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_t_1);
23604  __Pyx_INCREF(__pyx_v_dt);
23605  __Pyx_GIVEREF(__pyx_v_dt);
23606  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, __pyx_v_dt);
23607  __pyx_t_1 = 0;
23608  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1386, __pyx_L1_error)
23609  __Pyx_GOTREF(__pyx_t_7);
23610  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23611  }
23612  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23613  __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1386, __pyx_L1_error)
23614  __Pyx_GOTREF(__pyx_t_3);
23615  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23616  __pyx_v_Np = __pyx_t_3;
23617  __pyx_t_3 = 0;
23618 
23619  /* "WaveTools.py":1387
23620  * Tstart = Tstart - Tlag
23621  * Np = int(old_div((Tend - Tstart),dt))
23622  * time = np.linspace(Tstart,Tend,Np ) # <<<<<<<<<<<<<<
23623  * etaR = np.zeros(len(time), )
23624  * for jj in range(len(time)):
23625  */
23626  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1387, __pyx_L1_error)
23627  __Pyx_GOTREF(__pyx_t_7);
23628  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_linspace); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1387, __pyx_L1_error)
23629  __Pyx_GOTREF(__pyx_t_10);
23630  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23631  __pyx_t_7 = NULL;
23632  __pyx_t_6 = 0;
23633  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
23634  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
23635  if (likely(__pyx_t_7)) {
23636  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
23637  __Pyx_INCREF(__pyx_t_7);
23638  __Pyx_INCREF(function);
23639  __Pyx_DECREF_SET(__pyx_t_10, function);
23640  __pyx_t_6 = 1;
23641  }
23642  }
23643  #if CYTHON_FAST_PYCALL
23644  if (PyFunction_Check(__pyx_t_10)) {
23645  PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Np};
23646  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1387, __pyx_L1_error)
23647  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
23648  __Pyx_GOTREF(__pyx_t_3);
23649  } else
23650  #endif
23651  #if CYTHON_FAST_PYCCALL
23652  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
23653  PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Np};
23654  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1387, __pyx_L1_error)
23655  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
23656  __Pyx_GOTREF(__pyx_t_3);
23657  } else
23658  #endif
23659  {
23660  __pyx_t_1 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1387, __pyx_L1_error)
23661  __Pyx_GOTREF(__pyx_t_1);
23662  if (__pyx_t_7) {
23663  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
23664  }
23665  __Pyx_INCREF(__pyx_v_Tstart);
23666  __Pyx_GIVEREF(__pyx_v_Tstart);
23667  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_v_Tstart);
23668  __Pyx_INCREF(__pyx_v_Tend);
23669  __Pyx_GIVEREF(__pyx_v_Tend);
23670  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_Tend);
23671  __Pyx_INCREF(__pyx_v_Np);
23672  __Pyx_GIVEREF(__pyx_v_Np);
23673  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_6, __pyx_v_Np);
23674  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1387, __pyx_L1_error)
23675  __Pyx_GOTREF(__pyx_t_3);
23676  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23677  }
23678  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23679  __pyx_v_time = __pyx_t_3;
23680  __pyx_t_3 = 0;
23681 
23682  /* "WaveTools.py":1388
23683  * Np = int(old_div((Tend - Tstart),dt))
23684  * time = np.linspace(Tstart,Tend,Np )
23685  * etaR = np.zeros(len(time), ) # <<<<<<<<<<<<<<
23686  * for jj in range(len(time)):
23687  * etaR[jj] = self.eta(x0,time[jj])
23688  */
23689  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1388, __pyx_L1_error)
23690  __Pyx_GOTREF(__pyx_t_10);
23691  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1388, __pyx_L1_error)
23692  __Pyx_GOTREF(__pyx_t_1);
23693  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23694  __pyx_t_8 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1388, __pyx_L1_error)
23695  __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1388, __pyx_L1_error)
23696  __Pyx_GOTREF(__pyx_t_10);
23697  __pyx_t_7 = NULL;
23698  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
23699  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
23700  if (likely(__pyx_t_7)) {
23701  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
23702  __Pyx_INCREF(__pyx_t_7);
23703  __Pyx_INCREF(function);
23704  __Pyx_DECREF_SET(__pyx_t_1, function);
23705  }
23706  }
23707  __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_10);
23708  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
23709  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23710  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1388, __pyx_L1_error)
23711  __Pyx_GOTREF(__pyx_t_3);
23712  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23713  __pyx_v_etaR = __pyx_t_3;
23714  __pyx_t_3 = 0;
23715 
23716  /* "WaveTools.py":1389
23717  * time = np.linspace(Tstart,Tend,Np )
23718  * etaR = np.zeros(len(time), )
23719  * for jj in range(len(time)): # <<<<<<<<<<<<<<
23720  * etaR[jj] = self.eta(x0,time[jj])
23721  * np.savetxt(fname,list(zip(time,etaR)))
23722  */
23723  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1389, __pyx_L1_error)
23724  __Pyx_GOTREF(__pyx_t_1);
23725  __pyx_t_8 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1389, __pyx_L1_error)
23726  __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1389, __pyx_L1_error)
23727  __Pyx_GOTREF(__pyx_t_10);
23728  __pyx_t_7 = NULL;
23729  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
23730  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
23731  if (likely(__pyx_t_7)) {
23732  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
23733  __Pyx_INCREF(__pyx_t_7);
23734  __Pyx_INCREF(function);
23735  __Pyx_DECREF_SET(__pyx_t_1, function);
23736  }
23737  }
23738  __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_10);
23739  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
23740  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23741  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1389, __pyx_L1_error)
23742  __Pyx_GOTREF(__pyx_t_3);
23743  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23744  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
23745  __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
23746  __pyx_t_9 = NULL;
23747  } else {
23748  __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1389, __pyx_L1_error)
23749  __Pyx_GOTREF(__pyx_t_1);
23750  __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1389, __pyx_L1_error)
23751  }
23752  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23753  for (;;) {
23754  if (likely(!__pyx_t_9)) {
23755  if (likely(PyList_CheckExact(__pyx_t_1))) {
23756  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
23757  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
23758  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1389, __pyx_L1_error)
23759  #else
23760  __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1389, __pyx_L1_error)
23761  __Pyx_GOTREF(__pyx_t_3);
23762  #endif
23763  } else {
23764  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
23765  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
23766  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1389, __pyx_L1_error)
23767  #else
23768  __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1389, __pyx_L1_error)
23769  __Pyx_GOTREF(__pyx_t_3);
23770  #endif
23771  }
23772  } else {
23773  __pyx_t_3 = __pyx_t_9(__pyx_t_1);
23774  if (unlikely(!__pyx_t_3)) {
23775  PyObject* exc_type = PyErr_Occurred();
23776  if (exc_type) {
23777  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
23778  else __PYX_ERR(0, 1389, __pyx_L1_error)
23779  }
23780  break;
23781  }
23782  __Pyx_GOTREF(__pyx_t_3);
23783  }
23784  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_3);
23785  __pyx_t_3 = 0;
23786 
23787  /* "WaveTools.py":1390
23788  * etaR = np.zeros(len(time), )
23789  * for jj in range(len(time)):
23790  * etaR[jj] = self.eta(x0,time[jj]) # <<<<<<<<<<<<<<
23791  * np.savetxt(fname,list(zip(time,etaR)))
23792  * series = np.zeros((len(time),2),)
23793  */
23794  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1390, __pyx_L1_error)
23795  __Pyx_GOTREF(__pyx_t_10);
23796  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_time, __pyx_v_jj); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1390, __pyx_L1_error)
23797  __Pyx_GOTREF(__pyx_t_7);
23798  __pyx_t_11 = NULL;
23799  __pyx_t_6 = 0;
23800  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
23801  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
23802  if (likely(__pyx_t_11)) {
23803  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
23804  __Pyx_INCREF(__pyx_t_11);
23805  __Pyx_INCREF(function);
23806  __Pyx_DECREF_SET(__pyx_t_10, function);
23807  __pyx_t_6 = 1;
23808  }
23809  }
23810  #if CYTHON_FAST_PYCALL
23811  if (PyFunction_Check(__pyx_t_10)) {
23812  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_x0, __pyx_t_7};
23813  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1390, __pyx_L1_error)
23814  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
23815  __Pyx_GOTREF(__pyx_t_3);
23816  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23817  } else
23818  #endif
23819  #if CYTHON_FAST_PYCCALL
23820  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
23821  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_x0, __pyx_t_7};
23822  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1390, __pyx_L1_error)
23823  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
23824  __Pyx_GOTREF(__pyx_t_3);
23825  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23826  } else
23827  #endif
23828  {
23829  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1390, __pyx_L1_error)
23830  __Pyx_GOTREF(__pyx_t_2);
23831  if (__pyx_t_11) {
23832  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __pyx_t_11 = NULL;
23833  }
23834  __Pyx_INCREF(__pyx_v_x0);
23835  __Pyx_GIVEREF(__pyx_v_x0);
23836  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_x0);
23837  __Pyx_GIVEREF(__pyx_t_7);
23838  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_7);
23839  __pyx_t_7 = 0;
23840  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1390, __pyx_L1_error)
23841  __Pyx_GOTREF(__pyx_t_3);
23842  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23843  }
23844  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23845  if (unlikely(PyObject_SetItem(__pyx_v_etaR, __pyx_v_jj, __pyx_t_3) < 0)) __PYX_ERR(0, 1390, __pyx_L1_error)
23846  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23847 
23848  /* "WaveTools.py":1389
23849  * time = np.linspace(Tstart,Tend,Np )
23850  * etaR = np.zeros(len(time), )
23851  * for jj in range(len(time)): # <<<<<<<<<<<<<<
23852  * etaR[jj] = self.eta(x0,time[jj])
23853  * np.savetxt(fname,list(zip(time,etaR)))
23854  */
23855  }
23856  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23857 
23858  /* "WaveTools.py":1391
23859  * for jj in range(len(time)):
23860  * etaR[jj] = self.eta(x0,time[jj])
23861  * np.savetxt(fname,list(zip(time,etaR))) # <<<<<<<<<<<<<<
23862  * series = np.zeros((len(time),2),)
23863  * series[:,0] = time
23864  */
23865  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
23866  __Pyx_GOTREF(__pyx_t_3);
23867  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_savetxt); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1391, __pyx_L1_error)
23868  __Pyx_GOTREF(__pyx_t_10);
23869  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23870  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_zip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1391, __pyx_L1_error)
23871  __Pyx_GOTREF(__pyx_t_2);
23872  __pyx_t_7 = NULL;
23873  __pyx_t_6 = 0;
23874  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
23875  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
23876  if (likely(__pyx_t_7)) {
23877  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23878  __Pyx_INCREF(__pyx_t_7);
23879  __Pyx_INCREF(function);
23880  __Pyx_DECREF_SET(__pyx_t_2, function);
23881  __pyx_t_6 = 1;
23882  }
23883  }
23884  #if CYTHON_FAST_PYCALL
23885  if (PyFunction_Check(__pyx_t_2)) {
23886  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_time, __pyx_v_etaR};
23887  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
23888  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
23889  __Pyx_GOTREF(__pyx_t_3);
23890  } else
23891  #endif
23892  #if CYTHON_FAST_PYCCALL
23893  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
23894  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_time, __pyx_v_etaR};
23895  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
23896  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
23897  __Pyx_GOTREF(__pyx_t_3);
23898  } else
23899  #endif
23900  {
23901  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1391, __pyx_L1_error)
23902  __Pyx_GOTREF(__pyx_t_11);
23903  if (__pyx_t_7) {
23904  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL;
23905  }
23906  __Pyx_INCREF(__pyx_v_time);
23907  __Pyx_GIVEREF(__pyx_v_time);
23908  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_time);
23909  __Pyx_INCREF(__pyx_v_etaR);
23910  __Pyx_GIVEREF(__pyx_v_etaR);
23911  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_v_etaR);
23912  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
23913  __Pyx_GOTREF(__pyx_t_3);
23914  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
23915  }
23916  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23917  __pyx_t_2 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1391, __pyx_L1_error)
23918  __Pyx_GOTREF(__pyx_t_2);
23919  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23920  __pyx_t_3 = NULL;
23921  __pyx_t_6 = 0;
23922  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
23923  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
23924  if (likely(__pyx_t_3)) {
23925  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
23926  __Pyx_INCREF(__pyx_t_3);
23927  __Pyx_INCREF(function);
23928  __Pyx_DECREF_SET(__pyx_t_10, function);
23929  __pyx_t_6 = 1;
23930  }
23931  }
23932  #if CYTHON_FAST_PYCALL
23933  if (PyFunction_Check(__pyx_t_10)) {
23934  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fname, __pyx_t_2};
23935  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
23936  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
23937  __Pyx_GOTREF(__pyx_t_1);
23938  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23939  } else
23940  #endif
23941  #if CYTHON_FAST_PYCCALL
23942  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
23943  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fname, __pyx_t_2};
23944  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
23945  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
23946  __Pyx_GOTREF(__pyx_t_1);
23947  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23948  } else
23949  #endif
23950  {
23951  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1391, __pyx_L1_error)
23952  __Pyx_GOTREF(__pyx_t_11);
23953  if (__pyx_t_3) {
23954  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
23955  }
23956  __Pyx_INCREF(__pyx_v_fname);
23957  __Pyx_GIVEREF(__pyx_v_fname);
23958  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_fname);
23959  __Pyx_GIVEREF(__pyx_t_2);
23960  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_2);
23961  __pyx_t_2 = 0;
23962  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
23963  __Pyx_GOTREF(__pyx_t_1);
23964  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
23965  }
23966  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23967  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23968 
23969  /* "WaveTools.py":1392
23970  * etaR[jj] = self.eta(x0,time[jj])
23971  * np.savetxt(fname,list(zip(time,etaR)))
23972  * series = np.zeros((len(time),2),) # <<<<<<<<<<<<<<
23973  * series[:,0] = time
23974  * series[:,1] = etaR
23975  */
23976  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1392, __pyx_L1_error)
23977  __Pyx_GOTREF(__pyx_t_10);
23978  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1392, __pyx_L1_error)
23979  __Pyx_GOTREF(__pyx_t_11);
23980  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
23981  __pyx_t_8 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1392, __pyx_L1_error)
23982  __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1392, __pyx_L1_error)
23983  __Pyx_GOTREF(__pyx_t_10);
23984  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L1_error)
23985  __Pyx_GOTREF(__pyx_t_2);
23986  __Pyx_GIVEREF(__pyx_t_10);
23987  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10);
23988  __Pyx_INCREF(__pyx_int_2);
23989  __Pyx_GIVEREF(__pyx_int_2);
23990  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_2);
23991  __pyx_t_10 = 0;
23992  __pyx_t_10 = NULL;
23993  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
23994  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
23995  if (likely(__pyx_t_10)) {
23996  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
23997  __Pyx_INCREF(__pyx_t_10);
23998  __Pyx_INCREF(function);
23999  __Pyx_DECREF_SET(__pyx_t_11, function);
24000  }
24001  }
24002  __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_2);
24003  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
24004  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24005  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1392, __pyx_L1_error)
24006  __Pyx_GOTREF(__pyx_t_1);
24007  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
24008  __pyx_v_series = __pyx_t_1;
24009  __pyx_t_1 = 0;
24010 
24011  /* "WaveTools.py":1393
24012  * np.savetxt(fname,list(zip(time,etaR)))
24013  * series = np.zeros((len(time),2),)
24014  * series[:,0] = time # <<<<<<<<<<<<<<
24015  * series[:,1] = etaR
24016  *
24017  */
24018  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_tuple__25, __pyx_v_time) < 0)) __PYX_ERR(0, 1393, __pyx_L1_error)
24019 
24020  /* "WaveTools.py":1394
24021  * series = np.zeros((len(time),2),)
24022  * series[:,0] = time
24023  * series[:,1] = etaR # <<<<<<<<<<<<<<
24024  *
24025  * return series
24026  */
24027  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_tuple__26, __pyx_v_etaR) < 0)) __PYX_ERR(0, 1394, __pyx_L1_error)
24028 
24029  /* "WaveTools.py":1396
24030  * series[:,1] = etaR
24031  *
24032  * return series # <<<<<<<<<<<<<<
24033  *
24034  * class RandomWaves(object):
24035  */
24036  __Pyx_XDECREF(__pyx_r);
24037  __Pyx_INCREF(__pyx_v_series);
24038  __pyx_r = __pyx_v_series;
24039  goto __pyx_L0;
24040 
24041  /* "WaveTools.py":1351
24042  *
24043  * return U
24044  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
24045  * """Writes a timeseries of the free-surface elevation
24046  *
24047  */
24048 
24049  /* function exit code */
24050  __pyx_L1_error:;
24051  __Pyx_XDECREF(__pyx_t_1);
24052  __Pyx_XDECREF(__pyx_t_2);
24053  __Pyx_XDECREF(__pyx_t_3);
24054  __Pyx_XDECREF(__pyx_t_5);
24055  __Pyx_XDECREF(__pyx_t_7);
24056  __Pyx_XDECREF(__pyx_t_10);
24057  __Pyx_XDECREF(__pyx_t_11);
24058  __Pyx_AddTraceback("WaveTools.NewWave.writeEtaSeries", __pyx_clineno, __pyx_lineno, __pyx_filename);
24059  __pyx_r = NULL;
24060  __pyx_L0:;
24061  __Pyx_XDECREF(__pyx_v_dt);
24062  __Pyx_XDECREF(__pyx_v_Tlag);
24063  __Pyx_XDECREF(__pyx_v_j);
24064  __Pyx_XDECREF(__pyx_v_Np);
24065  __Pyx_XDECREF(__pyx_v_time);
24066  __Pyx_XDECREF(__pyx_v_etaR);
24067  __Pyx_XDECREF(__pyx_v_jj);
24068  __Pyx_XDECREF(__pyx_v_series);
24069  __Pyx_XDECREF(__pyx_v_Tstart);
24070  __Pyx_XGIVEREF(__pyx_r);
24071  __Pyx_RefNannyFinishContext();
24072  return __pyx_r;
24073 }
24074 
24075 /* "WaveTools.pxd":98
24076  * cdef double[10000] phi_c
24077  * cdef public:
24078  * double mwl,depth,gAbs,Tlag,Hs,Tp,fp,bandFactor,df,focus,tfocus # <<<<<<<<<<<<<<
24079  * int N
24080  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai
24081  */
24082 
24083 /* Python wrapper */
24084 static PyObject *__pyx_pw_9WaveTools_7NewWave_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
24085 static PyObject *__pyx_pw_9WaveTools_7NewWave_3mwl_1__get__(PyObject *__pyx_v_self) {
24086  PyObject *__pyx_r = 0;
24087  __Pyx_RefNannyDeclarations
24088  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24089  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3mwl___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24090 
24091  /* function exit code */
24092  __Pyx_RefNannyFinishContext();
24093  return __pyx_r;
24094 }
24095 
24096 static PyObject *__pyx_pf_9WaveTools_7NewWave_3mwl___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24097  PyObject *__pyx_r = NULL;
24098  __Pyx_RefNannyDeclarations
24099  PyObject *__pyx_t_1 = NULL;
24100  int __pyx_lineno = 0;
24101  const char *__pyx_filename = NULL;
24102  int __pyx_clineno = 0;
24103  __Pyx_RefNannySetupContext("__get__", 0);
24104  __Pyx_XDECREF(__pyx_r);
24105  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24106  __Pyx_GOTREF(__pyx_t_1);
24107  __pyx_r = __pyx_t_1;
24108  __pyx_t_1 = 0;
24109  goto __pyx_L0;
24110 
24111  /* function exit code */
24112  __pyx_L1_error:;
24113  __Pyx_XDECREF(__pyx_t_1);
24114  __Pyx_AddTraceback("WaveTools.NewWave.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24115  __pyx_r = NULL;
24116  __pyx_L0:;
24117  __Pyx_XGIVEREF(__pyx_r);
24118  __Pyx_RefNannyFinishContext();
24119  return __pyx_r;
24120 }
24121 
24122 /* Python wrapper */
24123 static int __pyx_pw_9WaveTools_7NewWave_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24124 static int __pyx_pw_9WaveTools_7NewWave_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24125  int __pyx_r;
24126  __Pyx_RefNannyDeclarations
24127  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24128  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3mwl_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24129 
24130  /* function exit code */
24131  __Pyx_RefNannyFinishContext();
24132  return __pyx_r;
24133 }
24134 
24135 static int __pyx_pf_9WaveTools_7NewWave_3mwl_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24136  int __pyx_r;
24137  __Pyx_RefNannyDeclarations
24138  double __pyx_t_1;
24139  int __pyx_lineno = 0;
24140  const char *__pyx_filename = NULL;
24141  int __pyx_clineno = 0;
24142  __Pyx_RefNannySetupContext("__set__", 0);
24143  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24144  __pyx_v_self->mwl = __pyx_t_1;
24145 
24146  /* function exit code */
24147  __pyx_r = 0;
24148  goto __pyx_L0;
24149  __pyx_L1_error:;
24150  __Pyx_AddTraceback("WaveTools.NewWave.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24151  __pyx_r = -1;
24152  __pyx_L0:;
24153  __Pyx_RefNannyFinishContext();
24154  return __pyx_r;
24155 }
24156 
24157 /* Python wrapper */
24158 static PyObject *__pyx_pw_9WaveTools_7NewWave_5depth_1__get__(PyObject *__pyx_v_self); /*proto*/
24159 static PyObject *__pyx_pw_9WaveTools_7NewWave_5depth_1__get__(PyObject *__pyx_v_self) {
24160  PyObject *__pyx_r = 0;
24161  __Pyx_RefNannyDeclarations
24162  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24163  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5depth___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24164 
24165  /* function exit code */
24166  __Pyx_RefNannyFinishContext();
24167  return __pyx_r;
24168 }
24169 
24170 static PyObject *__pyx_pf_9WaveTools_7NewWave_5depth___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24171  PyObject *__pyx_r = NULL;
24172  __Pyx_RefNannyDeclarations
24173  PyObject *__pyx_t_1 = NULL;
24174  int __pyx_lineno = 0;
24175  const char *__pyx_filename = NULL;
24176  int __pyx_clineno = 0;
24177  __Pyx_RefNannySetupContext("__get__", 0);
24178  __Pyx_XDECREF(__pyx_r);
24179  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24180  __Pyx_GOTREF(__pyx_t_1);
24181  __pyx_r = __pyx_t_1;
24182  __pyx_t_1 = 0;
24183  goto __pyx_L0;
24184 
24185  /* function exit code */
24186  __pyx_L1_error:;
24187  __Pyx_XDECREF(__pyx_t_1);
24188  __Pyx_AddTraceback("WaveTools.NewWave.depth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24189  __pyx_r = NULL;
24190  __pyx_L0:;
24191  __Pyx_XGIVEREF(__pyx_r);
24192  __Pyx_RefNannyFinishContext();
24193  return __pyx_r;
24194 }
24195 
24196 /* Python wrapper */
24197 static int __pyx_pw_9WaveTools_7NewWave_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24198 static int __pyx_pw_9WaveTools_7NewWave_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24199  int __pyx_r;
24200  __Pyx_RefNannyDeclarations
24201  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24202  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5depth_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24203 
24204  /* function exit code */
24205  __Pyx_RefNannyFinishContext();
24206  return __pyx_r;
24207 }
24208 
24209 static int __pyx_pf_9WaveTools_7NewWave_5depth_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24210  int __pyx_r;
24211  __Pyx_RefNannyDeclarations
24212  double __pyx_t_1;
24213  int __pyx_lineno = 0;
24214  const char *__pyx_filename = NULL;
24215  int __pyx_clineno = 0;
24216  __Pyx_RefNannySetupContext("__set__", 0);
24217  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24218  __pyx_v_self->depth = __pyx_t_1;
24219 
24220  /* function exit code */
24221  __pyx_r = 0;
24222  goto __pyx_L0;
24223  __pyx_L1_error:;
24224  __Pyx_AddTraceback("WaveTools.NewWave.depth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24225  __pyx_r = -1;
24226  __pyx_L0:;
24227  __Pyx_RefNannyFinishContext();
24228  return __pyx_r;
24229 }
24230 
24231 /* Python wrapper */
24232 static PyObject *__pyx_pw_9WaveTools_7NewWave_4gAbs_1__get__(PyObject *__pyx_v_self); /*proto*/
24233 static PyObject *__pyx_pw_9WaveTools_7NewWave_4gAbs_1__get__(PyObject *__pyx_v_self) {
24234  PyObject *__pyx_r = 0;
24235  __Pyx_RefNannyDeclarations
24236  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24237  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4gAbs___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24238 
24239  /* function exit code */
24240  __Pyx_RefNannyFinishContext();
24241  return __pyx_r;
24242 }
24243 
24244 static PyObject *__pyx_pf_9WaveTools_7NewWave_4gAbs___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24245  PyObject *__pyx_r = NULL;
24246  __Pyx_RefNannyDeclarations
24247  PyObject *__pyx_t_1 = NULL;
24248  int __pyx_lineno = 0;
24249  const char *__pyx_filename = NULL;
24250  int __pyx_clineno = 0;
24251  __Pyx_RefNannySetupContext("__get__", 0);
24252  __Pyx_XDECREF(__pyx_r);
24253  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24254  __Pyx_GOTREF(__pyx_t_1);
24255  __pyx_r = __pyx_t_1;
24256  __pyx_t_1 = 0;
24257  goto __pyx_L0;
24258 
24259  /* function exit code */
24260  __pyx_L1_error:;
24261  __Pyx_XDECREF(__pyx_t_1);
24262  __Pyx_AddTraceback("WaveTools.NewWave.gAbs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24263  __pyx_r = NULL;
24264  __pyx_L0:;
24265  __Pyx_XGIVEREF(__pyx_r);
24266  __Pyx_RefNannyFinishContext();
24267  return __pyx_r;
24268 }
24269 
24270 /* Python wrapper */
24271 static int __pyx_pw_9WaveTools_7NewWave_4gAbs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24272 static int __pyx_pw_9WaveTools_7NewWave_4gAbs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24273  int __pyx_r;
24274  __Pyx_RefNannyDeclarations
24275  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24276  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4gAbs_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24277 
24278  /* function exit code */
24279  __Pyx_RefNannyFinishContext();
24280  return __pyx_r;
24281 }
24282 
24283 static int __pyx_pf_9WaveTools_7NewWave_4gAbs_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24284  int __pyx_r;
24285  __Pyx_RefNannyDeclarations
24286  double __pyx_t_1;
24287  int __pyx_lineno = 0;
24288  const char *__pyx_filename = NULL;
24289  int __pyx_clineno = 0;
24290  __Pyx_RefNannySetupContext("__set__", 0);
24291  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24292  __pyx_v_self->gAbs = __pyx_t_1;
24293 
24294  /* function exit code */
24295  __pyx_r = 0;
24296  goto __pyx_L0;
24297  __pyx_L1_error:;
24298  __Pyx_AddTraceback("WaveTools.NewWave.gAbs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24299  __pyx_r = -1;
24300  __pyx_L0:;
24301  __Pyx_RefNannyFinishContext();
24302  return __pyx_r;
24303 }
24304 
24305 /* Python wrapper */
24306 static PyObject *__pyx_pw_9WaveTools_7NewWave_4Tlag_1__get__(PyObject *__pyx_v_self); /*proto*/
24307 static PyObject *__pyx_pw_9WaveTools_7NewWave_4Tlag_1__get__(PyObject *__pyx_v_self) {
24308  PyObject *__pyx_r = 0;
24309  __Pyx_RefNannyDeclarations
24310  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24311  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4Tlag___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24312 
24313  /* function exit code */
24314  __Pyx_RefNannyFinishContext();
24315  return __pyx_r;
24316 }
24317 
24318 static PyObject *__pyx_pf_9WaveTools_7NewWave_4Tlag___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24319  PyObject *__pyx_r = NULL;
24320  __Pyx_RefNannyDeclarations
24321  PyObject *__pyx_t_1 = NULL;
24322  int __pyx_lineno = 0;
24323  const char *__pyx_filename = NULL;
24324  int __pyx_clineno = 0;
24325  __Pyx_RefNannySetupContext("__get__", 0);
24326  __Pyx_XDECREF(__pyx_r);
24327  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Tlag); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24328  __Pyx_GOTREF(__pyx_t_1);
24329  __pyx_r = __pyx_t_1;
24330  __pyx_t_1 = 0;
24331  goto __pyx_L0;
24332 
24333  /* function exit code */
24334  __pyx_L1_error:;
24335  __Pyx_XDECREF(__pyx_t_1);
24336  __Pyx_AddTraceback("WaveTools.NewWave.Tlag.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24337  __pyx_r = NULL;
24338  __pyx_L0:;
24339  __Pyx_XGIVEREF(__pyx_r);
24340  __Pyx_RefNannyFinishContext();
24341  return __pyx_r;
24342 }
24343 
24344 /* Python wrapper */
24345 static int __pyx_pw_9WaveTools_7NewWave_4Tlag_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24346 static int __pyx_pw_9WaveTools_7NewWave_4Tlag_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24347  int __pyx_r;
24348  __Pyx_RefNannyDeclarations
24349  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24350  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4Tlag_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24351 
24352  /* function exit code */
24353  __Pyx_RefNannyFinishContext();
24354  return __pyx_r;
24355 }
24356 
24357 static int __pyx_pf_9WaveTools_7NewWave_4Tlag_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24358  int __pyx_r;
24359  __Pyx_RefNannyDeclarations
24360  double __pyx_t_1;
24361  int __pyx_lineno = 0;
24362  const char *__pyx_filename = NULL;
24363  int __pyx_clineno = 0;
24364  __Pyx_RefNannySetupContext("__set__", 0);
24365  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24366  __pyx_v_self->Tlag = __pyx_t_1;
24367 
24368  /* function exit code */
24369  __pyx_r = 0;
24370  goto __pyx_L0;
24371  __pyx_L1_error:;
24372  __Pyx_AddTraceback("WaveTools.NewWave.Tlag.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24373  __pyx_r = -1;
24374  __pyx_L0:;
24375  __Pyx_RefNannyFinishContext();
24376  return __pyx_r;
24377 }
24378 
24379 /* Python wrapper */
24380 static PyObject *__pyx_pw_9WaveTools_7NewWave_2Hs_1__get__(PyObject *__pyx_v_self); /*proto*/
24381 static PyObject *__pyx_pw_9WaveTools_7NewWave_2Hs_1__get__(PyObject *__pyx_v_self) {
24382  PyObject *__pyx_r = 0;
24383  __Pyx_RefNannyDeclarations
24384  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24385  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2Hs___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24386 
24387  /* function exit code */
24388  __Pyx_RefNannyFinishContext();
24389  return __pyx_r;
24390 }
24391 
24392 static PyObject *__pyx_pf_9WaveTools_7NewWave_2Hs___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24393  PyObject *__pyx_r = NULL;
24394  __Pyx_RefNannyDeclarations
24395  PyObject *__pyx_t_1 = NULL;
24396  int __pyx_lineno = 0;
24397  const char *__pyx_filename = NULL;
24398  int __pyx_clineno = 0;
24399  __Pyx_RefNannySetupContext("__get__", 0);
24400  __Pyx_XDECREF(__pyx_r);
24401  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Hs); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24402  __Pyx_GOTREF(__pyx_t_1);
24403  __pyx_r = __pyx_t_1;
24404  __pyx_t_1 = 0;
24405  goto __pyx_L0;
24406 
24407  /* function exit code */
24408  __pyx_L1_error:;
24409  __Pyx_XDECREF(__pyx_t_1);
24410  __Pyx_AddTraceback("WaveTools.NewWave.Hs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24411  __pyx_r = NULL;
24412  __pyx_L0:;
24413  __Pyx_XGIVEREF(__pyx_r);
24414  __Pyx_RefNannyFinishContext();
24415  return __pyx_r;
24416 }
24417 
24418 /* Python wrapper */
24419 static int __pyx_pw_9WaveTools_7NewWave_2Hs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24420 static int __pyx_pw_9WaveTools_7NewWave_2Hs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24421  int __pyx_r;
24422  __Pyx_RefNannyDeclarations
24423  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24424  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2Hs_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24425 
24426  /* function exit code */
24427  __Pyx_RefNannyFinishContext();
24428  return __pyx_r;
24429 }
24430 
24431 static int __pyx_pf_9WaveTools_7NewWave_2Hs_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24432  int __pyx_r;
24433  __Pyx_RefNannyDeclarations
24434  double __pyx_t_1;
24435  int __pyx_lineno = 0;
24436  const char *__pyx_filename = NULL;
24437  int __pyx_clineno = 0;
24438  __Pyx_RefNannySetupContext("__set__", 0);
24439  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24440  __pyx_v_self->Hs = __pyx_t_1;
24441 
24442  /* function exit code */
24443  __pyx_r = 0;
24444  goto __pyx_L0;
24445  __pyx_L1_error:;
24446  __Pyx_AddTraceback("WaveTools.NewWave.Hs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24447  __pyx_r = -1;
24448  __pyx_L0:;
24449  __Pyx_RefNannyFinishContext();
24450  return __pyx_r;
24451 }
24452 
24453 /* Python wrapper */
24454 static PyObject *__pyx_pw_9WaveTools_7NewWave_2Tp_1__get__(PyObject *__pyx_v_self); /*proto*/
24455 static PyObject *__pyx_pw_9WaveTools_7NewWave_2Tp_1__get__(PyObject *__pyx_v_self) {
24456  PyObject *__pyx_r = 0;
24457  __Pyx_RefNannyDeclarations
24458  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24459  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2Tp___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24460 
24461  /* function exit code */
24462  __Pyx_RefNannyFinishContext();
24463  return __pyx_r;
24464 }
24465 
24466 static PyObject *__pyx_pf_9WaveTools_7NewWave_2Tp___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24467  PyObject *__pyx_r = NULL;
24468  __Pyx_RefNannyDeclarations
24469  PyObject *__pyx_t_1 = NULL;
24470  int __pyx_lineno = 0;
24471  const char *__pyx_filename = NULL;
24472  int __pyx_clineno = 0;
24473  __Pyx_RefNannySetupContext("__get__", 0);
24474  __Pyx_XDECREF(__pyx_r);
24475  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Tp); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24476  __Pyx_GOTREF(__pyx_t_1);
24477  __pyx_r = __pyx_t_1;
24478  __pyx_t_1 = 0;
24479  goto __pyx_L0;
24480 
24481  /* function exit code */
24482  __pyx_L1_error:;
24483  __Pyx_XDECREF(__pyx_t_1);
24484  __Pyx_AddTraceback("WaveTools.NewWave.Tp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24485  __pyx_r = NULL;
24486  __pyx_L0:;
24487  __Pyx_XGIVEREF(__pyx_r);
24488  __Pyx_RefNannyFinishContext();
24489  return __pyx_r;
24490 }
24491 
24492 /* Python wrapper */
24493 static int __pyx_pw_9WaveTools_7NewWave_2Tp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24494 static int __pyx_pw_9WaveTools_7NewWave_2Tp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24495  int __pyx_r;
24496  __Pyx_RefNannyDeclarations
24497  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24498  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2Tp_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24499 
24500  /* function exit code */
24501  __Pyx_RefNannyFinishContext();
24502  return __pyx_r;
24503 }
24504 
24505 static int __pyx_pf_9WaveTools_7NewWave_2Tp_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24506  int __pyx_r;
24507  __Pyx_RefNannyDeclarations
24508  double __pyx_t_1;
24509  int __pyx_lineno = 0;
24510  const char *__pyx_filename = NULL;
24511  int __pyx_clineno = 0;
24512  __Pyx_RefNannySetupContext("__set__", 0);
24513  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24514  __pyx_v_self->Tp = __pyx_t_1;
24515 
24516  /* function exit code */
24517  __pyx_r = 0;
24518  goto __pyx_L0;
24519  __pyx_L1_error:;
24520  __Pyx_AddTraceback("WaveTools.NewWave.Tp.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24521  __pyx_r = -1;
24522  __pyx_L0:;
24523  __Pyx_RefNannyFinishContext();
24524  return __pyx_r;
24525 }
24526 
24527 /* Python wrapper */
24528 static PyObject *__pyx_pw_9WaveTools_7NewWave_2fp_1__get__(PyObject *__pyx_v_self); /*proto*/
24529 static PyObject *__pyx_pw_9WaveTools_7NewWave_2fp_1__get__(PyObject *__pyx_v_self) {
24530  PyObject *__pyx_r = 0;
24531  __Pyx_RefNannyDeclarations
24532  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24533  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2fp___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24534 
24535  /* function exit code */
24536  __Pyx_RefNannyFinishContext();
24537  return __pyx_r;
24538 }
24539 
24540 static PyObject *__pyx_pf_9WaveTools_7NewWave_2fp___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24541  PyObject *__pyx_r = NULL;
24542  __Pyx_RefNannyDeclarations
24543  PyObject *__pyx_t_1 = NULL;
24544  int __pyx_lineno = 0;
24545  const char *__pyx_filename = NULL;
24546  int __pyx_clineno = 0;
24547  __Pyx_RefNannySetupContext("__get__", 0);
24548  __Pyx_XDECREF(__pyx_r);
24549  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24550  __Pyx_GOTREF(__pyx_t_1);
24551  __pyx_r = __pyx_t_1;
24552  __pyx_t_1 = 0;
24553  goto __pyx_L0;
24554 
24555  /* function exit code */
24556  __pyx_L1_error:;
24557  __Pyx_XDECREF(__pyx_t_1);
24558  __Pyx_AddTraceback("WaveTools.NewWave.fp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24559  __pyx_r = NULL;
24560  __pyx_L0:;
24561  __Pyx_XGIVEREF(__pyx_r);
24562  __Pyx_RefNannyFinishContext();
24563  return __pyx_r;
24564 }
24565 
24566 /* Python wrapper */
24567 static int __pyx_pw_9WaveTools_7NewWave_2fp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24568 static int __pyx_pw_9WaveTools_7NewWave_2fp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24569  int __pyx_r;
24570  __Pyx_RefNannyDeclarations
24571  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24572  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2fp_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24573 
24574  /* function exit code */
24575  __Pyx_RefNannyFinishContext();
24576  return __pyx_r;
24577 }
24578 
24579 static int __pyx_pf_9WaveTools_7NewWave_2fp_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24580  int __pyx_r;
24581  __Pyx_RefNannyDeclarations
24582  double __pyx_t_1;
24583  int __pyx_lineno = 0;
24584  const char *__pyx_filename = NULL;
24585  int __pyx_clineno = 0;
24586  __Pyx_RefNannySetupContext("__set__", 0);
24587  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24588  __pyx_v_self->fp = __pyx_t_1;
24589 
24590  /* function exit code */
24591  __pyx_r = 0;
24592  goto __pyx_L0;
24593  __pyx_L1_error:;
24594  __Pyx_AddTraceback("WaveTools.NewWave.fp.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24595  __pyx_r = -1;
24596  __pyx_L0:;
24597  __Pyx_RefNannyFinishContext();
24598  return __pyx_r;
24599 }
24600 
24601 /* Python wrapper */
24602 static PyObject *__pyx_pw_9WaveTools_7NewWave_10bandFactor_1__get__(PyObject *__pyx_v_self); /*proto*/
24603 static PyObject *__pyx_pw_9WaveTools_7NewWave_10bandFactor_1__get__(PyObject *__pyx_v_self) {
24604  PyObject *__pyx_r = 0;
24605  __Pyx_RefNannyDeclarations
24606  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24607  __pyx_r = __pyx_pf_9WaveTools_7NewWave_10bandFactor___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24608 
24609  /* function exit code */
24610  __Pyx_RefNannyFinishContext();
24611  return __pyx_r;
24612 }
24613 
24614 static PyObject *__pyx_pf_9WaveTools_7NewWave_10bandFactor___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24615  PyObject *__pyx_r = NULL;
24616  __Pyx_RefNannyDeclarations
24617  PyObject *__pyx_t_1 = NULL;
24618  int __pyx_lineno = 0;
24619  const char *__pyx_filename = NULL;
24620  int __pyx_clineno = 0;
24621  __Pyx_RefNannySetupContext("__get__", 0);
24622  __Pyx_XDECREF(__pyx_r);
24623  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->bandFactor); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24624  __Pyx_GOTREF(__pyx_t_1);
24625  __pyx_r = __pyx_t_1;
24626  __pyx_t_1 = 0;
24627  goto __pyx_L0;
24628 
24629  /* function exit code */
24630  __pyx_L1_error:;
24631  __Pyx_XDECREF(__pyx_t_1);
24632  __Pyx_AddTraceback("WaveTools.NewWave.bandFactor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24633  __pyx_r = NULL;
24634  __pyx_L0:;
24635  __Pyx_XGIVEREF(__pyx_r);
24636  __Pyx_RefNannyFinishContext();
24637  return __pyx_r;
24638 }
24639 
24640 /* Python wrapper */
24641 static int __pyx_pw_9WaveTools_7NewWave_10bandFactor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24642 static int __pyx_pw_9WaveTools_7NewWave_10bandFactor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24643  int __pyx_r;
24644  __Pyx_RefNannyDeclarations
24645  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24646  __pyx_r = __pyx_pf_9WaveTools_7NewWave_10bandFactor_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24647 
24648  /* function exit code */
24649  __Pyx_RefNannyFinishContext();
24650  return __pyx_r;
24651 }
24652 
24653 static int __pyx_pf_9WaveTools_7NewWave_10bandFactor_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24654  int __pyx_r;
24655  __Pyx_RefNannyDeclarations
24656  double __pyx_t_1;
24657  int __pyx_lineno = 0;
24658  const char *__pyx_filename = NULL;
24659  int __pyx_clineno = 0;
24660  __Pyx_RefNannySetupContext("__set__", 0);
24661  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24662  __pyx_v_self->bandFactor = __pyx_t_1;
24663 
24664  /* function exit code */
24665  __pyx_r = 0;
24666  goto __pyx_L0;
24667  __pyx_L1_error:;
24668  __Pyx_AddTraceback("WaveTools.NewWave.bandFactor.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24669  __pyx_r = -1;
24670  __pyx_L0:;
24671  __Pyx_RefNannyFinishContext();
24672  return __pyx_r;
24673 }
24674 
24675 /* Python wrapper */
24676 static PyObject *__pyx_pw_9WaveTools_7NewWave_2df_1__get__(PyObject *__pyx_v_self); /*proto*/
24677 static PyObject *__pyx_pw_9WaveTools_7NewWave_2df_1__get__(PyObject *__pyx_v_self) {
24678  PyObject *__pyx_r = 0;
24679  __Pyx_RefNannyDeclarations
24680  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24681  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2df___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24682 
24683  /* function exit code */
24684  __Pyx_RefNannyFinishContext();
24685  return __pyx_r;
24686 }
24687 
24688 static PyObject *__pyx_pf_9WaveTools_7NewWave_2df___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24689  PyObject *__pyx_r = NULL;
24690  __Pyx_RefNannyDeclarations
24691  PyObject *__pyx_t_1 = NULL;
24692  int __pyx_lineno = 0;
24693  const char *__pyx_filename = NULL;
24694  int __pyx_clineno = 0;
24695  __Pyx_RefNannySetupContext("__get__", 0);
24696  __Pyx_XDECREF(__pyx_r);
24697  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->df); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24698  __Pyx_GOTREF(__pyx_t_1);
24699  __pyx_r = __pyx_t_1;
24700  __pyx_t_1 = 0;
24701  goto __pyx_L0;
24702 
24703  /* function exit code */
24704  __pyx_L1_error:;
24705  __Pyx_XDECREF(__pyx_t_1);
24706  __Pyx_AddTraceback("WaveTools.NewWave.df.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24707  __pyx_r = NULL;
24708  __pyx_L0:;
24709  __Pyx_XGIVEREF(__pyx_r);
24710  __Pyx_RefNannyFinishContext();
24711  return __pyx_r;
24712 }
24713 
24714 /* Python wrapper */
24715 static int __pyx_pw_9WaveTools_7NewWave_2df_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24716 static int __pyx_pw_9WaveTools_7NewWave_2df_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24717  int __pyx_r;
24718  __Pyx_RefNannyDeclarations
24719  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24720  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2df_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24721 
24722  /* function exit code */
24723  __Pyx_RefNannyFinishContext();
24724  return __pyx_r;
24725 }
24726 
24727 static int __pyx_pf_9WaveTools_7NewWave_2df_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24728  int __pyx_r;
24729  __Pyx_RefNannyDeclarations
24730  double __pyx_t_1;
24731  int __pyx_lineno = 0;
24732  const char *__pyx_filename = NULL;
24733  int __pyx_clineno = 0;
24734  __Pyx_RefNannySetupContext("__set__", 0);
24735  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24736  __pyx_v_self->df = __pyx_t_1;
24737 
24738  /* function exit code */
24739  __pyx_r = 0;
24740  goto __pyx_L0;
24741  __pyx_L1_error:;
24742  __Pyx_AddTraceback("WaveTools.NewWave.df.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24743  __pyx_r = -1;
24744  __pyx_L0:;
24745  __Pyx_RefNannyFinishContext();
24746  return __pyx_r;
24747 }
24748 
24749 /* Python wrapper */
24750 static PyObject *__pyx_pw_9WaveTools_7NewWave_5focus_1__get__(PyObject *__pyx_v_self); /*proto*/
24751 static PyObject *__pyx_pw_9WaveTools_7NewWave_5focus_1__get__(PyObject *__pyx_v_self) {
24752  PyObject *__pyx_r = 0;
24753  __Pyx_RefNannyDeclarations
24754  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24755  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5focus___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24756 
24757  /* function exit code */
24758  __Pyx_RefNannyFinishContext();
24759  return __pyx_r;
24760 }
24761 
24762 static PyObject *__pyx_pf_9WaveTools_7NewWave_5focus___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24763  PyObject *__pyx_r = NULL;
24764  __Pyx_RefNannyDeclarations
24765  PyObject *__pyx_t_1 = NULL;
24766  int __pyx_lineno = 0;
24767  const char *__pyx_filename = NULL;
24768  int __pyx_clineno = 0;
24769  __Pyx_RefNannySetupContext("__get__", 0);
24770  __Pyx_XDECREF(__pyx_r);
24771  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->focus); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24772  __Pyx_GOTREF(__pyx_t_1);
24773  __pyx_r = __pyx_t_1;
24774  __pyx_t_1 = 0;
24775  goto __pyx_L0;
24776 
24777  /* function exit code */
24778  __pyx_L1_error:;
24779  __Pyx_XDECREF(__pyx_t_1);
24780  __Pyx_AddTraceback("WaveTools.NewWave.focus.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24781  __pyx_r = NULL;
24782  __pyx_L0:;
24783  __Pyx_XGIVEREF(__pyx_r);
24784  __Pyx_RefNannyFinishContext();
24785  return __pyx_r;
24786 }
24787 
24788 /* Python wrapper */
24789 static int __pyx_pw_9WaveTools_7NewWave_5focus_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24790 static int __pyx_pw_9WaveTools_7NewWave_5focus_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24791  int __pyx_r;
24792  __Pyx_RefNannyDeclarations
24793  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24794  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5focus_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24795 
24796  /* function exit code */
24797  __Pyx_RefNannyFinishContext();
24798  return __pyx_r;
24799 }
24800 
24801 static int __pyx_pf_9WaveTools_7NewWave_5focus_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24802  int __pyx_r;
24803  __Pyx_RefNannyDeclarations
24804  double __pyx_t_1;
24805  int __pyx_lineno = 0;
24806  const char *__pyx_filename = NULL;
24807  int __pyx_clineno = 0;
24808  __Pyx_RefNannySetupContext("__set__", 0);
24809  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24810  __pyx_v_self->focus = __pyx_t_1;
24811 
24812  /* function exit code */
24813  __pyx_r = 0;
24814  goto __pyx_L0;
24815  __pyx_L1_error:;
24816  __Pyx_AddTraceback("WaveTools.NewWave.focus.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24817  __pyx_r = -1;
24818  __pyx_L0:;
24819  __Pyx_RefNannyFinishContext();
24820  return __pyx_r;
24821 }
24822 
24823 /* Python wrapper */
24824 static PyObject *__pyx_pw_9WaveTools_7NewWave_6tfocus_1__get__(PyObject *__pyx_v_self); /*proto*/
24825 static PyObject *__pyx_pw_9WaveTools_7NewWave_6tfocus_1__get__(PyObject *__pyx_v_self) {
24826  PyObject *__pyx_r = 0;
24827  __Pyx_RefNannyDeclarations
24828  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24829  __pyx_r = __pyx_pf_9WaveTools_7NewWave_6tfocus___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24830 
24831  /* function exit code */
24832  __Pyx_RefNannyFinishContext();
24833  return __pyx_r;
24834 }
24835 
24836 static PyObject *__pyx_pf_9WaveTools_7NewWave_6tfocus___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24837  PyObject *__pyx_r = NULL;
24838  __Pyx_RefNannyDeclarations
24839  PyObject *__pyx_t_1 = NULL;
24840  int __pyx_lineno = 0;
24841  const char *__pyx_filename = NULL;
24842  int __pyx_clineno = 0;
24843  __Pyx_RefNannySetupContext("__get__", 0);
24844  __Pyx_XDECREF(__pyx_r);
24845  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->tfocus); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 98, __pyx_L1_error)
24846  __Pyx_GOTREF(__pyx_t_1);
24847  __pyx_r = __pyx_t_1;
24848  __pyx_t_1 = 0;
24849  goto __pyx_L0;
24850 
24851  /* function exit code */
24852  __pyx_L1_error:;
24853  __Pyx_XDECREF(__pyx_t_1);
24854  __Pyx_AddTraceback("WaveTools.NewWave.tfocus.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24855  __pyx_r = NULL;
24856  __pyx_L0:;
24857  __Pyx_XGIVEREF(__pyx_r);
24858  __Pyx_RefNannyFinishContext();
24859  return __pyx_r;
24860 }
24861 
24862 /* Python wrapper */
24863 static int __pyx_pw_9WaveTools_7NewWave_6tfocus_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24864 static int __pyx_pw_9WaveTools_7NewWave_6tfocus_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24865  int __pyx_r;
24866  __Pyx_RefNannyDeclarations
24867  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24868  __pyx_r = __pyx_pf_9WaveTools_7NewWave_6tfocus_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24869 
24870  /* function exit code */
24871  __Pyx_RefNannyFinishContext();
24872  return __pyx_r;
24873 }
24874 
24875 static int __pyx_pf_9WaveTools_7NewWave_6tfocus_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24876  int __pyx_r;
24877  __Pyx_RefNannyDeclarations
24878  double __pyx_t_1;
24879  int __pyx_lineno = 0;
24880  const char *__pyx_filename = NULL;
24881  int __pyx_clineno = 0;
24882  __Pyx_RefNannySetupContext("__set__", 0);
24883  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 98, __pyx_L1_error)
24884  __pyx_v_self->tfocus = __pyx_t_1;
24885 
24886  /* function exit code */
24887  __pyx_r = 0;
24888  goto __pyx_L0;
24889  __pyx_L1_error:;
24890  __Pyx_AddTraceback("WaveTools.NewWave.tfocus.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24891  __pyx_r = -1;
24892  __pyx_L0:;
24893  __Pyx_RefNannyFinishContext();
24894  return __pyx_r;
24895 }
24896 
24897 /* "WaveTools.pxd":99
24898  * cdef public:
24899  * double mwl,depth,gAbs,Tlag,Hs,Tp,fp,bandFactor,df,focus,tfocus
24900  * int N # <<<<<<<<<<<<<<
24901  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai
24902  * cdef object phi
24903  */
24904 
24905 /* Python wrapper */
24906 static PyObject *__pyx_pw_9WaveTools_7NewWave_1N_1__get__(PyObject *__pyx_v_self); /*proto*/
24907 static PyObject *__pyx_pw_9WaveTools_7NewWave_1N_1__get__(PyObject *__pyx_v_self) {
24908  PyObject *__pyx_r = 0;
24909  __Pyx_RefNannyDeclarations
24910  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24911  __pyx_r = __pyx_pf_9WaveTools_7NewWave_1N___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24912 
24913  /* function exit code */
24914  __Pyx_RefNannyFinishContext();
24915  return __pyx_r;
24916 }
24917 
24918 static PyObject *__pyx_pf_9WaveTools_7NewWave_1N___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
24919  PyObject *__pyx_r = NULL;
24920  __Pyx_RefNannyDeclarations
24921  PyObject *__pyx_t_1 = NULL;
24922  int __pyx_lineno = 0;
24923  const char *__pyx_filename = NULL;
24924  int __pyx_clineno = 0;
24925  __Pyx_RefNannySetupContext("__get__", 0);
24926  __Pyx_XDECREF(__pyx_r);
24927  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 99, __pyx_L1_error)
24928  __Pyx_GOTREF(__pyx_t_1);
24929  __pyx_r = __pyx_t_1;
24930  __pyx_t_1 = 0;
24931  goto __pyx_L0;
24932 
24933  /* function exit code */
24934  __pyx_L1_error:;
24935  __Pyx_XDECREF(__pyx_t_1);
24936  __Pyx_AddTraceback("WaveTools.NewWave.N.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24937  __pyx_r = NULL;
24938  __pyx_L0:;
24939  __Pyx_XGIVEREF(__pyx_r);
24940  __Pyx_RefNannyFinishContext();
24941  return __pyx_r;
24942 }
24943 
24944 /* Python wrapper */
24945 static int __pyx_pw_9WaveTools_7NewWave_1N_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
24946 static int __pyx_pw_9WaveTools_7NewWave_1N_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
24947  int __pyx_r;
24948  __Pyx_RefNannyDeclarations
24949  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
24950  __pyx_r = __pyx_pf_9WaveTools_7NewWave_1N_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
24951 
24952  /* function exit code */
24953  __Pyx_RefNannyFinishContext();
24954  return __pyx_r;
24955 }
24956 
24957 static int __pyx_pf_9WaveTools_7NewWave_1N_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
24958  int __pyx_r;
24959  __Pyx_RefNannyDeclarations
24960  int __pyx_t_1;
24961  int __pyx_lineno = 0;
24962  const char *__pyx_filename = NULL;
24963  int __pyx_clineno = 0;
24964  __Pyx_RefNannySetupContext("__set__", 0);
24965  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 99, __pyx_L1_error)
24966  __pyx_v_self->N = __pyx_t_1;
24967 
24968  /* function exit code */
24969  __pyx_r = 0;
24970  goto __pyx_L0;
24971  __pyx_L1_error:;
24972  __Pyx_AddTraceback("WaveTools.NewWave.N.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
24973  __pyx_r = -1;
24974  __pyx_L0:;
24975  __Pyx_RefNannyFinishContext();
24976  return __pyx_r;
24977 }
24978 
24979 /* "WaveTools.pxd":100
24980  * double mwl,depth,gAbs,Tlag,Hs,Tp,fp,bandFactor,df,focus,tfocus
24981  * int N
24982  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai # <<<<<<<<<<<<<<
24983  * cdef object phi
24984  * cdef double _cpp_eta(self , double* x, double t)
24985  */
24986 
24987 /* Python wrapper */
24988 static PyObject *__pyx_pw_9WaveTools_7NewWave_2fi_1__get__(PyObject *__pyx_v_self); /*proto*/
24989 static PyObject *__pyx_pw_9WaveTools_7NewWave_2fi_1__get__(PyObject *__pyx_v_self) {
24990  PyObject *__pyx_r = 0;
24991  __Pyx_RefNannyDeclarations
24992  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
24993  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2fi___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
24994 
24995  /* function exit code */
24996  __Pyx_RefNannyFinishContext();
24997  return __pyx_r;
24998 }
24999 
25000 static PyObject *__pyx_pf_9WaveTools_7NewWave_2fi___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25001  PyObject *__pyx_r = NULL;
25002  __Pyx_RefNannyDeclarations
25003  __Pyx_RefNannySetupContext("__get__", 0);
25004  __Pyx_XDECREF(__pyx_r);
25005  __Pyx_INCREF(((PyObject *)__pyx_v_self->fi));
25006  __pyx_r = ((PyObject *)__pyx_v_self->fi);
25007  goto __pyx_L0;
25008 
25009  /* function exit code */
25010  __pyx_L0:;
25011  __Pyx_XGIVEREF(__pyx_r);
25012  __Pyx_RefNannyFinishContext();
25013  return __pyx_r;
25014 }
25015 
25016 /* Python wrapper */
25017 static int __pyx_pw_9WaveTools_7NewWave_2fi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25018 static int __pyx_pw_9WaveTools_7NewWave_2fi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25019  int __pyx_r;
25020  __Pyx_RefNannyDeclarations
25021  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25022  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2fi_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25023 
25024  /* function exit code */
25025  __Pyx_RefNannyFinishContext();
25026  return __pyx_r;
25027 }
25028 
25029 static int __pyx_pf_9WaveTools_7NewWave_2fi_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25030  int __pyx_r;
25031  __Pyx_RefNannyDeclarations
25032  PyObject *__pyx_t_1 = NULL;
25033  int __pyx_lineno = 0;
25034  const char *__pyx_filename = NULL;
25035  int __pyx_clineno = 0;
25036  __Pyx_RefNannySetupContext("__set__", 0);
25037  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25038  __pyx_t_1 = __pyx_v_value;
25039  __Pyx_INCREF(__pyx_t_1);
25040  __Pyx_GIVEREF(__pyx_t_1);
25041  __Pyx_GOTREF(__pyx_v_self->fi);
25042  __Pyx_DECREF(((PyObject *)__pyx_v_self->fi));
25043  __pyx_v_self->fi = ((PyArrayObject *)__pyx_t_1);
25044  __pyx_t_1 = 0;
25045 
25046  /* function exit code */
25047  __pyx_r = 0;
25048  goto __pyx_L0;
25049  __pyx_L1_error:;
25050  __Pyx_XDECREF(__pyx_t_1);
25051  __Pyx_AddTraceback("WaveTools.NewWave.fi.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25052  __pyx_r = -1;
25053  __pyx_L0:;
25054  __Pyx_RefNannyFinishContext();
25055  return __pyx_r;
25056 }
25057 
25058 /* Python wrapper */
25059 static int __pyx_pw_9WaveTools_7NewWave_2fi_5__del__(PyObject *__pyx_v_self); /*proto*/
25060 static int __pyx_pw_9WaveTools_7NewWave_2fi_5__del__(PyObject *__pyx_v_self) {
25061  int __pyx_r;
25062  __Pyx_RefNannyDeclarations
25063  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25064  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2fi_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25065 
25066  /* function exit code */
25067  __Pyx_RefNannyFinishContext();
25068  return __pyx_r;
25069 }
25070 
25071 static int __pyx_pf_9WaveTools_7NewWave_2fi_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25072  int __pyx_r;
25073  __Pyx_RefNannyDeclarations
25074  __Pyx_RefNannySetupContext("__del__", 0);
25075  __Pyx_INCREF(Py_None);
25076  __Pyx_GIVEREF(Py_None);
25077  __Pyx_GOTREF(__pyx_v_self->fi);
25078  __Pyx_DECREF(((PyObject *)__pyx_v_self->fi));
25079  __pyx_v_self->fi = ((PyArrayObject *)Py_None);
25080 
25081  /* function exit code */
25082  __pyx_r = 0;
25083  __Pyx_RefNannyFinishContext();
25084  return __pyx_r;
25085 }
25086 
25087 /* Python wrapper */
25088 static PyObject *__pyx_pw_9WaveTools_7NewWave_3fim_1__get__(PyObject *__pyx_v_self); /*proto*/
25089 static PyObject *__pyx_pw_9WaveTools_7NewWave_3fim_1__get__(PyObject *__pyx_v_self) {
25090  PyObject *__pyx_r = 0;
25091  __Pyx_RefNannyDeclarations
25092  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25093  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3fim___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25094 
25095  /* function exit code */
25096  __Pyx_RefNannyFinishContext();
25097  return __pyx_r;
25098 }
25099 
25100 static PyObject *__pyx_pf_9WaveTools_7NewWave_3fim___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25101  PyObject *__pyx_r = NULL;
25102  __Pyx_RefNannyDeclarations
25103  __Pyx_RefNannySetupContext("__get__", 0);
25104  __Pyx_XDECREF(__pyx_r);
25105  __Pyx_INCREF(((PyObject *)__pyx_v_self->fim));
25106  __pyx_r = ((PyObject *)__pyx_v_self->fim);
25107  goto __pyx_L0;
25108 
25109  /* function exit code */
25110  __pyx_L0:;
25111  __Pyx_XGIVEREF(__pyx_r);
25112  __Pyx_RefNannyFinishContext();
25113  return __pyx_r;
25114 }
25115 
25116 /* Python wrapper */
25117 static int __pyx_pw_9WaveTools_7NewWave_3fim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25118 static int __pyx_pw_9WaveTools_7NewWave_3fim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25119  int __pyx_r;
25120  __Pyx_RefNannyDeclarations
25121  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25122  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3fim_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25123 
25124  /* function exit code */
25125  __Pyx_RefNannyFinishContext();
25126  return __pyx_r;
25127 }
25128 
25129 static int __pyx_pf_9WaveTools_7NewWave_3fim_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25130  int __pyx_r;
25131  __Pyx_RefNannyDeclarations
25132  PyObject *__pyx_t_1 = NULL;
25133  int __pyx_lineno = 0;
25134  const char *__pyx_filename = NULL;
25135  int __pyx_clineno = 0;
25136  __Pyx_RefNannySetupContext("__set__", 0);
25137  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25138  __pyx_t_1 = __pyx_v_value;
25139  __Pyx_INCREF(__pyx_t_1);
25140  __Pyx_GIVEREF(__pyx_t_1);
25141  __Pyx_GOTREF(__pyx_v_self->fim);
25142  __Pyx_DECREF(((PyObject *)__pyx_v_self->fim));
25143  __pyx_v_self->fim = ((PyArrayObject *)__pyx_t_1);
25144  __pyx_t_1 = 0;
25145 
25146  /* function exit code */
25147  __pyx_r = 0;
25148  goto __pyx_L0;
25149  __pyx_L1_error:;
25150  __Pyx_XDECREF(__pyx_t_1);
25151  __Pyx_AddTraceback("WaveTools.NewWave.fim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25152  __pyx_r = -1;
25153  __pyx_L0:;
25154  __Pyx_RefNannyFinishContext();
25155  return __pyx_r;
25156 }
25157 
25158 /* Python wrapper */
25159 static int __pyx_pw_9WaveTools_7NewWave_3fim_5__del__(PyObject *__pyx_v_self); /*proto*/
25160 static int __pyx_pw_9WaveTools_7NewWave_3fim_5__del__(PyObject *__pyx_v_self) {
25161  int __pyx_r;
25162  __Pyx_RefNannyDeclarations
25163  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25164  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3fim_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25165 
25166  /* function exit code */
25167  __Pyx_RefNannyFinishContext();
25168  return __pyx_r;
25169 }
25170 
25171 static int __pyx_pf_9WaveTools_7NewWave_3fim_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25172  int __pyx_r;
25173  __Pyx_RefNannyDeclarations
25174  __Pyx_RefNannySetupContext("__del__", 0);
25175  __Pyx_INCREF(Py_None);
25176  __Pyx_GIVEREF(Py_None);
25177  __Pyx_GOTREF(__pyx_v_self->fim);
25178  __Pyx_DECREF(((PyObject *)__pyx_v_self->fim));
25179  __pyx_v_self->fim = ((PyArrayObject *)Py_None);
25180 
25181  /* function exit code */
25182  __pyx_r = 0;
25183  __Pyx_RefNannyFinishContext();
25184  return __pyx_r;
25185 }
25186 
25187 /* Python wrapper */
25188 static PyObject *__pyx_pw_9WaveTools_7NewWave_5Si_Jm_1__get__(PyObject *__pyx_v_self); /*proto*/
25189 static PyObject *__pyx_pw_9WaveTools_7NewWave_5Si_Jm_1__get__(PyObject *__pyx_v_self) {
25190  PyObject *__pyx_r = 0;
25191  __Pyx_RefNannyDeclarations
25192  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25193  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5Si_Jm___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25194 
25195  /* function exit code */
25196  __Pyx_RefNannyFinishContext();
25197  return __pyx_r;
25198 }
25199 
25200 static PyObject *__pyx_pf_9WaveTools_7NewWave_5Si_Jm___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25201  PyObject *__pyx_r = NULL;
25202  __Pyx_RefNannyDeclarations
25203  __Pyx_RefNannySetupContext("__get__", 0);
25204  __Pyx_XDECREF(__pyx_r);
25205  __Pyx_INCREF(((PyObject *)__pyx_v_self->Si_Jm));
25206  __pyx_r = ((PyObject *)__pyx_v_self->Si_Jm);
25207  goto __pyx_L0;
25208 
25209  /* function exit code */
25210  __pyx_L0:;
25211  __Pyx_XGIVEREF(__pyx_r);
25212  __Pyx_RefNannyFinishContext();
25213  return __pyx_r;
25214 }
25215 
25216 /* Python wrapper */
25217 static int __pyx_pw_9WaveTools_7NewWave_5Si_Jm_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25218 static int __pyx_pw_9WaveTools_7NewWave_5Si_Jm_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25219  int __pyx_r;
25220  __Pyx_RefNannyDeclarations
25221  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25222  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5Si_Jm_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25223 
25224  /* function exit code */
25225  __Pyx_RefNannyFinishContext();
25226  return __pyx_r;
25227 }
25228 
25229 static int __pyx_pf_9WaveTools_7NewWave_5Si_Jm_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25230  int __pyx_r;
25231  __Pyx_RefNannyDeclarations
25232  PyObject *__pyx_t_1 = NULL;
25233  int __pyx_lineno = 0;
25234  const char *__pyx_filename = NULL;
25235  int __pyx_clineno = 0;
25236  __Pyx_RefNannySetupContext("__set__", 0);
25237  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25238  __pyx_t_1 = __pyx_v_value;
25239  __Pyx_INCREF(__pyx_t_1);
25240  __Pyx_GIVEREF(__pyx_t_1);
25241  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
25242  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
25243  __pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_1);
25244  __pyx_t_1 = 0;
25245 
25246  /* function exit code */
25247  __pyx_r = 0;
25248  goto __pyx_L0;
25249  __pyx_L1_error:;
25250  __Pyx_XDECREF(__pyx_t_1);
25251  __Pyx_AddTraceback("WaveTools.NewWave.Si_Jm.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25252  __pyx_r = -1;
25253  __pyx_L0:;
25254  __Pyx_RefNannyFinishContext();
25255  return __pyx_r;
25256 }
25257 
25258 /* Python wrapper */
25259 static int __pyx_pw_9WaveTools_7NewWave_5Si_Jm_5__del__(PyObject *__pyx_v_self); /*proto*/
25260 static int __pyx_pw_9WaveTools_7NewWave_5Si_Jm_5__del__(PyObject *__pyx_v_self) {
25261  int __pyx_r;
25262  __Pyx_RefNannyDeclarations
25263  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25264  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5Si_Jm_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25265 
25266  /* function exit code */
25267  __Pyx_RefNannyFinishContext();
25268  return __pyx_r;
25269 }
25270 
25271 static int __pyx_pf_9WaveTools_7NewWave_5Si_Jm_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25272  int __pyx_r;
25273  __Pyx_RefNannyDeclarations
25274  __Pyx_RefNannySetupContext("__del__", 0);
25275  __Pyx_INCREF(Py_None);
25276  __Pyx_GIVEREF(Py_None);
25277  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
25278  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
25279  __pyx_v_self->Si_Jm = ((PyArrayObject *)Py_None);
25280 
25281  /* function exit code */
25282  __pyx_r = 0;
25283  __Pyx_RefNannyFinishContext();
25284  return __pyx_r;
25285 }
25286 
25287 /* Python wrapper */
25288 static PyObject *__pyx_pw_9WaveTools_7NewWave_2ki_1__get__(PyObject *__pyx_v_self); /*proto*/
25289 static PyObject *__pyx_pw_9WaveTools_7NewWave_2ki_1__get__(PyObject *__pyx_v_self) {
25290  PyObject *__pyx_r = 0;
25291  __Pyx_RefNannyDeclarations
25292  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25293  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2ki___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25294 
25295  /* function exit code */
25296  __Pyx_RefNannyFinishContext();
25297  return __pyx_r;
25298 }
25299 
25300 static PyObject *__pyx_pf_9WaveTools_7NewWave_2ki___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25301  PyObject *__pyx_r = NULL;
25302  __Pyx_RefNannyDeclarations
25303  __Pyx_RefNannySetupContext("__get__", 0);
25304  __Pyx_XDECREF(__pyx_r);
25305  __Pyx_INCREF(((PyObject *)__pyx_v_self->ki));
25306  __pyx_r = ((PyObject *)__pyx_v_self->ki);
25307  goto __pyx_L0;
25308 
25309  /* function exit code */
25310  __pyx_L0:;
25311  __Pyx_XGIVEREF(__pyx_r);
25312  __Pyx_RefNannyFinishContext();
25313  return __pyx_r;
25314 }
25315 
25316 /* Python wrapper */
25317 static int __pyx_pw_9WaveTools_7NewWave_2ki_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25318 static int __pyx_pw_9WaveTools_7NewWave_2ki_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25319  int __pyx_r;
25320  __Pyx_RefNannyDeclarations
25321  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25322  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2ki_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25323 
25324  /* function exit code */
25325  __Pyx_RefNannyFinishContext();
25326  return __pyx_r;
25327 }
25328 
25329 static int __pyx_pf_9WaveTools_7NewWave_2ki_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25330  int __pyx_r;
25331  __Pyx_RefNannyDeclarations
25332  PyObject *__pyx_t_1 = NULL;
25333  int __pyx_lineno = 0;
25334  const char *__pyx_filename = NULL;
25335  int __pyx_clineno = 0;
25336  __Pyx_RefNannySetupContext("__set__", 0);
25337  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25338  __pyx_t_1 = __pyx_v_value;
25339  __Pyx_INCREF(__pyx_t_1);
25340  __Pyx_GIVEREF(__pyx_t_1);
25341  __Pyx_GOTREF(__pyx_v_self->ki);
25342  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
25343  __pyx_v_self->ki = ((PyArrayObject *)__pyx_t_1);
25344  __pyx_t_1 = 0;
25345 
25346  /* function exit code */
25347  __pyx_r = 0;
25348  goto __pyx_L0;
25349  __pyx_L1_error:;
25350  __Pyx_XDECREF(__pyx_t_1);
25351  __Pyx_AddTraceback("WaveTools.NewWave.ki.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25352  __pyx_r = -1;
25353  __pyx_L0:;
25354  __Pyx_RefNannyFinishContext();
25355  return __pyx_r;
25356 }
25357 
25358 /* Python wrapper */
25359 static int __pyx_pw_9WaveTools_7NewWave_2ki_5__del__(PyObject *__pyx_v_self); /*proto*/
25360 static int __pyx_pw_9WaveTools_7NewWave_2ki_5__del__(PyObject *__pyx_v_self) {
25361  int __pyx_r;
25362  __Pyx_RefNannyDeclarations
25363  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25364  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2ki_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25365 
25366  /* function exit code */
25367  __Pyx_RefNannyFinishContext();
25368  return __pyx_r;
25369 }
25370 
25371 static int __pyx_pf_9WaveTools_7NewWave_2ki_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25372  int __pyx_r;
25373  __Pyx_RefNannyDeclarations
25374  __Pyx_RefNannySetupContext("__del__", 0);
25375  __Pyx_INCREF(Py_None);
25376  __Pyx_GIVEREF(Py_None);
25377  __Pyx_GOTREF(__pyx_v_self->ki);
25378  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
25379  __pyx_v_self->ki = ((PyArrayObject *)Py_None);
25380 
25381  /* function exit code */
25382  __pyx_r = 0;
25383  __Pyx_RefNannyFinishContext();
25384  return __pyx_r;
25385 }
25386 
25387 /* Python wrapper */
25388 static PyObject *__pyx_pw_9WaveTools_7NewWave_5omega_1__get__(PyObject *__pyx_v_self); /*proto*/
25389 static PyObject *__pyx_pw_9WaveTools_7NewWave_5omega_1__get__(PyObject *__pyx_v_self) {
25390  PyObject *__pyx_r = 0;
25391  __Pyx_RefNannyDeclarations
25392  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25393  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5omega___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25394 
25395  /* function exit code */
25396  __Pyx_RefNannyFinishContext();
25397  return __pyx_r;
25398 }
25399 
25400 static PyObject *__pyx_pf_9WaveTools_7NewWave_5omega___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25401  PyObject *__pyx_r = NULL;
25402  __Pyx_RefNannyDeclarations
25403  __Pyx_RefNannySetupContext("__get__", 0);
25404  __Pyx_XDECREF(__pyx_r);
25405  __Pyx_INCREF(((PyObject *)__pyx_v_self->omega));
25406  __pyx_r = ((PyObject *)__pyx_v_self->omega);
25407  goto __pyx_L0;
25408 
25409  /* function exit code */
25410  __pyx_L0:;
25411  __Pyx_XGIVEREF(__pyx_r);
25412  __Pyx_RefNannyFinishContext();
25413  return __pyx_r;
25414 }
25415 
25416 /* Python wrapper */
25417 static int __pyx_pw_9WaveTools_7NewWave_5omega_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25418 static int __pyx_pw_9WaveTools_7NewWave_5omega_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25419  int __pyx_r;
25420  __Pyx_RefNannyDeclarations
25421  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25422  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5omega_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25423 
25424  /* function exit code */
25425  __Pyx_RefNannyFinishContext();
25426  return __pyx_r;
25427 }
25428 
25429 static int __pyx_pf_9WaveTools_7NewWave_5omega_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25430  int __pyx_r;
25431  __Pyx_RefNannyDeclarations
25432  PyObject *__pyx_t_1 = NULL;
25433  int __pyx_lineno = 0;
25434  const char *__pyx_filename = NULL;
25435  int __pyx_clineno = 0;
25436  __Pyx_RefNannySetupContext("__set__", 0);
25437  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25438  __pyx_t_1 = __pyx_v_value;
25439  __Pyx_INCREF(__pyx_t_1);
25440  __Pyx_GIVEREF(__pyx_t_1);
25441  __Pyx_GOTREF(__pyx_v_self->omega);
25442  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
25443  __pyx_v_self->omega = ((PyArrayObject *)__pyx_t_1);
25444  __pyx_t_1 = 0;
25445 
25446  /* function exit code */
25447  __pyx_r = 0;
25448  goto __pyx_L0;
25449  __pyx_L1_error:;
25450  __Pyx_XDECREF(__pyx_t_1);
25451  __Pyx_AddTraceback("WaveTools.NewWave.omega.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25452  __pyx_r = -1;
25453  __pyx_L0:;
25454  __Pyx_RefNannyFinishContext();
25455  return __pyx_r;
25456 }
25457 
25458 /* Python wrapper */
25459 static int __pyx_pw_9WaveTools_7NewWave_5omega_5__del__(PyObject *__pyx_v_self); /*proto*/
25460 static int __pyx_pw_9WaveTools_7NewWave_5omega_5__del__(PyObject *__pyx_v_self) {
25461  int __pyx_r;
25462  __Pyx_RefNannyDeclarations
25463  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25464  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5omega_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25465 
25466  /* function exit code */
25467  __Pyx_RefNannyFinishContext();
25468  return __pyx_r;
25469 }
25470 
25471 static int __pyx_pf_9WaveTools_7NewWave_5omega_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25472  int __pyx_r;
25473  __Pyx_RefNannyDeclarations
25474  __Pyx_RefNannySetupContext("__del__", 0);
25475  __Pyx_INCREF(Py_None);
25476  __Pyx_GIVEREF(Py_None);
25477  __Pyx_GOTREF(__pyx_v_self->omega);
25478  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
25479  __pyx_v_self->omega = ((PyArrayObject *)Py_None);
25480 
25481  /* function exit code */
25482  __pyx_r = 0;
25483  __Pyx_RefNannyFinishContext();
25484  return __pyx_r;
25485 }
25486 
25487 /* Python wrapper */
25488 static PyObject *__pyx_pw_9WaveTools_7NewWave_5tanhF_1__get__(PyObject *__pyx_v_self); /*proto*/
25489 static PyObject *__pyx_pw_9WaveTools_7NewWave_5tanhF_1__get__(PyObject *__pyx_v_self) {
25490  PyObject *__pyx_r = 0;
25491  __Pyx_RefNannyDeclarations
25492  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25493  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5tanhF___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25494 
25495  /* function exit code */
25496  __Pyx_RefNannyFinishContext();
25497  return __pyx_r;
25498 }
25499 
25500 static PyObject *__pyx_pf_9WaveTools_7NewWave_5tanhF___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25501  PyObject *__pyx_r = NULL;
25502  __Pyx_RefNannyDeclarations
25503  __Pyx_RefNannySetupContext("__get__", 0);
25504  __Pyx_XDECREF(__pyx_r);
25505  __Pyx_INCREF(((PyObject *)__pyx_v_self->tanhF));
25506  __pyx_r = ((PyObject *)__pyx_v_self->tanhF);
25507  goto __pyx_L0;
25508 
25509  /* function exit code */
25510  __pyx_L0:;
25511  __Pyx_XGIVEREF(__pyx_r);
25512  __Pyx_RefNannyFinishContext();
25513  return __pyx_r;
25514 }
25515 
25516 /* Python wrapper */
25517 static int __pyx_pw_9WaveTools_7NewWave_5tanhF_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25518 static int __pyx_pw_9WaveTools_7NewWave_5tanhF_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25519  int __pyx_r;
25520  __Pyx_RefNannyDeclarations
25521  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25522  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5tanhF_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25523 
25524  /* function exit code */
25525  __Pyx_RefNannyFinishContext();
25526  return __pyx_r;
25527 }
25528 
25529 static int __pyx_pf_9WaveTools_7NewWave_5tanhF_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25530  int __pyx_r;
25531  __Pyx_RefNannyDeclarations
25532  PyObject *__pyx_t_1 = NULL;
25533  int __pyx_lineno = 0;
25534  const char *__pyx_filename = NULL;
25535  int __pyx_clineno = 0;
25536  __Pyx_RefNannySetupContext("__set__", 0);
25537  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25538  __pyx_t_1 = __pyx_v_value;
25539  __Pyx_INCREF(__pyx_t_1);
25540  __Pyx_GIVEREF(__pyx_t_1);
25541  __Pyx_GOTREF(__pyx_v_self->tanhF);
25542  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
25543  __pyx_v_self->tanhF = ((PyArrayObject *)__pyx_t_1);
25544  __pyx_t_1 = 0;
25545 
25546  /* function exit code */
25547  __pyx_r = 0;
25548  goto __pyx_L0;
25549  __pyx_L1_error:;
25550  __Pyx_XDECREF(__pyx_t_1);
25551  __Pyx_AddTraceback("WaveTools.NewWave.tanhF.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25552  __pyx_r = -1;
25553  __pyx_L0:;
25554  __Pyx_RefNannyFinishContext();
25555  return __pyx_r;
25556 }
25557 
25558 /* Python wrapper */
25559 static int __pyx_pw_9WaveTools_7NewWave_5tanhF_5__del__(PyObject *__pyx_v_self); /*proto*/
25560 static int __pyx_pw_9WaveTools_7NewWave_5tanhF_5__del__(PyObject *__pyx_v_self) {
25561  int __pyx_r;
25562  __Pyx_RefNannyDeclarations
25563  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25564  __pyx_r = __pyx_pf_9WaveTools_7NewWave_5tanhF_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25565 
25566  /* function exit code */
25567  __Pyx_RefNannyFinishContext();
25568  return __pyx_r;
25569 }
25570 
25571 static int __pyx_pf_9WaveTools_7NewWave_5tanhF_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25572  int __pyx_r;
25573  __Pyx_RefNannyDeclarations
25574  __Pyx_RefNannySetupContext("__del__", 0);
25575  __Pyx_INCREF(Py_None);
25576  __Pyx_GIVEREF(Py_None);
25577  __Pyx_GOTREF(__pyx_v_self->tanhF);
25578  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
25579  __pyx_v_self->tanhF = ((PyArrayObject *)Py_None);
25580 
25581  /* function exit code */
25582  __pyx_r = 0;
25583  __Pyx_RefNannyFinishContext();
25584  return __pyx_r;
25585 }
25586 
25587 /* Python wrapper */
25588 static PyObject *__pyx_pw_9WaveTools_7NewWave_1g_1__get__(PyObject *__pyx_v_self); /*proto*/
25589 static PyObject *__pyx_pw_9WaveTools_7NewWave_1g_1__get__(PyObject *__pyx_v_self) {
25590  PyObject *__pyx_r = 0;
25591  __Pyx_RefNannyDeclarations
25592  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25593  __pyx_r = __pyx_pf_9WaveTools_7NewWave_1g___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25594 
25595  /* function exit code */
25596  __Pyx_RefNannyFinishContext();
25597  return __pyx_r;
25598 }
25599 
25600 static PyObject *__pyx_pf_9WaveTools_7NewWave_1g___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25601  PyObject *__pyx_r = NULL;
25602  __Pyx_RefNannyDeclarations
25603  __Pyx_RefNannySetupContext("__get__", 0);
25604  __Pyx_XDECREF(__pyx_r);
25605  __Pyx_INCREF(((PyObject *)__pyx_v_self->g));
25606  __pyx_r = ((PyObject *)__pyx_v_self->g);
25607  goto __pyx_L0;
25608 
25609  /* function exit code */
25610  __pyx_L0:;
25611  __Pyx_XGIVEREF(__pyx_r);
25612  __Pyx_RefNannyFinishContext();
25613  return __pyx_r;
25614 }
25615 
25616 /* Python wrapper */
25617 static int __pyx_pw_9WaveTools_7NewWave_1g_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25618 static int __pyx_pw_9WaveTools_7NewWave_1g_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25619  int __pyx_r;
25620  __Pyx_RefNannyDeclarations
25621  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25622  __pyx_r = __pyx_pf_9WaveTools_7NewWave_1g_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25623 
25624  /* function exit code */
25625  __Pyx_RefNannyFinishContext();
25626  return __pyx_r;
25627 }
25628 
25629 static int __pyx_pf_9WaveTools_7NewWave_1g_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25630  int __pyx_r;
25631  __Pyx_RefNannyDeclarations
25632  PyObject *__pyx_t_1 = NULL;
25633  int __pyx_lineno = 0;
25634  const char *__pyx_filename = NULL;
25635  int __pyx_clineno = 0;
25636  __Pyx_RefNannySetupContext("__set__", 0);
25637  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25638  __pyx_t_1 = __pyx_v_value;
25639  __Pyx_INCREF(__pyx_t_1);
25640  __Pyx_GIVEREF(__pyx_t_1);
25641  __Pyx_GOTREF(__pyx_v_self->g);
25642  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
25643  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_1);
25644  __pyx_t_1 = 0;
25645 
25646  /* function exit code */
25647  __pyx_r = 0;
25648  goto __pyx_L0;
25649  __pyx_L1_error:;
25650  __Pyx_XDECREF(__pyx_t_1);
25651  __Pyx_AddTraceback("WaveTools.NewWave.g.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25652  __pyx_r = -1;
25653  __pyx_L0:;
25654  __Pyx_RefNannyFinishContext();
25655  return __pyx_r;
25656 }
25657 
25658 /* Python wrapper */
25659 static int __pyx_pw_9WaveTools_7NewWave_1g_5__del__(PyObject *__pyx_v_self); /*proto*/
25660 static int __pyx_pw_9WaveTools_7NewWave_1g_5__del__(PyObject *__pyx_v_self) {
25661  int __pyx_r;
25662  __Pyx_RefNannyDeclarations
25663  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25664  __pyx_r = __pyx_pf_9WaveTools_7NewWave_1g_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25665 
25666  /* function exit code */
25667  __Pyx_RefNannyFinishContext();
25668  return __pyx_r;
25669 }
25670 
25671 static int __pyx_pf_9WaveTools_7NewWave_1g_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25672  int __pyx_r;
25673  __Pyx_RefNannyDeclarations
25674  __Pyx_RefNannySetupContext("__del__", 0);
25675  __Pyx_INCREF(Py_None);
25676  __Pyx_GIVEREF(Py_None);
25677  __Pyx_GOTREF(__pyx_v_self->g);
25678  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
25679  __pyx_v_self->g = ((PyArrayObject *)Py_None);
25680 
25681  /* function exit code */
25682  __pyx_r = 0;
25683  __Pyx_RefNannyFinishContext();
25684  return __pyx_r;
25685 }
25686 
25687 /* Python wrapper */
25688 static PyObject *__pyx_pw_9WaveTools_7NewWave_7waveDir_1__get__(PyObject *__pyx_v_self); /*proto*/
25689 static PyObject *__pyx_pw_9WaveTools_7NewWave_7waveDir_1__get__(PyObject *__pyx_v_self) {
25690  PyObject *__pyx_r = 0;
25691  __Pyx_RefNannyDeclarations
25692  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25693  __pyx_r = __pyx_pf_9WaveTools_7NewWave_7waveDir___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25694 
25695  /* function exit code */
25696  __Pyx_RefNannyFinishContext();
25697  return __pyx_r;
25698 }
25699 
25700 static PyObject *__pyx_pf_9WaveTools_7NewWave_7waveDir___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25701  PyObject *__pyx_r = NULL;
25702  __Pyx_RefNannyDeclarations
25703  __Pyx_RefNannySetupContext("__get__", 0);
25704  __Pyx_XDECREF(__pyx_r);
25705  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
25706  __pyx_r = ((PyObject *)__pyx_v_self->waveDir);
25707  goto __pyx_L0;
25708 
25709  /* function exit code */
25710  __pyx_L0:;
25711  __Pyx_XGIVEREF(__pyx_r);
25712  __Pyx_RefNannyFinishContext();
25713  return __pyx_r;
25714 }
25715 
25716 /* Python wrapper */
25717 static int __pyx_pw_9WaveTools_7NewWave_7waveDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25718 static int __pyx_pw_9WaveTools_7NewWave_7waveDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25719  int __pyx_r;
25720  __Pyx_RefNannyDeclarations
25721  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25722  __pyx_r = __pyx_pf_9WaveTools_7NewWave_7waveDir_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25723 
25724  /* function exit code */
25725  __Pyx_RefNannyFinishContext();
25726  return __pyx_r;
25727 }
25728 
25729 static int __pyx_pf_9WaveTools_7NewWave_7waveDir_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25730  int __pyx_r;
25731  __Pyx_RefNannyDeclarations
25732  PyObject *__pyx_t_1 = NULL;
25733  int __pyx_lineno = 0;
25734  const char *__pyx_filename = NULL;
25735  int __pyx_clineno = 0;
25736  __Pyx_RefNannySetupContext("__set__", 0);
25737  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25738  __pyx_t_1 = __pyx_v_value;
25739  __Pyx_INCREF(__pyx_t_1);
25740  __Pyx_GIVEREF(__pyx_t_1);
25741  __Pyx_GOTREF(__pyx_v_self->waveDir);
25742  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
25743  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_1);
25744  __pyx_t_1 = 0;
25745 
25746  /* function exit code */
25747  __pyx_r = 0;
25748  goto __pyx_L0;
25749  __pyx_L1_error:;
25750  __Pyx_XDECREF(__pyx_t_1);
25751  __Pyx_AddTraceback("WaveTools.NewWave.waveDir.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25752  __pyx_r = -1;
25753  __pyx_L0:;
25754  __Pyx_RefNannyFinishContext();
25755  return __pyx_r;
25756 }
25757 
25758 /* Python wrapper */
25759 static int __pyx_pw_9WaveTools_7NewWave_7waveDir_5__del__(PyObject *__pyx_v_self); /*proto*/
25760 static int __pyx_pw_9WaveTools_7NewWave_7waveDir_5__del__(PyObject *__pyx_v_self) {
25761  int __pyx_r;
25762  __Pyx_RefNannyDeclarations
25763  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25764  __pyx_r = __pyx_pf_9WaveTools_7NewWave_7waveDir_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25765 
25766  /* function exit code */
25767  __Pyx_RefNannyFinishContext();
25768  return __pyx_r;
25769 }
25770 
25771 static int __pyx_pf_9WaveTools_7NewWave_7waveDir_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25772  int __pyx_r;
25773  __Pyx_RefNannyDeclarations
25774  __Pyx_RefNannySetupContext("__del__", 0);
25775  __Pyx_INCREF(Py_None);
25776  __Pyx_GIVEREF(Py_None);
25777  __Pyx_GOTREF(__pyx_v_self->waveDir);
25778  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
25779  __pyx_v_self->waveDir = ((PyArrayObject *)Py_None);
25780 
25781  /* function exit code */
25782  __pyx_r = 0;
25783  __Pyx_RefNannyFinishContext();
25784  return __pyx_r;
25785 }
25786 
25787 /* Python wrapper */
25788 static PyObject *__pyx_pw_9WaveTools_7NewWave_4vDir_1__get__(PyObject *__pyx_v_self); /*proto*/
25789 static PyObject *__pyx_pw_9WaveTools_7NewWave_4vDir_1__get__(PyObject *__pyx_v_self) {
25790  PyObject *__pyx_r = 0;
25791  __Pyx_RefNannyDeclarations
25792  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25793  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4vDir___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25794 
25795  /* function exit code */
25796  __Pyx_RefNannyFinishContext();
25797  return __pyx_r;
25798 }
25799 
25800 static PyObject *__pyx_pf_9WaveTools_7NewWave_4vDir___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25801  PyObject *__pyx_r = NULL;
25802  __Pyx_RefNannyDeclarations
25803  __Pyx_RefNannySetupContext("__get__", 0);
25804  __Pyx_XDECREF(__pyx_r);
25805  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
25806  __pyx_r = ((PyObject *)__pyx_v_self->vDir);
25807  goto __pyx_L0;
25808 
25809  /* function exit code */
25810  __pyx_L0:;
25811  __Pyx_XGIVEREF(__pyx_r);
25812  __Pyx_RefNannyFinishContext();
25813  return __pyx_r;
25814 }
25815 
25816 /* Python wrapper */
25817 static int __pyx_pw_9WaveTools_7NewWave_4vDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25818 static int __pyx_pw_9WaveTools_7NewWave_4vDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25819  int __pyx_r;
25820  __Pyx_RefNannyDeclarations
25821  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25822  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4vDir_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25823 
25824  /* function exit code */
25825  __Pyx_RefNannyFinishContext();
25826  return __pyx_r;
25827 }
25828 
25829 static int __pyx_pf_9WaveTools_7NewWave_4vDir_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25830  int __pyx_r;
25831  __Pyx_RefNannyDeclarations
25832  PyObject *__pyx_t_1 = NULL;
25833  int __pyx_lineno = 0;
25834  const char *__pyx_filename = NULL;
25835  int __pyx_clineno = 0;
25836  __Pyx_RefNannySetupContext("__set__", 0);
25837  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25838  __pyx_t_1 = __pyx_v_value;
25839  __Pyx_INCREF(__pyx_t_1);
25840  __Pyx_GIVEREF(__pyx_t_1);
25841  __Pyx_GOTREF(__pyx_v_self->vDir);
25842  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
25843  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_1);
25844  __pyx_t_1 = 0;
25845 
25846  /* function exit code */
25847  __pyx_r = 0;
25848  goto __pyx_L0;
25849  __pyx_L1_error:;
25850  __Pyx_XDECREF(__pyx_t_1);
25851  __Pyx_AddTraceback("WaveTools.NewWave.vDir.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25852  __pyx_r = -1;
25853  __pyx_L0:;
25854  __Pyx_RefNannyFinishContext();
25855  return __pyx_r;
25856 }
25857 
25858 /* Python wrapper */
25859 static int __pyx_pw_9WaveTools_7NewWave_4vDir_5__del__(PyObject *__pyx_v_self); /*proto*/
25860 static int __pyx_pw_9WaveTools_7NewWave_4vDir_5__del__(PyObject *__pyx_v_self) {
25861  int __pyx_r;
25862  __Pyx_RefNannyDeclarations
25863  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25864  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4vDir_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25865 
25866  /* function exit code */
25867  __Pyx_RefNannyFinishContext();
25868  return __pyx_r;
25869 }
25870 
25871 static int __pyx_pf_9WaveTools_7NewWave_4vDir_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25872  int __pyx_r;
25873  __Pyx_RefNannyDeclarations
25874  __Pyx_RefNannySetupContext("__del__", 0);
25875  __Pyx_INCREF(Py_None);
25876  __Pyx_GIVEREF(Py_None);
25877  __Pyx_GOTREF(__pyx_v_self->vDir);
25878  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
25879  __pyx_v_self->vDir = ((PyArrayObject *)Py_None);
25880 
25881  /* function exit code */
25882  __pyx_r = 0;
25883  __Pyx_RefNannyFinishContext();
25884  return __pyx_r;
25885 }
25886 
25887 /* Python wrapper */
25888 static PyObject *__pyx_pw_9WaveTools_7NewWave_4kDir_1__get__(PyObject *__pyx_v_self); /*proto*/
25889 static PyObject *__pyx_pw_9WaveTools_7NewWave_4kDir_1__get__(PyObject *__pyx_v_self) {
25890  PyObject *__pyx_r = 0;
25891  __Pyx_RefNannyDeclarations
25892  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25893  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4kDir___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25894 
25895  /* function exit code */
25896  __Pyx_RefNannyFinishContext();
25897  return __pyx_r;
25898 }
25899 
25900 static PyObject *__pyx_pf_9WaveTools_7NewWave_4kDir___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25901  PyObject *__pyx_r = NULL;
25902  __Pyx_RefNannyDeclarations
25903  __Pyx_RefNannySetupContext("__get__", 0);
25904  __Pyx_XDECREF(__pyx_r);
25905  __Pyx_INCREF(((PyObject *)__pyx_v_self->kDir));
25906  __pyx_r = ((PyObject *)__pyx_v_self->kDir);
25907  goto __pyx_L0;
25908 
25909  /* function exit code */
25910  __pyx_L0:;
25911  __Pyx_XGIVEREF(__pyx_r);
25912  __Pyx_RefNannyFinishContext();
25913  return __pyx_r;
25914 }
25915 
25916 /* Python wrapper */
25917 static int __pyx_pw_9WaveTools_7NewWave_4kDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
25918 static int __pyx_pw_9WaveTools_7NewWave_4kDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
25919  int __pyx_r;
25920  __Pyx_RefNannyDeclarations
25921  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
25922  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4kDir_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
25923 
25924  /* function exit code */
25925  __Pyx_RefNannyFinishContext();
25926  return __pyx_r;
25927 }
25928 
25929 static int __pyx_pf_9WaveTools_7NewWave_4kDir_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
25930  int __pyx_r;
25931  __Pyx_RefNannyDeclarations
25932  PyObject *__pyx_t_1 = NULL;
25933  int __pyx_lineno = 0;
25934  const char *__pyx_filename = NULL;
25935  int __pyx_clineno = 0;
25936  __Pyx_RefNannySetupContext("__set__", 0);
25937  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
25938  __pyx_t_1 = __pyx_v_value;
25939  __Pyx_INCREF(__pyx_t_1);
25940  __Pyx_GIVEREF(__pyx_t_1);
25941  __Pyx_GOTREF(__pyx_v_self->kDir);
25942  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
25943  __pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_1);
25944  __pyx_t_1 = 0;
25945 
25946  /* function exit code */
25947  __pyx_r = 0;
25948  goto __pyx_L0;
25949  __pyx_L1_error:;
25950  __Pyx_XDECREF(__pyx_t_1);
25951  __Pyx_AddTraceback("WaveTools.NewWave.kDir.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
25952  __pyx_r = -1;
25953  __pyx_L0:;
25954  __Pyx_RefNannyFinishContext();
25955  return __pyx_r;
25956 }
25957 
25958 /* Python wrapper */
25959 static int __pyx_pw_9WaveTools_7NewWave_4kDir_5__del__(PyObject *__pyx_v_self); /*proto*/
25960 static int __pyx_pw_9WaveTools_7NewWave_4kDir_5__del__(PyObject *__pyx_v_self) {
25961  int __pyx_r;
25962  __Pyx_RefNannyDeclarations
25963  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
25964  __pyx_r = __pyx_pf_9WaveTools_7NewWave_4kDir_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25965 
25966  /* function exit code */
25967  __Pyx_RefNannyFinishContext();
25968  return __pyx_r;
25969 }
25970 
25971 static int __pyx_pf_9WaveTools_7NewWave_4kDir_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
25972  int __pyx_r;
25973  __Pyx_RefNannyDeclarations
25974  __Pyx_RefNannySetupContext("__del__", 0);
25975  __Pyx_INCREF(Py_None);
25976  __Pyx_GIVEREF(Py_None);
25977  __Pyx_GOTREF(__pyx_v_self->kDir);
25978  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
25979  __pyx_v_self->kDir = ((PyArrayObject *)Py_None);
25980 
25981  /* function exit code */
25982  __pyx_r = 0;
25983  __Pyx_RefNannyFinishContext();
25984  return __pyx_r;
25985 }
25986 
25987 /* Python wrapper */
25988 static PyObject *__pyx_pw_9WaveTools_7NewWave_2ai_1__get__(PyObject *__pyx_v_self); /*proto*/
25989 static PyObject *__pyx_pw_9WaveTools_7NewWave_2ai_1__get__(PyObject *__pyx_v_self) {
25990  PyObject *__pyx_r = 0;
25991  __Pyx_RefNannyDeclarations
25992  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
25993  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2ai___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
25994 
25995  /* function exit code */
25996  __Pyx_RefNannyFinishContext();
25997  return __pyx_r;
25998 }
25999 
26000 static PyObject *__pyx_pf_9WaveTools_7NewWave_2ai___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
26001  PyObject *__pyx_r = NULL;
26002  __Pyx_RefNannyDeclarations
26003  __Pyx_RefNannySetupContext("__get__", 0);
26004  __Pyx_XDECREF(__pyx_r);
26005  __Pyx_INCREF(((PyObject *)__pyx_v_self->ai));
26006  __pyx_r = ((PyObject *)__pyx_v_self->ai);
26007  goto __pyx_L0;
26008 
26009  /* function exit code */
26010  __pyx_L0:;
26011  __Pyx_XGIVEREF(__pyx_r);
26012  __Pyx_RefNannyFinishContext();
26013  return __pyx_r;
26014 }
26015 
26016 /* Python wrapper */
26017 static int __pyx_pw_9WaveTools_7NewWave_2ai_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
26018 static int __pyx_pw_9WaveTools_7NewWave_2ai_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
26019  int __pyx_r;
26020  __Pyx_RefNannyDeclarations
26021  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
26022  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2ai_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
26023 
26024  /* function exit code */
26025  __Pyx_RefNannyFinishContext();
26026  return __pyx_r;
26027 }
26028 
26029 static int __pyx_pf_9WaveTools_7NewWave_2ai_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
26030  int __pyx_r;
26031  __Pyx_RefNannyDeclarations
26032  PyObject *__pyx_t_1 = NULL;
26033  int __pyx_lineno = 0;
26034  const char *__pyx_filename = NULL;
26035  int __pyx_clineno = 0;
26036  __Pyx_RefNannySetupContext("__set__", 0);
26037  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 100, __pyx_L1_error)
26038  __pyx_t_1 = __pyx_v_value;
26039  __Pyx_INCREF(__pyx_t_1);
26040  __Pyx_GIVEREF(__pyx_t_1);
26041  __Pyx_GOTREF(__pyx_v_self->ai);
26042  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
26043  __pyx_v_self->ai = ((PyArrayObject *)__pyx_t_1);
26044  __pyx_t_1 = 0;
26045 
26046  /* function exit code */
26047  __pyx_r = 0;
26048  goto __pyx_L0;
26049  __pyx_L1_error:;
26050  __Pyx_XDECREF(__pyx_t_1);
26051  __Pyx_AddTraceback("WaveTools.NewWave.ai.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
26052  __pyx_r = -1;
26053  __pyx_L0:;
26054  __Pyx_RefNannyFinishContext();
26055  return __pyx_r;
26056 }
26057 
26058 /* Python wrapper */
26059 static int __pyx_pw_9WaveTools_7NewWave_2ai_5__del__(PyObject *__pyx_v_self); /*proto*/
26060 static int __pyx_pw_9WaveTools_7NewWave_2ai_5__del__(PyObject *__pyx_v_self) {
26061  int __pyx_r;
26062  __Pyx_RefNannyDeclarations
26063  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
26064  __pyx_r = __pyx_pf_9WaveTools_7NewWave_2ai_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
26065 
26066  /* function exit code */
26067  __Pyx_RefNannyFinishContext();
26068  return __pyx_r;
26069 }
26070 
26071 static int __pyx_pf_9WaveTools_7NewWave_2ai_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
26072  int __pyx_r;
26073  __Pyx_RefNannyDeclarations
26074  __Pyx_RefNannySetupContext("__del__", 0);
26075  __Pyx_INCREF(Py_None);
26076  __Pyx_GIVEREF(Py_None);
26077  __Pyx_GOTREF(__pyx_v_self->ai);
26078  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
26079  __pyx_v_self->ai = ((PyArrayObject *)Py_None);
26080 
26081  /* function exit code */
26082  __pyx_r = 0;
26083  __Pyx_RefNannyFinishContext();
26084  return __pyx_r;
26085 }
26086 
26087 /* "WaveTools.pxd":101
26088  * int N
26089  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai
26090  * cdef object phi # <<<<<<<<<<<<<<
26091  * cdef double _cpp_eta(self , double* x, double t)
26092  * cdef void _cpp_u(self, double *U, double* x, double t)
26093  */
26094 
26095 /* Python wrapper */
26096 static PyObject *__pyx_pw_9WaveTools_7NewWave_3phi_1__get__(PyObject *__pyx_v_self); /*proto*/
26097 static PyObject *__pyx_pw_9WaveTools_7NewWave_3phi_1__get__(PyObject *__pyx_v_self) {
26098  PyObject *__pyx_r = 0;
26099  __Pyx_RefNannyDeclarations
26100  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
26101  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3phi___get__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
26102 
26103  /* function exit code */
26104  __Pyx_RefNannyFinishContext();
26105  return __pyx_r;
26106 }
26107 
26108 static PyObject *__pyx_pf_9WaveTools_7NewWave_3phi___get__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
26109  PyObject *__pyx_r = NULL;
26110  __Pyx_RefNannyDeclarations
26111  __Pyx_RefNannySetupContext("__get__", 0);
26112  __Pyx_XDECREF(__pyx_r);
26113  __Pyx_INCREF(__pyx_v_self->phi);
26114  __pyx_r = __pyx_v_self->phi;
26115  goto __pyx_L0;
26116 
26117  /* function exit code */
26118  __pyx_L0:;
26119  __Pyx_XGIVEREF(__pyx_r);
26120  __Pyx_RefNannyFinishContext();
26121  return __pyx_r;
26122 }
26123 
26124 /* Python wrapper */
26125 static int __pyx_pw_9WaveTools_7NewWave_3phi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
26126 static int __pyx_pw_9WaveTools_7NewWave_3phi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
26127  int __pyx_r;
26128  __Pyx_RefNannyDeclarations
26129  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
26130  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3phi_2__set__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v_value));
26131 
26132  /* function exit code */
26133  __Pyx_RefNannyFinishContext();
26134  return __pyx_r;
26135 }
26136 
26137 static int __pyx_pf_9WaveTools_7NewWave_3phi_2__set__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, PyObject *__pyx_v_value) {
26138  int __pyx_r;
26139  __Pyx_RefNannyDeclarations
26140  __Pyx_RefNannySetupContext("__set__", 0);
26141  __Pyx_INCREF(__pyx_v_value);
26142  __Pyx_GIVEREF(__pyx_v_value);
26143  __Pyx_GOTREF(__pyx_v_self->phi);
26144  __Pyx_DECREF(__pyx_v_self->phi);
26145  __pyx_v_self->phi = __pyx_v_value;
26146 
26147  /* function exit code */
26148  __pyx_r = 0;
26149  __Pyx_RefNannyFinishContext();
26150  return __pyx_r;
26151 }
26152 
26153 /* Python wrapper */
26154 static int __pyx_pw_9WaveTools_7NewWave_3phi_5__del__(PyObject *__pyx_v_self); /*proto*/
26155 static int __pyx_pw_9WaveTools_7NewWave_3phi_5__del__(PyObject *__pyx_v_self) {
26156  int __pyx_r;
26157  __Pyx_RefNannyDeclarations
26158  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
26159  __pyx_r = __pyx_pf_9WaveTools_7NewWave_3phi_4__del__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
26160 
26161  /* function exit code */
26162  __Pyx_RefNannyFinishContext();
26163  return __pyx_r;
26164 }
26165 
26166 static int __pyx_pf_9WaveTools_7NewWave_3phi_4__del__(struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
26167  int __pyx_r;
26168  __Pyx_RefNannyDeclarations
26169  __Pyx_RefNannySetupContext("__del__", 0);
26170  __Pyx_INCREF(Py_None);
26171  __Pyx_GIVEREF(Py_None);
26172  __Pyx_GOTREF(__pyx_v_self->phi);
26173  __Pyx_DECREF(__pyx_v_self->phi);
26174  __pyx_v_self->phi = Py_None;
26175 
26176  /* function exit code */
26177  __pyx_r = 0;
26178  __Pyx_RefNannyFinishContext();
26179  return __pyx_r;
26180 }
26181 
26182 /* "(tree fragment)":1
26183  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
26184  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26185  * def __setstate_cython__(self, __pyx_state):
26186  */
26187 
26188 /* Python wrapper */
26189 static PyObject *__pyx_pw_9WaveTools_7NewWave_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
26190 static PyMethodDef __pyx_mdef_9WaveTools_7NewWave_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_7NewWave_9__reduce_cython__, METH_NOARGS, 0};
26191 static PyObject *__pyx_pw_9WaveTools_7NewWave_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
26192  PyObject *__pyx_r = 0;
26193  __Pyx_RefNannyDeclarations
26194  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
26195  __pyx_r = __pyx_pf_9WaveTools_7NewWave_8__reduce_cython__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self));
26196 
26197  /* function exit code */
26198  __Pyx_RefNannyFinishContext();
26199  return __pyx_r;
26200 }
26201 
26202 static PyObject *__pyx_pf_9WaveTools_7NewWave_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self) {
26203  PyObject *__pyx_r = NULL;
26204  __Pyx_RefNannyDeclarations
26205  PyObject *__pyx_t_1 = NULL;
26206  int __pyx_lineno = 0;
26207  const char *__pyx_filename = NULL;
26208  int __pyx_clineno = 0;
26209  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
26210 
26211  /* "(tree fragment)":2
26212  * def __reduce_cython__(self):
26213  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
26214  * def __setstate_cython__(self, __pyx_state):
26215  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26216  */
26217  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
26218  __Pyx_GOTREF(__pyx_t_1);
26219  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
26220  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26221  __PYX_ERR(1, 2, __pyx_L1_error)
26222 
26223  /* "(tree fragment)":1
26224  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
26225  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26226  * def __setstate_cython__(self, __pyx_state):
26227  */
26228 
26229  /* function exit code */
26230  __pyx_L1_error:;
26231  __Pyx_XDECREF(__pyx_t_1);
26232  __Pyx_AddTraceback("WaveTools.NewWave.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
26233  __pyx_r = NULL;
26234  __Pyx_XGIVEREF(__pyx_r);
26235  __Pyx_RefNannyFinishContext();
26236  return __pyx_r;
26237 }
26238 
26239 /* "(tree fragment)":3
26240  * def __reduce_cython__(self):
26241  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26242  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
26243  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26244  */
26245 
26246 /* Python wrapper */
26247 static PyObject *__pyx_pw_9WaveTools_7NewWave_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
26248 static PyMethodDef __pyx_mdef_9WaveTools_7NewWave_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_7NewWave_11__setstate_cython__, METH_O, 0};
26249 static PyObject *__pyx_pw_9WaveTools_7NewWave_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
26250  PyObject *__pyx_r = 0;
26251  __Pyx_RefNannyDeclarations
26252  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
26253  __pyx_r = __pyx_pf_9WaveTools_7NewWave_10__setstate_cython__(((struct __pyx_obj_9WaveTools_NewWave *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
26254 
26255  /* function exit code */
26256  __Pyx_RefNannyFinishContext();
26257  return __pyx_r;
26258 }
26259 
26260 static PyObject *__pyx_pf_9WaveTools_7NewWave_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_NewWave *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
26261  PyObject *__pyx_r = NULL;
26262  __Pyx_RefNannyDeclarations
26263  PyObject *__pyx_t_1 = NULL;
26264  int __pyx_lineno = 0;
26265  const char *__pyx_filename = NULL;
26266  int __pyx_clineno = 0;
26267  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
26268 
26269  /* "(tree fragment)":4
26270  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26271  * def __setstate_cython__(self, __pyx_state):
26272  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
26273  */
26274  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
26275  __Pyx_GOTREF(__pyx_t_1);
26276  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
26277  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26278  __PYX_ERR(1, 4, __pyx_L1_error)
26279 
26280  /* "(tree fragment)":3
26281  * def __reduce_cython__(self):
26282  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26283  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
26284  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
26285  */
26286 
26287  /* function exit code */
26288  __pyx_L1_error:;
26289  __Pyx_XDECREF(__pyx_t_1);
26290  __Pyx_AddTraceback("WaveTools.NewWave.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
26291  __pyx_r = NULL;
26292  __Pyx_XGIVEREF(__pyx_r);
26293  __Pyx_RefNannyFinishContext();
26294  return __pyx_r;
26295 }
26296 
26297 /* "WaveTools.py":1432
26298  * Switch for optimised functions
26299  * """
26300  * def __cinit__(self, # <<<<<<<<<<<<<<
26301  * Tp,
26302  * Hs,
26303  */
26304 
26305 /* Python wrapper */
26306 static int __pyx_pw_9WaveTools_11RandomWaves_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
26307 static int __pyx_pw_9WaveTools_11RandomWaves_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
26308  PyObject *__pyx_v_Tp = 0;
26309  PyObject *__pyx_v_Hs = 0;
26310  PyObject *__pyx_v_mwl = 0;
26311  PyObject *__pyx_v_depth = 0;
26312  PyObject *__pyx_v_waveDir = 0;
26313  PyObject *__pyx_v_g = 0;
26314  PyObject *__pyx_v_N = 0;
26315  PyObject *__pyx_v_bandFactor = 0;
26316  PyObject *__pyx_v_spectName = 0;
26317  PyObject *__pyx_v_spectral_params = 0;
26318  PyObject *__pyx_v_phi = 0;
26319  PyObject *__pyx_v_fast = 0;
26320  int __pyx_lineno = 0;
26321  const char *__pyx_filename = NULL;
26322  int __pyx_clineno = 0;
26323  int __pyx_r;
26324  __Pyx_RefNannyDeclarations
26325  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
26326  {
26327  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,&__pyx_n_s_fast,0};
26328  PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
26329 
26330  /* "WaveTools.py":1442
26331  * bandFactor, #accelerationof gravity
26332  * spectName ,# random words will result in error and return the available spectra
26333  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
26334  * phi=None,
26335  * fast = True
26336  */
26337  values[9] = ((PyObject *)Py_None);
26338 
26339  /* "WaveTools.py":1443
26340  * spectName ,# random words will result in error and return the available spectra
26341  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
26342  * phi=None, # <<<<<<<<<<<<<<
26343  * fast = True
26344  * ):
26345  */
26346  values[10] = ((PyObject *)Py_None);
26347 
26348  /* "WaveTools.py":1444
26349  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
26350  * phi=None,
26351  * fast = True # <<<<<<<<<<<<<<
26352  * ):
26353  * self.fast= fast
26354  */
26355  values[11] = ((PyObject *)Py_True);
26356  if (unlikely(__pyx_kwds)) {
26357  Py_ssize_t kw_args;
26358  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
26359  switch (pos_args) {
26360  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
26361  CYTHON_FALLTHROUGH;
26362  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
26363  CYTHON_FALLTHROUGH;
26364  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
26365  CYTHON_FALLTHROUGH;
26366  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
26367  CYTHON_FALLTHROUGH;
26368  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
26369  CYTHON_FALLTHROUGH;
26370  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
26371  CYTHON_FALLTHROUGH;
26372  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
26373  CYTHON_FALLTHROUGH;
26374  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
26375  CYTHON_FALLTHROUGH;
26376  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
26377  CYTHON_FALLTHROUGH;
26378  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
26379  CYTHON_FALLTHROUGH;
26380  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
26381  CYTHON_FALLTHROUGH;
26382  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
26383  CYTHON_FALLTHROUGH;
26384  case 0: break;
26385  default: goto __pyx_L5_argtuple_error;
26386  }
26387  kw_args = PyDict_Size(__pyx_kwds);
26388  switch (pos_args) {
26389  case 0:
26390  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
26391  else goto __pyx_L5_argtuple_error;
26392  CYTHON_FALLTHROUGH;
26393  case 1:
26394  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
26395  else {
26396  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 1); __PYX_ERR(0, 1432, __pyx_L3_error)
26397  }
26398  CYTHON_FALLTHROUGH;
26399  case 2:
26400  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
26401  else {
26402  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 2); __PYX_ERR(0, 1432, __pyx_L3_error)
26403  }
26404  CYTHON_FALLTHROUGH;
26405  case 3:
26406  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
26407  else {
26408  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 3); __PYX_ERR(0, 1432, __pyx_L3_error)
26409  }
26410  CYTHON_FALLTHROUGH;
26411  case 4:
26412  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
26413  else {
26414  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 4); __PYX_ERR(0, 1432, __pyx_L3_error)
26415  }
26416  CYTHON_FALLTHROUGH;
26417  case 5:
26418  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
26419  else {
26420  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 5); __PYX_ERR(0, 1432, __pyx_L3_error)
26421  }
26422  CYTHON_FALLTHROUGH;
26423  case 6:
26424  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
26425  else {
26426  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 6); __PYX_ERR(0, 1432, __pyx_L3_error)
26427  }
26428  CYTHON_FALLTHROUGH;
26429  case 7:
26430  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
26431  else {
26432  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 7); __PYX_ERR(0, 1432, __pyx_L3_error)
26433  }
26434  CYTHON_FALLTHROUGH;
26435  case 8:
26436  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
26437  else {
26438  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, 8); __PYX_ERR(0, 1432, __pyx_L3_error)
26439  }
26440  CYTHON_FALLTHROUGH;
26441  case 9:
26442  if (kw_args > 0) {
26443  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params);
26444  if (value) { values[9] = value; kw_args--; }
26445  }
26446  CYTHON_FALLTHROUGH;
26447  case 10:
26448  if (kw_args > 0) {
26449  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi);
26450  if (value) { values[10] = value; kw_args--; }
26451  }
26452  CYTHON_FALLTHROUGH;
26453  case 11:
26454  if (kw_args > 0) {
26455  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
26456  if (value) { values[11] = value; kw_args--; }
26457  }
26458  }
26459  if (unlikely(kw_args > 0)) {
26460  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1432, __pyx_L3_error)
26461  }
26462  } else {
26463  switch (PyTuple_GET_SIZE(__pyx_args)) {
26464  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
26465  CYTHON_FALLTHROUGH;
26466  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
26467  CYTHON_FALLTHROUGH;
26468  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
26469  CYTHON_FALLTHROUGH;
26470  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
26471  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
26472  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
26473  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
26474  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
26475  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
26476  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
26477  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
26478  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
26479  break;
26480  default: goto __pyx_L5_argtuple_error;
26481  }
26482  }
26483  __pyx_v_Tp = values[0];
26484  __pyx_v_Hs = values[1];
26485  __pyx_v_mwl = values[2];
26486  __pyx_v_depth = values[3];
26487  __pyx_v_waveDir = values[4];
26488  __pyx_v_g = values[5];
26489  __pyx_v_N = values[6];
26490  __pyx_v_bandFactor = values[7];
26491  __pyx_v_spectName = values[8];
26492  __pyx_v_spectral_params = values[9];
26493  __pyx_v_phi = values[10];
26494  __pyx_v_fast = values[11];
26495  }
26496  goto __pyx_L4_argument_unpacking_done;
26497  __pyx_L5_argtuple_error:;
26498  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 9, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1432, __pyx_L3_error)
26499  __pyx_L3_error:;
26500  __Pyx_AddTraceback("WaveTools.RandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
26501  __Pyx_RefNannyFinishContext();
26502  return -1;
26503  __pyx_L4_argument_unpacking_done:;
26504  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves___cinit__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi, __pyx_v_fast);
26505 
26506  /* "WaveTools.py":1432
26507  * Switch for optimised functions
26508  * """
26509  * def __cinit__(self, # <<<<<<<<<<<<<<
26510  * Tp,
26511  * Hs,
26512  */
26513 
26514  /* function exit code */
26515  __Pyx_RefNannyFinishContext();
26516  return __pyx_r;
26517 }
26518 
26519 static int __pyx_pf_9WaveTools_11RandomWaves___cinit__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_fast) {
26520  PyObject *__pyx_v_validSpectra = NULL;
26521  PyObject *__pyx_v_spec_fun = NULL;
26522  PyObject *__pyx_v_f_c = NULL;
26523  PyObject *__pyx_v_S_c = NULL;
26524  double __pyx_v_fmax;
26525  PyObject *__pyx_v_fmin = NULL;
26526  PyObject *__pyx_v_omega_p = NULL;
26527  PyObject *__pyx_v_fim = NULL;
26528  PyObject *__pyx_v_ii = NULL;
26529  PyObject *__pyx_v_ij = NULL;
26530  PyObject *__pyx_v_kk = NULL;
26531  int __pyx_r;
26532  __Pyx_RefNannyDeclarations
26533  bool __pyx_t_1;
26534  PyObject *__pyx_t_2 = NULL;
26535  PyObject *__pyx_t_3 = NULL;
26536  PyObject *__pyx_t_4 = NULL;
26537  PyObject *__pyx_t_5 = NULL;
26538  int __pyx_t_6;
26539  int __pyx_t_7;
26540  PyObject *__pyx_t_8 = NULL;
26541  PyObject *__pyx_t_9 = NULL;
26542  PyObject *__pyx_t_10 = NULL;
26543  PyObject *__pyx_t_11 = NULL;
26544  PyObject *__pyx_t_12 = NULL;
26545  double __pyx_t_13;
26546  Py_ssize_t __pyx_t_14;
26547  int __pyx_t_15;
26548  PyObject *__pyx_t_16 = NULL;
26549  PyObject *(*__pyx_t_17)(PyObject *);
26550  Py_ssize_t __pyx_t_18;
26551  double *__pyx_t_19;
26552  PyObject *(*__pyx_t_20)(PyObject *);
26553  Py_ssize_t __pyx_t_21;
26554  int __pyx_lineno = 0;
26555  const char *__pyx_filename = NULL;
26556  int __pyx_clineno = 0;
26557  __Pyx_RefNannySetupContext("__cinit__", 0);
26558  __Pyx_INCREF(__pyx_v_waveDir);
26559 
26560  /* "WaveTools.py":1446
26561  * fast = True
26562  * ):
26563  * self.fast= fast # <<<<<<<<<<<<<<
26564  * validSpectra = [JONSWAP,PM_mod,custom]
26565  * spec_fun =loadExistingFunction(spectName, validSpectra)
26566  */
26567  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1446, __pyx_L1_error)
26568  __pyx_v_self->fast = __pyx_t_1;
26569 
26570  /* "WaveTools.py":1447
26571  * ):
26572  * self.fast= fast
26573  * validSpectra = [JONSWAP,PM_mod,custom] # <<<<<<<<<<<<<<
26574  * spec_fun =loadExistingFunction(spectName, validSpectra)
26575  * if spec_fun.__name__=="custom":
26576  */
26577  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_JONSWAP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1447, __pyx_L1_error)
26578  __Pyx_GOTREF(__pyx_t_2);
26579  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PM_mod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1447, __pyx_L1_error)
26580  __Pyx_GOTREF(__pyx_t_3);
26581  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_custom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1447, __pyx_L1_error)
26582  __Pyx_GOTREF(__pyx_t_4);
26583  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1447, __pyx_L1_error)
26584  __Pyx_GOTREF(__pyx_t_5);
26585  __Pyx_GIVEREF(__pyx_t_2);
26586  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
26587  __Pyx_GIVEREF(__pyx_t_3);
26588  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
26589  __Pyx_GIVEREF(__pyx_t_4);
26590  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
26591  __pyx_t_2 = 0;
26592  __pyx_t_3 = 0;
26593  __pyx_t_4 = 0;
26594  __pyx_v_validSpectra = ((PyObject*)__pyx_t_5);
26595  __pyx_t_5 = 0;
26596 
26597  /* "WaveTools.py":1448
26598  * self.fast= fast
26599  * validSpectra = [JONSWAP,PM_mod,custom]
26600  * spec_fun =loadExistingFunction(spectName, validSpectra) # <<<<<<<<<<<<<<
26601  * if spec_fun.__name__=="custom":
26602  * try:
26603  */
26604  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1448, __pyx_L1_error)
26605  __Pyx_GOTREF(__pyx_t_4);
26606  __pyx_t_3 = NULL;
26607  __pyx_t_6 = 0;
26608  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
26609  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
26610  if (likely(__pyx_t_3)) {
26611  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
26612  __Pyx_INCREF(__pyx_t_3);
26613  __Pyx_INCREF(function);
26614  __Pyx_DECREF_SET(__pyx_t_4, function);
26615  __pyx_t_6 = 1;
26616  }
26617  }
26618  #if CYTHON_FAST_PYCALL
26619  if (PyFunction_Check(__pyx_t_4)) {
26620  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_spectName, __pyx_v_validSpectra};
26621  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1448, __pyx_L1_error)
26622  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
26623  __Pyx_GOTREF(__pyx_t_5);
26624  } else
26625  #endif
26626  #if CYTHON_FAST_PYCCALL
26627  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
26628  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_spectName, __pyx_v_validSpectra};
26629  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1448, __pyx_L1_error)
26630  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
26631  __Pyx_GOTREF(__pyx_t_5);
26632  } else
26633  #endif
26634  {
26635  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1448, __pyx_L1_error)
26636  __Pyx_GOTREF(__pyx_t_2);
26637  if (__pyx_t_3) {
26638  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
26639  }
26640  __Pyx_INCREF(__pyx_v_spectName);
26641  __Pyx_GIVEREF(__pyx_v_spectName);
26642  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_spectName);
26643  __Pyx_INCREF(__pyx_v_validSpectra);
26644  __Pyx_GIVEREF(__pyx_v_validSpectra);
26645  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_validSpectra);
26646  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1448, __pyx_L1_error)
26647  __Pyx_GOTREF(__pyx_t_5);
26648  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26649  }
26650  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
26651  __pyx_v_spec_fun = __pyx_t_5;
26652  __pyx_t_5 = 0;
26653 
26654  /* "WaveTools.py":1449
26655  * validSpectra = [JONSWAP,PM_mod,custom]
26656  * spec_fun =loadExistingFunction(spectName, validSpectra)
26657  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
26658  * try:
26659  * f_c=spectral_params["freq_array"]
26660  */
26661  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_spec_fun, __pyx_n_s_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1449, __pyx_L1_error)
26662  __Pyx_GOTREF(__pyx_t_5);
26663  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_custom, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1449, __pyx_L1_error)
26664  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26665  if (__pyx_t_7) {
26666 
26667  /* "WaveTools.py":1450
26668  * spec_fun =loadExistingFunction(spectName, validSpectra)
26669  * if spec_fun.__name__=="custom":
26670  * try: # <<<<<<<<<<<<<<
26671  * f_c=spectral_params["freq_array"]
26672  * S_c=spectral_params["freq_S"]
26673  */
26674  {
26675  __Pyx_PyThreadState_declare
26676  __Pyx_PyThreadState_assign
26677  __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
26678  __Pyx_XGOTREF(__pyx_t_8);
26679  __Pyx_XGOTREF(__pyx_t_9);
26680  __Pyx_XGOTREF(__pyx_t_10);
26681  /*try:*/ {
26682 
26683  /* "WaveTools.py":1451
26684  * if spec_fun.__name__=="custom":
26685  * try:
26686  * f_c=spectral_params["freq_array"] # <<<<<<<<<<<<<<
26687  * S_c=spectral_params["freq_S"]
26688  * except:
26689  */
26690  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_spectral_params, __pyx_n_s_freq_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1451, __pyx_L4_error)
26691  __Pyx_GOTREF(__pyx_t_5);
26692  __pyx_v_f_c = __pyx_t_5;
26693  __pyx_t_5 = 0;
26694 
26695  /* "WaveTools.py":1452
26696  * try:
26697  * f_c=spectral_params["freq_array"]
26698  * S_c=spectral_params["freq_S"] # <<<<<<<<<<<<<<
26699  * except:
26700  * logEvent('ERROR!: Custom parameters not set')
26701  */
26702  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_spectral_params, __pyx_n_s_freq_S); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1452, __pyx_L4_error)
26703  __Pyx_GOTREF(__pyx_t_5);
26704  __pyx_v_S_c = __pyx_t_5;
26705  __pyx_t_5 = 0;
26706 
26707  /* "WaveTools.py":1450
26708  * spec_fun =loadExistingFunction(spectName, validSpectra)
26709  * if spec_fun.__name__=="custom":
26710  * try: # <<<<<<<<<<<<<<
26711  * f_c=spectral_params["freq_array"]
26712  * S_c=spectral_params["freq_S"]
26713  */
26714  }
26715  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
26716  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
26717  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
26718  goto __pyx_L9_try_end;
26719  __pyx_L4_error:;
26720  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
26721  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
26722  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26723  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
26724 
26725  /* "WaveTools.py":1453
26726  * f_c=spectral_params["freq_array"]
26727  * S_c=spectral_params["freq_S"]
26728  * except: # <<<<<<<<<<<<<<
26729  * logEvent('ERROR!: Custom parameters not set')
26730  * sys.exit(1)
26731  */
26732  /*except:*/ {
26733  __Pyx_AddTraceback("WaveTools.RandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
26734  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(0, 1453, __pyx_L6_except_error)
26735  __Pyx_GOTREF(__pyx_t_5);
26736  __Pyx_GOTREF(__pyx_t_4);
26737  __Pyx_GOTREF(__pyx_t_2);
26738 
26739  /* "WaveTools.py":1454
26740  * S_c=spectral_params["freq_S"]
26741  * except:
26742  * logEvent('ERROR!: Custom parameters not set') # <<<<<<<<<<<<<<
26743  * sys.exit(1)
26744  * self.g = np.array(g)
26745  */
26746  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1454, __pyx_L6_except_error)
26747  __Pyx_GOTREF(__pyx_t_11);
26748  __pyx_t_12 = NULL;
26749  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
26750  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
26751  if (likely(__pyx_t_12)) {
26752  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
26753  __Pyx_INCREF(__pyx_t_12);
26754  __Pyx_INCREF(function);
26755  __Pyx_DECREF_SET(__pyx_t_11, function);
26756  }
26757  }
26758  __pyx_t_3 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_kp_s_ERROR_Custom_parameters_not_set) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_kp_s_ERROR_Custom_parameters_not_set);
26759  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
26760  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1454, __pyx_L6_except_error)
26761  __Pyx_GOTREF(__pyx_t_3);
26762  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
26763  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26764 
26765  /* "WaveTools.py":1455
26766  * except:
26767  * logEvent('ERROR!: Custom parameters not set')
26768  * sys.exit(1) # <<<<<<<<<<<<<<
26769  * self.g = np.array(g)
26770  * waveDir = setDirVector(np.array(waveDir))
26771  */
26772  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1455, __pyx_L6_except_error)
26773  __Pyx_GOTREF(__pyx_t_11);
26774  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1455, __pyx_L6_except_error)
26775  __Pyx_GOTREF(__pyx_t_12);
26776  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
26777  __pyx_t_11 = NULL;
26778  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
26779  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
26780  if (likely(__pyx_t_11)) {
26781  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
26782  __Pyx_INCREF(__pyx_t_11);
26783  __Pyx_INCREF(function);
26784  __Pyx_DECREF_SET(__pyx_t_12, function);
26785  }
26786  }
26787  __pyx_t_3 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_11, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_int_1);
26788  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
26789  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1455, __pyx_L6_except_error)
26790  __Pyx_GOTREF(__pyx_t_3);
26791  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
26792  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26793  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
26794  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26795  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
26796  goto __pyx_L5_exception_handled;
26797  }
26798  __pyx_L6_except_error:;
26799 
26800  /* "WaveTools.py":1450
26801  * spec_fun =loadExistingFunction(spectName, validSpectra)
26802  * if spec_fun.__name__=="custom":
26803  * try: # <<<<<<<<<<<<<<
26804  * f_c=spectral_params["freq_array"]
26805  * S_c=spectral_params["freq_S"]
26806  */
26807  __Pyx_XGIVEREF(__pyx_t_8);
26808  __Pyx_XGIVEREF(__pyx_t_9);
26809  __Pyx_XGIVEREF(__pyx_t_10);
26810  __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
26811  goto __pyx_L1_error;
26812  __pyx_L5_exception_handled:;
26813  __Pyx_XGIVEREF(__pyx_t_8);
26814  __Pyx_XGIVEREF(__pyx_t_9);
26815  __Pyx_XGIVEREF(__pyx_t_10);
26816  __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
26817  __pyx_L9_try_end:;
26818  }
26819 
26820  /* "WaveTools.py":1449
26821  * validSpectra = [JONSWAP,PM_mod,custom]
26822  * spec_fun =loadExistingFunction(spectName, validSpectra)
26823  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
26824  * try:
26825  * f_c=spectral_params["freq_array"]
26826  */
26827  }
26828 
26829  /* "WaveTools.py":1456
26830  * logEvent('ERROR!: Custom parameters not set')
26831  * sys.exit(1)
26832  * self.g = np.array(g) # <<<<<<<<<<<<<<
26833  * waveDir = setDirVector(np.array(waveDir))
26834  * self.waveDir = waveDir
26835  */
26836  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1456, __pyx_L1_error)
26837  __Pyx_GOTREF(__pyx_t_4);
26838  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1456, __pyx_L1_error)
26839  __Pyx_GOTREF(__pyx_t_5);
26840  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
26841  __pyx_t_4 = NULL;
26842  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
26843  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
26844  if (likely(__pyx_t_4)) {
26845  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
26846  __Pyx_INCREF(__pyx_t_4);
26847  __Pyx_INCREF(function);
26848  __Pyx_DECREF_SET(__pyx_t_5, function);
26849  }
26850  }
26851  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g);
26852  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26853  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error)
26854  __Pyx_GOTREF(__pyx_t_2);
26855  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26856  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1456, __pyx_L1_error)
26857  __Pyx_GIVEREF(__pyx_t_2);
26858  __Pyx_GOTREF(__pyx_v_self->g);
26859  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
26860  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_2);
26861  __pyx_t_2 = 0;
26862 
26863  /* "WaveTools.py":1457
26864  * sys.exit(1)
26865  * self.g = np.array(g)
26866  * waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
26867  * self.waveDir = waveDir
26868  * self.vDir = setVertDir(g)
26869  */
26870  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1457, __pyx_L1_error)
26871  __Pyx_GOTREF(__pyx_t_5);
26872  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1457, __pyx_L1_error)
26873  __Pyx_GOTREF(__pyx_t_3);
26874  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1457, __pyx_L1_error)
26875  __Pyx_GOTREF(__pyx_t_12);
26876  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26877  __pyx_t_3 = NULL;
26878  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
26879  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12);
26880  if (likely(__pyx_t_3)) {
26881  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
26882  __Pyx_INCREF(__pyx_t_3);
26883  __Pyx_INCREF(function);
26884  __Pyx_DECREF_SET(__pyx_t_12, function);
26885  }
26886  }
26887  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_3, __pyx_v_waveDir) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_waveDir);
26888  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
26889  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1457, __pyx_L1_error)
26890  __Pyx_GOTREF(__pyx_t_4);
26891  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
26892  __pyx_t_12 = NULL;
26893  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
26894  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
26895  if (likely(__pyx_t_12)) {
26896  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
26897  __Pyx_INCREF(__pyx_t_12);
26898  __Pyx_INCREF(function);
26899  __Pyx_DECREF_SET(__pyx_t_5, function);
26900  }
26901  }
26902  __pyx_t_2 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_12, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4);
26903  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
26904  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
26905  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1457, __pyx_L1_error)
26906  __Pyx_GOTREF(__pyx_t_2);
26907  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26908  __Pyx_DECREF_SET(__pyx_v_waveDir, __pyx_t_2);
26909  __pyx_t_2 = 0;
26910 
26911  /* "WaveTools.py":1458
26912  * self.g = np.array(g)
26913  * waveDir = setDirVector(np.array(waveDir))
26914  * self.waveDir = waveDir # <<<<<<<<<<<<<<
26915  * self.vDir = setVertDir(g)
26916  * dirCheck(self.waveDir,self.vDir)
26917  */
26918  if (!(likely(((__pyx_v_waveDir) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_waveDir, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1458, __pyx_L1_error)
26919  __pyx_t_2 = __pyx_v_waveDir;
26920  __Pyx_INCREF(__pyx_t_2);
26921  __Pyx_GIVEREF(__pyx_t_2);
26922  __Pyx_GOTREF(__pyx_v_self->waveDir);
26923  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
26924  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_2);
26925  __pyx_t_2 = 0;
26926 
26927  /* "WaveTools.py":1459
26928  * waveDir = setDirVector(np.array(waveDir))
26929  * self.waveDir = waveDir
26930  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
26931  * dirCheck(self.waveDir,self.vDir)
26932  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
26933  */
26934  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1459, __pyx_L1_error)
26935  __Pyx_GOTREF(__pyx_t_5);
26936  __pyx_t_4 = NULL;
26937  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
26938  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
26939  if (likely(__pyx_t_4)) {
26940  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
26941  __Pyx_INCREF(__pyx_t_4);
26942  __Pyx_INCREF(function);
26943  __Pyx_DECREF_SET(__pyx_t_5, function);
26944  }
26945  }
26946  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g);
26947  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26948  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1459, __pyx_L1_error)
26949  __Pyx_GOTREF(__pyx_t_2);
26950  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26951  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1459, __pyx_L1_error)
26952  __Pyx_GIVEREF(__pyx_t_2);
26953  __Pyx_GOTREF(__pyx_v_self->vDir);
26954  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
26955  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_2);
26956  __pyx_t_2 = 0;
26957 
26958  /* "WaveTools.py":1460
26959  * self.waveDir = waveDir
26960  * self.vDir = setVertDir(g)
26961  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
26962  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
26963  * self.Hs = Hs
26964  */
26965  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_dirCheck); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1460, __pyx_L1_error)
26966  __Pyx_GOTREF(__pyx_t_5);
26967  __pyx_t_4 = NULL;
26968  __pyx_t_6 = 0;
26969  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
26970  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
26971  if (likely(__pyx_t_4)) {
26972  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
26973  __Pyx_INCREF(__pyx_t_4);
26974  __Pyx_INCREF(function);
26975  __Pyx_DECREF_SET(__pyx_t_5, function);
26976  __pyx_t_6 = 1;
26977  }
26978  }
26979  #if CYTHON_FAST_PYCALL
26980  if (PyFunction_Check(__pyx_t_5)) {
26981  PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
26982  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1460, __pyx_L1_error)
26983  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26984  __Pyx_GOTREF(__pyx_t_2);
26985  } else
26986  #endif
26987  #if CYTHON_FAST_PYCCALL
26988  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
26989  PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
26990  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1460, __pyx_L1_error)
26991  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26992  __Pyx_GOTREF(__pyx_t_2);
26993  } else
26994  #endif
26995  {
26996  __pyx_t_12 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1460, __pyx_L1_error)
26997  __Pyx_GOTREF(__pyx_t_12);
26998  if (__pyx_t_4) {
26999  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4); __pyx_t_4 = NULL;
27000  }
27001  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
27002  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->waveDir));
27003  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, ((PyObject *)__pyx_v_self->waveDir));
27004  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
27005  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->vDir));
27006  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, ((PyObject *)__pyx_v_self->vDir));
27007  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1460, __pyx_L1_error)
27008  __Pyx_GOTREF(__pyx_t_2);
27009  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27010  }
27011  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27012  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27013 
27014  /* "WaveTools.py":1461
27015  * self.vDir = setVertDir(g)
27016  * dirCheck(self.waveDir,self.vDir)
27017  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
27018  * self.Hs = Hs
27019  * self.depth = depth
27020  */
27021  __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error)
27022  __Pyx_GOTREF(__pyx_t_2);
27023  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1461, __pyx_L1_error)
27024  __Pyx_GOTREF(__pyx_t_5);
27025  __pyx_t_12 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1461, __pyx_L1_error)
27026  __Pyx_GOTREF(__pyx_t_12);
27027  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27028  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27029  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1461, __pyx_L1_error)
27030  __Pyx_GOTREF(__pyx_t_5);
27031  __pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error)
27032  __Pyx_GOTREF(__pyx_t_2);
27033  __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1461, __pyx_L1_error)
27034  __Pyx_GOTREF(__pyx_t_4);
27035  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27036  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27037  __pyx_t_2 = PyNumber_Add(__pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error)
27038  __Pyx_GOTREF(__pyx_t_2);
27039  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27040  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27041  __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1461, __pyx_L1_error)
27042  __Pyx_GOTREF(__pyx_t_4);
27043  __pyx_t_12 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->g), 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1461, __pyx_L1_error)
27044  __Pyx_GOTREF(__pyx_t_12);
27045  __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1461, __pyx_L1_error)
27046  __Pyx_GOTREF(__pyx_t_5);
27047  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27048  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27049  __pyx_t_12 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1461, __pyx_L1_error)
27050  __Pyx_GOTREF(__pyx_t_12);
27051  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27052  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27053  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1461, __pyx_L1_error)
27054  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27055  __pyx_v_self->gAbs = sqrt(__pyx_t_13);
27056 
27057  /* "WaveTools.py":1462
27058  * dirCheck(self.waveDir,self.vDir)
27059  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
27060  * self.Hs = Hs # <<<<<<<<<<<<<<
27061  * self.depth = depth
27062  * self.Tp = Tp
27063  */
27064  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_Hs); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1462, __pyx_L1_error)
27065  __pyx_v_self->Hs = __pyx_t_13;
27066 
27067  /* "WaveTools.py":1463
27068  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
27069  * self.Hs = Hs
27070  * self.depth = depth # <<<<<<<<<<<<<<
27071  * self.Tp = Tp
27072  * self.fp = old_div(1.,Tp)
27073  */
27074  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1463, __pyx_L1_error)
27075  __pyx_v_self->depth = __pyx_t_13;
27076 
27077  /* "WaveTools.py":1464
27078  * self.Hs = Hs
27079  * self.depth = depth
27080  * self.Tp = Tp # <<<<<<<<<<<<<<
27081  * self.fp = old_div(1.,Tp)
27082  * self.bandFactor = bandFactor
27083  */
27084  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_Tp); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1464, __pyx_L1_error)
27085  __pyx_v_self->Tp = __pyx_t_13;
27086 
27087  /* "WaveTools.py":1465
27088  * self.depth = depth
27089  * self.Tp = Tp
27090  * self.fp = old_div(1.,Tp) # <<<<<<<<<<<<<<
27091  * self.bandFactor = bandFactor
27092  * self.N = N
27093  */
27094  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1465, __pyx_L1_error)
27095  __Pyx_GOTREF(__pyx_t_5);
27096  __pyx_t_2 = NULL;
27097  __pyx_t_6 = 0;
27098  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
27099  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
27100  if (likely(__pyx_t_2)) {
27101  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
27102  __Pyx_INCREF(__pyx_t_2);
27103  __Pyx_INCREF(function);
27104  __Pyx_DECREF_SET(__pyx_t_5, function);
27105  __pyx_t_6 = 1;
27106  }
27107  }
27108  #if CYTHON_FAST_PYCALL
27109  if (PyFunction_Check(__pyx_t_5)) {
27110  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_float_1_, __pyx_v_Tp};
27111  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1465, __pyx_L1_error)
27112  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27113  __Pyx_GOTREF(__pyx_t_12);
27114  } else
27115  #endif
27116  #if CYTHON_FAST_PYCCALL
27117  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
27118  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_float_1_, __pyx_v_Tp};
27119  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1465, __pyx_L1_error)
27120  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27121  __Pyx_GOTREF(__pyx_t_12);
27122  } else
27123  #endif
27124  {
27125  __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1465, __pyx_L1_error)
27126  __Pyx_GOTREF(__pyx_t_4);
27127  if (__pyx_t_2) {
27128  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
27129  }
27130  __Pyx_INCREF(__pyx_float_1_);
27131  __Pyx_GIVEREF(__pyx_float_1_);
27132  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_float_1_);
27133  __Pyx_INCREF(__pyx_v_Tp);
27134  __Pyx_GIVEREF(__pyx_v_Tp);
27135  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_Tp);
27136  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1465, __pyx_L1_error)
27137  __Pyx_GOTREF(__pyx_t_12);
27138  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27139  }
27140  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27141  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1465, __pyx_L1_error)
27142  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27143  __pyx_v_self->fp = __pyx_t_13;
27144 
27145  /* "WaveTools.py":1466
27146  * self.Tp = Tp
27147  * self.fp = old_div(1.,Tp)
27148  * self.bandFactor = bandFactor # <<<<<<<<<<<<<<
27149  * self.N = N
27150  * if spec_fun.__name__=="custom":
27151  */
27152  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_bandFactor); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1466, __pyx_L1_error)
27153  __pyx_v_self->bandFactor = __pyx_t_13;
27154 
27155  /* "WaveTools.py":1467
27156  * self.fp = old_div(1.,Tp)
27157  * self.bandFactor = bandFactor
27158  * self.N = N # <<<<<<<<<<<<<<
27159  * if spec_fun.__name__=="custom":
27160  * self.N =len(f_c)
27161  */
27162  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_N); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1467, __pyx_L1_error)
27163  __pyx_v_self->N = __pyx_t_6;
27164 
27165  /* "WaveTools.py":1468
27166  * self.bandFactor = bandFactor
27167  * self.N = N
27168  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
27169  * self.N =len(f_c)
27170  * self.mwl = mwl
27171  */
27172  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_spec_fun, __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1468, __pyx_L1_error)
27173  __Pyx_GOTREF(__pyx_t_12);
27174  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_12, __pyx_n_s_custom, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1468, __pyx_L1_error)
27175  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27176  if (__pyx_t_7) {
27177 
27178  /* "WaveTools.py":1469
27179  * self.N = N
27180  * if spec_fun.__name__=="custom":
27181  * self.N =len(f_c) # <<<<<<<<<<<<<<
27182  * self.mwl = mwl
27183  * fmax = self.bandFactor*self.fp
27184  */
27185  if (unlikely(!__pyx_v_f_c)) { __Pyx_RaiseUnboundLocalError("f_c"); __PYX_ERR(0, 1469, __pyx_L1_error) }
27186  __pyx_t_14 = PyObject_Length(__pyx_v_f_c); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1469, __pyx_L1_error)
27187  __pyx_v_self->N = __pyx_t_14;
27188 
27189  /* "WaveTools.py":1468
27190  * self.bandFactor = bandFactor
27191  * self.N = N
27192  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
27193  * self.N =len(f_c)
27194  * self.mwl = mwl
27195  */
27196  }
27197 
27198  /* "WaveTools.py":1470
27199  * if spec_fun.__name__=="custom":
27200  * self.N =len(f_c)
27201  * self.mwl = mwl # <<<<<<<<<<<<<<
27202  * fmax = self.bandFactor*self.fp
27203  * fmin = old_div(self.fp,self.bandFactor)
27204  */
27205  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1470, __pyx_L1_error)
27206  __pyx_v_self->mwl = __pyx_t_13;
27207 
27208  /* "WaveTools.py":1471
27209  * self.N =len(f_c)
27210  * self.mwl = mwl
27211  * fmax = self.bandFactor*self.fp # <<<<<<<<<<<<<<
27212  * fmin = old_div(self.fp,self.bandFactor)
27213  * self.df = old_div((fmax-fmin),float(self.N-1))
27214  */
27215  __pyx_v_fmax = (__pyx_v_self->bandFactor * __pyx_v_self->fp);
27216 
27217  /* "WaveTools.py":1472
27218  * self.mwl = mwl
27219  * fmax = self.bandFactor*self.fp
27220  * fmin = old_div(self.fp,self.bandFactor) # <<<<<<<<<<<<<<
27221  * self.df = old_div((fmax-fmin),float(self.N-1))
27222  * if spec_fun.__name__=="custom":
27223  */
27224  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1472, __pyx_L1_error)
27225  __Pyx_GOTREF(__pyx_t_5);
27226  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->fp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1472, __pyx_L1_error)
27227  __Pyx_GOTREF(__pyx_t_4);
27228  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->bandFactor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1472, __pyx_L1_error)
27229  __Pyx_GOTREF(__pyx_t_2);
27230  __pyx_t_3 = NULL;
27231  __pyx_t_6 = 0;
27232  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
27233  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
27234  if (likely(__pyx_t_3)) {
27235  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
27236  __Pyx_INCREF(__pyx_t_3);
27237  __Pyx_INCREF(function);
27238  __Pyx_DECREF_SET(__pyx_t_5, function);
27239  __pyx_t_6 = 1;
27240  }
27241  }
27242  #if CYTHON_FAST_PYCALL
27243  if (PyFunction_Check(__pyx_t_5)) {
27244  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_2};
27245  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1472, __pyx_L1_error)
27246  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
27247  __Pyx_GOTREF(__pyx_t_12);
27248  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27249  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27250  } else
27251  #endif
27252  #if CYTHON_FAST_PYCCALL
27253  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
27254  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_2};
27255  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1472, __pyx_L1_error)
27256  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
27257  __Pyx_GOTREF(__pyx_t_12);
27258  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27259  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27260  } else
27261  #endif
27262  {
27263  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1472, __pyx_L1_error)
27264  __Pyx_GOTREF(__pyx_t_11);
27265  if (__pyx_t_3) {
27266  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
27267  }
27268  __Pyx_GIVEREF(__pyx_t_4);
27269  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_t_4);
27270  __Pyx_GIVEREF(__pyx_t_2);
27271  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_2);
27272  __pyx_t_4 = 0;
27273  __pyx_t_2 = 0;
27274  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1472, __pyx_L1_error)
27275  __Pyx_GOTREF(__pyx_t_12);
27276  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27277  }
27278  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27279  __pyx_v_fmin = __pyx_t_12;
27280  __pyx_t_12 = 0;
27281 
27282  /* "WaveTools.py":1473
27283  * fmax = self.bandFactor*self.fp
27284  * fmin = old_div(self.fp,self.bandFactor)
27285  * self.df = old_div((fmax-fmin),float(self.N-1)) # <<<<<<<<<<<<<<
27286  * if spec_fun.__name__=="custom":
27287  * self.df = f_c[1]-f_c[0]
27288  */
27289  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1473, __pyx_L1_error)
27290  __Pyx_GOTREF(__pyx_t_5);
27291  __pyx_t_11 = PyFloat_FromDouble(__pyx_v_fmax); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1473, __pyx_L1_error)
27292  __Pyx_GOTREF(__pyx_t_11);
27293  __pyx_t_2 = PyNumber_Subtract(__pyx_t_11, __pyx_v_fmin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1473, __pyx_L1_error)
27294  __Pyx_GOTREF(__pyx_t_2);
27295  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27296  __pyx_t_11 = PyFloat_FromDouble(((double)(__pyx_v_self->N - 1))); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1473, __pyx_L1_error)
27297  __Pyx_GOTREF(__pyx_t_11);
27298  __pyx_t_4 = NULL;
27299  __pyx_t_6 = 0;
27300  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
27301  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
27302  if (likely(__pyx_t_4)) {
27303  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
27304  __Pyx_INCREF(__pyx_t_4);
27305  __Pyx_INCREF(function);
27306  __Pyx_DECREF_SET(__pyx_t_5, function);
27307  __pyx_t_6 = 1;
27308  }
27309  }
27310  #if CYTHON_FAST_PYCALL
27311  if (PyFunction_Check(__pyx_t_5)) {
27312  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_t_11};
27313  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1473, __pyx_L1_error)
27314  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27315  __Pyx_GOTREF(__pyx_t_12);
27316  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27317  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27318  } else
27319  #endif
27320  #if CYTHON_FAST_PYCCALL
27321  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
27322  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_t_11};
27323  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1473, __pyx_L1_error)
27324  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27325  __Pyx_GOTREF(__pyx_t_12);
27326  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27327  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27328  } else
27329  #endif
27330  {
27331  __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1473, __pyx_L1_error)
27332  __Pyx_GOTREF(__pyx_t_3);
27333  if (__pyx_t_4) {
27334  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
27335  }
27336  __Pyx_GIVEREF(__pyx_t_2);
27337  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_2);
27338  __Pyx_GIVEREF(__pyx_t_11);
27339  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_11);
27340  __pyx_t_2 = 0;
27341  __pyx_t_11 = 0;
27342  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1473, __pyx_L1_error)
27343  __Pyx_GOTREF(__pyx_t_12);
27344  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27345  }
27346  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27347  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1473, __pyx_L1_error)
27348  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27349  __pyx_v_self->df = __pyx_t_13;
27350 
27351  /* "WaveTools.py":1474
27352  * fmin = old_div(self.fp,self.bandFactor)
27353  * self.df = old_div((fmax-fmin),float(self.N-1))
27354  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
27355  * self.df = f_c[1]-f_c[0]
27356  * self.fi = np.linspace(fmin,fmax,self.N)
27357  */
27358  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_spec_fun, __pyx_n_s_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1474, __pyx_L1_error)
27359  __Pyx_GOTREF(__pyx_t_12);
27360  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_12, __pyx_n_s_custom, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1474, __pyx_L1_error)
27361  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27362  if (__pyx_t_7) {
27363 
27364  /* "WaveTools.py":1475
27365  * self.df = old_div((fmax-fmin),float(self.N-1))
27366  * if spec_fun.__name__=="custom":
27367  * self.df = f_c[1]-f_c[0] # <<<<<<<<<<<<<<
27368  * self.fi = np.linspace(fmin,fmax,self.N)
27369  * if spec_fun.__name__=="custom":
27370  */
27371  if (unlikely(!__pyx_v_f_c)) { __Pyx_RaiseUnboundLocalError("f_c"); __PYX_ERR(0, 1475, __pyx_L1_error) }
27372  __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_f_c, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1475, __pyx_L1_error)
27373  __Pyx_GOTREF(__pyx_t_12);
27374  if (unlikely(!__pyx_v_f_c)) { __Pyx_RaiseUnboundLocalError("f_c"); __PYX_ERR(0, 1475, __pyx_L1_error) }
27375  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_f_c, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1475, __pyx_L1_error)
27376  __Pyx_GOTREF(__pyx_t_5);
27377  __pyx_t_3 = PyNumber_Subtract(__pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1475, __pyx_L1_error)
27378  __Pyx_GOTREF(__pyx_t_3);
27379  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27380  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27381  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1475, __pyx_L1_error)
27382  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27383  __pyx_v_self->df = __pyx_t_13;
27384 
27385  /* "WaveTools.py":1474
27386  * fmin = old_div(self.fp,self.bandFactor)
27387  * self.df = old_div((fmax-fmin),float(self.N-1))
27388  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
27389  * self.df = f_c[1]-f_c[0]
27390  * self.fi = np.linspace(fmin,fmax,self.N)
27391  */
27392  }
27393 
27394  /* "WaveTools.py":1476
27395  * if spec_fun.__name__=="custom":
27396  * self.df = f_c[1]-f_c[0]
27397  * self.fi = np.linspace(fmin,fmax,self.N) # <<<<<<<<<<<<<<
27398  * if spec_fun.__name__=="custom":
27399  * self.fi = f_c
27400  */
27401  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1476, __pyx_L1_error)
27402  __Pyx_GOTREF(__pyx_t_5);
27403  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_linspace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1476, __pyx_L1_error)
27404  __Pyx_GOTREF(__pyx_t_12);
27405  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27406  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_fmax); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1476, __pyx_L1_error)
27407  __Pyx_GOTREF(__pyx_t_5);
27408  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1476, __pyx_L1_error)
27409  __Pyx_GOTREF(__pyx_t_11);
27410  __pyx_t_2 = NULL;
27411  __pyx_t_6 = 0;
27412  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
27413  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_12);
27414  if (likely(__pyx_t_2)) {
27415  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
27416  __Pyx_INCREF(__pyx_t_2);
27417  __Pyx_INCREF(function);
27418  __Pyx_DECREF_SET(__pyx_t_12, function);
27419  __pyx_t_6 = 1;
27420  }
27421  }
27422  #if CYTHON_FAST_PYCALL
27423  if (PyFunction_Check(__pyx_t_12)) {
27424  PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_fmin, __pyx_t_5, __pyx_t_11};
27425  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1476, __pyx_L1_error)
27426  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27427  __Pyx_GOTREF(__pyx_t_3);
27428  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27429  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27430  } else
27431  #endif
27432  #if CYTHON_FAST_PYCCALL
27433  if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
27434  PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_fmin, __pyx_t_5, __pyx_t_11};
27435  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1476, __pyx_L1_error)
27436  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27437  __Pyx_GOTREF(__pyx_t_3);
27438  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27439  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27440  } else
27441  #endif
27442  {
27443  __pyx_t_4 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1476, __pyx_L1_error)
27444  __Pyx_GOTREF(__pyx_t_4);
27445  if (__pyx_t_2) {
27446  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
27447  }
27448  __Pyx_INCREF(__pyx_v_fmin);
27449  __Pyx_GIVEREF(__pyx_v_fmin);
27450  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_fmin);
27451  __Pyx_GIVEREF(__pyx_t_5);
27452  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_5);
27453  __Pyx_GIVEREF(__pyx_t_11);
27454  PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_t_11);
27455  __pyx_t_5 = 0;
27456  __pyx_t_11 = 0;
27457  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1476, __pyx_L1_error)
27458  __Pyx_GOTREF(__pyx_t_3);
27459  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27460  }
27461  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27462  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1476, __pyx_L1_error)
27463  __Pyx_GIVEREF(__pyx_t_3);
27464  __Pyx_GOTREF(__pyx_v_self->fi);
27465  __Pyx_DECREF(((PyObject *)__pyx_v_self->fi));
27466  __pyx_v_self->fi = ((PyArrayObject *)__pyx_t_3);
27467  __pyx_t_3 = 0;
27468 
27469  /* "WaveTools.py":1477
27470  * self.df = f_c[1]-f_c[0]
27471  * self.fi = np.linspace(fmin,fmax,self.N)
27472  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
27473  * self.fi = f_c
27474  * self.omega = 2.*M_PI*self.fi
27475  */
27476  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_spec_fun, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1477, __pyx_L1_error)
27477  __Pyx_GOTREF(__pyx_t_3);
27478  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_custom, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1477, __pyx_L1_error)
27479  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27480  if (__pyx_t_7) {
27481 
27482  /* "WaveTools.py":1478
27483  * self.fi = np.linspace(fmin,fmax,self.N)
27484  * if spec_fun.__name__=="custom":
27485  * self.fi = f_c # <<<<<<<<<<<<<<
27486  * self.omega = 2.*M_PI*self.fi
27487  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
27488  */
27489  if (unlikely(!__pyx_v_f_c)) { __Pyx_RaiseUnboundLocalError("f_c"); __PYX_ERR(0, 1478, __pyx_L1_error) }
27490  if (!(likely(((__pyx_v_f_c) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_f_c, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1478, __pyx_L1_error)
27491  __pyx_t_3 = __pyx_v_f_c;
27492  __Pyx_INCREF(__pyx_t_3);
27493  __Pyx_GIVEREF(__pyx_t_3);
27494  __Pyx_GOTREF(__pyx_v_self->fi);
27495  __Pyx_DECREF(((PyObject *)__pyx_v_self->fi));
27496  __pyx_v_self->fi = ((PyArrayObject *)__pyx_t_3);
27497  __pyx_t_3 = 0;
27498 
27499  /* "WaveTools.py":1477
27500  * self.df = f_c[1]-f_c[0]
27501  * self.fi = np.linspace(fmin,fmax,self.N)
27502  * if spec_fun.__name__=="custom": # <<<<<<<<<<<<<<
27503  * self.fi = f_c
27504  * self.omega = 2.*M_PI*self.fi
27505  */
27506  }
27507 
27508  /* "WaveTools.py":1479
27509  * if spec_fun.__name__=="custom":
27510  * self.fi = f_c
27511  * self.omega = 2.*M_PI*self.fi # <<<<<<<<<<<<<<
27512  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
27513  * omega_p = 2.*M_PI/Tp
27514  */
27515  __pyx_t_3 = PyFloat_FromDouble((2. * M_PI)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1479, __pyx_L1_error)
27516  __Pyx_GOTREF(__pyx_t_3);
27517  __pyx_t_12 = PyNumber_Multiply(__pyx_t_3, ((PyObject *)__pyx_v_self->fi)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1479, __pyx_L1_error)
27518  __Pyx_GOTREF(__pyx_t_12);
27519  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27520  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1479, __pyx_L1_error)
27521  __Pyx_GIVEREF(__pyx_t_12);
27522  __Pyx_GOTREF(__pyx_v_self->omega);
27523  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
27524  __pyx_v_self->omega = ((PyArrayObject *)__pyx_t_12);
27525  __pyx_t_12 = 0;
27526 
27527  /* "WaveTools.py":1480
27528  * self.fi = f_c
27529  * self.omega = 2.*M_PI*self.fi
27530  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
27531  * omega_p = 2.*M_PI/Tp
27532  * self.wavelength = 2.*M_PI/dispersion(omega_p,self.depth,g=self.gAbs)
27533  */
27534  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1480, __pyx_L1_error)
27535  __Pyx_GOTREF(__pyx_t_12);
27536  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1480, __pyx_L1_error)
27537  __Pyx_GOTREF(__pyx_t_3);
27538  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1480, __pyx_L1_error)
27539  __Pyx_GOTREF(__pyx_t_4);
27540  __Pyx_INCREF(((PyObject *)__pyx_v_self->omega));
27541  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->omega));
27542  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->omega));
27543  __Pyx_GIVEREF(__pyx_t_3);
27544  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
27545  __pyx_t_3 = 0;
27546  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1480, __pyx_L1_error)
27547  __Pyx_GOTREF(__pyx_t_3);
27548  __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1480, __pyx_L1_error)
27549  __Pyx_GOTREF(__pyx_t_11);
27550  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_g, __pyx_t_11) < 0) __PYX_ERR(0, 1480, __pyx_L1_error)
27551  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27552  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1480, __pyx_L1_error)
27553  __Pyx_GOTREF(__pyx_t_11);
27554  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27555  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27556  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27557  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1480, __pyx_L1_error)
27558  __Pyx_GIVEREF(__pyx_t_11);
27559  __Pyx_GOTREF(__pyx_v_self->ki);
27560  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
27561  __pyx_v_self->ki = ((PyArrayObject *)__pyx_t_11);
27562  __pyx_t_11 = 0;
27563 
27564  /* "WaveTools.py":1481
27565  * self.omega = 2.*M_PI*self.fi
27566  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
27567  * omega_p = 2.*M_PI/Tp # <<<<<<<<<<<<<<
27568  * self.wavelength = 2.*M_PI/dispersion(omega_p,self.depth,g=self.gAbs)
27569  * if phi is None:
27570  */
27571  __pyx_t_11 = PyFloat_FromDouble((2. * M_PI)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1481, __pyx_L1_error)
27572  __Pyx_GOTREF(__pyx_t_11);
27573  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_11, __pyx_v_Tp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1481, __pyx_L1_error)
27574  __Pyx_GOTREF(__pyx_t_3);
27575  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27576  __pyx_v_omega_p = __pyx_t_3;
27577  __pyx_t_3 = 0;
27578 
27579  /* "WaveTools.py":1482
27580  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
27581  * omega_p = 2.*M_PI/Tp
27582  * self.wavelength = 2.*M_PI/dispersion(omega_p,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
27583  * if phi is None:
27584  * self.phi = 2.0*M_PI*np.random.random(self.fi.shape[0])
27585  */
27586  __pyx_t_3 = PyFloat_FromDouble((2. * M_PI)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1482, __pyx_L1_error)
27587  __Pyx_GOTREF(__pyx_t_3);
27588  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1482, __pyx_L1_error)
27589  __Pyx_GOTREF(__pyx_t_11);
27590  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1482, __pyx_L1_error)
27591  __Pyx_GOTREF(__pyx_t_4);
27592  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1482, __pyx_L1_error)
27593  __Pyx_GOTREF(__pyx_t_12);
27594  __Pyx_INCREF(__pyx_v_omega_p);
27595  __Pyx_GIVEREF(__pyx_v_omega_p);
27596  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_omega_p);
27597  __Pyx_GIVEREF(__pyx_t_4);
27598  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_4);
27599  __pyx_t_4 = 0;
27600  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1482, __pyx_L1_error)
27601  __Pyx_GOTREF(__pyx_t_4);
27602  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1482, __pyx_L1_error)
27603  __Pyx_GOTREF(__pyx_t_5);
27604  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_g, __pyx_t_5) < 0) __PYX_ERR(0, 1482, __pyx_L1_error)
27605  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27606  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1482, __pyx_L1_error)
27607  __Pyx_GOTREF(__pyx_t_5);
27608  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27609  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27610  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27611  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1482, __pyx_L1_error)
27612  __Pyx_GOTREF(__pyx_t_4);
27613  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27614  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27615  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1482, __pyx_L1_error)
27616  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27617  __pyx_v_self->wavelength = __pyx_t_13;
27618 
27619  /* "WaveTools.py":1483
27620  * omega_p = 2.*M_PI/Tp
27621  * self.wavelength = 2.*M_PI/dispersion(omega_p,self.depth,g=self.gAbs)
27622  * if phi is None: # <<<<<<<<<<<<<<
27623  * self.phi = 2.0*M_PI*np.random.random(self.fi.shape[0])
27624  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
27625  */
27626  __pyx_t_7 = (__pyx_v_phi == Py_None);
27627  __pyx_t_15 = (__pyx_t_7 != 0);
27628  if (__pyx_t_15) {
27629 
27630  /* "WaveTools.py":1484
27631  * self.wavelength = 2.*M_PI/dispersion(omega_p,self.depth,g=self.gAbs)
27632  * if phi is None:
27633  * self.phi = 2.0*M_PI*np.random.random(self.fi.shape[0]) # <<<<<<<<<<<<<<
27634  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
27635  * else:
27636  */
27637  __pyx_t_4 = PyFloat_FromDouble((2.0 * M_PI)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1484, __pyx_L1_error)
27638  __Pyx_GOTREF(__pyx_t_4);
27639  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error)
27640  __Pyx_GOTREF(__pyx_t_3);
27641  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_random); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1484, __pyx_L1_error)
27642  __Pyx_GOTREF(__pyx_t_12);
27643  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27644  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_random); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error)
27645  __Pyx_GOTREF(__pyx_t_3);
27646  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27647  __pyx_t_12 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_self->fi->dimensions[0])); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1484, __pyx_L1_error)
27648  __Pyx_GOTREF(__pyx_t_12);
27649  __pyx_t_11 = NULL;
27650  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
27651  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
27652  if (likely(__pyx_t_11)) {
27653  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
27654  __Pyx_INCREF(__pyx_t_11);
27655  __Pyx_INCREF(function);
27656  __Pyx_DECREF_SET(__pyx_t_3, function);
27657  }
27658  }
27659  __pyx_t_5 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_11, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_12);
27660  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
27661  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27662  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1484, __pyx_L1_error)
27663  __Pyx_GOTREF(__pyx_t_5);
27664  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27665  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error)
27666  __Pyx_GOTREF(__pyx_t_3);
27667  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27668  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27669  __Pyx_GIVEREF(__pyx_t_3);
27670  __Pyx_GOTREF(__pyx_v_self->phi);
27671  __Pyx_DECREF(__pyx_v_self->phi);
27672  __pyx_v_self->phi = __pyx_t_3;
27673  __pyx_t_3 = 0;
27674 
27675  /* "WaveTools.py":1485
27676  * if phi is None:
27677  * self.phi = 2.0*M_PI*np.random.random(self.fi.shape[0])
27678  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves') # <<<<<<<<<<<<<<
27679  * else:
27680  * try:
27681  */
27682  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1485, __pyx_L1_error)
27683  __Pyx_GOTREF(__pyx_t_5);
27684  __pyx_t_4 = NULL;
27685  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
27686  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
27687  if (likely(__pyx_t_4)) {
27688  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
27689  __Pyx_INCREF(__pyx_t_4);
27690  __Pyx_INCREF(function);
27691  __Pyx_DECREF_SET(__pyx_t_5, function);
27692  }
27693  }
27694  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_kp_s_INFO_Wavetools_py_No_phase_array) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_s_INFO_Wavetools_py_No_phase_array);
27695  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27696  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1485, __pyx_L1_error)
27697  __Pyx_GOTREF(__pyx_t_3);
27698  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27699  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27700 
27701  /* "WaveTools.py":1483
27702  * omega_p = 2.*M_PI/Tp
27703  * self.wavelength = 2.*M_PI/dispersion(omega_p,self.depth,g=self.gAbs)
27704  * if phi is None: # <<<<<<<<<<<<<<
27705  * self.phi = 2.0*M_PI*np.random.random(self.fi.shape[0])
27706  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
27707  */
27708  goto __pyx_L15;
27709  }
27710 
27711  /* "WaveTools.py":1487
27712  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
27713  * else:
27714  * try: # <<<<<<<<<<<<<<
27715  * self.phi = np.array(phi)
27716  * if self.phi.shape[0] != self.fi.shape[0]:
27717  */
27718  /*else*/ {
27719  {
27720  __Pyx_PyThreadState_declare
27721  __Pyx_PyThreadState_assign
27722  __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
27723  __Pyx_XGOTREF(__pyx_t_10);
27724  __Pyx_XGOTREF(__pyx_t_9);
27725  __Pyx_XGOTREF(__pyx_t_8);
27726  /*try:*/ {
27727 
27728  /* "WaveTools.py":1488
27729  * else:
27730  * try:
27731  * self.phi = np.array(phi) # <<<<<<<<<<<<<<
27732  * if self.phi.shape[0] != self.fi.shape[0]:
27733  * logEvent('ERROR! Wavetools.py: Phase array must have N elements')
27734  */
27735  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1488, __pyx_L16_error)
27736  __Pyx_GOTREF(__pyx_t_5);
27737  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1488, __pyx_L16_error)
27738  __Pyx_GOTREF(__pyx_t_4);
27739  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27740  __pyx_t_5 = NULL;
27741  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
27742  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
27743  if (likely(__pyx_t_5)) {
27744  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
27745  __Pyx_INCREF(__pyx_t_5);
27746  __Pyx_INCREF(function);
27747  __Pyx_DECREF_SET(__pyx_t_4, function);
27748  }
27749  }
27750  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_phi) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_phi);
27751  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
27752  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1488, __pyx_L16_error)
27753  __Pyx_GOTREF(__pyx_t_3);
27754  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27755  __Pyx_GIVEREF(__pyx_t_3);
27756  __Pyx_GOTREF(__pyx_v_self->phi);
27757  __Pyx_DECREF(__pyx_v_self->phi);
27758  __pyx_v_self->phi = __pyx_t_3;
27759  __pyx_t_3 = 0;
27760 
27761  /* "WaveTools.py":1489
27762  * try:
27763  * self.phi = np.array(phi)
27764  * if self.phi.shape[0] != self.fi.shape[0]: # <<<<<<<<<<<<<<
27765  * logEvent('ERROR! Wavetools.py: Phase array must have N elements')
27766  * sys.exit(1)
27767  */
27768  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->phi, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1489, __pyx_L16_error)
27769  __Pyx_GOTREF(__pyx_t_3);
27770  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1489, __pyx_L16_error)
27771  __Pyx_GOTREF(__pyx_t_4);
27772  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27773  __pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_self->fi->dimensions[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1489, __pyx_L16_error)
27774  __Pyx_GOTREF(__pyx_t_3);
27775  __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1489, __pyx_L16_error)
27776  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27777  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27778  __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 1489, __pyx_L16_error)
27779  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27780  if (__pyx_t_15) {
27781 
27782  /* "WaveTools.py":1490
27783  * self.phi = np.array(phi)
27784  * if self.phi.shape[0] != self.fi.shape[0]:
27785  * logEvent('ERROR! Wavetools.py: Phase array must have N elements') # <<<<<<<<<<<<<<
27786  * sys.exit(1)
27787  *
27788  */
27789  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1490, __pyx_L16_error)
27790  __Pyx_GOTREF(__pyx_t_3);
27791  __pyx_t_4 = NULL;
27792  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
27793  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
27794  if (likely(__pyx_t_4)) {
27795  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
27796  __Pyx_INCREF(__pyx_t_4);
27797  __Pyx_INCREF(function);
27798  __Pyx_DECREF_SET(__pyx_t_3, function);
27799  }
27800  }
27801  __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_ERROR_Wavetools_py_Phase_array_m) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_ERROR_Wavetools_py_Phase_array_m);
27802  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27803  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1490, __pyx_L16_error)
27804  __Pyx_GOTREF(__pyx_t_5);
27805  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27806  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27807 
27808  /* "WaveTools.py":1491
27809  * if self.phi.shape[0] != self.fi.shape[0]:
27810  * logEvent('ERROR! Wavetools.py: Phase array must have N elements')
27811  * sys.exit(1) # <<<<<<<<<<<<<<
27812  *
27813  * except:
27814  */
27815  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1491, __pyx_L16_error)
27816  __Pyx_GOTREF(__pyx_t_3);
27817  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1491, __pyx_L16_error)
27818  __Pyx_GOTREF(__pyx_t_4);
27819  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27820  __pyx_t_3 = NULL;
27821  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
27822  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
27823  if (likely(__pyx_t_3)) {
27824  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
27825  __Pyx_INCREF(__pyx_t_3);
27826  __Pyx_INCREF(function);
27827  __Pyx_DECREF_SET(__pyx_t_4, function);
27828  }
27829  }
27830  __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
27831  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
27832  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1491, __pyx_L16_error)
27833  __Pyx_GOTREF(__pyx_t_5);
27834  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27835  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27836 
27837  /* "WaveTools.py":1489
27838  * try:
27839  * self.phi = np.array(phi)
27840  * if self.phi.shape[0] != self.fi.shape[0]: # <<<<<<<<<<<<<<
27841  * logEvent('ERROR! Wavetools.py: Phase array must have N elements')
27842  * sys.exit(1)
27843  */
27844  }
27845 
27846  /* "WaveTools.py":1487
27847  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
27848  * else:
27849  * try: # <<<<<<<<<<<<<<
27850  * self.phi = np.array(phi)
27851  * if self.phi.shape[0] != self.fi.shape[0]:
27852  */
27853  }
27854  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
27855  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
27856  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
27857  goto __pyx_L21_try_end;
27858  __pyx_L16_error:;
27859  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
27860  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
27861  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27862  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
27863  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27864  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
27865 
27866  /* "WaveTools.py":1493
27867  * sys.exit(1)
27868  *
27869  * except: # <<<<<<<<<<<<<<
27870  * logEvent('ERROR! Wavetools.py: phi argument must be an array with N elements')
27871  * sys.exit(1)
27872  */
27873  /*except:*/ {
27874  __Pyx_AddTraceback("WaveTools.RandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
27875  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 1493, __pyx_L18_except_error)
27876  __Pyx_GOTREF(__pyx_t_5);
27877  __Pyx_GOTREF(__pyx_t_4);
27878  __Pyx_GOTREF(__pyx_t_3);
27879 
27880  /* "WaveTools.py":1494
27881  *
27882  * except:
27883  * logEvent('ERROR! Wavetools.py: phi argument must be an array with N elements') # <<<<<<<<<<<<<<
27884  * sys.exit(1)
27885  *
27886  */
27887  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1494, __pyx_L18_except_error)
27888  __Pyx_GOTREF(__pyx_t_11);
27889  __pyx_t_2 = NULL;
27890  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
27891  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_11);
27892  if (likely(__pyx_t_2)) {
27893  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
27894  __Pyx_INCREF(__pyx_t_2);
27895  __Pyx_INCREF(function);
27896  __Pyx_DECREF_SET(__pyx_t_11, function);
27897  }
27898  }
27899  __pyx_t_12 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_2, __pyx_kp_s_ERROR_Wavetools_py_phi_argument) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_kp_s_ERROR_Wavetools_py_phi_argument);
27900  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
27901  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1494, __pyx_L18_except_error)
27902  __Pyx_GOTREF(__pyx_t_12);
27903  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27904  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27905 
27906  /* "WaveTools.py":1495
27907  * except:
27908  * logEvent('ERROR! Wavetools.py: phi argument must be an array with N elements')
27909  * sys.exit(1) # <<<<<<<<<<<<<<
27910  *
27911  *
27912  */
27913  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1495, __pyx_L18_except_error)
27914  __Pyx_GOTREF(__pyx_t_11);
27915  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1495, __pyx_L18_except_error)
27916  __Pyx_GOTREF(__pyx_t_2);
27917  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
27918  __pyx_t_11 = NULL;
27919  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
27920  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
27921  if (likely(__pyx_t_11)) {
27922  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
27923  __Pyx_INCREF(__pyx_t_11);
27924  __Pyx_INCREF(function);
27925  __Pyx_DECREF_SET(__pyx_t_2, function);
27926  }
27927  }
27928  __pyx_t_12 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_1);
27929  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
27930  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1495, __pyx_L18_except_error)
27931  __Pyx_GOTREF(__pyx_t_12);
27932  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27933  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
27934  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
27935  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27936  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
27937  goto __pyx_L17_exception_handled;
27938  }
27939  __pyx_L18_except_error:;
27940 
27941  /* "WaveTools.py":1487
27942  * logEvent('INFO Wavetools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
27943  * else:
27944  * try: # <<<<<<<<<<<<<<
27945  * self.phi = np.array(phi)
27946  * if self.phi.shape[0] != self.fi.shape[0]:
27947  */
27948  __Pyx_XGIVEREF(__pyx_t_10);
27949  __Pyx_XGIVEREF(__pyx_t_9);
27950  __Pyx_XGIVEREF(__pyx_t_8);
27951  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
27952  goto __pyx_L1_error;
27953  __pyx_L17_exception_handled:;
27954  __Pyx_XGIVEREF(__pyx_t_10);
27955  __Pyx_XGIVEREF(__pyx_t_9);
27956  __Pyx_XGIVEREF(__pyx_t_8);
27957  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
27958  __pyx_L21_try_end:;
27959  }
27960  }
27961  __pyx_L15:;
27962 
27963  /* "WaveTools.py":1503
27964  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
27965  *
27966  * fim = reduceToIntervals(self.fi,self.df) # <<<<<<<<<<<<<<
27967  * self.fim = fim
27968  * if spec_fun.__name__ !="custom":
27969  */
27970  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1503, __pyx_L1_error)
27971  __Pyx_GOTREF(__pyx_t_4);
27972  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->df); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1503, __pyx_L1_error)
27973  __Pyx_GOTREF(__pyx_t_5);
27974  __pyx_t_12 = NULL;
27975  __pyx_t_6 = 0;
27976  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
27977  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4);
27978  if (likely(__pyx_t_12)) {
27979  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
27980  __Pyx_INCREF(__pyx_t_12);
27981  __Pyx_INCREF(function);
27982  __Pyx_DECREF_SET(__pyx_t_4, function);
27983  __pyx_t_6 = 1;
27984  }
27985  }
27986  #if CYTHON_FAST_PYCALL
27987  if (PyFunction_Check(__pyx_t_4)) {
27988  PyObject *__pyx_temp[3] = {__pyx_t_12, ((PyObject *)__pyx_v_self->fi), __pyx_t_5};
27989  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1503, __pyx_L1_error)
27990  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
27991  __Pyx_GOTREF(__pyx_t_3);
27992  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
27993  } else
27994  #endif
27995  #if CYTHON_FAST_PYCCALL
27996  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
27997  PyObject *__pyx_temp[3] = {__pyx_t_12, ((PyObject *)__pyx_v_self->fi), __pyx_t_5};
27998  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1503, __pyx_L1_error)
27999  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
28000  __Pyx_GOTREF(__pyx_t_3);
28001  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
28002  } else
28003  #endif
28004  {
28005  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1503, __pyx_L1_error)
28006  __Pyx_GOTREF(__pyx_t_2);
28007  if (__pyx_t_12) {
28008  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __pyx_t_12 = NULL;
28009  }
28010  __Pyx_INCREF(((PyObject *)__pyx_v_self->fi));
28011  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->fi));
28012  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, ((PyObject *)__pyx_v_self->fi));
28013  __Pyx_GIVEREF(__pyx_t_5);
28014  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_5);
28015  __pyx_t_5 = 0;
28016  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1503, __pyx_L1_error)
28017  __Pyx_GOTREF(__pyx_t_3);
28018  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28019  }
28020  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28021  __pyx_v_fim = __pyx_t_3;
28022  __pyx_t_3 = 0;
28023 
28024  /* "WaveTools.py":1504
28025  *
28026  * fim = reduceToIntervals(self.fi,self.df)
28027  * self.fim = fim # <<<<<<<<<<<<<<
28028  * if spec_fun.__name__ !="custom":
28029  * if (spectral_params is None):
28030  */
28031  if (!(likely(((__pyx_v_fim) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fim, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1504, __pyx_L1_error)
28032  __pyx_t_3 = __pyx_v_fim;
28033  __Pyx_INCREF(__pyx_t_3);
28034  __Pyx_GIVEREF(__pyx_t_3);
28035  __Pyx_GOTREF(__pyx_v_self->fim);
28036  __Pyx_DECREF(((PyObject *)__pyx_v_self->fim));
28037  __pyx_v_self->fim = ((PyArrayObject *)__pyx_t_3);
28038  __pyx_t_3 = 0;
28039 
28040  /* "WaveTools.py":1505
28041  * fim = reduceToIntervals(self.fi,self.df)
28042  * self.fim = fim
28043  * if spec_fun.__name__ !="custom": # <<<<<<<<<<<<<<
28044  * if (spectral_params is None):
28045  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28046  */
28047  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_spec_fun, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1505, __pyx_L1_error)
28048  __Pyx_GOTREF(__pyx_t_3);
28049  __pyx_t_15 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_custom, Py_NE)); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 1505, __pyx_L1_error)
28050  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28051  if (__pyx_t_15) {
28052 
28053  /* "WaveTools.py":1506
28054  * self.fim = fim
28055  * if spec_fun.__name__ !="custom":
28056  * if (spectral_params is None): # <<<<<<<<<<<<<<
28057  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28058  * else:
28059  */
28060  __pyx_t_15 = (__pyx_v_spectral_params == Py_None);
28061  __pyx_t_7 = (__pyx_t_15 != 0);
28062  if (__pyx_t_7) {
28063 
28064  /* "WaveTools.py":1507
28065  * if spec_fun.__name__ !="custom":
28066  * if (spectral_params is None):
28067  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs) # <<<<<<<<<<<<<<
28068  * else:
28069  * try:
28070  */
28071  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->fp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1507, __pyx_L1_error)
28072  __Pyx_GOTREF(__pyx_t_4);
28073  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Hs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1507, __pyx_L1_error)
28074  __Pyx_GOTREF(__pyx_t_2);
28075  __Pyx_INCREF(__pyx_v_spec_fun);
28076  __pyx_t_5 = __pyx_v_spec_fun; __pyx_t_12 = NULL;
28077  __pyx_t_6 = 0;
28078  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
28079  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
28080  if (likely(__pyx_t_12)) {
28081  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
28082  __Pyx_INCREF(__pyx_t_12);
28083  __Pyx_INCREF(function);
28084  __Pyx_DECREF_SET(__pyx_t_5, function);
28085  __pyx_t_6 = 1;
28086  }
28087  }
28088  #if CYTHON_FAST_PYCALL
28089  if (PyFunction_Check(__pyx_t_5)) {
28090  PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_v_fim, __pyx_t_4, __pyx_t_2};
28091  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1507, __pyx_L1_error)
28092  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
28093  __Pyx_GOTREF(__pyx_t_3);
28094  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28095  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28096  } else
28097  #endif
28098  #if CYTHON_FAST_PYCCALL
28099  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
28100  PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_v_fim, __pyx_t_4, __pyx_t_2};
28101  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1507, __pyx_L1_error)
28102  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
28103  __Pyx_GOTREF(__pyx_t_3);
28104  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28105  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28106  } else
28107  #endif
28108  {
28109  __pyx_t_11 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1507, __pyx_L1_error)
28110  __Pyx_GOTREF(__pyx_t_11);
28111  if (__pyx_t_12) {
28112  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL;
28113  }
28114  __Pyx_INCREF(__pyx_v_fim);
28115  __Pyx_GIVEREF(__pyx_v_fim);
28116  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_fim);
28117  __Pyx_GIVEREF(__pyx_t_4);
28118  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_4);
28119  __Pyx_GIVEREF(__pyx_t_2);
28120  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_6, __pyx_t_2);
28121  __pyx_t_4 = 0;
28122  __pyx_t_2 = 0;
28123  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1507, __pyx_L1_error)
28124  __Pyx_GOTREF(__pyx_t_3);
28125  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28126  }
28127  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
28128  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1507, __pyx_L1_error)
28129  __Pyx_GIVEREF(__pyx_t_3);
28130  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
28131  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
28132  __pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_3);
28133  __pyx_t_3 = 0;
28134 
28135  /* "WaveTools.py":1506
28136  * self.fim = fim
28137  * if spec_fun.__name__ !="custom":
28138  * if (spectral_params is None): # <<<<<<<<<<<<<<
28139  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28140  * else:
28141  */
28142  goto __pyx_L26;
28143  }
28144 
28145  /* "WaveTools.py":1509
28146  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28147  * else:
28148  * try: # <<<<<<<<<<<<<<
28149  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
28150  * except:
28151  */
28152  /*else*/ {
28153  {
28154  __Pyx_PyThreadState_declare
28155  __Pyx_PyThreadState_assign
28156  __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
28157  __Pyx_XGOTREF(__pyx_t_8);
28158  __Pyx_XGOTREF(__pyx_t_9);
28159  __Pyx_XGOTREF(__pyx_t_10);
28160  /*try:*/ {
28161 
28162  /* "WaveTools.py":1510
28163  * else:
28164  * try:
28165  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params) # <<<<<<<<<<<<<<
28166  * except:
28167  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
28168  */
28169  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->fp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1510, __pyx_L27_error)
28170  __Pyx_GOTREF(__pyx_t_3);
28171  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->Hs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1510, __pyx_L27_error)
28172  __Pyx_GOTREF(__pyx_t_5);
28173  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1510, __pyx_L27_error)
28174  __Pyx_GOTREF(__pyx_t_11);
28175  __Pyx_INCREF(__pyx_v_fim);
28176  __Pyx_GIVEREF(__pyx_v_fim);
28177  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_fim);
28178  __Pyx_GIVEREF(__pyx_t_3);
28179  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_3);
28180  __Pyx_GIVEREF(__pyx_t_5);
28181  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_5);
28182  __pyx_t_3 = 0;
28183  __pyx_t_5 = 0;
28184  if (unlikely(__pyx_v_spectral_params == Py_None)) {
28185  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
28186  __PYX_ERR(0, 1510, __pyx_L27_error)
28187  }
28188  if (likely(PyDict_CheckExact(__pyx_v_spectral_params))) {
28189  __pyx_t_5 = PyDict_Copy(__pyx_v_spectral_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1510, __pyx_L27_error)
28190  __Pyx_GOTREF(__pyx_t_5);
28191  } else {
28192  __pyx_t_5 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spectral_params, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1510, __pyx_L27_error)
28193  __Pyx_GOTREF(__pyx_t_5);
28194  }
28195  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_spec_fun, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1510, __pyx_L27_error)
28196  __Pyx_GOTREF(__pyx_t_3);
28197  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28198  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
28199  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1510, __pyx_L27_error)
28200  __Pyx_GIVEREF(__pyx_t_3);
28201  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
28202  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
28203  __pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_3);
28204  __pyx_t_3 = 0;
28205 
28206  /* "WaveTools.py":1509
28207  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28208  * else:
28209  * try: # <<<<<<<<<<<<<<
28210  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
28211  * except:
28212  */
28213  }
28214  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
28215  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
28216  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
28217  goto __pyx_L32_try_end;
28218  __pyx_L27_error:;
28219  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
28220  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
28221  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
28222  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
28223  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
28224  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28225 
28226  /* "WaveTools.py":1511
28227  * try:
28228  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
28229  * except: # <<<<<<<<<<<<<<
28230  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
28231  * sys.exit(1)
28232  */
28233  /*except:*/ {
28234  __Pyx_AddTraceback("WaveTools.RandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
28235  if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_11) < 0) __PYX_ERR(0, 1511, __pyx_L29_except_error)
28236  __Pyx_GOTREF(__pyx_t_3);
28237  __Pyx_GOTREF(__pyx_t_5);
28238  __Pyx_GOTREF(__pyx_t_11);
28239 
28240  /* "WaveTools.py":1512
28241  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
28242  * except:
28243  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
28244  * sys.exit(1)
28245  * else:
28246  */
28247  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1512, __pyx_L29_except_error)
28248  __Pyx_GOTREF(__pyx_t_4);
28249  __pyx_t_12 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ERROR_Wavetools_py_Additional_sp, __pyx_v_spectName); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1512, __pyx_L29_except_error)
28250  __Pyx_GOTREF(__pyx_t_12);
28251  __pyx_t_16 = NULL;
28252  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
28253  __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_4);
28254  if (likely(__pyx_t_16)) {
28255  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
28256  __Pyx_INCREF(__pyx_t_16);
28257  __Pyx_INCREF(function);
28258  __Pyx_DECREF_SET(__pyx_t_4, function);
28259  }
28260  }
28261  __pyx_t_2 = (__pyx_t_16) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_16, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_12);
28262  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
28263  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28264  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1512, __pyx_L29_except_error)
28265  __Pyx_GOTREF(__pyx_t_2);
28266  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28267  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28268 
28269  /* "WaveTools.py":1513
28270  * except:
28271  * logEvent('ERROR! Wavetools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
28272  * sys.exit(1) # <<<<<<<<<<<<<<
28273  * else:
28274  * self.Si_Jm = np.interp(fim,self.fi,S_c)
28275  */
28276  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1513, __pyx_L29_except_error)
28277  __Pyx_GOTREF(__pyx_t_4);
28278  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1513, __pyx_L29_except_error)
28279  __Pyx_GOTREF(__pyx_t_12);
28280  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28281  __pyx_t_4 = NULL;
28282  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
28283  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12);
28284  if (likely(__pyx_t_4)) {
28285  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
28286  __Pyx_INCREF(__pyx_t_4);
28287  __Pyx_INCREF(function);
28288  __Pyx_DECREF_SET(__pyx_t_12, function);
28289  }
28290  }
28291  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_4, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_int_1);
28292  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
28293  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1513, __pyx_L29_except_error)
28294  __Pyx_GOTREF(__pyx_t_2);
28295  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28296  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28297  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
28298  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28299  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
28300  goto __pyx_L28_exception_handled;
28301  }
28302  __pyx_L29_except_error:;
28303 
28304  /* "WaveTools.py":1509
28305  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28306  * else:
28307  * try: # <<<<<<<<<<<<<<
28308  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs,**spectral_params)
28309  * except:
28310  */
28311  __Pyx_XGIVEREF(__pyx_t_8);
28312  __Pyx_XGIVEREF(__pyx_t_9);
28313  __Pyx_XGIVEREF(__pyx_t_10);
28314  __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
28315  goto __pyx_L1_error;
28316  __pyx_L28_exception_handled:;
28317  __Pyx_XGIVEREF(__pyx_t_8);
28318  __Pyx_XGIVEREF(__pyx_t_9);
28319  __Pyx_XGIVEREF(__pyx_t_10);
28320  __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
28321  __pyx_L32_try_end:;
28322  }
28323  }
28324  __pyx_L26:;
28325 
28326  /* "WaveTools.py":1505
28327  * fim = reduceToIntervals(self.fi,self.df)
28328  * self.fim = fim
28329  * if spec_fun.__name__ !="custom": # <<<<<<<<<<<<<<
28330  * if (spectral_params is None):
28331  * self.Si_Jm = spec_fun(fim,self.fp,self.Hs)
28332  */
28333  goto __pyx_L25;
28334  }
28335 
28336  /* "WaveTools.py":1515
28337  * sys.exit(1)
28338  * else:
28339  * self.Si_Jm = np.interp(fim,self.fi,S_c) # <<<<<<<<<<<<<<
28340  *
28341  * self.tanhF = np.zeros(self.N,"d")
28342  */
28343  /*else*/ {
28344  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1515, __pyx_L1_error)
28345  __Pyx_GOTREF(__pyx_t_5);
28346  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_interp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1515, __pyx_L1_error)
28347  __Pyx_GOTREF(__pyx_t_3);
28348  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
28349  if (unlikely(!__pyx_v_S_c)) { __Pyx_RaiseUnboundLocalError("S_c"); __PYX_ERR(0, 1515, __pyx_L1_error) }
28350  __pyx_t_5 = NULL;
28351  __pyx_t_6 = 0;
28352  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
28353  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
28354  if (likely(__pyx_t_5)) {
28355  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
28356  __Pyx_INCREF(__pyx_t_5);
28357  __Pyx_INCREF(function);
28358  __Pyx_DECREF_SET(__pyx_t_3, function);
28359  __pyx_t_6 = 1;
28360  }
28361  }
28362  #if CYTHON_FAST_PYCALL
28363  if (PyFunction_Check(__pyx_t_3)) {
28364  PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_fim, ((PyObject *)__pyx_v_self->fi), __pyx_v_S_c};
28365  __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1515, __pyx_L1_error)
28366  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28367  __Pyx_GOTREF(__pyx_t_11);
28368  } else
28369  #endif
28370  #if CYTHON_FAST_PYCCALL
28371  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
28372  PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_fim, ((PyObject *)__pyx_v_self->fi), __pyx_v_S_c};
28373  __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1515, __pyx_L1_error)
28374  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28375  __Pyx_GOTREF(__pyx_t_11);
28376  } else
28377  #endif
28378  {
28379  __pyx_t_2 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1515, __pyx_L1_error)
28380  __Pyx_GOTREF(__pyx_t_2);
28381  if (__pyx_t_5) {
28382  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
28383  }
28384  __Pyx_INCREF(__pyx_v_fim);
28385  __Pyx_GIVEREF(__pyx_v_fim);
28386  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_fim);
28387  __Pyx_INCREF(((PyObject *)__pyx_v_self->fi));
28388  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->fi));
28389  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, ((PyObject *)__pyx_v_self->fi));
28390  __Pyx_INCREF(__pyx_v_S_c);
28391  __Pyx_GIVEREF(__pyx_v_S_c);
28392  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, __pyx_v_S_c);
28393  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1515, __pyx_L1_error)
28394  __Pyx_GOTREF(__pyx_t_11);
28395  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28396  }
28397  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28398  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1515, __pyx_L1_error)
28399  __Pyx_GIVEREF(__pyx_t_11);
28400  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
28401  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
28402  __pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_11);
28403  __pyx_t_11 = 0;
28404  }
28405  __pyx_L25:;
28406 
28407  /* "WaveTools.py":1517
28408  * self.Si_Jm = np.interp(fim,self.fi,S_c)
28409  *
28410  * self.tanhF = np.zeros(self.N,"d") # <<<<<<<<<<<<<<
28411  * for ii in range(self.N):
28412  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
28413  */
28414  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1517, __pyx_L1_error)
28415  __Pyx_GOTREF(__pyx_t_3);
28416  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1517, __pyx_L1_error)
28417  __Pyx_GOTREF(__pyx_t_2);
28418  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28419  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1517, __pyx_L1_error)
28420  __Pyx_GOTREF(__pyx_t_3);
28421  __pyx_t_5 = NULL;
28422  __pyx_t_6 = 0;
28423  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
28424  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
28425  if (likely(__pyx_t_5)) {
28426  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28427  __Pyx_INCREF(__pyx_t_5);
28428  __Pyx_INCREF(function);
28429  __Pyx_DECREF_SET(__pyx_t_2, function);
28430  __pyx_t_6 = 1;
28431  }
28432  }
28433  #if CYTHON_FAST_PYCALL
28434  if (PyFunction_Check(__pyx_t_2)) {
28435  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_n_s_d};
28436  __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1517, __pyx_L1_error)
28437  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28438  __Pyx_GOTREF(__pyx_t_11);
28439  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28440  } else
28441  #endif
28442  #if CYTHON_FAST_PYCCALL
28443  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
28444  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_n_s_d};
28445  __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1517, __pyx_L1_error)
28446  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28447  __Pyx_GOTREF(__pyx_t_11);
28448  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28449  } else
28450  #endif
28451  {
28452  __pyx_t_12 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1517, __pyx_L1_error)
28453  __Pyx_GOTREF(__pyx_t_12);
28454  if (__pyx_t_5) {
28455  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __pyx_t_5 = NULL;
28456  }
28457  __Pyx_GIVEREF(__pyx_t_3);
28458  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, __pyx_t_3);
28459  __Pyx_INCREF(__pyx_n_s_d);
28460  __Pyx_GIVEREF(__pyx_n_s_d);
28461  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_n_s_d);
28462  __pyx_t_3 = 0;
28463  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1517, __pyx_L1_error)
28464  __Pyx_GOTREF(__pyx_t_11);
28465  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28466  }
28467  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28468  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1517, __pyx_L1_error)
28469  __Pyx_GIVEREF(__pyx_t_11);
28470  __Pyx_GOTREF(__pyx_v_self->tanhF);
28471  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
28472  __pyx_v_self->tanhF = ((PyArrayObject *)__pyx_t_11);
28473  __pyx_t_11 = 0;
28474 
28475  /* "WaveTools.py":1518
28476  *
28477  * self.tanhF = np.zeros(self.N,"d")
28478  * for ii in range(self.N): # <<<<<<<<<<<<<<
28479  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
28480  *
28481  */
28482  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1518, __pyx_L1_error)
28483  __Pyx_GOTREF(__pyx_t_2);
28484  __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1518, __pyx_L1_error)
28485  __Pyx_GOTREF(__pyx_t_12);
28486  __pyx_t_3 = NULL;
28487  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
28488  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
28489  if (likely(__pyx_t_3)) {
28490  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28491  __Pyx_INCREF(__pyx_t_3);
28492  __Pyx_INCREF(function);
28493  __Pyx_DECREF_SET(__pyx_t_2, function);
28494  }
28495  }
28496  __pyx_t_11 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12);
28497  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
28498  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28499  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1518, __pyx_L1_error)
28500  __Pyx_GOTREF(__pyx_t_11);
28501  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28502  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
28503  __pyx_t_2 = __pyx_t_11; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0;
28504  __pyx_t_17 = NULL;
28505  } else {
28506  __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1518, __pyx_L1_error)
28507  __Pyx_GOTREF(__pyx_t_2);
28508  __pyx_t_17 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1518, __pyx_L1_error)
28509  }
28510  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28511  for (;;) {
28512  if (likely(!__pyx_t_17)) {
28513  if (likely(PyList_CheckExact(__pyx_t_2))) {
28514  if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break;
28515  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
28516  __pyx_t_11 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_11); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1518, __pyx_L1_error)
28517  #else
28518  __pyx_t_11 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1518, __pyx_L1_error)
28519  __Pyx_GOTREF(__pyx_t_11);
28520  #endif
28521  } else {
28522  if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
28523  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
28524  __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_11); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1518, __pyx_L1_error)
28525  #else
28526  __pyx_t_11 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1518, __pyx_L1_error)
28527  __Pyx_GOTREF(__pyx_t_11);
28528  #endif
28529  }
28530  } else {
28531  __pyx_t_11 = __pyx_t_17(__pyx_t_2);
28532  if (unlikely(!__pyx_t_11)) {
28533  PyObject* exc_type = PyErr_Occurred();
28534  if (exc_type) {
28535  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
28536  else __PYX_ERR(0, 1518, __pyx_L1_error)
28537  }
28538  break;
28539  }
28540  __Pyx_GOTREF(__pyx_t_11);
28541  }
28542  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_11);
28543  __pyx_t_11 = 0;
28544 
28545  /* "WaveTools.py":1519
28546  * self.tanhF = np.zeros(self.N,"d")
28547  * for ii in range(self.N):
28548  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) ) # <<<<<<<<<<<<<<
28549  *
28550  *
28551  */
28552  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1519, __pyx_L1_error)
28553  __Pyx_GOTREF(__pyx_t_12);
28554  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_tanh); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1519, __pyx_L1_error)
28555  __Pyx_GOTREF(__pyx_t_3);
28556  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28557  __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ii); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1519, __pyx_L1_error)
28558  __Pyx_GOTREF(__pyx_t_12);
28559  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1519, __pyx_L1_error)
28560  __Pyx_GOTREF(__pyx_t_5);
28561  __pyx_t_4 = PyNumber_Multiply(__pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1519, __pyx_L1_error)
28562  __Pyx_GOTREF(__pyx_t_4);
28563  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28564  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
28565  __pyx_t_5 = NULL;
28566  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
28567  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
28568  if (likely(__pyx_t_5)) {
28569  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
28570  __Pyx_INCREF(__pyx_t_5);
28571  __Pyx_INCREF(function);
28572  __Pyx_DECREF_SET(__pyx_t_3, function);
28573  }
28574  }
28575  __pyx_t_11 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
28576  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28577  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28578  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1519, __pyx_L1_error)
28579  __Pyx_GOTREF(__pyx_t_11);
28580  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28581  __pyx_t_3 = __Pyx_PyNumber_Float(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1519, __pyx_L1_error)
28582  __Pyx_GOTREF(__pyx_t_3);
28583  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28584  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->tanhF), __pyx_v_ii, __pyx_t_3) < 0)) __PYX_ERR(0, 1519, __pyx_L1_error)
28585  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28586 
28587  /* "WaveTools.py":1518
28588  *
28589  * self.tanhF = np.zeros(self.N,"d")
28590  * for ii in range(self.N): # <<<<<<<<<<<<<<
28591  * self.tanhF[ii] = float(np.tanh(self.ki[ii]*self.depth) )
28592  *
28593  */
28594  }
28595  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28596 
28597  /* "WaveTools.py":1522
28598  *
28599  *
28600  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,fim)) # <<<<<<<<<<<<<<
28601  * self.kDir = np.zeros((len(self.ki),3),)
28602  * for ii in range(3):
28603  */
28604  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
28605  __Pyx_GOTREF(__pyx_t_3);
28606  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1522, __pyx_L1_error)
28607  __Pyx_GOTREF(__pyx_t_11);
28608  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28609  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1522, __pyx_L1_error)
28610  __Pyx_GOTREF(__pyx_t_4);
28611  __pyx_t_5 = NULL;
28612  __pyx_t_6 = 0;
28613  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
28614  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
28615  if (likely(__pyx_t_5)) {
28616  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
28617  __Pyx_INCREF(__pyx_t_5);
28618  __Pyx_INCREF(function);
28619  __Pyx_DECREF_SET(__pyx_t_4, function);
28620  __pyx_t_6 = 1;
28621  }
28622  }
28623  #if CYTHON_FAST_PYCALL
28624  if (PyFunction_Check(__pyx_t_4)) {
28625  PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self->Si_Jm), __pyx_v_fim};
28626  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
28627  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28628  __Pyx_GOTREF(__pyx_t_3);
28629  } else
28630  #endif
28631  #if CYTHON_FAST_PYCCALL
28632  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
28633  PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self->Si_Jm), __pyx_v_fim};
28634  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
28635  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28636  __Pyx_GOTREF(__pyx_t_3);
28637  } else
28638  #endif
28639  {
28640  __pyx_t_12 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1522, __pyx_L1_error)
28641  __Pyx_GOTREF(__pyx_t_12);
28642  if (__pyx_t_5) {
28643  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __pyx_t_5 = NULL;
28644  }
28645  __Pyx_INCREF(((PyObject *)__pyx_v_self->Si_Jm));
28646  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->Si_Jm));
28647  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, ((PyObject *)__pyx_v_self->Si_Jm));
28648  __Pyx_INCREF(__pyx_v_fim);
28649  __Pyx_GIVEREF(__pyx_v_fim);
28650  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_v_fim);
28651  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1522, __pyx_L1_error)
28652  __Pyx_GOTREF(__pyx_t_3);
28653  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
28654  }
28655  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28656  __pyx_t_4 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1522, __pyx_L1_error)
28657  __Pyx_GOTREF(__pyx_t_4);
28658  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28659  __pyx_t_3 = NULL;
28660  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
28661  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
28662  if (likely(__pyx_t_3)) {
28663  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
28664  __Pyx_INCREF(__pyx_t_3);
28665  __Pyx_INCREF(function);
28666  __Pyx_DECREF_SET(__pyx_t_11, function);
28667  }
28668  }
28669  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_4);
28670  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
28671  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28672  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1522, __pyx_L1_error)
28673  __Pyx_GOTREF(__pyx_t_2);
28674  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28675  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1522, __pyx_L1_error)
28676  __Pyx_GIVEREF(__pyx_t_2);
28677  __Pyx_GOTREF(__pyx_v_self->ai);
28678  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
28679  __pyx_v_self->ai = ((PyArrayObject *)__pyx_t_2);
28680  __pyx_t_2 = 0;
28681 
28682  /* "WaveTools.py":1523
28683  *
28684  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,fim))
28685  * self.kDir = np.zeros((len(self.ki),3),) # <<<<<<<<<<<<<<
28686  * for ii in range(3):
28687  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
28688  */
28689  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1523, __pyx_L1_error)
28690  __Pyx_GOTREF(__pyx_t_11);
28691  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1523, __pyx_L1_error)
28692  __Pyx_GOTREF(__pyx_t_4);
28693  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28694  __pyx_t_11 = ((PyObject *)__pyx_v_self->ki);
28695  __Pyx_INCREF(__pyx_t_11);
28696  __pyx_t_14 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1523, __pyx_L1_error)
28697  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28698  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1523, __pyx_L1_error)
28699  __Pyx_GOTREF(__pyx_t_11);
28700  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1523, __pyx_L1_error)
28701  __Pyx_GOTREF(__pyx_t_3);
28702  __Pyx_GIVEREF(__pyx_t_11);
28703  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11);
28704  __Pyx_INCREF(__pyx_int_3);
28705  __Pyx_GIVEREF(__pyx_int_3);
28706  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_3);
28707  __pyx_t_11 = 0;
28708  __pyx_t_11 = NULL;
28709  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
28710  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
28711  if (likely(__pyx_t_11)) {
28712  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
28713  __Pyx_INCREF(__pyx_t_11);
28714  __Pyx_INCREF(function);
28715  __Pyx_DECREF_SET(__pyx_t_4, function);
28716  }
28717  }
28718  __pyx_t_2 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_11, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
28719  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
28720  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28721  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1523, __pyx_L1_error)
28722  __Pyx_GOTREF(__pyx_t_2);
28723  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28724  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1523, __pyx_L1_error)
28725  __Pyx_GIVEREF(__pyx_t_2);
28726  __Pyx_GOTREF(__pyx_v_self->kDir);
28727  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
28728  __pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_2);
28729  __pyx_t_2 = 0;
28730 
28731  /* "WaveTools.py":1524
28732  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,fim))
28733  * self.kDir = np.zeros((len(self.ki),3),)
28734  * for ii in range(3): # <<<<<<<<<<<<<<
28735  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
28736  * if(self.N > 10000):
28737  */
28738  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1524, __pyx_L1_error)
28739  __Pyx_GOTREF(__pyx_t_4);
28740  __pyx_t_3 = NULL;
28741  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
28742  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
28743  if (likely(__pyx_t_3)) {
28744  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
28745  __Pyx_INCREF(__pyx_t_3);
28746  __Pyx_INCREF(function);
28747  __Pyx_DECREF_SET(__pyx_t_4, function);
28748  }
28749  }
28750  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_3);
28751  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
28752  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1524, __pyx_L1_error)
28753  __Pyx_GOTREF(__pyx_t_2);
28754  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28755  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
28756  __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_14 = 0;
28757  __pyx_t_17 = NULL;
28758  } else {
28759  __pyx_t_14 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1524, __pyx_L1_error)
28760  __Pyx_GOTREF(__pyx_t_4);
28761  __pyx_t_17 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1524, __pyx_L1_error)
28762  }
28763  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28764  for (;;) {
28765  if (likely(!__pyx_t_17)) {
28766  if (likely(PyList_CheckExact(__pyx_t_4))) {
28767  if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_4)) break;
28768  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
28769  __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_14); __Pyx_INCREF(__pyx_t_2); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1524, __pyx_L1_error)
28770  #else
28771  __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1524, __pyx_L1_error)
28772  __Pyx_GOTREF(__pyx_t_2);
28773  #endif
28774  } else {
28775  if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
28776  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
28777  __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_14); __Pyx_INCREF(__pyx_t_2); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1524, __pyx_L1_error)
28778  #else
28779  __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1524, __pyx_L1_error)
28780  __Pyx_GOTREF(__pyx_t_2);
28781  #endif
28782  }
28783  } else {
28784  __pyx_t_2 = __pyx_t_17(__pyx_t_4);
28785  if (unlikely(!__pyx_t_2)) {
28786  PyObject* exc_type = PyErr_Occurred();
28787  if (exc_type) {
28788  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
28789  else __PYX_ERR(0, 1524, __pyx_L1_error)
28790  }
28791  break;
28792  }
28793  __Pyx_GOTREF(__pyx_t_2);
28794  }
28795  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_2);
28796  __pyx_t_2 = 0;
28797 
28798  /* "WaveTools.py":1525
28799  * self.kDir = np.zeros((len(self.ki),3),)
28800  * for ii in range(3):
28801  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii] # <<<<<<<<<<<<<<
28802  * if(self.N > 10000):
28803  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
28804  */
28805  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->ki), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1525, __pyx_L1_error)
28806  __Pyx_GOTREF(__pyx_t_2);
28807  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDir), __pyx_v_ii); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
28808  __Pyx_GOTREF(__pyx_t_3);
28809  __pyx_t_11 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1525, __pyx_L1_error)
28810  __Pyx_GOTREF(__pyx_t_11);
28811  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28812  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28813  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
28814  __Pyx_GOTREF(__pyx_t_3);
28815  __Pyx_INCREF(__pyx_slice__4);
28816  __Pyx_GIVEREF(__pyx_slice__4);
28817  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_slice__4);
28818  __Pyx_INCREF(__pyx_v_ii);
28819  __Pyx_GIVEREF(__pyx_v_ii);
28820  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_ii);
28821  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_3, __pyx_t_11) < 0)) __PYX_ERR(0, 1525, __pyx_L1_error)
28822  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28823  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28824 
28825  /* "WaveTools.py":1524
28826  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,fim))
28827  * self.kDir = np.zeros((len(self.ki),3),)
28828  * for ii in range(3): # <<<<<<<<<<<<<<
28829  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
28830  * if(self.N > 10000):
28831  */
28832  }
28833  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28834 
28835  /* "WaveTools.py":1526
28836  * for ii in range(3):
28837  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
28838  * if(self.N > 10000): # <<<<<<<<<<<<<<
28839  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
28840  *
28841  */
28842  __pyx_t_7 = ((__pyx_v_self->N > 0x2710) != 0);
28843  if (__pyx_t_7) {
28844 
28845  /* "WaveTools.py":1527
28846  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
28847  * if(self.N > 10000):
28848  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0) # <<<<<<<<<<<<<<
28849  *
28850  * #C++ declarations
28851  */
28852  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1527, __pyx_L1_error)
28853  __Pyx_GOTREF(__pyx_t_4);
28854  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1527, __pyx_L1_error)
28855  __Pyx_GOTREF(__pyx_t_11);
28856  if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 1527, __pyx_L1_error)
28857  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__23, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1527, __pyx_L1_error)
28858  __Pyx_GOTREF(__pyx_t_3);
28859  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28860  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28861  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28862 
28863  /* "WaveTools.py":1526
28864  * for ii in range(3):
28865  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
28866  * if(self.N > 10000): # <<<<<<<<<<<<<<
28867  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0)
28868  *
28869  */
28870  }
28871 
28872  /* "WaveTools.py":1530
28873  *
28874  * #C++ declarations
28875  * for ij in range(3): # <<<<<<<<<<<<<<
28876  * self.waveDir_c[ij] = self.waveDir[ij]
28877  * self.vDir_c[ij] = self.vDir[ij]
28878  */
28879  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1530, __pyx_L1_error)
28880  __Pyx_GOTREF(__pyx_t_11);
28881  __pyx_t_4 = NULL;
28882  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
28883  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
28884  if (likely(__pyx_t_4)) {
28885  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
28886  __Pyx_INCREF(__pyx_t_4);
28887  __Pyx_INCREF(function);
28888  __Pyx_DECREF_SET(__pyx_t_11, function);
28889  }
28890  }
28891  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_4, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_int_3);
28892  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
28893  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1530, __pyx_L1_error)
28894  __Pyx_GOTREF(__pyx_t_3);
28895  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28896  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
28897  __pyx_t_11 = __pyx_t_3; __Pyx_INCREF(__pyx_t_11); __pyx_t_14 = 0;
28898  __pyx_t_17 = NULL;
28899  } else {
28900  __pyx_t_14 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1530, __pyx_L1_error)
28901  __Pyx_GOTREF(__pyx_t_11);
28902  __pyx_t_17 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1530, __pyx_L1_error)
28903  }
28904  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28905  for (;;) {
28906  if (likely(!__pyx_t_17)) {
28907  if (likely(PyList_CheckExact(__pyx_t_11))) {
28908  if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_11)) break;
28909  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
28910  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1530, __pyx_L1_error)
28911  #else
28912  __pyx_t_3 = PySequence_ITEM(__pyx_t_11, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1530, __pyx_L1_error)
28913  __Pyx_GOTREF(__pyx_t_3);
28914  #endif
28915  } else {
28916  if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
28917  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
28918  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1530, __pyx_L1_error)
28919  #else
28920  __pyx_t_3 = PySequence_ITEM(__pyx_t_11, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1530, __pyx_L1_error)
28921  __Pyx_GOTREF(__pyx_t_3);
28922  #endif
28923  }
28924  } else {
28925  __pyx_t_3 = __pyx_t_17(__pyx_t_11);
28926  if (unlikely(!__pyx_t_3)) {
28927  PyObject* exc_type = PyErr_Occurred();
28928  if (exc_type) {
28929  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
28930  else __PYX_ERR(0, 1530, __pyx_L1_error)
28931  }
28932  break;
28933  }
28934  __Pyx_GOTREF(__pyx_t_3);
28935  }
28936  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_3);
28937  __pyx_t_3 = 0;
28938 
28939  /* "WaveTools.py":1531
28940  * #C++ declarations
28941  * for ij in range(3):
28942  * self.waveDir_c[ij] = self.waveDir[ij] # <<<<<<<<<<<<<<
28943  * self.vDir_c[ij] = self.vDir[ij]
28944  * self.waveDir_ = self.waveDir_c
28945  */
28946  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDir), __pyx_v_ij); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1531, __pyx_L1_error)
28947  __Pyx_GOTREF(__pyx_t_3);
28948  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1531, __pyx_L1_error)
28949  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28950  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1531, __pyx_L1_error)
28951  (__pyx_v_self->waveDir_c[__pyx_t_18]) = __pyx_t_13;
28952 
28953  /* "WaveTools.py":1532
28954  * for ij in range(3):
28955  * self.waveDir_c[ij] = self.waveDir[ij]
28956  * self.vDir_c[ij] = self.vDir[ij] # <<<<<<<<<<<<<<
28957  * self.waveDir_ = self.waveDir_c
28958  * self.vDir_ = self.vDir_c
28959  */
28960  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->vDir), __pyx_v_ij); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1532, __pyx_L1_error)
28961  __Pyx_GOTREF(__pyx_t_3);
28962  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1532, __pyx_L1_error)
28963  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28964  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1532, __pyx_L1_error)
28965  (__pyx_v_self->vDir_c[__pyx_t_18]) = __pyx_t_13;
28966 
28967  /* "WaveTools.py":1530
28968  *
28969  * #C++ declarations
28970  * for ij in range(3): # <<<<<<<<<<<<<<
28971  * self.waveDir_c[ij] = self.waveDir[ij]
28972  * self.vDir_c[ij] = self.vDir[ij]
28973  */
28974  }
28975  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
28976 
28977  /* "WaveTools.py":1533
28978  * self.waveDir_c[ij] = self.waveDir[ij]
28979  * self.vDir_c[ij] = self.vDir[ij]
28980  * self.waveDir_ = self.waveDir_c # <<<<<<<<<<<<<<
28981  * self.vDir_ = self.vDir_c
28982  *
28983  */
28984  __pyx_t_19 = __pyx_v_self->waveDir_c;
28985  __pyx_v_self->waveDir_ = __pyx_t_19;
28986 
28987  /* "WaveTools.py":1534
28988  * self.vDir_c[ij] = self.vDir[ij]
28989  * self.waveDir_ = self.waveDir_c
28990  * self.vDir_ = self.vDir_c # <<<<<<<<<<<<<<
28991  *
28992  *
28993  */
28994  __pyx_t_19 = __pyx_v_self->vDir_c;
28995  __pyx_v_self->vDir_ = __pyx_t_19;
28996 
28997  /* "WaveTools.py":1537
28998  *
28999  *
29000  * for ij in range(self.N): # <<<<<<<<<<<<<<
29001  * for kk in range(3):
29002  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
29003  */
29004  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1537, __pyx_L1_error)
29005  __Pyx_GOTREF(__pyx_t_3);
29006  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1537, __pyx_L1_error)
29007  __Pyx_GOTREF(__pyx_t_4);
29008  __pyx_t_2 = NULL;
29009  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
29010  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
29011  if (likely(__pyx_t_2)) {
29012  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
29013  __Pyx_INCREF(__pyx_t_2);
29014  __Pyx_INCREF(function);
29015  __Pyx_DECREF_SET(__pyx_t_3, function);
29016  }
29017  }
29018  __pyx_t_11 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
29019  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
29020  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29021  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1537, __pyx_L1_error)
29022  __Pyx_GOTREF(__pyx_t_11);
29023  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29024  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
29025  __pyx_t_3 = __pyx_t_11; __Pyx_INCREF(__pyx_t_3); __pyx_t_14 = 0;
29026  __pyx_t_17 = NULL;
29027  } else {
29028  __pyx_t_14 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1537, __pyx_L1_error)
29029  __Pyx_GOTREF(__pyx_t_3);
29030  __pyx_t_17 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1537, __pyx_L1_error)
29031  }
29032  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
29033  for (;;) {
29034  if (likely(!__pyx_t_17)) {
29035  if (likely(PyList_CheckExact(__pyx_t_3))) {
29036  if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_3)) break;
29037  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29038  __pyx_t_11 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_14); __Pyx_INCREF(__pyx_t_11); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1537, __pyx_L1_error)
29039  #else
29040  __pyx_t_11 = PySequence_ITEM(__pyx_t_3, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1537, __pyx_L1_error)
29041  __Pyx_GOTREF(__pyx_t_11);
29042  #endif
29043  } else {
29044  if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
29045  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29046  __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_14); __Pyx_INCREF(__pyx_t_11); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 1537, __pyx_L1_error)
29047  #else
29048  __pyx_t_11 = PySequence_ITEM(__pyx_t_3, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1537, __pyx_L1_error)
29049  __Pyx_GOTREF(__pyx_t_11);
29050  #endif
29051  }
29052  } else {
29053  __pyx_t_11 = __pyx_t_17(__pyx_t_3);
29054  if (unlikely(!__pyx_t_11)) {
29055  PyObject* exc_type = PyErr_Occurred();
29056  if (exc_type) {
29057  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
29058  else __PYX_ERR(0, 1537, __pyx_L1_error)
29059  }
29060  break;
29061  }
29062  __Pyx_GOTREF(__pyx_t_11);
29063  }
29064  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_11);
29065  __pyx_t_11 = 0;
29066 
29067  /* "WaveTools.py":1538
29068  *
29069  * for ij in range(self.N):
29070  * for kk in range(3): # <<<<<<<<<<<<<<
29071  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
29072  * self.omega_c[ij] = self.omega[ij]
29073  */
29074  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1538, __pyx_L1_error)
29075  __Pyx_GOTREF(__pyx_t_4);
29076  __pyx_t_2 = NULL;
29077  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
29078  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
29079  if (likely(__pyx_t_2)) {
29080  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
29081  __Pyx_INCREF(__pyx_t_2);
29082  __Pyx_INCREF(function);
29083  __Pyx_DECREF_SET(__pyx_t_4, function);
29084  }
29085  }
29086  __pyx_t_11 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_3);
29087  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
29088  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1538, __pyx_L1_error)
29089  __Pyx_GOTREF(__pyx_t_11);
29090  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29091  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
29092  __pyx_t_4 = __pyx_t_11; __Pyx_INCREF(__pyx_t_4); __pyx_t_18 = 0;
29093  __pyx_t_20 = NULL;
29094  } else {
29095  __pyx_t_18 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1538, __pyx_L1_error)
29096  __Pyx_GOTREF(__pyx_t_4);
29097  __pyx_t_20 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1538, __pyx_L1_error)
29098  }
29099  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
29100  for (;;) {
29101  if (likely(!__pyx_t_20)) {
29102  if (likely(PyList_CheckExact(__pyx_t_4))) {
29103  if (__pyx_t_18 >= PyList_GET_SIZE(__pyx_t_4)) break;
29104  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29105  __pyx_t_11 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_18); __Pyx_INCREF(__pyx_t_11); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 1538, __pyx_L1_error)
29106  #else
29107  __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1538, __pyx_L1_error)
29108  __Pyx_GOTREF(__pyx_t_11);
29109  #endif
29110  } else {
29111  if (__pyx_t_18 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
29112  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29113  __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_18); __Pyx_INCREF(__pyx_t_11); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 1538, __pyx_L1_error)
29114  #else
29115  __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1538, __pyx_L1_error)
29116  __Pyx_GOTREF(__pyx_t_11);
29117  #endif
29118  }
29119  } else {
29120  __pyx_t_11 = __pyx_t_20(__pyx_t_4);
29121  if (unlikely(!__pyx_t_11)) {
29122  PyObject* exc_type = PyErr_Occurred();
29123  if (exc_type) {
29124  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
29125  else __PYX_ERR(0, 1538, __pyx_L1_error)
29126  }
29127  break;
29128  }
29129  __Pyx_GOTREF(__pyx_t_11);
29130  }
29131  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_11);
29132  __pyx_t_11 = 0;
29133 
29134  /* "WaveTools.py":1539
29135  * for ij in range(self.N):
29136  * for kk in range(3):
29137  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk] # <<<<<<<<<<<<<<
29138  * self.omega_c[ij] = self.omega[ij]
29139  * self.ki_c[ij] =self.ki[ij]
29140  */
29141  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1539, __pyx_L1_error)
29142  __Pyx_GOTREF(__pyx_t_11);
29143  __Pyx_INCREF(__pyx_v_ij);
29144  __Pyx_GIVEREF(__pyx_v_ij);
29145  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_ij);
29146  __Pyx_INCREF(__pyx_v_kk);
29147  __Pyx_GIVEREF(__pyx_v_kk);
29148  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_kk);
29149  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1539, __pyx_L1_error)
29150  __Pyx_GOTREF(__pyx_t_2);
29151  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
29152  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L1_error)
29153  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29154  __pyx_t_2 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1539, __pyx_L1_error)
29155  __Pyx_GOTREF(__pyx_t_2);
29156  __pyx_t_11 = PyNumber_Add(__pyx_t_2, __pyx_v_kk); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1539, __pyx_L1_error)
29157  __Pyx_GOTREF(__pyx_t_11);
29158  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29159  __pyx_t_21 = __Pyx_PyIndex_AsSsize_t(__pyx_t_11); if (unlikely((__pyx_t_21 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L1_error)
29160  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
29161  (__pyx_v_self->kDir_c[__pyx_t_21]) = __pyx_t_13;
29162 
29163  /* "WaveTools.py":1538
29164  *
29165  * for ij in range(self.N):
29166  * for kk in range(3): # <<<<<<<<<<<<<<
29167  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
29168  * self.omega_c[ij] = self.omega[ij]
29169  */
29170  }
29171  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29172 
29173  /* "WaveTools.py":1540
29174  * for kk in range(3):
29175  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
29176  * self.omega_c[ij] = self.omega[ij] # <<<<<<<<<<<<<<
29177  * self.ki_c[ij] =self.ki[ij]
29178  * self.tanh_c[ij] = self.tanhF[ij]
29179  */
29180  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omega), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1540, __pyx_L1_error)
29181  __Pyx_GOTREF(__pyx_t_4);
29182  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1540, __pyx_L1_error)
29183  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29184  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1540, __pyx_L1_error)
29185  (__pyx_v_self->omega_c[__pyx_t_18]) = __pyx_t_13;
29186 
29187  /* "WaveTools.py":1541
29188  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
29189  * self.omega_c[ij] = self.omega[ij]
29190  * self.ki_c[ij] =self.ki[ij] # <<<<<<<<<<<<<<
29191  * self.tanh_c[ij] = self.tanhF[ij]
29192  * self.ai_c[ij] = self.ai[ij]
29193  */
29194  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1541, __pyx_L1_error)
29195  __Pyx_GOTREF(__pyx_t_4);
29196  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1541, __pyx_L1_error)
29197  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29198  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1541, __pyx_L1_error)
29199  (__pyx_v_self->ki_c[__pyx_t_18]) = __pyx_t_13;
29200 
29201  /* "WaveTools.py":1542
29202  * self.omega_c[ij] = self.omega[ij]
29203  * self.ki_c[ij] =self.ki[ij]
29204  * self.tanh_c[ij] = self.tanhF[ij] # <<<<<<<<<<<<<<
29205  * self.ai_c[ij] = self.ai[ij]
29206  * self.phi_c[ij] = self.phi[ij]
29207  */
29208  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->tanhF), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1542, __pyx_L1_error)
29209  __Pyx_GOTREF(__pyx_t_4);
29210  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1542, __pyx_L1_error)
29211  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29212  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1542, __pyx_L1_error)
29213  (__pyx_v_self->tanh_c[__pyx_t_18]) = __pyx_t_13;
29214 
29215  /* "WaveTools.py":1543
29216  * self.ki_c[ij] =self.ki[ij]
29217  * self.tanh_c[ij] = self.tanhF[ij]
29218  * self.ai_c[ij] = self.ai[ij] # <<<<<<<<<<<<<<
29219  * self.phi_c[ij] = self.phi[ij]
29220  *
29221  */
29222  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ai), __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1543, __pyx_L1_error)
29223  __Pyx_GOTREF(__pyx_t_4);
29224  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1543, __pyx_L1_error)
29225  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29226  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1543, __pyx_L1_error)
29227  (__pyx_v_self->ai_c[__pyx_t_18]) = __pyx_t_13;
29228 
29229  /* "WaveTools.py":1544
29230  * self.tanh_c[ij] = self.tanhF[ij]
29231  * self.ai_c[ij] = self.ai[ij]
29232  * self.phi_c[ij] = self.phi[ij] # <<<<<<<<<<<<<<
29233  *
29234  * self.kDir_ = self.kDir_c
29235  */
29236  __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->phi, __pyx_v_ij); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1544, __pyx_L1_error)
29237  __Pyx_GOTREF(__pyx_t_4);
29238  __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1544, __pyx_L1_error)
29239  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
29240  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1544, __pyx_L1_error)
29241  (__pyx_v_self->phi_c[__pyx_t_18]) = __pyx_t_13;
29242 
29243  /* "WaveTools.py":1537
29244  *
29245  *
29246  * for ij in range(self.N): # <<<<<<<<<<<<<<
29247  * for kk in range(3):
29248  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
29249  */
29250  }
29251  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29252 
29253  /* "WaveTools.py":1546
29254  * self.phi_c[ij] = self.phi[ij]
29255  *
29256  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
29257  * self.omega_ = self.omega_c
29258  * self.ki_ =self.ki_c
29259  */
29260  __pyx_t_19 = __pyx_v_self->kDir_c;
29261  __pyx_v_self->kDir_ = __pyx_t_19;
29262 
29263  /* "WaveTools.py":1547
29264  *
29265  * self.kDir_ = self.kDir_c
29266  * self.omega_ = self.omega_c # <<<<<<<<<<<<<<
29267  * self.ki_ =self.ki_c
29268  * self.ai_ = self.ai_c
29269  */
29270  __pyx_t_19 = __pyx_v_self->omega_c;
29271  __pyx_v_self->omega_ = __pyx_t_19;
29272 
29273  /* "WaveTools.py":1548
29274  * self.kDir_ = self.kDir_c
29275  * self.omega_ = self.omega_c
29276  * self.ki_ =self.ki_c # <<<<<<<<<<<<<<
29277  * self.ai_ = self.ai_c
29278  * self.tanh_ = self.tanh_c
29279  */
29280  __pyx_t_19 = __pyx_v_self->ki_c;
29281  __pyx_v_self->ki_ = __pyx_t_19;
29282 
29283  /* "WaveTools.py":1549
29284  * self.omega_ = self.omega_c
29285  * self.ki_ =self.ki_c
29286  * self.ai_ = self.ai_c # <<<<<<<<<<<<<<
29287  * self.tanh_ = self.tanh_c
29288  * self.phi_ = self.phi_c
29289  */
29290  __pyx_t_19 = __pyx_v_self->ai_c;
29291  __pyx_v_self->ai_ = __pyx_t_19;
29292 
29293  /* "WaveTools.py":1550
29294  * self.ki_ =self.ki_c
29295  * self.ai_ = self.ai_c
29296  * self.tanh_ = self.tanh_c # <<<<<<<<<<<<<<
29297  * self.phi_ = self.phi_c
29298  *
29299  */
29300  __pyx_t_19 = __pyx_v_self->tanh_c;
29301  __pyx_v_self->tanh_ = __pyx_t_19;
29302 
29303  /* "WaveTools.py":1551
29304  * self.ai_ = self.ai_c
29305  * self.tanh_ = self.tanh_c
29306  * self.phi_ = self.phi_c # <<<<<<<<<<<<<<
29307  *
29308  * def _cpp_eta(self, x, t):
29309  */
29310  __pyx_t_19 = __pyx_v_self->phi_c;
29311  __pyx_v_self->phi_ = __pyx_t_19;
29312 
29313  /* "WaveTools.py":1432
29314  * Switch for optimised functions
29315  * """
29316  * def __cinit__(self, # <<<<<<<<<<<<<<
29317  * Tp,
29318  * Hs,
29319  */
29320 
29321  /* function exit code */
29322  __pyx_r = 0;
29323  goto __pyx_L0;
29324  __pyx_L1_error:;
29325  __Pyx_XDECREF(__pyx_t_2);
29326  __Pyx_XDECREF(__pyx_t_3);
29327  __Pyx_XDECREF(__pyx_t_4);
29328  __Pyx_XDECREF(__pyx_t_5);
29329  __Pyx_XDECREF(__pyx_t_11);
29330  __Pyx_XDECREF(__pyx_t_12);
29331  __Pyx_XDECREF(__pyx_t_16);
29332  __Pyx_AddTraceback("WaveTools.RandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
29333  __pyx_r = -1;
29334  __pyx_L0:;
29335  __Pyx_XDECREF(__pyx_v_validSpectra);
29336  __Pyx_XDECREF(__pyx_v_spec_fun);
29337  __Pyx_XDECREF(__pyx_v_f_c);
29338  __Pyx_XDECREF(__pyx_v_S_c);
29339  __Pyx_XDECREF(__pyx_v_fmin);
29340  __Pyx_XDECREF(__pyx_v_omega_p);
29341  __Pyx_XDECREF(__pyx_v_fim);
29342  __Pyx_XDECREF(__pyx_v_ii);
29343  __Pyx_XDECREF(__pyx_v_ij);
29344  __Pyx_XDECREF(__pyx_v_kk);
29345  __Pyx_XDECREF(__pyx_v_waveDir);
29346  __Pyx_RefNannyFinishContext();
29347  return __pyx_r;
29348 }
29349 
29350 /* "WaveTools.py":1553
29351  * self.phi_ = self.phi_c
29352  *
29353  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
29354  *
29355  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
29356  */
29357 
29358 static double __pyx_f_9WaveTools_11RandomWaves__cpp_eta(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
29359  double __pyx_r;
29360  __Pyx_RefNannyDeclarations
29361  __Pyx_RefNannySetupContext("_cpp_eta", 0);
29362 
29363  /* "WaveTools.py":1555
29364  * def _cpp_eta(self, x, t):
29365  *
29366  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast) # <<<<<<<<<<<<<<
29367  *
29368  * def eta(self, x, t):
29369  */
29370  __pyx_r = proteus::__cpp_etaRandom(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->N, __pyx_v_self->fast);
29371  goto __pyx_L0;
29372 
29373  /* "WaveTools.py":1553
29374  * self.phi_ = self.phi_c
29375  *
29376  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
29377  *
29378  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
29379  */
29380 
29381  /* function exit code */
29382  __pyx_L0:;
29383  __Pyx_RefNannyFinishContext();
29384  return __pyx_r;
29385 }
29386 
29387 /* "WaveTools.py":1557
29388  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
29389  *
29390  * def eta(self, x, t): # <<<<<<<<<<<<<<
29391  * """Calculates free surface elevation (RandomWaves class)
29392  * Parameters
29393  */
29394 
29395 /* Python wrapper */
29396 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
29397 static char __pyx_doc_9WaveTools_11RandomWaves_2eta[] = "Calculates free surface elevation (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
29398 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11RandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_2eta};
29399 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
29400  PyObject *__pyx_v_x = 0;
29401  PyObject *__pyx_v_t = 0;
29402  int __pyx_lineno = 0;
29403  const char *__pyx_filename = NULL;
29404  int __pyx_clineno = 0;
29405  PyObject *__pyx_r = 0;
29406  __Pyx_RefNannyDeclarations
29407  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
29408  {
29409  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
29410  PyObject* values[2] = {0,0};
29411  if (unlikely(__pyx_kwds)) {
29412  Py_ssize_t kw_args;
29413  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
29414  switch (pos_args) {
29415  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
29416  CYTHON_FALLTHROUGH;
29417  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
29418  CYTHON_FALLTHROUGH;
29419  case 0: break;
29420  default: goto __pyx_L5_argtuple_error;
29421  }
29422  kw_args = PyDict_Size(__pyx_kwds);
29423  switch (pos_args) {
29424  case 0:
29425  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
29426  else goto __pyx_L5_argtuple_error;
29427  CYTHON_FALLTHROUGH;
29428  case 1:
29429  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
29430  else {
29431  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 1557, __pyx_L3_error)
29432  }
29433  }
29434  if (unlikely(kw_args > 0)) {
29435  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 1557, __pyx_L3_error)
29436  }
29437  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
29438  goto __pyx_L5_argtuple_error;
29439  } else {
29440  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
29441  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
29442  }
29443  __pyx_v_x = values[0];
29444  __pyx_v_t = values[1];
29445  }
29446  goto __pyx_L4_argument_unpacking_done;
29447  __pyx_L5_argtuple_error:;
29448  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1557, __pyx_L3_error)
29449  __pyx_L3_error:;
29450  __Pyx_AddTraceback("WaveTools.RandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
29451  __Pyx_RefNannyFinishContext();
29452  return NULL;
29453  __pyx_L4_argument_unpacking_done:;
29454  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2eta(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
29455 
29456  /* function exit code */
29457  __Pyx_RefNannyFinishContext();
29458  return __pyx_r;
29459 }
29460 
29461 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2eta(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
29462  double __pyx_v_xx[3];
29463  PyObject *__pyx_r = NULL;
29464  __Pyx_RefNannyDeclarations
29465  PyObject *__pyx_t_1 = NULL;
29466  double __pyx_t_2;
29467  int __pyx_lineno = 0;
29468  const char *__pyx_filename = NULL;
29469  int __pyx_clineno = 0;
29470  __Pyx_RefNannySetupContext("eta", 0);
29471 
29472  /* "WaveTools.py":1573
29473  * """
29474  * cython.declare(xx=cython.double[3])
29475  * xx[0] = x[0] # <<<<<<<<<<<<<<
29476  * xx[1] = x[1]
29477  * xx[2] = x[2]
29478  */
29479  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1573, __pyx_L1_error)
29480  __Pyx_GOTREF(__pyx_t_1);
29481  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1573, __pyx_L1_error)
29482  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
29483  (__pyx_v_xx[0]) = __pyx_t_2;
29484 
29485  /* "WaveTools.py":1574
29486  * cython.declare(xx=cython.double[3])
29487  * xx[0] = x[0]
29488  * xx[1] = x[1] # <<<<<<<<<<<<<<
29489  * xx[2] = x[2]
29490  * return self._cpp_eta(xx,t)
29491  */
29492  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
29493  __Pyx_GOTREF(__pyx_t_1);
29494  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1574, __pyx_L1_error)
29495  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
29496  (__pyx_v_xx[1]) = __pyx_t_2;
29497 
29498  /* "WaveTools.py":1575
29499  * xx[0] = x[0]
29500  * xx[1] = x[1]
29501  * xx[2] = x[2] # <<<<<<<<<<<<<<
29502  * return self._cpp_eta(xx,t)
29503  *
29504  */
29505  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1575, __pyx_L1_error)
29506  __Pyx_GOTREF(__pyx_t_1);
29507  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1575, __pyx_L1_error)
29508  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
29509  (__pyx_v_xx[2]) = __pyx_t_2;
29510 
29511  /* "WaveTools.py":1576
29512  * xx[1] = x[1]
29513  * xx[2] = x[2]
29514  * return self._cpp_eta(xx,t) # <<<<<<<<<<<<<<
29515  *
29516  * def _cpp_u(self, U, x, t):
29517  */
29518  __Pyx_XDECREF(__pyx_r);
29519  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1576, __pyx_L1_error)
29520  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
29521  __Pyx_GOTREF(__pyx_t_1);
29522  __pyx_r = __pyx_t_1;
29523  __pyx_t_1 = 0;
29524  goto __pyx_L0;
29525 
29526  /* "WaveTools.py":1557
29527  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
29528  *
29529  * def eta(self, x, t): # <<<<<<<<<<<<<<
29530  * """Calculates free surface elevation (RandomWaves class)
29531  * Parameters
29532  */
29533 
29534  /* function exit code */
29535  __pyx_L1_error:;
29536  __Pyx_XDECREF(__pyx_t_1);
29537  __Pyx_AddTraceback("WaveTools.RandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
29538  __pyx_r = NULL;
29539  __pyx_L0:;
29540  __Pyx_XGIVEREF(__pyx_r);
29541  __Pyx_RefNannyFinishContext();
29542  return __pyx_r;
29543 }
29544 
29545 /* "WaveTools.py":1578
29546  * return self._cpp_eta(xx,t)
29547  *
29548  * def _cpp_u(self, U, x, t): # <<<<<<<<<<<<<<
29549  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
29550  *
29551  */
29552 
29553 static void __pyx_f_9WaveTools_11RandomWaves__cpp_u(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
29554  __Pyx_RefNannyDeclarations
29555  __Pyx_RefNannySetupContext("_cpp_u", 0);
29556 
29557  /* "WaveTools.py":1579
29558  *
29559  * def _cpp_u(self, U, x, t):
29560  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast) # <<<<<<<<<<<<<<
29561  *
29562  * def u(self, x, t):
29563  */
29564  proteus::__cpp_uRandom(__pyx_v_U, __pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->N, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanh_, __pyx_v_self->gAbs, __pyx_v_self->fast);
29565 
29566  /* "WaveTools.py":1578
29567  * return self._cpp_eta(xx,t)
29568  *
29569  * def _cpp_u(self, U, x, t): # <<<<<<<<<<<<<<
29570  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
29571  *
29572  */
29573 
29574  /* function exit code */
29575  __Pyx_RefNannyFinishContext();
29576 }
29577 
29578 /* "WaveTools.py":1581
29579  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
29580  *
29581  * def u(self, x, t): # <<<<<<<<<<<<<<
29582  * """Calculates wave velocity vector (RandomWaves class)
29583  * Parameters
29584  */
29585 
29586 /* Python wrapper */
29587 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
29588 static char __pyx_doc_9WaveTools_11RandomWaves_4u[] = "Calculates wave velocity vector (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
29589 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11RandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_4u};
29590 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
29591  PyObject *__pyx_v_x = 0;
29592  PyObject *__pyx_v_t = 0;
29593  int __pyx_lineno = 0;
29594  const char *__pyx_filename = NULL;
29595  int __pyx_clineno = 0;
29596  PyObject *__pyx_r = 0;
29597  __Pyx_RefNannyDeclarations
29598  __Pyx_RefNannySetupContext("u (wrapper)", 0);
29599  {
29600  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
29601  PyObject* values[2] = {0,0};
29602  if (unlikely(__pyx_kwds)) {
29603  Py_ssize_t kw_args;
29604  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
29605  switch (pos_args) {
29606  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
29607  CYTHON_FALLTHROUGH;
29608  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
29609  CYTHON_FALLTHROUGH;
29610  case 0: break;
29611  default: goto __pyx_L5_argtuple_error;
29612  }
29613  kw_args = PyDict_Size(__pyx_kwds);
29614  switch (pos_args) {
29615  case 0:
29616  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
29617  else goto __pyx_L5_argtuple_error;
29618  CYTHON_FALLTHROUGH;
29619  case 1:
29620  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
29621  else {
29622  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 1581, __pyx_L3_error)
29623  }
29624  }
29625  if (unlikely(kw_args > 0)) {
29626  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 1581, __pyx_L3_error)
29627  }
29628  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
29629  goto __pyx_L5_argtuple_error;
29630  } else {
29631  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
29632  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
29633  }
29634  __pyx_v_x = values[0];
29635  __pyx_v_t = values[1];
29636  }
29637  goto __pyx_L4_argument_unpacking_done;
29638  __pyx_L5_argtuple_error:;
29639  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1581, __pyx_L3_error)
29640  __pyx_L3_error:;
29641  __Pyx_AddTraceback("WaveTools.RandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
29642  __Pyx_RefNannyFinishContext();
29643  return NULL;
29644  __pyx_L4_argument_unpacking_done:;
29645  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4u(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
29646 
29647  /* function exit code */
29648  __Pyx_RefNannyFinishContext();
29649  return __pyx_r;
29650 }
29651 
29652 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4u(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
29653  double __pyx_v_xx[3];
29654  double __pyx_v_cppU[3];
29655  PyObject *__pyx_v_ii = NULL;
29656  PyObject *__pyx_v_U = NULL;
29657  PyObject *__pyx_r = NULL;
29658  __Pyx_RefNannyDeclarations
29659  PyObject *__pyx_t_1 = NULL;
29660  PyObject *__pyx_t_2 = NULL;
29661  PyObject *__pyx_t_3 = NULL;
29662  Py_ssize_t __pyx_t_4;
29663  PyObject *(*__pyx_t_5)(PyObject *);
29664  double __pyx_t_6;
29665  Py_ssize_t __pyx_t_7;
29666  int __pyx_lineno = 0;
29667  const char *__pyx_filename = NULL;
29668  int __pyx_clineno = 0;
29669  __Pyx_RefNannySetupContext("u", 0);
29670 
29671  /* "WaveTools.py":1599
29672  * cython.declare(xx=cython.double[3])
29673  * cython.declare(cppU=cython.double[3])
29674  * for ii in range(3): # <<<<<<<<<<<<<<
29675  * xx[ii] = x[ii]
29676  * cppU[ii] = 0.
29677  */
29678  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
29679  __Pyx_GOTREF(__pyx_t_2);
29680  __pyx_t_3 = NULL;
29681  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
29682  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
29683  if (likely(__pyx_t_3)) {
29684  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
29685  __Pyx_INCREF(__pyx_t_3);
29686  __Pyx_INCREF(function);
29687  __Pyx_DECREF_SET(__pyx_t_2, function);
29688  }
29689  }
29690  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
29691  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
29692  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
29693  __Pyx_GOTREF(__pyx_t_1);
29694  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29695  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
29696  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
29697  __pyx_t_5 = NULL;
29698  } else {
29699  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
29700  __Pyx_GOTREF(__pyx_t_2);
29701  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1599, __pyx_L1_error)
29702  }
29703  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
29704  for (;;) {
29705  if (likely(!__pyx_t_5)) {
29706  if (likely(PyList_CheckExact(__pyx_t_2))) {
29707  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
29708  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29709  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1599, __pyx_L1_error)
29710  #else
29711  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
29712  __Pyx_GOTREF(__pyx_t_1);
29713  #endif
29714  } else {
29715  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
29716  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29717  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1599, __pyx_L1_error)
29718  #else
29719  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
29720  __Pyx_GOTREF(__pyx_t_1);
29721  #endif
29722  }
29723  } else {
29724  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
29725  if (unlikely(!__pyx_t_1)) {
29726  PyObject* exc_type = PyErr_Occurred();
29727  if (exc_type) {
29728  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
29729  else __PYX_ERR(0, 1599, __pyx_L1_error)
29730  }
29731  break;
29732  }
29733  __Pyx_GOTREF(__pyx_t_1);
29734  }
29735  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
29736  __pyx_t_1 = 0;
29737 
29738  /* "WaveTools.py":1600
29739  * cython.declare(cppU=cython.double[3])
29740  * for ii in range(3):
29741  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
29742  * cppU[ii] = 0.
29743  * U = np.zeros(3,)
29744  */
29745  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1600, __pyx_L1_error)
29746  __Pyx_GOTREF(__pyx_t_1);
29747  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1600, __pyx_L1_error)
29748  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
29749  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1600, __pyx_L1_error)
29750  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
29751 
29752  /* "WaveTools.py":1601
29753  * for ii in range(3):
29754  * xx[ii] = x[ii]
29755  * cppU[ii] = 0. # <<<<<<<<<<<<<<
29756  * U = np.zeros(3,)
29757  * self._cpp_u(cppU,xx,t)
29758  */
29759  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1601, __pyx_L1_error)
29760  (__pyx_v_cppU[__pyx_t_7]) = 0.;
29761 
29762  /* "WaveTools.py":1599
29763  * cython.declare(xx=cython.double[3])
29764  * cython.declare(cppU=cython.double[3])
29765  * for ii in range(3): # <<<<<<<<<<<<<<
29766  * xx[ii] = x[ii]
29767  * cppU[ii] = 0.
29768  */
29769  }
29770  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29771 
29772  /* "WaveTools.py":1602
29773  * xx[ii] = x[ii]
29774  * cppU[ii] = 0.
29775  * U = np.zeros(3,) # <<<<<<<<<<<<<<
29776  * self._cpp_u(cppU,xx,t)
29777  * U[0] = cppU[0]
29778  */
29779  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error)
29780  __Pyx_GOTREF(__pyx_t_1);
29781  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1602, __pyx_L1_error)
29782  __Pyx_GOTREF(__pyx_t_3);
29783  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
29784  __pyx_t_1 = NULL;
29785  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
29786  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
29787  if (likely(__pyx_t_1)) {
29788  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
29789  __Pyx_INCREF(__pyx_t_1);
29790  __Pyx_INCREF(function);
29791  __Pyx_DECREF_SET(__pyx_t_3, function);
29792  }
29793  }
29794  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
29795  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
29796  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error)
29797  __Pyx_GOTREF(__pyx_t_2);
29798  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29799  __pyx_v_U = __pyx_t_2;
29800  __pyx_t_2 = 0;
29801 
29802  /* "WaveTools.py":1603
29803  * cppU[ii] = 0.
29804  * U = np.zeros(3,)
29805  * self._cpp_u(cppU,xx,t) # <<<<<<<<<<<<<<
29806  * U[0] = cppU[0]
29807  * U[1] = cppU[1]
29808  */
29809  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1603, __pyx_L1_error)
29810  ((struct __pyx_vtabstruct_9WaveTools_RandomWaves *)__pyx_v_self->__pyx_vtab)->_cpp_u(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
29811 
29812  /* "WaveTools.py":1604
29813  * U = np.zeros(3,)
29814  * self._cpp_u(cppU,xx,t)
29815  * U[0] = cppU[0] # <<<<<<<<<<<<<<
29816  * U[1] = cppU[1]
29817  * U[2] = cppU[2]
29818  */
29819  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1604, __pyx_L1_error)
29820  __Pyx_GOTREF(__pyx_t_2);
29821  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1604, __pyx_L1_error)
29822  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29823 
29824  /* "WaveTools.py":1605
29825  * self._cpp_u(cppU,xx,t)
29826  * U[0] = cppU[0]
29827  * U[1] = cppU[1] # <<<<<<<<<<<<<<
29828  * U[2] = cppU[2]
29829  *
29830  */
29831  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1605, __pyx_L1_error)
29832  __Pyx_GOTREF(__pyx_t_2);
29833  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1605, __pyx_L1_error)
29834  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29835 
29836  /* "WaveTools.py":1606
29837  * U[0] = cppU[0]
29838  * U[1] = cppU[1]
29839  * U[2] = cppU[2] # <<<<<<<<<<<<<<
29840  *
29841  * return U
29842  */
29843  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1606, __pyx_L1_error)
29844  __Pyx_GOTREF(__pyx_t_2);
29845  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1606, __pyx_L1_error)
29846  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29847 
29848  /* "WaveTools.py":1608
29849  * U[2] = cppU[2]
29850  *
29851  * return U # <<<<<<<<<<<<<<
29852  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])):
29853  * """Writes a timeseries of the free-surface elevation
29854  */
29855  __Pyx_XDECREF(__pyx_r);
29856  __Pyx_INCREF(__pyx_v_U);
29857  __pyx_r = __pyx_v_U;
29858  goto __pyx_L0;
29859 
29860  /* "WaveTools.py":1581
29861  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
29862  *
29863  * def u(self, x, t): # <<<<<<<<<<<<<<
29864  * """Calculates wave velocity vector (RandomWaves class)
29865  * Parameters
29866  */
29867 
29868  /* function exit code */
29869  __pyx_L1_error:;
29870  __Pyx_XDECREF(__pyx_t_1);
29871  __Pyx_XDECREF(__pyx_t_2);
29872  __Pyx_XDECREF(__pyx_t_3);
29873  __Pyx_AddTraceback("WaveTools.RandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
29874  __pyx_r = NULL;
29875  __pyx_L0:;
29876  __Pyx_XDECREF(__pyx_v_ii);
29877  __Pyx_XDECREF(__pyx_v_U);
29878  __Pyx_XGIVEREF(__pyx_r);
29879  __Pyx_RefNannyFinishContext();
29880  return __pyx_r;
29881 }
29882 
29883 /* "WaveTools.py":1609
29884  *
29885  * return U
29886  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
29887  * """Writes a timeseries of the free-surface elevation
29888  *
29889  */
29890 
29891 /* Python wrapper */
29892 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_7writeEtaSeries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
29893 static char __pyx_doc_9WaveTools_11RandomWaves_6writeEtaSeries[] = "Writes a timeseries of the free-surface elevation\n\n It also returns the free surface elevation as a time-eta array.\n If Lgen !=[0.,0.,0.,] then Tstart is modified to account for the\n wave transformation at the most remote point of the relaxation zone.\n\n Parameters\n ----------\n Tstart : float\n Start time\n Tend : float\n End time\n x0 : numpy.ndarray\n Position vector of the time series\n fname : string\n Filename for timeseries file\n Lgen : Optional[numpy.ndarray]\n Length vector of relaxation zone\n\n\n Returns\n ----------\n numpy.ndarray\n 2D numpy array Nx2 containing free-surface elevation in time.\n ";
29894 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_7writeEtaSeries = {"writeEtaSeries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11RandomWaves_7writeEtaSeries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_6writeEtaSeries};
29895 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_7writeEtaSeries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
29896  PyObject *__pyx_v_Tstart = 0;
29897  PyObject *__pyx_v_Tend = 0;
29898  PyObject *__pyx_v_x0 = 0;
29899  PyObject *__pyx_v_fname = 0;
29900  PyObject *__pyx_v_Lgen = 0;
29901  int __pyx_lineno = 0;
29902  const char *__pyx_filename = NULL;
29903  int __pyx_clineno = 0;
29904  PyObject *__pyx_r = 0;
29905  __Pyx_RefNannyDeclarations
29906  __Pyx_RefNannySetupContext("writeEtaSeries (wrapper)", 0);
29907  {
29908  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Tstart,&__pyx_n_s_Tend,&__pyx_n_s_x0,&__pyx_n_s_fname,&__pyx_n_s_Lgen,0};
29909  PyObject* values[5] = {0,0,0,0,0};
29910  values[4] = __pyx_k__29;
29911  if (unlikely(__pyx_kwds)) {
29912  Py_ssize_t kw_args;
29913  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
29914  switch (pos_args) {
29915  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
29916  CYTHON_FALLTHROUGH;
29917  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
29918  CYTHON_FALLTHROUGH;
29919  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
29920  CYTHON_FALLTHROUGH;
29921  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
29922  CYTHON_FALLTHROUGH;
29923  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
29924  CYTHON_FALLTHROUGH;
29925  case 0: break;
29926  default: goto __pyx_L5_argtuple_error;
29927  }
29928  kw_args = PyDict_Size(__pyx_kwds);
29929  switch (pos_args) {
29930  case 0:
29931  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tstart)) != 0)) kw_args--;
29932  else goto __pyx_L5_argtuple_error;
29933  CYTHON_FALLTHROUGH;
29934  case 1:
29935  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tend)) != 0)) kw_args--;
29936  else {
29937  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, 1); __PYX_ERR(0, 1609, __pyx_L3_error)
29938  }
29939  CYTHON_FALLTHROUGH;
29940  case 2:
29941  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
29942  else {
29943  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, 2); __PYX_ERR(0, 1609, __pyx_L3_error)
29944  }
29945  CYTHON_FALLTHROUGH;
29946  case 3:
29947  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
29948  else {
29949  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, 3); __PYX_ERR(0, 1609, __pyx_L3_error)
29950  }
29951  CYTHON_FALLTHROUGH;
29952  case 4:
29953  if (kw_args > 0) {
29954  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Lgen);
29955  if (value) { values[4] = value; kw_args--; }
29956  }
29957  }
29958  if (unlikely(kw_args > 0)) {
29959  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "writeEtaSeries") < 0)) __PYX_ERR(0, 1609, __pyx_L3_error)
29960  }
29961  } else {
29962  switch (PyTuple_GET_SIZE(__pyx_args)) {
29963  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
29964  CYTHON_FALLTHROUGH;
29965  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
29966  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
29967  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
29968  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
29969  break;
29970  default: goto __pyx_L5_argtuple_error;
29971  }
29972  }
29973  __pyx_v_Tstart = values[0];
29974  __pyx_v_Tend = values[1];
29975  __pyx_v_x0 = values[2];
29976  __pyx_v_fname = values[3];
29977  __pyx_v_Lgen = values[4];
29978  }
29979  goto __pyx_L4_argument_unpacking_done;
29980  __pyx_L5_argtuple_error:;
29981  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1609, __pyx_L3_error)
29982  __pyx_L3_error:;
29983  __Pyx_AddTraceback("WaveTools.RandomWaves.writeEtaSeries", __pyx_clineno, __pyx_lineno, __pyx_filename);
29984  __Pyx_RefNannyFinishContext();
29985  return NULL;
29986  __pyx_L4_argument_unpacking_done:;
29987  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_6writeEtaSeries(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_x0, __pyx_v_fname, __pyx_v_Lgen);
29988 
29989  /* function exit code */
29990  __Pyx_RefNannyFinishContext();
29991  return __pyx_r;
29992 }
29993 
29994 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_6writeEtaSeries(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_fname, PyObject *__pyx_v_Lgen) {
29995  PyObject *__pyx_v_dt = NULL;
29996  PyObject *__pyx_v_Tlag = NULL;
29997  PyObject *__pyx_v_j = NULL;
29998  PyObject *__pyx_v_Np = NULL;
29999  PyObject *__pyx_v_time = NULL;
30000  PyObject *__pyx_v_etaR = NULL;
30001  PyObject *__pyx_v_jj = NULL;
30002  PyObject *__pyx_v_series = NULL;
30003  PyObject *__pyx_r = NULL;
30004  __Pyx_RefNannyDeclarations
30005  PyObject *__pyx_t_1 = NULL;
30006  PyObject *__pyx_t_2 = NULL;
30007  PyObject *__pyx_t_3 = NULL;
30008  int __pyx_t_4;
30009  PyObject *__pyx_t_5 = NULL;
30010  int __pyx_t_6;
30011  PyObject *__pyx_t_7 = NULL;
30012  Py_ssize_t __pyx_t_8;
30013  PyObject *(*__pyx_t_9)(PyObject *);
30014  PyObject *__pyx_t_10 = NULL;
30015  PyObject *__pyx_t_11 = NULL;
30016  int __pyx_lineno = 0;
30017  const char *__pyx_filename = NULL;
30018  int __pyx_clineno = 0;
30019  __Pyx_RefNannySetupContext("writeEtaSeries", 0);
30020  __Pyx_INCREF(__pyx_v_Tstart);
30021 
30022  /* "WaveTools.py":1635
30023  * 2D numpy array Nx2 containing free-surface elevation in time.
30024  * """
30025  * if sum(Lgen[:]*self.waveDir[:])< 0 : # <<<<<<<<<<<<<<
30026  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
30027  * sys.exit(1)
30028  */
30029  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1635, __pyx_L1_error)
30030  __Pyx_GOTREF(__pyx_t_1);
30031  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1635, __pyx_L1_error)
30032  __Pyx_GOTREF(__pyx_t_2);
30033  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1635, __pyx_L1_error)
30034  __Pyx_GOTREF(__pyx_t_3);
30035  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30036  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30037  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1635, __pyx_L1_error)
30038  __Pyx_GOTREF(__pyx_t_2);
30039  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30040  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1635, __pyx_L1_error)
30041  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30042  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1635, __pyx_L1_error)
30043  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30044  if (__pyx_t_4) {
30045 
30046  /* "WaveTools.py":1636
30047  * """
30048  * if sum(Lgen[:]*self.waveDir[:])< 0 :
30049  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction') # <<<<<<<<<<<<<<
30050  * sys.exit(1)
30051  * dt = old_div(self.Tp,50.)
30052  */
30053  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1636, __pyx_L1_error)
30054  __Pyx_GOTREF(__pyx_t_2);
30055  __pyx_t_1 = NULL;
30056  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
30057  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
30058  if (likely(__pyx_t_1)) {
30059  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
30060  __Pyx_INCREF(__pyx_t_1);
30061  __Pyx_INCREF(function);
30062  __Pyx_DECREF_SET(__pyx_t_2, function);
30063  }
30064  }
30065  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_kp_s_ERROR_Wavetools_py_Location_vect) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_ERROR_Wavetools_py_Location_vect);
30066  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
30067  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1636, __pyx_L1_error)
30068  __Pyx_GOTREF(__pyx_t_3);
30069  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30070  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30071 
30072  /* "WaveTools.py":1637
30073  * if sum(Lgen[:]*self.waveDir[:])< 0 :
30074  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
30075  * sys.exit(1) # <<<<<<<<<<<<<<
30076  * dt = old_div(self.Tp,50.)
30077  * Tlag = np.zeros(len(self.omega),)
30078  */
30079  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L1_error)
30080  __Pyx_GOTREF(__pyx_t_2);
30081  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L1_error)
30082  __Pyx_GOTREF(__pyx_t_1);
30083  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30084  __pyx_t_2 = NULL;
30085  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
30086  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
30087  if (likely(__pyx_t_2)) {
30088  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
30089  __Pyx_INCREF(__pyx_t_2);
30090  __Pyx_INCREF(function);
30091  __Pyx_DECREF_SET(__pyx_t_1, function);
30092  }
30093  }
30094  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_1);
30095  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
30096  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1637, __pyx_L1_error)
30097  __Pyx_GOTREF(__pyx_t_3);
30098  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30099  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30100 
30101  /* "WaveTools.py":1635
30102  * 2D numpy array Nx2 containing free-surface elevation in time.
30103  * """
30104  * if sum(Lgen[:]*self.waveDir[:])< 0 : # <<<<<<<<<<<<<<
30105  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
30106  * sys.exit(1)
30107  */
30108  }
30109 
30110  /* "WaveTools.py":1638
30111  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
30112  * sys.exit(1)
30113  * dt = old_div(self.Tp,50.) # <<<<<<<<<<<<<<
30114  * Tlag = np.zeros(len(self.omega),)
30115  * for j in range(len(self.omega)):
30116  */
30117  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1638, __pyx_L1_error)
30118  __Pyx_GOTREF(__pyx_t_1);
30119  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Tp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1638, __pyx_L1_error)
30120  __Pyx_GOTREF(__pyx_t_2);
30121  __pyx_t_5 = NULL;
30122  __pyx_t_6 = 0;
30123  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
30124  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
30125  if (likely(__pyx_t_5)) {
30126  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
30127  __Pyx_INCREF(__pyx_t_5);
30128  __Pyx_INCREF(function);
30129  __Pyx_DECREF_SET(__pyx_t_1, function);
30130  __pyx_t_6 = 1;
30131  }
30132  }
30133  #if CYTHON_FAST_PYCALL
30134  if (PyFunction_Check(__pyx_t_1)) {
30135  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_float_50_};
30136  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1638, __pyx_L1_error)
30137  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
30138  __Pyx_GOTREF(__pyx_t_3);
30139  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30140  } else
30141  #endif
30142  #if CYTHON_FAST_PYCCALL
30143  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
30144  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_float_50_};
30145  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1638, __pyx_L1_error)
30146  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
30147  __Pyx_GOTREF(__pyx_t_3);
30148  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30149  } else
30150  #endif
30151  {
30152  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L1_error)
30153  __Pyx_GOTREF(__pyx_t_7);
30154  if (__pyx_t_5) {
30155  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
30156  }
30157  __Pyx_GIVEREF(__pyx_t_2);
30158  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2);
30159  __Pyx_INCREF(__pyx_float_50_);
30160  __Pyx_GIVEREF(__pyx_float_50_);
30161  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_float_50_);
30162  __pyx_t_2 = 0;
30163  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1638, __pyx_L1_error)
30164  __Pyx_GOTREF(__pyx_t_3);
30165  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30166  }
30167  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30168  __pyx_v_dt = __pyx_t_3;
30169  __pyx_t_3 = 0;
30170 
30171  /* "WaveTools.py":1639
30172  * sys.exit(1)
30173  * dt = old_div(self.Tp,50.)
30174  * Tlag = np.zeros(len(self.omega),) # <<<<<<<<<<<<<<
30175  * for j in range(len(self.omega)):
30176  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
30177  */
30178  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error)
30179  __Pyx_GOTREF(__pyx_t_1);
30180  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
30181  __Pyx_GOTREF(__pyx_t_7);
30182  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30183  __pyx_t_1 = ((PyObject *)__pyx_v_self->omega);
30184  __Pyx_INCREF(__pyx_t_1);
30185  __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1639, __pyx_L1_error)
30186  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30187  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error)
30188  __Pyx_GOTREF(__pyx_t_1);
30189  __pyx_t_2 = NULL;
30190  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
30191  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
30192  if (likely(__pyx_t_2)) {
30193  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
30194  __Pyx_INCREF(__pyx_t_2);
30195  __Pyx_INCREF(function);
30196  __Pyx_DECREF_SET(__pyx_t_7, function);
30197  }
30198  }
30199  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1);
30200  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
30201  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30202  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error)
30203  __Pyx_GOTREF(__pyx_t_3);
30204  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30205  __pyx_v_Tlag = __pyx_t_3;
30206  __pyx_t_3 = 0;
30207 
30208  /* "WaveTools.py":1640
30209  * dt = old_div(self.Tp,50.)
30210  * Tlag = np.zeros(len(self.omega),)
30211  * for j in range(len(self.omega)): # <<<<<<<<<<<<<<
30212  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
30213  * Tlag = max(Tlag)
30214  */
30215  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_range); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
30216  __Pyx_GOTREF(__pyx_t_7);
30217  __pyx_t_1 = ((PyObject *)__pyx_v_self->omega);
30218  __Pyx_INCREF(__pyx_t_1);
30219  __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1640, __pyx_L1_error)
30220  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30221  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1640, __pyx_L1_error)
30222  __Pyx_GOTREF(__pyx_t_1);
30223  __pyx_t_2 = NULL;
30224  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
30225  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
30226  if (likely(__pyx_t_2)) {
30227  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
30228  __Pyx_INCREF(__pyx_t_2);
30229  __Pyx_INCREF(function);
30230  __Pyx_DECREF_SET(__pyx_t_7, function);
30231  }
30232  }
30233  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1);
30234  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
30235  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30236  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error)
30237  __Pyx_GOTREF(__pyx_t_3);
30238  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30239  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
30240  __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0;
30241  __pyx_t_9 = NULL;
30242  } else {
30243  __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
30244  __Pyx_GOTREF(__pyx_t_7);
30245  __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1640, __pyx_L1_error)
30246  }
30247  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30248  for (;;) {
30249  if (likely(!__pyx_t_9)) {
30250  if (likely(PyList_CheckExact(__pyx_t_7))) {
30251  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
30252  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
30253  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1640, __pyx_L1_error)
30254  #else
30255  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error)
30256  __Pyx_GOTREF(__pyx_t_3);
30257  #endif
30258  } else {
30259  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
30260  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
30261  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1640, __pyx_L1_error)
30262  #else
30263  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error)
30264  __Pyx_GOTREF(__pyx_t_3);
30265  #endif
30266  }
30267  } else {
30268  __pyx_t_3 = __pyx_t_9(__pyx_t_7);
30269  if (unlikely(!__pyx_t_3)) {
30270  PyObject* exc_type = PyErr_Occurred();
30271  if (exc_type) {
30272  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
30273  else __PYX_ERR(0, 1640, __pyx_L1_error)
30274  }
30275  break;
30276  }
30277  __Pyx_GOTREF(__pyx_t_3);
30278  }
30279  __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_3);
30280  __pyx_t_3 = 0;
30281 
30282  /* "WaveTools.py":1641
30283  * Tlag = np.zeros(len(self.omega),)
30284  * for j in range(len(self.omega)):
30285  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j]) # <<<<<<<<<<<<<<
30286  * Tlag = max(Tlag)
30287  * Tstart = Tstart - Tlag
30288  */
30289  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1641, __pyx_L1_error)
30290  __Pyx_GOTREF(__pyx_t_1);
30291  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error)
30292  __Pyx_GOTREF(__pyx_t_2);
30293  __Pyx_INCREF(__pyx_v_j);
30294  __Pyx_GIVEREF(__pyx_v_j);
30295  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_j);
30296  __Pyx_INCREF(__pyx_slice__4);
30297  __Pyx_GIVEREF(__pyx_slice__4);
30298  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__4);
30299  __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1641, __pyx_L1_error)
30300  __Pyx_GOTREF(__pyx_t_5);
30301  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30302  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error)
30303  __Pyx_GOTREF(__pyx_t_2);
30304  __pyx_t_10 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1641, __pyx_L1_error)
30305  __Pyx_GOTREF(__pyx_t_10);
30306  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
30307  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30308  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error)
30309  __Pyx_GOTREF(__pyx_t_2);
30310  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30311  __pyx_t_10 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omega), __pyx_v_j); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1641, __pyx_L1_error)
30312  __Pyx_GOTREF(__pyx_t_10);
30313  __pyx_t_5 = NULL;
30314  __pyx_t_6 = 0;
30315  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
30316  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
30317  if (likely(__pyx_t_5)) {
30318  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
30319  __Pyx_INCREF(__pyx_t_5);
30320  __Pyx_INCREF(function);
30321  __Pyx_DECREF_SET(__pyx_t_1, function);
30322  __pyx_t_6 = 1;
30323  }
30324  }
30325  #if CYTHON_FAST_PYCALL
30326  if (PyFunction_Check(__pyx_t_1)) {
30327  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_10};
30328  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error)
30329  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
30330  __Pyx_GOTREF(__pyx_t_3);
30331  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30332  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30333  } else
30334  #endif
30335  #if CYTHON_FAST_PYCCALL
30336  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
30337  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_10};
30338  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error)
30339  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
30340  __Pyx_GOTREF(__pyx_t_3);
30341  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30342  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30343  } else
30344  #endif
30345  {
30346  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1641, __pyx_L1_error)
30347  __Pyx_GOTREF(__pyx_t_11);
30348  if (__pyx_t_5) {
30349  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
30350  }
30351  __Pyx_GIVEREF(__pyx_t_2);
30352  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_t_2);
30353  __Pyx_GIVEREF(__pyx_t_10);
30354  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_10);
30355  __pyx_t_2 = 0;
30356  __pyx_t_10 = 0;
30357  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error)
30358  __Pyx_GOTREF(__pyx_t_3);
30359  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
30360  }
30361  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30362  if (unlikely(PyObject_SetItem(__pyx_v_Tlag, __pyx_v_j, __pyx_t_3) < 0)) __PYX_ERR(0, 1641, __pyx_L1_error)
30363  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30364 
30365  /* "WaveTools.py":1640
30366  * dt = old_div(self.Tp,50.)
30367  * Tlag = np.zeros(len(self.omega),)
30368  * for j in range(len(self.omega)): # <<<<<<<<<<<<<<
30369  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
30370  * Tlag = max(Tlag)
30371  */
30372  }
30373  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30374 
30375  /* "WaveTools.py":1642
30376  * for j in range(len(self.omega)):
30377  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
30378  * Tlag = max(Tlag) # <<<<<<<<<<<<<<
30379  * Tstart = Tstart - Tlag
30380  * Np = int(old_div((Tend - Tstart),dt))
30381  */
30382  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_Tlag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1642, __pyx_L1_error)
30383  __Pyx_GOTREF(__pyx_t_7);
30384  __Pyx_DECREF_SET(__pyx_v_Tlag, __pyx_t_7);
30385  __pyx_t_7 = 0;
30386 
30387  /* "WaveTools.py":1643
30388  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
30389  * Tlag = max(Tlag)
30390  * Tstart = Tstart - Tlag # <<<<<<<<<<<<<<
30391  * Np = int(old_div((Tend - Tstart),dt))
30392  * time = np.linspace(Tstart,Tend,Np )
30393  */
30394  __pyx_t_7 = PyNumber_Subtract(__pyx_v_Tstart, __pyx_v_Tlag); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1643, __pyx_L1_error)
30395  __Pyx_GOTREF(__pyx_t_7);
30396  __Pyx_DECREF_SET(__pyx_v_Tstart, __pyx_t_7);
30397  __pyx_t_7 = 0;
30398 
30399  /* "WaveTools.py":1644
30400  * Tlag = max(Tlag)
30401  * Tstart = Tstart - Tlag
30402  * Np = int(old_div((Tend - Tstart),dt)) # <<<<<<<<<<<<<<
30403  * time = np.linspace(Tstart,Tend,Np )
30404  * etaR = np.zeros(len(time), )
30405  */
30406  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1644, __pyx_L1_error)
30407  __Pyx_GOTREF(__pyx_t_3);
30408  __pyx_t_1 = PyNumber_Subtract(__pyx_v_Tend, __pyx_v_Tstart); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1644, __pyx_L1_error)
30409  __Pyx_GOTREF(__pyx_t_1);
30410  __pyx_t_11 = NULL;
30411  __pyx_t_6 = 0;
30412  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
30413  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
30414  if (likely(__pyx_t_11)) {
30415  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
30416  __Pyx_INCREF(__pyx_t_11);
30417  __Pyx_INCREF(function);
30418  __Pyx_DECREF_SET(__pyx_t_3, function);
30419  __pyx_t_6 = 1;
30420  }
30421  }
30422  #if CYTHON_FAST_PYCALL
30423  if (PyFunction_Check(__pyx_t_3)) {
30424  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_v_dt};
30425  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1644, __pyx_L1_error)
30426  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
30427  __Pyx_GOTREF(__pyx_t_7);
30428  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30429  } else
30430  #endif
30431  #if CYTHON_FAST_PYCCALL
30432  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
30433  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_v_dt};
30434  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1644, __pyx_L1_error)
30435  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
30436  __Pyx_GOTREF(__pyx_t_7);
30437  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30438  } else
30439  #endif
30440  {
30441  __pyx_t_10 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1644, __pyx_L1_error)
30442  __Pyx_GOTREF(__pyx_t_10);
30443  if (__pyx_t_11) {
30444  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
30445  }
30446  __Pyx_GIVEREF(__pyx_t_1);
30447  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_t_1);
30448  __Pyx_INCREF(__pyx_v_dt);
30449  __Pyx_GIVEREF(__pyx_v_dt);
30450  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, __pyx_v_dt);
30451  __pyx_t_1 = 0;
30452  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1644, __pyx_L1_error)
30453  __Pyx_GOTREF(__pyx_t_7);
30454  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30455  }
30456  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30457  __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1644, __pyx_L1_error)
30458  __Pyx_GOTREF(__pyx_t_3);
30459  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30460  __pyx_v_Np = __pyx_t_3;
30461  __pyx_t_3 = 0;
30462 
30463  /* "WaveTools.py":1645
30464  * Tstart = Tstart - Tlag
30465  * Np = int(old_div((Tend - Tstart),dt))
30466  * time = np.linspace(Tstart,Tend,Np ) # <<<<<<<<<<<<<<
30467  * etaR = np.zeros(len(time), )
30468  * for jj in range(len(time)):
30469  */
30470  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1645, __pyx_L1_error)
30471  __Pyx_GOTREF(__pyx_t_7);
30472  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_linspace); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1645, __pyx_L1_error)
30473  __Pyx_GOTREF(__pyx_t_10);
30474  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30475  __pyx_t_7 = NULL;
30476  __pyx_t_6 = 0;
30477  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
30478  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
30479  if (likely(__pyx_t_7)) {
30480  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
30481  __Pyx_INCREF(__pyx_t_7);
30482  __Pyx_INCREF(function);
30483  __Pyx_DECREF_SET(__pyx_t_10, function);
30484  __pyx_t_6 = 1;
30485  }
30486  }
30487  #if CYTHON_FAST_PYCALL
30488  if (PyFunction_Check(__pyx_t_10)) {
30489  PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Np};
30490  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1645, __pyx_L1_error)
30491  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
30492  __Pyx_GOTREF(__pyx_t_3);
30493  } else
30494  #endif
30495  #if CYTHON_FAST_PYCCALL
30496  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
30497  PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Np};
30498  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1645, __pyx_L1_error)
30499  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
30500  __Pyx_GOTREF(__pyx_t_3);
30501  } else
30502  #endif
30503  {
30504  __pyx_t_1 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1645, __pyx_L1_error)
30505  __Pyx_GOTREF(__pyx_t_1);
30506  if (__pyx_t_7) {
30507  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
30508  }
30509  __Pyx_INCREF(__pyx_v_Tstart);
30510  __Pyx_GIVEREF(__pyx_v_Tstart);
30511  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_v_Tstart);
30512  __Pyx_INCREF(__pyx_v_Tend);
30513  __Pyx_GIVEREF(__pyx_v_Tend);
30514  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_Tend);
30515  __Pyx_INCREF(__pyx_v_Np);
30516  __Pyx_GIVEREF(__pyx_v_Np);
30517  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_6, __pyx_v_Np);
30518  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1645, __pyx_L1_error)
30519  __Pyx_GOTREF(__pyx_t_3);
30520  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30521  }
30522  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30523  __pyx_v_time = __pyx_t_3;
30524  __pyx_t_3 = 0;
30525 
30526  /* "WaveTools.py":1646
30527  * Np = int(old_div((Tend - Tstart),dt))
30528  * time = np.linspace(Tstart,Tend,Np )
30529  * etaR = np.zeros(len(time), ) # <<<<<<<<<<<<<<
30530  * for jj in range(len(time)):
30531  * etaR[jj] = self.eta(x0,time[jj])
30532  */
30533  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1646, __pyx_L1_error)
30534  __Pyx_GOTREF(__pyx_t_10);
30535  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1646, __pyx_L1_error)
30536  __Pyx_GOTREF(__pyx_t_1);
30537  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30538  __pyx_t_8 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1646, __pyx_L1_error)
30539  __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1646, __pyx_L1_error)
30540  __Pyx_GOTREF(__pyx_t_10);
30541  __pyx_t_7 = NULL;
30542  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
30543  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
30544  if (likely(__pyx_t_7)) {
30545  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
30546  __Pyx_INCREF(__pyx_t_7);
30547  __Pyx_INCREF(function);
30548  __Pyx_DECREF_SET(__pyx_t_1, function);
30549  }
30550  }
30551  __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_10);
30552  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
30553  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30554  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1646, __pyx_L1_error)
30555  __Pyx_GOTREF(__pyx_t_3);
30556  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30557  __pyx_v_etaR = __pyx_t_3;
30558  __pyx_t_3 = 0;
30559 
30560  /* "WaveTools.py":1647
30561  * time = np.linspace(Tstart,Tend,Np )
30562  * etaR = np.zeros(len(time), )
30563  * for jj in range(len(time)): # <<<<<<<<<<<<<<
30564  * etaR[jj] = self.eta(x0,time[jj])
30565  * np.savetxt(fname,list(zip(time,etaR)))
30566  */
30567  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1647, __pyx_L1_error)
30568  __Pyx_GOTREF(__pyx_t_1);
30569  __pyx_t_8 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1647, __pyx_L1_error)
30570  __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1647, __pyx_L1_error)
30571  __Pyx_GOTREF(__pyx_t_10);
30572  __pyx_t_7 = NULL;
30573  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
30574  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
30575  if (likely(__pyx_t_7)) {
30576  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
30577  __Pyx_INCREF(__pyx_t_7);
30578  __Pyx_INCREF(function);
30579  __Pyx_DECREF_SET(__pyx_t_1, function);
30580  }
30581  }
30582  __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_10);
30583  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
30584  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30585  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1647, __pyx_L1_error)
30586  __Pyx_GOTREF(__pyx_t_3);
30587  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30588  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
30589  __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
30590  __pyx_t_9 = NULL;
30591  } else {
30592  __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1647, __pyx_L1_error)
30593  __Pyx_GOTREF(__pyx_t_1);
30594  __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1647, __pyx_L1_error)
30595  }
30596  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30597  for (;;) {
30598  if (likely(!__pyx_t_9)) {
30599  if (likely(PyList_CheckExact(__pyx_t_1))) {
30600  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
30601  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
30602  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1647, __pyx_L1_error)
30603  #else
30604  __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1647, __pyx_L1_error)
30605  __Pyx_GOTREF(__pyx_t_3);
30606  #endif
30607  } else {
30608  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
30609  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
30610  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1647, __pyx_L1_error)
30611  #else
30612  __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1647, __pyx_L1_error)
30613  __Pyx_GOTREF(__pyx_t_3);
30614  #endif
30615  }
30616  } else {
30617  __pyx_t_3 = __pyx_t_9(__pyx_t_1);
30618  if (unlikely(!__pyx_t_3)) {
30619  PyObject* exc_type = PyErr_Occurred();
30620  if (exc_type) {
30621  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
30622  else __PYX_ERR(0, 1647, __pyx_L1_error)
30623  }
30624  break;
30625  }
30626  __Pyx_GOTREF(__pyx_t_3);
30627  }
30628  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_3);
30629  __pyx_t_3 = 0;
30630 
30631  /* "WaveTools.py":1648
30632  * etaR = np.zeros(len(time), )
30633  * for jj in range(len(time)):
30634  * etaR[jj] = self.eta(x0,time[jj]) # <<<<<<<<<<<<<<
30635  * np.savetxt(fname,list(zip(time,etaR)))
30636  * series = np.zeros((len(time),2),)
30637  */
30638  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1648, __pyx_L1_error)
30639  __Pyx_GOTREF(__pyx_t_10);
30640  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_time, __pyx_v_jj); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1648, __pyx_L1_error)
30641  __Pyx_GOTREF(__pyx_t_7);
30642  __pyx_t_11 = NULL;
30643  __pyx_t_6 = 0;
30644  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
30645  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
30646  if (likely(__pyx_t_11)) {
30647  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
30648  __Pyx_INCREF(__pyx_t_11);
30649  __Pyx_INCREF(function);
30650  __Pyx_DECREF_SET(__pyx_t_10, function);
30651  __pyx_t_6 = 1;
30652  }
30653  }
30654  #if CYTHON_FAST_PYCALL
30655  if (PyFunction_Check(__pyx_t_10)) {
30656  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_x0, __pyx_t_7};
30657  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error)
30658  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
30659  __Pyx_GOTREF(__pyx_t_3);
30660  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30661  } else
30662  #endif
30663  #if CYTHON_FAST_PYCCALL
30664  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
30665  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_x0, __pyx_t_7};
30666  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error)
30667  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
30668  __Pyx_GOTREF(__pyx_t_3);
30669  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
30670  } else
30671  #endif
30672  {
30673  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1648, __pyx_L1_error)
30674  __Pyx_GOTREF(__pyx_t_2);
30675  if (__pyx_t_11) {
30676  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __pyx_t_11 = NULL;
30677  }
30678  __Pyx_INCREF(__pyx_v_x0);
30679  __Pyx_GIVEREF(__pyx_v_x0);
30680  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_x0);
30681  __Pyx_GIVEREF(__pyx_t_7);
30682  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_7);
30683  __pyx_t_7 = 0;
30684  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error)
30685  __Pyx_GOTREF(__pyx_t_3);
30686  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30687  }
30688  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30689  if (unlikely(PyObject_SetItem(__pyx_v_etaR, __pyx_v_jj, __pyx_t_3) < 0)) __PYX_ERR(0, 1648, __pyx_L1_error)
30690  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30691 
30692  /* "WaveTools.py":1647
30693  * time = np.linspace(Tstart,Tend,Np )
30694  * etaR = np.zeros(len(time), )
30695  * for jj in range(len(time)): # <<<<<<<<<<<<<<
30696  * etaR[jj] = self.eta(x0,time[jj])
30697  * np.savetxt(fname,list(zip(time,etaR)))
30698  */
30699  }
30700  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30701 
30702  /* "WaveTools.py":1649
30703  * for jj in range(len(time)):
30704  * etaR[jj] = self.eta(x0,time[jj])
30705  * np.savetxt(fname,list(zip(time,etaR))) # <<<<<<<<<<<<<<
30706  * series = np.zeros((len(time),2),)
30707  * series[:,0] = time
30708  */
30709  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1649, __pyx_L1_error)
30710  __Pyx_GOTREF(__pyx_t_3);
30711  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_savetxt); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1649, __pyx_L1_error)
30712  __Pyx_GOTREF(__pyx_t_10);
30713  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30714  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_zip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1649, __pyx_L1_error)
30715  __Pyx_GOTREF(__pyx_t_2);
30716  __pyx_t_7 = NULL;
30717  __pyx_t_6 = 0;
30718  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
30719  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
30720  if (likely(__pyx_t_7)) {
30721  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
30722  __Pyx_INCREF(__pyx_t_7);
30723  __Pyx_INCREF(function);
30724  __Pyx_DECREF_SET(__pyx_t_2, function);
30725  __pyx_t_6 = 1;
30726  }
30727  }
30728  #if CYTHON_FAST_PYCALL
30729  if (PyFunction_Check(__pyx_t_2)) {
30730  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_time, __pyx_v_etaR};
30731  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1649, __pyx_L1_error)
30732  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
30733  __Pyx_GOTREF(__pyx_t_3);
30734  } else
30735  #endif
30736  #if CYTHON_FAST_PYCCALL
30737  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
30738  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_time, __pyx_v_etaR};
30739  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1649, __pyx_L1_error)
30740  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
30741  __Pyx_GOTREF(__pyx_t_3);
30742  } else
30743  #endif
30744  {
30745  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1649, __pyx_L1_error)
30746  __Pyx_GOTREF(__pyx_t_11);
30747  if (__pyx_t_7) {
30748  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL;
30749  }
30750  __Pyx_INCREF(__pyx_v_time);
30751  __Pyx_GIVEREF(__pyx_v_time);
30752  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_time);
30753  __Pyx_INCREF(__pyx_v_etaR);
30754  __Pyx_GIVEREF(__pyx_v_etaR);
30755  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_v_etaR);
30756  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1649, __pyx_L1_error)
30757  __Pyx_GOTREF(__pyx_t_3);
30758  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
30759  }
30760  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30761  __pyx_t_2 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1649, __pyx_L1_error)
30762  __Pyx_GOTREF(__pyx_t_2);
30763  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30764  __pyx_t_3 = NULL;
30765  __pyx_t_6 = 0;
30766  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
30767  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
30768  if (likely(__pyx_t_3)) {
30769  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
30770  __Pyx_INCREF(__pyx_t_3);
30771  __Pyx_INCREF(function);
30772  __Pyx_DECREF_SET(__pyx_t_10, function);
30773  __pyx_t_6 = 1;
30774  }
30775  }
30776  #if CYTHON_FAST_PYCALL
30777  if (PyFunction_Check(__pyx_t_10)) {
30778  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fname, __pyx_t_2};
30779  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1649, __pyx_L1_error)
30780  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
30781  __Pyx_GOTREF(__pyx_t_1);
30782  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30783  } else
30784  #endif
30785  #if CYTHON_FAST_PYCCALL
30786  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
30787  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_fname, __pyx_t_2};
30788  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1649, __pyx_L1_error)
30789  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
30790  __Pyx_GOTREF(__pyx_t_1);
30791  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30792  } else
30793  #endif
30794  {
30795  __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1649, __pyx_L1_error)
30796  __Pyx_GOTREF(__pyx_t_11);
30797  if (__pyx_t_3) {
30798  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
30799  }
30800  __Pyx_INCREF(__pyx_v_fname);
30801  __Pyx_GIVEREF(__pyx_v_fname);
30802  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_v_fname);
30803  __Pyx_GIVEREF(__pyx_t_2);
30804  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_2);
30805  __pyx_t_2 = 0;
30806  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1649, __pyx_L1_error)
30807  __Pyx_GOTREF(__pyx_t_1);
30808  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
30809  }
30810  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30811  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30812 
30813  /* "WaveTools.py":1650
30814  * etaR[jj] = self.eta(x0,time[jj])
30815  * np.savetxt(fname,list(zip(time,etaR)))
30816  * series = np.zeros((len(time),2),) # <<<<<<<<<<<<<<
30817  * series[:,0] = time
30818  * series[:,1] = etaR
30819  */
30820  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1650, __pyx_L1_error)
30821  __Pyx_GOTREF(__pyx_t_10);
30822  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1650, __pyx_L1_error)
30823  __Pyx_GOTREF(__pyx_t_11);
30824  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
30825  __pyx_t_8 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1650, __pyx_L1_error)
30826  __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1650, __pyx_L1_error)
30827  __Pyx_GOTREF(__pyx_t_10);
30828  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1650, __pyx_L1_error)
30829  __Pyx_GOTREF(__pyx_t_2);
30830  __Pyx_GIVEREF(__pyx_t_10);
30831  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10);
30832  __Pyx_INCREF(__pyx_int_2);
30833  __Pyx_GIVEREF(__pyx_int_2);
30834  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_2);
30835  __pyx_t_10 = 0;
30836  __pyx_t_10 = NULL;
30837  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
30838  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
30839  if (likely(__pyx_t_10)) {
30840  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
30841  __Pyx_INCREF(__pyx_t_10);
30842  __Pyx_INCREF(function);
30843  __Pyx_DECREF_SET(__pyx_t_11, function);
30844  }
30845  }
30846  __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_2);
30847  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
30848  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
30849  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1650, __pyx_L1_error)
30850  __Pyx_GOTREF(__pyx_t_1);
30851  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
30852  __pyx_v_series = __pyx_t_1;
30853  __pyx_t_1 = 0;
30854 
30855  /* "WaveTools.py":1651
30856  * np.savetxt(fname,list(zip(time,etaR)))
30857  * series = np.zeros((len(time),2),)
30858  * series[:,0] = time # <<<<<<<<<<<<<<
30859  * series[:,1] = etaR
30860  *
30861  */
30862  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_tuple__25, __pyx_v_time) < 0)) __PYX_ERR(0, 1651, __pyx_L1_error)
30863 
30864  /* "WaveTools.py":1652
30865  * series = np.zeros((len(time),2),)
30866  * series[:,0] = time
30867  * series[:,1] = etaR # <<<<<<<<<<<<<<
30868  *
30869  * return series
30870  */
30871  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_tuple__26, __pyx_v_etaR) < 0)) __PYX_ERR(0, 1652, __pyx_L1_error)
30872 
30873  /* "WaveTools.py":1654
30874  * series[:,1] = etaR
30875  *
30876  * return series # <<<<<<<<<<<<<<
30877  *
30878  *
30879  */
30880  __Pyx_XDECREF(__pyx_r);
30881  __Pyx_INCREF(__pyx_v_series);
30882  __pyx_r = __pyx_v_series;
30883  goto __pyx_L0;
30884 
30885  /* "WaveTools.py":1609
30886  *
30887  * return U
30888  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
30889  * """Writes a timeseries of the free-surface elevation
30890  *
30891  */
30892 
30893  /* function exit code */
30894  __pyx_L1_error:;
30895  __Pyx_XDECREF(__pyx_t_1);
30896  __Pyx_XDECREF(__pyx_t_2);
30897  __Pyx_XDECREF(__pyx_t_3);
30898  __Pyx_XDECREF(__pyx_t_5);
30899  __Pyx_XDECREF(__pyx_t_7);
30900  __Pyx_XDECREF(__pyx_t_10);
30901  __Pyx_XDECREF(__pyx_t_11);
30902  __Pyx_AddTraceback("WaveTools.RandomWaves.writeEtaSeries", __pyx_clineno, __pyx_lineno, __pyx_filename);
30903  __pyx_r = NULL;
30904  __pyx_L0:;
30905  __Pyx_XDECREF(__pyx_v_dt);
30906  __Pyx_XDECREF(__pyx_v_Tlag);
30907  __Pyx_XDECREF(__pyx_v_j);
30908  __Pyx_XDECREF(__pyx_v_Np);
30909  __Pyx_XDECREF(__pyx_v_time);
30910  __Pyx_XDECREF(__pyx_v_etaR);
30911  __Pyx_XDECREF(__pyx_v_jj);
30912  __Pyx_XDECREF(__pyx_v_series);
30913  __Pyx_XDECREF(__pyx_v_Tstart);
30914  __Pyx_XGIVEREF(__pyx_r);
30915  __Pyx_RefNannyFinishContext();
30916  return __pyx_r;
30917 }
30918 
30919 /* "WaveTools.pxd":123
30920  * cdef double[10000] phi_c
30921  * cdef public:
30922  * double mwl,depth,gAbs,Tlag,Hs,Tp,fp,bandFactor,df,wavelength # <<<<<<<<<<<<<<
30923  * int N
30924  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai
30925  */
30926 
30927 /* Python wrapper */
30928 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
30929 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3mwl_1__get__(PyObject *__pyx_v_self) {
30930  PyObject *__pyx_r = 0;
30931  __Pyx_RefNannyDeclarations
30932  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
30933  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3mwl___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
30934 
30935  /* function exit code */
30936  __Pyx_RefNannyFinishContext();
30937  return __pyx_r;
30938 }
30939 
30940 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_3mwl___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
30941  PyObject *__pyx_r = NULL;
30942  __Pyx_RefNannyDeclarations
30943  PyObject *__pyx_t_1 = NULL;
30944  int __pyx_lineno = 0;
30945  const char *__pyx_filename = NULL;
30946  int __pyx_clineno = 0;
30947  __Pyx_RefNannySetupContext("__get__", 0);
30948  __Pyx_XDECREF(__pyx_r);
30949  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
30950  __Pyx_GOTREF(__pyx_t_1);
30951  __pyx_r = __pyx_t_1;
30952  __pyx_t_1 = 0;
30953  goto __pyx_L0;
30954 
30955  /* function exit code */
30956  __pyx_L1_error:;
30957  __Pyx_XDECREF(__pyx_t_1);
30958  __Pyx_AddTraceback("WaveTools.RandomWaves.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
30959  __pyx_r = NULL;
30960  __pyx_L0:;
30961  __Pyx_XGIVEREF(__pyx_r);
30962  __Pyx_RefNannyFinishContext();
30963  return __pyx_r;
30964 }
30965 
30966 /* Python wrapper */
30967 static int __pyx_pw_9WaveTools_11RandomWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
30968 static int __pyx_pw_9WaveTools_11RandomWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
30969  int __pyx_r;
30970  __Pyx_RefNannyDeclarations
30971  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
30972  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3mwl_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
30973 
30974  /* function exit code */
30975  __Pyx_RefNannyFinishContext();
30976  return __pyx_r;
30977 }
30978 
30979 static int __pyx_pf_9WaveTools_11RandomWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
30980  int __pyx_r;
30981  __Pyx_RefNannyDeclarations
30982  double __pyx_t_1;
30983  int __pyx_lineno = 0;
30984  const char *__pyx_filename = NULL;
30985  int __pyx_clineno = 0;
30986  __Pyx_RefNannySetupContext("__set__", 0);
30987  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
30988  __pyx_v_self->mwl = __pyx_t_1;
30989 
30990  /* function exit code */
30991  __pyx_r = 0;
30992  goto __pyx_L0;
30993  __pyx_L1_error:;
30994  __Pyx_AddTraceback("WaveTools.RandomWaves.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
30995  __pyx_r = -1;
30996  __pyx_L0:;
30997  __Pyx_RefNannyFinishContext();
30998  return __pyx_r;
30999 }
31000 
31001 /* Python wrapper */
31002 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5depth_1__get__(PyObject *__pyx_v_self); /*proto*/
31003 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5depth_1__get__(PyObject *__pyx_v_self) {
31004  PyObject *__pyx_r = 0;
31005  __Pyx_RefNannyDeclarations
31006  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31007  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5depth___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31008 
31009  /* function exit code */
31010  __Pyx_RefNannyFinishContext();
31011  return __pyx_r;
31012 }
31013 
31014 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5depth___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31015  PyObject *__pyx_r = NULL;
31016  __Pyx_RefNannyDeclarations
31017  PyObject *__pyx_t_1 = NULL;
31018  int __pyx_lineno = 0;
31019  const char *__pyx_filename = NULL;
31020  int __pyx_clineno = 0;
31021  __Pyx_RefNannySetupContext("__get__", 0);
31022  __Pyx_XDECREF(__pyx_r);
31023  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31024  __Pyx_GOTREF(__pyx_t_1);
31025  __pyx_r = __pyx_t_1;
31026  __pyx_t_1 = 0;
31027  goto __pyx_L0;
31028 
31029  /* function exit code */
31030  __pyx_L1_error:;
31031  __Pyx_XDECREF(__pyx_t_1);
31032  __Pyx_AddTraceback("WaveTools.RandomWaves.depth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31033  __pyx_r = NULL;
31034  __pyx_L0:;
31035  __Pyx_XGIVEREF(__pyx_r);
31036  __Pyx_RefNannyFinishContext();
31037  return __pyx_r;
31038 }
31039 
31040 /* Python wrapper */
31041 static int __pyx_pw_9WaveTools_11RandomWaves_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31042 static int __pyx_pw_9WaveTools_11RandomWaves_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31043  int __pyx_r;
31044  __Pyx_RefNannyDeclarations
31045  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31046  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5depth_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31047 
31048  /* function exit code */
31049  __Pyx_RefNannyFinishContext();
31050  return __pyx_r;
31051 }
31052 
31053 static int __pyx_pf_9WaveTools_11RandomWaves_5depth_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31054  int __pyx_r;
31055  __Pyx_RefNannyDeclarations
31056  double __pyx_t_1;
31057  int __pyx_lineno = 0;
31058  const char *__pyx_filename = NULL;
31059  int __pyx_clineno = 0;
31060  __Pyx_RefNannySetupContext("__set__", 0);
31061  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31062  __pyx_v_self->depth = __pyx_t_1;
31063 
31064  /* function exit code */
31065  __pyx_r = 0;
31066  goto __pyx_L0;
31067  __pyx_L1_error:;
31068  __Pyx_AddTraceback("WaveTools.RandomWaves.depth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31069  __pyx_r = -1;
31070  __pyx_L0:;
31071  __Pyx_RefNannyFinishContext();
31072  return __pyx_r;
31073 }
31074 
31075 /* Python wrapper */
31076 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4gAbs_1__get__(PyObject *__pyx_v_self); /*proto*/
31077 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4gAbs_1__get__(PyObject *__pyx_v_self) {
31078  PyObject *__pyx_r = 0;
31079  __Pyx_RefNannyDeclarations
31080  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31081  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4gAbs___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31082 
31083  /* function exit code */
31084  __Pyx_RefNannyFinishContext();
31085  return __pyx_r;
31086 }
31087 
31088 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4gAbs___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31089  PyObject *__pyx_r = NULL;
31090  __Pyx_RefNannyDeclarations
31091  PyObject *__pyx_t_1 = NULL;
31092  int __pyx_lineno = 0;
31093  const char *__pyx_filename = NULL;
31094  int __pyx_clineno = 0;
31095  __Pyx_RefNannySetupContext("__get__", 0);
31096  __Pyx_XDECREF(__pyx_r);
31097  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31098  __Pyx_GOTREF(__pyx_t_1);
31099  __pyx_r = __pyx_t_1;
31100  __pyx_t_1 = 0;
31101  goto __pyx_L0;
31102 
31103  /* function exit code */
31104  __pyx_L1_error:;
31105  __Pyx_XDECREF(__pyx_t_1);
31106  __Pyx_AddTraceback("WaveTools.RandomWaves.gAbs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31107  __pyx_r = NULL;
31108  __pyx_L0:;
31109  __Pyx_XGIVEREF(__pyx_r);
31110  __Pyx_RefNannyFinishContext();
31111  return __pyx_r;
31112 }
31113 
31114 /* Python wrapper */
31115 static int __pyx_pw_9WaveTools_11RandomWaves_4gAbs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31116 static int __pyx_pw_9WaveTools_11RandomWaves_4gAbs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31117  int __pyx_r;
31118  __Pyx_RefNannyDeclarations
31119  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31120  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4gAbs_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31121 
31122  /* function exit code */
31123  __Pyx_RefNannyFinishContext();
31124  return __pyx_r;
31125 }
31126 
31127 static int __pyx_pf_9WaveTools_11RandomWaves_4gAbs_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31128  int __pyx_r;
31129  __Pyx_RefNannyDeclarations
31130  double __pyx_t_1;
31131  int __pyx_lineno = 0;
31132  const char *__pyx_filename = NULL;
31133  int __pyx_clineno = 0;
31134  __Pyx_RefNannySetupContext("__set__", 0);
31135  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31136  __pyx_v_self->gAbs = __pyx_t_1;
31137 
31138  /* function exit code */
31139  __pyx_r = 0;
31140  goto __pyx_L0;
31141  __pyx_L1_error:;
31142  __Pyx_AddTraceback("WaveTools.RandomWaves.gAbs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31143  __pyx_r = -1;
31144  __pyx_L0:;
31145  __Pyx_RefNannyFinishContext();
31146  return __pyx_r;
31147 }
31148 
31149 /* Python wrapper */
31150 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4Tlag_1__get__(PyObject *__pyx_v_self); /*proto*/
31151 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4Tlag_1__get__(PyObject *__pyx_v_self) {
31152  PyObject *__pyx_r = 0;
31153  __Pyx_RefNannyDeclarations
31154  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31155  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4Tlag___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31156 
31157  /* function exit code */
31158  __Pyx_RefNannyFinishContext();
31159  return __pyx_r;
31160 }
31161 
31162 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4Tlag___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31163  PyObject *__pyx_r = NULL;
31164  __Pyx_RefNannyDeclarations
31165  PyObject *__pyx_t_1 = NULL;
31166  int __pyx_lineno = 0;
31167  const char *__pyx_filename = NULL;
31168  int __pyx_clineno = 0;
31169  __Pyx_RefNannySetupContext("__get__", 0);
31170  __Pyx_XDECREF(__pyx_r);
31171  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Tlag); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31172  __Pyx_GOTREF(__pyx_t_1);
31173  __pyx_r = __pyx_t_1;
31174  __pyx_t_1 = 0;
31175  goto __pyx_L0;
31176 
31177  /* function exit code */
31178  __pyx_L1_error:;
31179  __Pyx_XDECREF(__pyx_t_1);
31180  __Pyx_AddTraceback("WaveTools.RandomWaves.Tlag.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31181  __pyx_r = NULL;
31182  __pyx_L0:;
31183  __Pyx_XGIVEREF(__pyx_r);
31184  __Pyx_RefNannyFinishContext();
31185  return __pyx_r;
31186 }
31187 
31188 /* Python wrapper */
31189 static int __pyx_pw_9WaveTools_11RandomWaves_4Tlag_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31190 static int __pyx_pw_9WaveTools_11RandomWaves_4Tlag_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31191  int __pyx_r;
31192  __Pyx_RefNannyDeclarations
31193  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31194  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4Tlag_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31195 
31196  /* function exit code */
31197  __Pyx_RefNannyFinishContext();
31198  return __pyx_r;
31199 }
31200 
31201 static int __pyx_pf_9WaveTools_11RandomWaves_4Tlag_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31202  int __pyx_r;
31203  __Pyx_RefNannyDeclarations
31204  double __pyx_t_1;
31205  int __pyx_lineno = 0;
31206  const char *__pyx_filename = NULL;
31207  int __pyx_clineno = 0;
31208  __Pyx_RefNannySetupContext("__set__", 0);
31209  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31210  __pyx_v_self->Tlag = __pyx_t_1;
31211 
31212  /* function exit code */
31213  __pyx_r = 0;
31214  goto __pyx_L0;
31215  __pyx_L1_error:;
31216  __Pyx_AddTraceback("WaveTools.RandomWaves.Tlag.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31217  __pyx_r = -1;
31218  __pyx_L0:;
31219  __Pyx_RefNannyFinishContext();
31220  return __pyx_r;
31221 }
31222 
31223 /* Python wrapper */
31224 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2Hs_1__get__(PyObject *__pyx_v_self); /*proto*/
31225 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2Hs_1__get__(PyObject *__pyx_v_self) {
31226  PyObject *__pyx_r = 0;
31227  __Pyx_RefNannyDeclarations
31228  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31229  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2Hs___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31230 
31231  /* function exit code */
31232  __Pyx_RefNannyFinishContext();
31233  return __pyx_r;
31234 }
31235 
31236 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2Hs___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31237  PyObject *__pyx_r = NULL;
31238  __Pyx_RefNannyDeclarations
31239  PyObject *__pyx_t_1 = NULL;
31240  int __pyx_lineno = 0;
31241  const char *__pyx_filename = NULL;
31242  int __pyx_clineno = 0;
31243  __Pyx_RefNannySetupContext("__get__", 0);
31244  __Pyx_XDECREF(__pyx_r);
31245  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Hs); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31246  __Pyx_GOTREF(__pyx_t_1);
31247  __pyx_r = __pyx_t_1;
31248  __pyx_t_1 = 0;
31249  goto __pyx_L0;
31250 
31251  /* function exit code */
31252  __pyx_L1_error:;
31253  __Pyx_XDECREF(__pyx_t_1);
31254  __Pyx_AddTraceback("WaveTools.RandomWaves.Hs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31255  __pyx_r = NULL;
31256  __pyx_L0:;
31257  __Pyx_XGIVEREF(__pyx_r);
31258  __Pyx_RefNannyFinishContext();
31259  return __pyx_r;
31260 }
31261 
31262 /* Python wrapper */
31263 static int __pyx_pw_9WaveTools_11RandomWaves_2Hs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31264 static int __pyx_pw_9WaveTools_11RandomWaves_2Hs_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31265  int __pyx_r;
31266  __Pyx_RefNannyDeclarations
31267  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31268  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2Hs_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31269 
31270  /* function exit code */
31271  __Pyx_RefNannyFinishContext();
31272  return __pyx_r;
31273 }
31274 
31275 static int __pyx_pf_9WaveTools_11RandomWaves_2Hs_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31276  int __pyx_r;
31277  __Pyx_RefNannyDeclarations
31278  double __pyx_t_1;
31279  int __pyx_lineno = 0;
31280  const char *__pyx_filename = NULL;
31281  int __pyx_clineno = 0;
31282  __Pyx_RefNannySetupContext("__set__", 0);
31283  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31284  __pyx_v_self->Hs = __pyx_t_1;
31285 
31286  /* function exit code */
31287  __pyx_r = 0;
31288  goto __pyx_L0;
31289  __pyx_L1_error:;
31290  __Pyx_AddTraceback("WaveTools.RandomWaves.Hs.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31291  __pyx_r = -1;
31292  __pyx_L0:;
31293  __Pyx_RefNannyFinishContext();
31294  return __pyx_r;
31295 }
31296 
31297 /* Python wrapper */
31298 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2Tp_1__get__(PyObject *__pyx_v_self); /*proto*/
31299 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2Tp_1__get__(PyObject *__pyx_v_self) {
31300  PyObject *__pyx_r = 0;
31301  __Pyx_RefNannyDeclarations
31302  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31303  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2Tp___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31304 
31305  /* function exit code */
31306  __Pyx_RefNannyFinishContext();
31307  return __pyx_r;
31308 }
31309 
31310 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2Tp___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31311  PyObject *__pyx_r = NULL;
31312  __Pyx_RefNannyDeclarations
31313  PyObject *__pyx_t_1 = NULL;
31314  int __pyx_lineno = 0;
31315  const char *__pyx_filename = NULL;
31316  int __pyx_clineno = 0;
31317  __Pyx_RefNannySetupContext("__get__", 0);
31318  __Pyx_XDECREF(__pyx_r);
31319  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->Tp); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31320  __Pyx_GOTREF(__pyx_t_1);
31321  __pyx_r = __pyx_t_1;
31322  __pyx_t_1 = 0;
31323  goto __pyx_L0;
31324 
31325  /* function exit code */
31326  __pyx_L1_error:;
31327  __Pyx_XDECREF(__pyx_t_1);
31328  __Pyx_AddTraceback("WaveTools.RandomWaves.Tp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31329  __pyx_r = NULL;
31330  __pyx_L0:;
31331  __Pyx_XGIVEREF(__pyx_r);
31332  __Pyx_RefNannyFinishContext();
31333  return __pyx_r;
31334 }
31335 
31336 /* Python wrapper */
31337 static int __pyx_pw_9WaveTools_11RandomWaves_2Tp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31338 static int __pyx_pw_9WaveTools_11RandomWaves_2Tp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31339  int __pyx_r;
31340  __Pyx_RefNannyDeclarations
31341  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31342  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2Tp_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31343 
31344  /* function exit code */
31345  __Pyx_RefNannyFinishContext();
31346  return __pyx_r;
31347 }
31348 
31349 static int __pyx_pf_9WaveTools_11RandomWaves_2Tp_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31350  int __pyx_r;
31351  __Pyx_RefNannyDeclarations
31352  double __pyx_t_1;
31353  int __pyx_lineno = 0;
31354  const char *__pyx_filename = NULL;
31355  int __pyx_clineno = 0;
31356  __Pyx_RefNannySetupContext("__set__", 0);
31357  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31358  __pyx_v_self->Tp = __pyx_t_1;
31359 
31360  /* function exit code */
31361  __pyx_r = 0;
31362  goto __pyx_L0;
31363  __pyx_L1_error:;
31364  __Pyx_AddTraceback("WaveTools.RandomWaves.Tp.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31365  __pyx_r = -1;
31366  __pyx_L0:;
31367  __Pyx_RefNannyFinishContext();
31368  return __pyx_r;
31369 }
31370 
31371 /* Python wrapper */
31372 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2fp_1__get__(PyObject *__pyx_v_self); /*proto*/
31373 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2fp_1__get__(PyObject *__pyx_v_self) {
31374  PyObject *__pyx_r = 0;
31375  __Pyx_RefNannyDeclarations
31376  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31377  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2fp___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31378 
31379  /* function exit code */
31380  __Pyx_RefNannyFinishContext();
31381  return __pyx_r;
31382 }
31383 
31384 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2fp___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31385  PyObject *__pyx_r = NULL;
31386  __Pyx_RefNannyDeclarations
31387  PyObject *__pyx_t_1 = NULL;
31388  int __pyx_lineno = 0;
31389  const char *__pyx_filename = NULL;
31390  int __pyx_clineno = 0;
31391  __Pyx_RefNannySetupContext("__get__", 0);
31392  __Pyx_XDECREF(__pyx_r);
31393  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31394  __Pyx_GOTREF(__pyx_t_1);
31395  __pyx_r = __pyx_t_1;
31396  __pyx_t_1 = 0;
31397  goto __pyx_L0;
31398 
31399  /* function exit code */
31400  __pyx_L1_error:;
31401  __Pyx_XDECREF(__pyx_t_1);
31402  __Pyx_AddTraceback("WaveTools.RandomWaves.fp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31403  __pyx_r = NULL;
31404  __pyx_L0:;
31405  __Pyx_XGIVEREF(__pyx_r);
31406  __Pyx_RefNannyFinishContext();
31407  return __pyx_r;
31408 }
31409 
31410 /* Python wrapper */
31411 static int __pyx_pw_9WaveTools_11RandomWaves_2fp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31412 static int __pyx_pw_9WaveTools_11RandomWaves_2fp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31413  int __pyx_r;
31414  __Pyx_RefNannyDeclarations
31415  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31416  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2fp_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31417 
31418  /* function exit code */
31419  __Pyx_RefNannyFinishContext();
31420  return __pyx_r;
31421 }
31422 
31423 static int __pyx_pf_9WaveTools_11RandomWaves_2fp_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31424  int __pyx_r;
31425  __Pyx_RefNannyDeclarations
31426  double __pyx_t_1;
31427  int __pyx_lineno = 0;
31428  const char *__pyx_filename = NULL;
31429  int __pyx_clineno = 0;
31430  __Pyx_RefNannySetupContext("__set__", 0);
31431  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31432  __pyx_v_self->fp = __pyx_t_1;
31433 
31434  /* function exit code */
31435  __pyx_r = 0;
31436  goto __pyx_L0;
31437  __pyx_L1_error:;
31438  __Pyx_AddTraceback("WaveTools.RandomWaves.fp.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31439  __pyx_r = -1;
31440  __pyx_L0:;
31441  __Pyx_RefNannyFinishContext();
31442  return __pyx_r;
31443 }
31444 
31445 /* Python wrapper */
31446 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_10bandFactor_1__get__(PyObject *__pyx_v_self); /*proto*/
31447 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_10bandFactor_1__get__(PyObject *__pyx_v_self) {
31448  PyObject *__pyx_r = 0;
31449  __Pyx_RefNannyDeclarations
31450  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31451  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_10bandFactor___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31452 
31453  /* function exit code */
31454  __Pyx_RefNannyFinishContext();
31455  return __pyx_r;
31456 }
31457 
31458 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_10bandFactor___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31459  PyObject *__pyx_r = NULL;
31460  __Pyx_RefNannyDeclarations
31461  PyObject *__pyx_t_1 = NULL;
31462  int __pyx_lineno = 0;
31463  const char *__pyx_filename = NULL;
31464  int __pyx_clineno = 0;
31465  __Pyx_RefNannySetupContext("__get__", 0);
31466  __Pyx_XDECREF(__pyx_r);
31467  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->bandFactor); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31468  __Pyx_GOTREF(__pyx_t_1);
31469  __pyx_r = __pyx_t_1;
31470  __pyx_t_1 = 0;
31471  goto __pyx_L0;
31472 
31473  /* function exit code */
31474  __pyx_L1_error:;
31475  __Pyx_XDECREF(__pyx_t_1);
31476  __Pyx_AddTraceback("WaveTools.RandomWaves.bandFactor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31477  __pyx_r = NULL;
31478  __pyx_L0:;
31479  __Pyx_XGIVEREF(__pyx_r);
31480  __Pyx_RefNannyFinishContext();
31481  return __pyx_r;
31482 }
31483 
31484 /* Python wrapper */
31485 static int __pyx_pw_9WaveTools_11RandomWaves_10bandFactor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31486 static int __pyx_pw_9WaveTools_11RandomWaves_10bandFactor_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31487  int __pyx_r;
31488  __Pyx_RefNannyDeclarations
31489  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31490  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_10bandFactor_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31491 
31492  /* function exit code */
31493  __Pyx_RefNannyFinishContext();
31494  return __pyx_r;
31495 }
31496 
31497 static int __pyx_pf_9WaveTools_11RandomWaves_10bandFactor_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31498  int __pyx_r;
31499  __Pyx_RefNannyDeclarations
31500  double __pyx_t_1;
31501  int __pyx_lineno = 0;
31502  const char *__pyx_filename = NULL;
31503  int __pyx_clineno = 0;
31504  __Pyx_RefNannySetupContext("__set__", 0);
31505  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31506  __pyx_v_self->bandFactor = __pyx_t_1;
31507 
31508  /* function exit code */
31509  __pyx_r = 0;
31510  goto __pyx_L0;
31511  __pyx_L1_error:;
31512  __Pyx_AddTraceback("WaveTools.RandomWaves.bandFactor.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31513  __pyx_r = -1;
31514  __pyx_L0:;
31515  __Pyx_RefNannyFinishContext();
31516  return __pyx_r;
31517 }
31518 
31519 /* Python wrapper */
31520 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2df_1__get__(PyObject *__pyx_v_self); /*proto*/
31521 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2df_1__get__(PyObject *__pyx_v_self) {
31522  PyObject *__pyx_r = 0;
31523  __Pyx_RefNannyDeclarations
31524  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31525  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2df___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31526 
31527  /* function exit code */
31528  __Pyx_RefNannyFinishContext();
31529  return __pyx_r;
31530 }
31531 
31532 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2df___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31533  PyObject *__pyx_r = NULL;
31534  __Pyx_RefNannyDeclarations
31535  PyObject *__pyx_t_1 = NULL;
31536  int __pyx_lineno = 0;
31537  const char *__pyx_filename = NULL;
31538  int __pyx_clineno = 0;
31539  __Pyx_RefNannySetupContext("__get__", 0);
31540  __Pyx_XDECREF(__pyx_r);
31541  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->df); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31542  __Pyx_GOTREF(__pyx_t_1);
31543  __pyx_r = __pyx_t_1;
31544  __pyx_t_1 = 0;
31545  goto __pyx_L0;
31546 
31547  /* function exit code */
31548  __pyx_L1_error:;
31549  __Pyx_XDECREF(__pyx_t_1);
31550  __Pyx_AddTraceback("WaveTools.RandomWaves.df.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31551  __pyx_r = NULL;
31552  __pyx_L0:;
31553  __Pyx_XGIVEREF(__pyx_r);
31554  __Pyx_RefNannyFinishContext();
31555  return __pyx_r;
31556 }
31557 
31558 /* Python wrapper */
31559 static int __pyx_pw_9WaveTools_11RandomWaves_2df_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31560 static int __pyx_pw_9WaveTools_11RandomWaves_2df_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31561  int __pyx_r;
31562  __Pyx_RefNannyDeclarations
31563  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31564  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2df_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31565 
31566  /* function exit code */
31567  __Pyx_RefNannyFinishContext();
31568  return __pyx_r;
31569 }
31570 
31571 static int __pyx_pf_9WaveTools_11RandomWaves_2df_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31572  int __pyx_r;
31573  __Pyx_RefNannyDeclarations
31574  double __pyx_t_1;
31575  int __pyx_lineno = 0;
31576  const char *__pyx_filename = NULL;
31577  int __pyx_clineno = 0;
31578  __Pyx_RefNannySetupContext("__set__", 0);
31579  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31580  __pyx_v_self->df = __pyx_t_1;
31581 
31582  /* function exit code */
31583  __pyx_r = 0;
31584  goto __pyx_L0;
31585  __pyx_L1_error:;
31586  __Pyx_AddTraceback("WaveTools.RandomWaves.df.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31587  __pyx_r = -1;
31588  __pyx_L0:;
31589  __Pyx_RefNannyFinishContext();
31590  return __pyx_r;
31591 }
31592 
31593 /* Python wrapper */
31594 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_10wavelength_1__get__(PyObject *__pyx_v_self); /*proto*/
31595 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_10wavelength_1__get__(PyObject *__pyx_v_self) {
31596  PyObject *__pyx_r = 0;
31597  __Pyx_RefNannyDeclarations
31598  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31599  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_10wavelength___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31600 
31601  /* function exit code */
31602  __Pyx_RefNannyFinishContext();
31603  return __pyx_r;
31604 }
31605 
31606 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_10wavelength___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31607  PyObject *__pyx_r = NULL;
31608  __Pyx_RefNannyDeclarations
31609  PyObject *__pyx_t_1 = NULL;
31610  int __pyx_lineno = 0;
31611  const char *__pyx_filename = NULL;
31612  int __pyx_clineno = 0;
31613  __Pyx_RefNannySetupContext("__get__", 0);
31614  __Pyx_XDECREF(__pyx_r);
31615  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->wavelength); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
31616  __Pyx_GOTREF(__pyx_t_1);
31617  __pyx_r = __pyx_t_1;
31618  __pyx_t_1 = 0;
31619  goto __pyx_L0;
31620 
31621  /* function exit code */
31622  __pyx_L1_error:;
31623  __Pyx_XDECREF(__pyx_t_1);
31624  __Pyx_AddTraceback("WaveTools.RandomWaves.wavelength.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31625  __pyx_r = NULL;
31626  __pyx_L0:;
31627  __Pyx_XGIVEREF(__pyx_r);
31628  __Pyx_RefNannyFinishContext();
31629  return __pyx_r;
31630 }
31631 
31632 /* Python wrapper */
31633 static int __pyx_pw_9WaveTools_11RandomWaves_10wavelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31634 static int __pyx_pw_9WaveTools_11RandomWaves_10wavelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31635  int __pyx_r;
31636  __Pyx_RefNannyDeclarations
31637  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31638  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_10wavelength_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31639 
31640  /* function exit code */
31641  __Pyx_RefNannyFinishContext();
31642  return __pyx_r;
31643 }
31644 
31645 static int __pyx_pf_9WaveTools_11RandomWaves_10wavelength_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31646  int __pyx_r;
31647  __Pyx_RefNannyDeclarations
31648  double __pyx_t_1;
31649  int __pyx_lineno = 0;
31650  const char *__pyx_filename = NULL;
31651  int __pyx_clineno = 0;
31652  __Pyx_RefNannySetupContext("__set__", 0);
31653  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L1_error)
31654  __pyx_v_self->wavelength = __pyx_t_1;
31655 
31656  /* function exit code */
31657  __pyx_r = 0;
31658  goto __pyx_L0;
31659  __pyx_L1_error:;
31660  __Pyx_AddTraceback("WaveTools.RandomWaves.wavelength.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31661  __pyx_r = -1;
31662  __pyx_L0:;
31663  __Pyx_RefNannyFinishContext();
31664  return __pyx_r;
31665 }
31666 
31667 /* "WaveTools.pxd":124
31668  * cdef public:
31669  * double mwl,depth,gAbs,Tlag,Hs,Tp,fp,bandFactor,df,wavelength
31670  * int N # <<<<<<<<<<<<<<
31671  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai
31672  * cdef object phi
31673  */
31674 
31675 /* Python wrapper */
31676 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1N_1__get__(PyObject *__pyx_v_self); /*proto*/
31677 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1N_1__get__(PyObject *__pyx_v_self) {
31678  PyObject *__pyx_r = 0;
31679  __Pyx_RefNannyDeclarations
31680  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31681  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_1N___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31682 
31683  /* function exit code */
31684  __Pyx_RefNannyFinishContext();
31685  return __pyx_r;
31686 }
31687 
31688 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_1N___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31689  PyObject *__pyx_r = NULL;
31690  __Pyx_RefNannyDeclarations
31691  PyObject *__pyx_t_1 = NULL;
31692  int __pyx_lineno = 0;
31693  const char *__pyx_filename = NULL;
31694  int __pyx_clineno = 0;
31695  __Pyx_RefNannySetupContext("__get__", 0);
31696  __Pyx_XDECREF(__pyx_r);
31697  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 124, __pyx_L1_error)
31698  __Pyx_GOTREF(__pyx_t_1);
31699  __pyx_r = __pyx_t_1;
31700  __pyx_t_1 = 0;
31701  goto __pyx_L0;
31702 
31703  /* function exit code */
31704  __pyx_L1_error:;
31705  __Pyx_XDECREF(__pyx_t_1);
31706  __Pyx_AddTraceback("WaveTools.RandomWaves.N.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31707  __pyx_r = NULL;
31708  __pyx_L0:;
31709  __Pyx_XGIVEREF(__pyx_r);
31710  __Pyx_RefNannyFinishContext();
31711  return __pyx_r;
31712 }
31713 
31714 /* Python wrapper */
31715 static int __pyx_pw_9WaveTools_11RandomWaves_1N_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31716 static int __pyx_pw_9WaveTools_11RandomWaves_1N_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31717  int __pyx_r;
31718  __Pyx_RefNannyDeclarations
31719  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31720  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_1N_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31721 
31722  /* function exit code */
31723  __Pyx_RefNannyFinishContext();
31724  return __pyx_r;
31725 }
31726 
31727 static int __pyx_pf_9WaveTools_11RandomWaves_1N_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31728  int __pyx_r;
31729  __Pyx_RefNannyDeclarations
31730  int __pyx_t_1;
31731  int __pyx_lineno = 0;
31732  const char *__pyx_filename = NULL;
31733  int __pyx_clineno = 0;
31734  __Pyx_RefNannySetupContext("__set__", 0);
31735  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 124, __pyx_L1_error)
31736  __pyx_v_self->N = __pyx_t_1;
31737 
31738  /* function exit code */
31739  __pyx_r = 0;
31740  goto __pyx_L0;
31741  __pyx_L1_error:;
31742  __Pyx_AddTraceback("WaveTools.RandomWaves.N.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31743  __pyx_r = -1;
31744  __pyx_L0:;
31745  __Pyx_RefNannyFinishContext();
31746  return __pyx_r;
31747 }
31748 
31749 /* "WaveTools.pxd":125
31750  * double mwl,depth,gAbs,Tlag,Hs,Tp,fp,bandFactor,df,wavelength
31751  * int N
31752  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai # <<<<<<<<<<<<<<
31753  * cdef object phi
31754  * cdef double _cpp_eta(self , double* x, double t)
31755  */
31756 
31757 /* Python wrapper */
31758 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2fi_1__get__(PyObject *__pyx_v_self); /*proto*/
31759 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2fi_1__get__(PyObject *__pyx_v_self) {
31760  PyObject *__pyx_r = 0;
31761  __Pyx_RefNannyDeclarations
31762  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31763  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2fi___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31764 
31765  /* function exit code */
31766  __Pyx_RefNannyFinishContext();
31767  return __pyx_r;
31768 }
31769 
31770 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2fi___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31771  PyObject *__pyx_r = NULL;
31772  __Pyx_RefNannyDeclarations
31773  __Pyx_RefNannySetupContext("__get__", 0);
31774  __Pyx_XDECREF(__pyx_r);
31775  __Pyx_INCREF(((PyObject *)__pyx_v_self->fi));
31776  __pyx_r = ((PyObject *)__pyx_v_self->fi);
31777  goto __pyx_L0;
31778 
31779  /* function exit code */
31780  __pyx_L0:;
31781  __Pyx_XGIVEREF(__pyx_r);
31782  __Pyx_RefNannyFinishContext();
31783  return __pyx_r;
31784 }
31785 
31786 /* Python wrapper */
31787 static int __pyx_pw_9WaveTools_11RandomWaves_2fi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31788 static int __pyx_pw_9WaveTools_11RandomWaves_2fi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31789  int __pyx_r;
31790  __Pyx_RefNannyDeclarations
31791  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31792  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2fi_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31793 
31794  /* function exit code */
31795  __Pyx_RefNannyFinishContext();
31796  return __pyx_r;
31797 }
31798 
31799 static int __pyx_pf_9WaveTools_11RandomWaves_2fi_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31800  int __pyx_r;
31801  __Pyx_RefNannyDeclarations
31802  PyObject *__pyx_t_1 = NULL;
31803  int __pyx_lineno = 0;
31804  const char *__pyx_filename = NULL;
31805  int __pyx_clineno = 0;
31806  __Pyx_RefNannySetupContext("__set__", 0);
31807  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
31808  __pyx_t_1 = __pyx_v_value;
31809  __Pyx_INCREF(__pyx_t_1);
31810  __Pyx_GIVEREF(__pyx_t_1);
31811  __Pyx_GOTREF(__pyx_v_self->fi);
31812  __Pyx_DECREF(((PyObject *)__pyx_v_self->fi));
31813  __pyx_v_self->fi = ((PyArrayObject *)__pyx_t_1);
31814  __pyx_t_1 = 0;
31815 
31816  /* function exit code */
31817  __pyx_r = 0;
31818  goto __pyx_L0;
31819  __pyx_L1_error:;
31820  __Pyx_XDECREF(__pyx_t_1);
31821  __Pyx_AddTraceback("WaveTools.RandomWaves.fi.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31822  __pyx_r = -1;
31823  __pyx_L0:;
31824  __Pyx_RefNannyFinishContext();
31825  return __pyx_r;
31826 }
31827 
31828 /* Python wrapper */
31829 static int __pyx_pw_9WaveTools_11RandomWaves_2fi_5__del__(PyObject *__pyx_v_self); /*proto*/
31830 static int __pyx_pw_9WaveTools_11RandomWaves_2fi_5__del__(PyObject *__pyx_v_self) {
31831  int __pyx_r;
31832  __Pyx_RefNannyDeclarations
31833  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
31834  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2fi_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31835 
31836  /* function exit code */
31837  __Pyx_RefNannyFinishContext();
31838  return __pyx_r;
31839 }
31840 
31841 static int __pyx_pf_9WaveTools_11RandomWaves_2fi_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31842  int __pyx_r;
31843  __Pyx_RefNannyDeclarations
31844  __Pyx_RefNannySetupContext("__del__", 0);
31845  __Pyx_INCREF(Py_None);
31846  __Pyx_GIVEREF(Py_None);
31847  __Pyx_GOTREF(__pyx_v_self->fi);
31848  __Pyx_DECREF(((PyObject *)__pyx_v_self->fi));
31849  __pyx_v_self->fi = ((PyArrayObject *)Py_None);
31850 
31851  /* function exit code */
31852  __pyx_r = 0;
31853  __Pyx_RefNannyFinishContext();
31854  return __pyx_r;
31855 }
31856 
31857 /* Python wrapper */
31858 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3fim_1__get__(PyObject *__pyx_v_self); /*proto*/
31859 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3fim_1__get__(PyObject *__pyx_v_self) {
31860  PyObject *__pyx_r = 0;
31861  __Pyx_RefNannyDeclarations
31862  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31863  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3fim___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31864 
31865  /* function exit code */
31866  __Pyx_RefNannyFinishContext();
31867  return __pyx_r;
31868 }
31869 
31870 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_3fim___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31871  PyObject *__pyx_r = NULL;
31872  __Pyx_RefNannyDeclarations
31873  __Pyx_RefNannySetupContext("__get__", 0);
31874  __Pyx_XDECREF(__pyx_r);
31875  __Pyx_INCREF(((PyObject *)__pyx_v_self->fim));
31876  __pyx_r = ((PyObject *)__pyx_v_self->fim);
31877  goto __pyx_L0;
31878 
31879  /* function exit code */
31880  __pyx_L0:;
31881  __Pyx_XGIVEREF(__pyx_r);
31882  __Pyx_RefNannyFinishContext();
31883  return __pyx_r;
31884 }
31885 
31886 /* Python wrapper */
31887 static int __pyx_pw_9WaveTools_11RandomWaves_3fim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31888 static int __pyx_pw_9WaveTools_11RandomWaves_3fim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31889  int __pyx_r;
31890  __Pyx_RefNannyDeclarations
31891  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31892  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3fim_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31893 
31894  /* function exit code */
31895  __Pyx_RefNannyFinishContext();
31896  return __pyx_r;
31897 }
31898 
31899 static int __pyx_pf_9WaveTools_11RandomWaves_3fim_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
31900  int __pyx_r;
31901  __Pyx_RefNannyDeclarations
31902  PyObject *__pyx_t_1 = NULL;
31903  int __pyx_lineno = 0;
31904  const char *__pyx_filename = NULL;
31905  int __pyx_clineno = 0;
31906  __Pyx_RefNannySetupContext("__set__", 0);
31907  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
31908  __pyx_t_1 = __pyx_v_value;
31909  __Pyx_INCREF(__pyx_t_1);
31910  __Pyx_GIVEREF(__pyx_t_1);
31911  __Pyx_GOTREF(__pyx_v_self->fim);
31912  __Pyx_DECREF(((PyObject *)__pyx_v_self->fim));
31913  __pyx_v_self->fim = ((PyArrayObject *)__pyx_t_1);
31914  __pyx_t_1 = 0;
31915 
31916  /* function exit code */
31917  __pyx_r = 0;
31918  goto __pyx_L0;
31919  __pyx_L1_error:;
31920  __Pyx_XDECREF(__pyx_t_1);
31921  __Pyx_AddTraceback("WaveTools.RandomWaves.fim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
31922  __pyx_r = -1;
31923  __pyx_L0:;
31924  __Pyx_RefNannyFinishContext();
31925  return __pyx_r;
31926 }
31927 
31928 /* Python wrapper */
31929 static int __pyx_pw_9WaveTools_11RandomWaves_3fim_5__del__(PyObject *__pyx_v_self); /*proto*/
31930 static int __pyx_pw_9WaveTools_11RandomWaves_3fim_5__del__(PyObject *__pyx_v_self) {
31931  int __pyx_r;
31932  __Pyx_RefNannyDeclarations
31933  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
31934  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3fim_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31935 
31936  /* function exit code */
31937  __Pyx_RefNannyFinishContext();
31938  return __pyx_r;
31939 }
31940 
31941 static int __pyx_pf_9WaveTools_11RandomWaves_3fim_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31942  int __pyx_r;
31943  __Pyx_RefNannyDeclarations
31944  __Pyx_RefNannySetupContext("__del__", 0);
31945  __Pyx_INCREF(Py_None);
31946  __Pyx_GIVEREF(Py_None);
31947  __Pyx_GOTREF(__pyx_v_self->fim);
31948  __Pyx_DECREF(((PyObject *)__pyx_v_self->fim));
31949  __pyx_v_self->fim = ((PyArrayObject *)Py_None);
31950 
31951  /* function exit code */
31952  __pyx_r = 0;
31953  __Pyx_RefNannyFinishContext();
31954  return __pyx_r;
31955 }
31956 
31957 /* Python wrapper */
31958 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_1__get__(PyObject *__pyx_v_self); /*proto*/
31959 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_1__get__(PyObject *__pyx_v_self) {
31960  PyObject *__pyx_r = 0;
31961  __Pyx_RefNannyDeclarations
31962  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
31963  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
31964 
31965  /* function exit code */
31966  __Pyx_RefNannyFinishContext();
31967  return __pyx_r;
31968 }
31969 
31970 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5Si_Jm___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
31971  PyObject *__pyx_r = NULL;
31972  __Pyx_RefNannyDeclarations
31973  __Pyx_RefNannySetupContext("__get__", 0);
31974  __Pyx_XDECREF(__pyx_r);
31975  __Pyx_INCREF(((PyObject *)__pyx_v_self->Si_Jm));
31976  __pyx_r = ((PyObject *)__pyx_v_self->Si_Jm);
31977  goto __pyx_L0;
31978 
31979  /* function exit code */
31980  __pyx_L0:;
31981  __Pyx_XGIVEREF(__pyx_r);
31982  __Pyx_RefNannyFinishContext();
31983  return __pyx_r;
31984 }
31985 
31986 /* Python wrapper */
31987 static int __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
31988 static int __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
31989  int __pyx_r;
31990  __Pyx_RefNannyDeclarations
31991  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
31992  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
31993 
31994  /* function exit code */
31995  __Pyx_RefNannyFinishContext();
31996  return __pyx_r;
31997 }
31998 
31999 static int __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32000  int __pyx_r;
32001  __Pyx_RefNannyDeclarations
32002  PyObject *__pyx_t_1 = NULL;
32003  int __pyx_lineno = 0;
32004  const char *__pyx_filename = NULL;
32005  int __pyx_clineno = 0;
32006  __Pyx_RefNannySetupContext("__set__", 0);
32007  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32008  __pyx_t_1 = __pyx_v_value;
32009  __Pyx_INCREF(__pyx_t_1);
32010  __Pyx_GIVEREF(__pyx_t_1);
32011  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
32012  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
32013  __pyx_v_self->Si_Jm = ((PyArrayObject *)__pyx_t_1);
32014  __pyx_t_1 = 0;
32015 
32016  /* function exit code */
32017  __pyx_r = 0;
32018  goto __pyx_L0;
32019  __pyx_L1_error:;
32020  __Pyx_XDECREF(__pyx_t_1);
32021  __Pyx_AddTraceback("WaveTools.RandomWaves.Si_Jm.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32022  __pyx_r = -1;
32023  __pyx_L0:;
32024  __Pyx_RefNannyFinishContext();
32025  return __pyx_r;
32026 }
32027 
32028 /* Python wrapper */
32029 static int __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_5__del__(PyObject *__pyx_v_self); /*proto*/
32030 static int __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_5__del__(PyObject *__pyx_v_self) {
32031  int __pyx_r;
32032  __Pyx_RefNannyDeclarations
32033  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32034  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32035 
32036  /* function exit code */
32037  __Pyx_RefNannyFinishContext();
32038  return __pyx_r;
32039 }
32040 
32041 static int __pyx_pf_9WaveTools_11RandomWaves_5Si_Jm_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32042  int __pyx_r;
32043  __Pyx_RefNannyDeclarations
32044  __Pyx_RefNannySetupContext("__del__", 0);
32045  __Pyx_INCREF(Py_None);
32046  __Pyx_GIVEREF(Py_None);
32047  __Pyx_GOTREF(__pyx_v_self->Si_Jm);
32048  __Pyx_DECREF(((PyObject *)__pyx_v_self->Si_Jm));
32049  __pyx_v_self->Si_Jm = ((PyArrayObject *)Py_None);
32050 
32051  /* function exit code */
32052  __pyx_r = 0;
32053  __Pyx_RefNannyFinishContext();
32054  return __pyx_r;
32055 }
32056 
32057 /* Python wrapper */
32058 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2ki_1__get__(PyObject *__pyx_v_self); /*proto*/
32059 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2ki_1__get__(PyObject *__pyx_v_self) {
32060  PyObject *__pyx_r = 0;
32061  __Pyx_RefNannyDeclarations
32062  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32063  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2ki___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32064 
32065  /* function exit code */
32066  __Pyx_RefNannyFinishContext();
32067  return __pyx_r;
32068 }
32069 
32070 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2ki___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32071  PyObject *__pyx_r = NULL;
32072  __Pyx_RefNannyDeclarations
32073  __Pyx_RefNannySetupContext("__get__", 0);
32074  __Pyx_XDECREF(__pyx_r);
32075  __Pyx_INCREF(((PyObject *)__pyx_v_self->ki));
32076  __pyx_r = ((PyObject *)__pyx_v_self->ki);
32077  goto __pyx_L0;
32078 
32079  /* function exit code */
32080  __pyx_L0:;
32081  __Pyx_XGIVEREF(__pyx_r);
32082  __Pyx_RefNannyFinishContext();
32083  return __pyx_r;
32084 }
32085 
32086 /* Python wrapper */
32087 static int __pyx_pw_9WaveTools_11RandomWaves_2ki_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32088 static int __pyx_pw_9WaveTools_11RandomWaves_2ki_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32089  int __pyx_r;
32090  __Pyx_RefNannyDeclarations
32091  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32092  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2ki_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32093 
32094  /* function exit code */
32095  __Pyx_RefNannyFinishContext();
32096  return __pyx_r;
32097 }
32098 
32099 static int __pyx_pf_9WaveTools_11RandomWaves_2ki_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32100  int __pyx_r;
32101  __Pyx_RefNannyDeclarations
32102  PyObject *__pyx_t_1 = NULL;
32103  int __pyx_lineno = 0;
32104  const char *__pyx_filename = NULL;
32105  int __pyx_clineno = 0;
32106  __Pyx_RefNannySetupContext("__set__", 0);
32107  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32108  __pyx_t_1 = __pyx_v_value;
32109  __Pyx_INCREF(__pyx_t_1);
32110  __Pyx_GIVEREF(__pyx_t_1);
32111  __Pyx_GOTREF(__pyx_v_self->ki);
32112  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
32113  __pyx_v_self->ki = ((PyArrayObject *)__pyx_t_1);
32114  __pyx_t_1 = 0;
32115 
32116  /* function exit code */
32117  __pyx_r = 0;
32118  goto __pyx_L0;
32119  __pyx_L1_error:;
32120  __Pyx_XDECREF(__pyx_t_1);
32121  __Pyx_AddTraceback("WaveTools.RandomWaves.ki.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32122  __pyx_r = -1;
32123  __pyx_L0:;
32124  __Pyx_RefNannyFinishContext();
32125  return __pyx_r;
32126 }
32127 
32128 /* Python wrapper */
32129 static int __pyx_pw_9WaveTools_11RandomWaves_2ki_5__del__(PyObject *__pyx_v_self); /*proto*/
32130 static int __pyx_pw_9WaveTools_11RandomWaves_2ki_5__del__(PyObject *__pyx_v_self) {
32131  int __pyx_r;
32132  __Pyx_RefNannyDeclarations
32133  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32134  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2ki_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32135 
32136  /* function exit code */
32137  __Pyx_RefNannyFinishContext();
32138  return __pyx_r;
32139 }
32140 
32141 static int __pyx_pf_9WaveTools_11RandomWaves_2ki_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32142  int __pyx_r;
32143  __Pyx_RefNannyDeclarations
32144  __Pyx_RefNannySetupContext("__del__", 0);
32145  __Pyx_INCREF(Py_None);
32146  __Pyx_GIVEREF(Py_None);
32147  __Pyx_GOTREF(__pyx_v_self->ki);
32148  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
32149  __pyx_v_self->ki = ((PyArrayObject *)Py_None);
32150 
32151  /* function exit code */
32152  __pyx_r = 0;
32153  __Pyx_RefNannyFinishContext();
32154  return __pyx_r;
32155 }
32156 
32157 /* Python wrapper */
32158 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5omega_1__get__(PyObject *__pyx_v_self); /*proto*/
32159 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5omega_1__get__(PyObject *__pyx_v_self) {
32160  PyObject *__pyx_r = 0;
32161  __Pyx_RefNannyDeclarations
32162  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32163  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5omega___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32164 
32165  /* function exit code */
32166  __Pyx_RefNannyFinishContext();
32167  return __pyx_r;
32168 }
32169 
32170 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5omega___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32171  PyObject *__pyx_r = NULL;
32172  __Pyx_RefNannyDeclarations
32173  __Pyx_RefNannySetupContext("__get__", 0);
32174  __Pyx_XDECREF(__pyx_r);
32175  __Pyx_INCREF(((PyObject *)__pyx_v_self->omega));
32176  __pyx_r = ((PyObject *)__pyx_v_self->omega);
32177  goto __pyx_L0;
32178 
32179  /* function exit code */
32180  __pyx_L0:;
32181  __Pyx_XGIVEREF(__pyx_r);
32182  __Pyx_RefNannyFinishContext();
32183  return __pyx_r;
32184 }
32185 
32186 /* Python wrapper */
32187 static int __pyx_pw_9WaveTools_11RandomWaves_5omega_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32188 static int __pyx_pw_9WaveTools_11RandomWaves_5omega_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32189  int __pyx_r;
32190  __Pyx_RefNannyDeclarations
32191  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32192  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5omega_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32193 
32194  /* function exit code */
32195  __Pyx_RefNannyFinishContext();
32196  return __pyx_r;
32197 }
32198 
32199 static int __pyx_pf_9WaveTools_11RandomWaves_5omega_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32200  int __pyx_r;
32201  __Pyx_RefNannyDeclarations
32202  PyObject *__pyx_t_1 = NULL;
32203  int __pyx_lineno = 0;
32204  const char *__pyx_filename = NULL;
32205  int __pyx_clineno = 0;
32206  __Pyx_RefNannySetupContext("__set__", 0);
32207  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32208  __pyx_t_1 = __pyx_v_value;
32209  __Pyx_INCREF(__pyx_t_1);
32210  __Pyx_GIVEREF(__pyx_t_1);
32211  __Pyx_GOTREF(__pyx_v_self->omega);
32212  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
32213  __pyx_v_self->omega = ((PyArrayObject *)__pyx_t_1);
32214  __pyx_t_1 = 0;
32215 
32216  /* function exit code */
32217  __pyx_r = 0;
32218  goto __pyx_L0;
32219  __pyx_L1_error:;
32220  __Pyx_XDECREF(__pyx_t_1);
32221  __Pyx_AddTraceback("WaveTools.RandomWaves.omega.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32222  __pyx_r = -1;
32223  __pyx_L0:;
32224  __Pyx_RefNannyFinishContext();
32225  return __pyx_r;
32226 }
32227 
32228 /* Python wrapper */
32229 static int __pyx_pw_9WaveTools_11RandomWaves_5omega_5__del__(PyObject *__pyx_v_self); /*proto*/
32230 static int __pyx_pw_9WaveTools_11RandomWaves_5omega_5__del__(PyObject *__pyx_v_self) {
32231  int __pyx_r;
32232  __Pyx_RefNannyDeclarations
32233  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32234  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5omega_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32235 
32236  /* function exit code */
32237  __Pyx_RefNannyFinishContext();
32238  return __pyx_r;
32239 }
32240 
32241 static int __pyx_pf_9WaveTools_11RandomWaves_5omega_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32242  int __pyx_r;
32243  __Pyx_RefNannyDeclarations
32244  __Pyx_RefNannySetupContext("__del__", 0);
32245  __Pyx_INCREF(Py_None);
32246  __Pyx_GIVEREF(Py_None);
32247  __Pyx_GOTREF(__pyx_v_self->omega);
32248  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
32249  __pyx_v_self->omega = ((PyArrayObject *)Py_None);
32250 
32251  /* function exit code */
32252  __pyx_r = 0;
32253  __Pyx_RefNannyFinishContext();
32254  return __pyx_r;
32255 }
32256 
32257 /* Python wrapper */
32258 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5tanhF_1__get__(PyObject *__pyx_v_self); /*proto*/
32259 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5tanhF_1__get__(PyObject *__pyx_v_self) {
32260  PyObject *__pyx_r = 0;
32261  __Pyx_RefNannyDeclarations
32262  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32263  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5tanhF___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32264 
32265  /* function exit code */
32266  __Pyx_RefNannyFinishContext();
32267  return __pyx_r;
32268 }
32269 
32270 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_5tanhF___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32271  PyObject *__pyx_r = NULL;
32272  __Pyx_RefNannyDeclarations
32273  __Pyx_RefNannySetupContext("__get__", 0);
32274  __Pyx_XDECREF(__pyx_r);
32275  __Pyx_INCREF(((PyObject *)__pyx_v_self->tanhF));
32276  __pyx_r = ((PyObject *)__pyx_v_self->tanhF);
32277  goto __pyx_L0;
32278 
32279  /* function exit code */
32280  __pyx_L0:;
32281  __Pyx_XGIVEREF(__pyx_r);
32282  __Pyx_RefNannyFinishContext();
32283  return __pyx_r;
32284 }
32285 
32286 /* Python wrapper */
32287 static int __pyx_pw_9WaveTools_11RandomWaves_5tanhF_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32288 static int __pyx_pw_9WaveTools_11RandomWaves_5tanhF_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32289  int __pyx_r;
32290  __Pyx_RefNannyDeclarations
32291  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32292  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5tanhF_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32293 
32294  /* function exit code */
32295  __Pyx_RefNannyFinishContext();
32296  return __pyx_r;
32297 }
32298 
32299 static int __pyx_pf_9WaveTools_11RandomWaves_5tanhF_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32300  int __pyx_r;
32301  __Pyx_RefNannyDeclarations
32302  PyObject *__pyx_t_1 = NULL;
32303  int __pyx_lineno = 0;
32304  const char *__pyx_filename = NULL;
32305  int __pyx_clineno = 0;
32306  __Pyx_RefNannySetupContext("__set__", 0);
32307  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32308  __pyx_t_1 = __pyx_v_value;
32309  __Pyx_INCREF(__pyx_t_1);
32310  __Pyx_GIVEREF(__pyx_t_1);
32311  __Pyx_GOTREF(__pyx_v_self->tanhF);
32312  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
32313  __pyx_v_self->tanhF = ((PyArrayObject *)__pyx_t_1);
32314  __pyx_t_1 = 0;
32315 
32316  /* function exit code */
32317  __pyx_r = 0;
32318  goto __pyx_L0;
32319  __pyx_L1_error:;
32320  __Pyx_XDECREF(__pyx_t_1);
32321  __Pyx_AddTraceback("WaveTools.RandomWaves.tanhF.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32322  __pyx_r = -1;
32323  __pyx_L0:;
32324  __Pyx_RefNannyFinishContext();
32325  return __pyx_r;
32326 }
32327 
32328 /* Python wrapper */
32329 static int __pyx_pw_9WaveTools_11RandomWaves_5tanhF_5__del__(PyObject *__pyx_v_self); /*proto*/
32330 static int __pyx_pw_9WaveTools_11RandomWaves_5tanhF_5__del__(PyObject *__pyx_v_self) {
32331  int __pyx_r;
32332  __Pyx_RefNannyDeclarations
32333  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32334  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_5tanhF_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32335 
32336  /* function exit code */
32337  __Pyx_RefNannyFinishContext();
32338  return __pyx_r;
32339 }
32340 
32341 static int __pyx_pf_9WaveTools_11RandomWaves_5tanhF_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32342  int __pyx_r;
32343  __Pyx_RefNannyDeclarations
32344  __Pyx_RefNannySetupContext("__del__", 0);
32345  __Pyx_INCREF(Py_None);
32346  __Pyx_GIVEREF(Py_None);
32347  __Pyx_GOTREF(__pyx_v_self->tanhF);
32348  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
32349  __pyx_v_self->tanhF = ((PyArrayObject *)Py_None);
32350 
32351  /* function exit code */
32352  __pyx_r = 0;
32353  __Pyx_RefNannyFinishContext();
32354  return __pyx_r;
32355 }
32356 
32357 /* Python wrapper */
32358 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1g_1__get__(PyObject *__pyx_v_self); /*proto*/
32359 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1g_1__get__(PyObject *__pyx_v_self) {
32360  PyObject *__pyx_r = 0;
32361  __Pyx_RefNannyDeclarations
32362  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32363  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_1g___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32364 
32365  /* function exit code */
32366  __Pyx_RefNannyFinishContext();
32367  return __pyx_r;
32368 }
32369 
32370 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_1g___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32371  PyObject *__pyx_r = NULL;
32372  __Pyx_RefNannyDeclarations
32373  __Pyx_RefNannySetupContext("__get__", 0);
32374  __Pyx_XDECREF(__pyx_r);
32375  __Pyx_INCREF(((PyObject *)__pyx_v_self->g));
32376  __pyx_r = ((PyObject *)__pyx_v_self->g);
32377  goto __pyx_L0;
32378 
32379  /* function exit code */
32380  __pyx_L0:;
32381  __Pyx_XGIVEREF(__pyx_r);
32382  __Pyx_RefNannyFinishContext();
32383  return __pyx_r;
32384 }
32385 
32386 /* Python wrapper */
32387 static int __pyx_pw_9WaveTools_11RandomWaves_1g_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32388 static int __pyx_pw_9WaveTools_11RandomWaves_1g_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32389  int __pyx_r;
32390  __Pyx_RefNannyDeclarations
32391  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32392  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_1g_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32393 
32394  /* function exit code */
32395  __Pyx_RefNannyFinishContext();
32396  return __pyx_r;
32397 }
32398 
32399 static int __pyx_pf_9WaveTools_11RandomWaves_1g_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32400  int __pyx_r;
32401  __Pyx_RefNannyDeclarations
32402  PyObject *__pyx_t_1 = NULL;
32403  int __pyx_lineno = 0;
32404  const char *__pyx_filename = NULL;
32405  int __pyx_clineno = 0;
32406  __Pyx_RefNannySetupContext("__set__", 0);
32407  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32408  __pyx_t_1 = __pyx_v_value;
32409  __Pyx_INCREF(__pyx_t_1);
32410  __Pyx_GIVEREF(__pyx_t_1);
32411  __Pyx_GOTREF(__pyx_v_self->g);
32412  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
32413  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_1);
32414  __pyx_t_1 = 0;
32415 
32416  /* function exit code */
32417  __pyx_r = 0;
32418  goto __pyx_L0;
32419  __pyx_L1_error:;
32420  __Pyx_XDECREF(__pyx_t_1);
32421  __Pyx_AddTraceback("WaveTools.RandomWaves.g.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32422  __pyx_r = -1;
32423  __pyx_L0:;
32424  __Pyx_RefNannyFinishContext();
32425  return __pyx_r;
32426 }
32427 
32428 /* Python wrapper */
32429 static int __pyx_pw_9WaveTools_11RandomWaves_1g_5__del__(PyObject *__pyx_v_self); /*proto*/
32430 static int __pyx_pw_9WaveTools_11RandomWaves_1g_5__del__(PyObject *__pyx_v_self) {
32431  int __pyx_r;
32432  __Pyx_RefNannyDeclarations
32433  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32434  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_1g_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32435 
32436  /* function exit code */
32437  __Pyx_RefNannyFinishContext();
32438  return __pyx_r;
32439 }
32440 
32441 static int __pyx_pf_9WaveTools_11RandomWaves_1g_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32442  int __pyx_r;
32443  __Pyx_RefNannyDeclarations
32444  __Pyx_RefNannySetupContext("__del__", 0);
32445  __Pyx_INCREF(Py_None);
32446  __Pyx_GIVEREF(Py_None);
32447  __Pyx_GOTREF(__pyx_v_self->g);
32448  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
32449  __pyx_v_self->g = ((PyArrayObject *)Py_None);
32450 
32451  /* function exit code */
32452  __pyx_r = 0;
32453  __Pyx_RefNannyFinishContext();
32454  return __pyx_r;
32455 }
32456 
32457 /* Python wrapper */
32458 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_7waveDir_1__get__(PyObject *__pyx_v_self); /*proto*/
32459 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_7waveDir_1__get__(PyObject *__pyx_v_self) {
32460  PyObject *__pyx_r = 0;
32461  __Pyx_RefNannyDeclarations
32462  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32463  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_7waveDir___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32464 
32465  /* function exit code */
32466  __Pyx_RefNannyFinishContext();
32467  return __pyx_r;
32468 }
32469 
32470 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_7waveDir___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32471  PyObject *__pyx_r = NULL;
32472  __Pyx_RefNannyDeclarations
32473  __Pyx_RefNannySetupContext("__get__", 0);
32474  __Pyx_XDECREF(__pyx_r);
32475  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
32476  __pyx_r = ((PyObject *)__pyx_v_self->waveDir);
32477  goto __pyx_L0;
32478 
32479  /* function exit code */
32480  __pyx_L0:;
32481  __Pyx_XGIVEREF(__pyx_r);
32482  __Pyx_RefNannyFinishContext();
32483  return __pyx_r;
32484 }
32485 
32486 /* Python wrapper */
32487 static int __pyx_pw_9WaveTools_11RandomWaves_7waveDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32488 static int __pyx_pw_9WaveTools_11RandomWaves_7waveDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32489  int __pyx_r;
32490  __Pyx_RefNannyDeclarations
32491  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32492  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_7waveDir_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32493 
32494  /* function exit code */
32495  __Pyx_RefNannyFinishContext();
32496  return __pyx_r;
32497 }
32498 
32499 static int __pyx_pf_9WaveTools_11RandomWaves_7waveDir_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32500  int __pyx_r;
32501  __Pyx_RefNannyDeclarations
32502  PyObject *__pyx_t_1 = NULL;
32503  int __pyx_lineno = 0;
32504  const char *__pyx_filename = NULL;
32505  int __pyx_clineno = 0;
32506  __Pyx_RefNannySetupContext("__set__", 0);
32507  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32508  __pyx_t_1 = __pyx_v_value;
32509  __Pyx_INCREF(__pyx_t_1);
32510  __Pyx_GIVEREF(__pyx_t_1);
32511  __Pyx_GOTREF(__pyx_v_self->waveDir);
32512  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
32513  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_1);
32514  __pyx_t_1 = 0;
32515 
32516  /* function exit code */
32517  __pyx_r = 0;
32518  goto __pyx_L0;
32519  __pyx_L1_error:;
32520  __Pyx_XDECREF(__pyx_t_1);
32521  __Pyx_AddTraceback("WaveTools.RandomWaves.waveDir.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32522  __pyx_r = -1;
32523  __pyx_L0:;
32524  __Pyx_RefNannyFinishContext();
32525  return __pyx_r;
32526 }
32527 
32528 /* Python wrapper */
32529 static int __pyx_pw_9WaveTools_11RandomWaves_7waveDir_5__del__(PyObject *__pyx_v_self); /*proto*/
32530 static int __pyx_pw_9WaveTools_11RandomWaves_7waveDir_5__del__(PyObject *__pyx_v_self) {
32531  int __pyx_r;
32532  __Pyx_RefNannyDeclarations
32533  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32534  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_7waveDir_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32535 
32536  /* function exit code */
32537  __Pyx_RefNannyFinishContext();
32538  return __pyx_r;
32539 }
32540 
32541 static int __pyx_pf_9WaveTools_11RandomWaves_7waveDir_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32542  int __pyx_r;
32543  __Pyx_RefNannyDeclarations
32544  __Pyx_RefNannySetupContext("__del__", 0);
32545  __Pyx_INCREF(Py_None);
32546  __Pyx_GIVEREF(Py_None);
32547  __Pyx_GOTREF(__pyx_v_self->waveDir);
32548  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
32549  __pyx_v_self->waveDir = ((PyArrayObject *)Py_None);
32550 
32551  /* function exit code */
32552  __pyx_r = 0;
32553  __Pyx_RefNannyFinishContext();
32554  return __pyx_r;
32555 }
32556 
32557 /* Python wrapper */
32558 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4vDir_1__get__(PyObject *__pyx_v_self); /*proto*/
32559 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4vDir_1__get__(PyObject *__pyx_v_self) {
32560  PyObject *__pyx_r = 0;
32561  __Pyx_RefNannyDeclarations
32562  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32563  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4vDir___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32564 
32565  /* function exit code */
32566  __Pyx_RefNannyFinishContext();
32567  return __pyx_r;
32568 }
32569 
32570 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4vDir___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32571  PyObject *__pyx_r = NULL;
32572  __Pyx_RefNannyDeclarations
32573  __Pyx_RefNannySetupContext("__get__", 0);
32574  __Pyx_XDECREF(__pyx_r);
32575  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
32576  __pyx_r = ((PyObject *)__pyx_v_self->vDir);
32577  goto __pyx_L0;
32578 
32579  /* function exit code */
32580  __pyx_L0:;
32581  __Pyx_XGIVEREF(__pyx_r);
32582  __Pyx_RefNannyFinishContext();
32583  return __pyx_r;
32584 }
32585 
32586 /* Python wrapper */
32587 static int __pyx_pw_9WaveTools_11RandomWaves_4vDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32588 static int __pyx_pw_9WaveTools_11RandomWaves_4vDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32589  int __pyx_r;
32590  __Pyx_RefNannyDeclarations
32591  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32592  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4vDir_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32593 
32594  /* function exit code */
32595  __Pyx_RefNannyFinishContext();
32596  return __pyx_r;
32597 }
32598 
32599 static int __pyx_pf_9WaveTools_11RandomWaves_4vDir_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32600  int __pyx_r;
32601  __Pyx_RefNannyDeclarations
32602  PyObject *__pyx_t_1 = NULL;
32603  int __pyx_lineno = 0;
32604  const char *__pyx_filename = NULL;
32605  int __pyx_clineno = 0;
32606  __Pyx_RefNannySetupContext("__set__", 0);
32607  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32608  __pyx_t_1 = __pyx_v_value;
32609  __Pyx_INCREF(__pyx_t_1);
32610  __Pyx_GIVEREF(__pyx_t_1);
32611  __Pyx_GOTREF(__pyx_v_self->vDir);
32612  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
32613  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_1);
32614  __pyx_t_1 = 0;
32615 
32616  /* function exit code */
32617  __pyx_r = 0;
32618  goto __pyx_L0;
32619  __pyx_L1_error:;
32620  __Pyx_XDECREF(__pyx_t_1);
32621  __Pyx_AddTraceback("WaveTools.RandomWaves.vDir.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32622  __pyx_r = -1;
32623  __pyx_L0:;
32624  __Pyx_RefNannyFinishContext();
32625  return __pyx_r;
32626 }
32627 
32628 /* Python wrapper */
32629 static int __pyx_pw_9WaveTools_11RandomWaves_4vDir_5__del__(PyObject *__pyx_v_self); /*proto*/
32630 static int __pyx_pw_9WaveTools_11RandomWaves_4vDir_5__del__(PyObject *__pyx_v_self) {
32631  int __pyx_r;
32632  __Pyx_RefNannyDeclarations
32633  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32634  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4vDir_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32635 
32636  /* function exit code */
32637  __Pyx_RefNannyFinishContext();
32638  return __pyx_r;
32639 }
32640 
32641 static int __pyx_pf_9WaveTools_11RandomWaves_4vDir_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32642  int __pyx_r;
32643  __Pyx_RefNannyDeclarations
32644  __Pyx_RefNannySetupContext("__del__", 0);
32645  __Pyx_INCREF(Py_None);
32646  __Pyx_GIVEREF(Py_None);
32647  __Pyx_GOTREF(__pyx_v_self->vDir);
32648  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
32649  __pyx_v_self->vDir = ((PyArrayObject *)Py_None);
32650 
32651  /* function exit code */
32652  __pyx_r = 0;
32653  __Pyx_RefNannyFinishContext();
32654  return __pyx_r;
32655 }
32656 
32657 /* Python wrapper */
32658 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4kDir_1__get__(PyObject *__pyx_v_self); /*proto*/
32659 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_4kDir_1__get__(PyObject *__pyx_v_self) {
32660  PyObject *__pyx_r = 0;
32661  __Pyx_RefNannyDeclarations
32662  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32663  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4kDir___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32664 
32665  /* function exit code */
32666  __Pyx_RefNannyFinishContext();
32667  return __pyx_r;
32668 }
32669 
32670 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4kDir___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32671  PyObject *__pyx_r = NULL;
32672  __Pyx_RefNannyDeclarations
32673  __Pyx_RefNannySetupContext("__get__", 0);
32674  __Pyx_XDECREF(__pyx_r);
32675  __Pyx_INCREF(((PyObject *)__pyx_v_self->kDir));
32676  __pyx_r = ((PyObject *)__pyx_v_self->kDir);
32677  goto __pyx_L0;
32678 
32679  /* function exit code */
32680  __pyx_L0:;
32681  __Pyx_XGIVEREF(__pyx_r);
32682  __Pyx_RefNannyFinishContext();
32683  return __pyx_r;
32684 }
32685 
32686 /* Python wrapper */
32687 static int __pyx_pw_9WaveTools_11RandomWaves_4kDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32688 static int __pyx_pw_9WaveTools_11RandomWaves_4kDir_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32689  int __pyx_r;
32690  __Pyx_RefNannyDeclarations
32691  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32692  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4kDir_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32693 
32694  /* function exit code */
32695  __Pyx_RefNannyFinishContext();
32696  return __pyx_r;
32697 }
32698 
32699 static int __pyx_pf_9WaveTools_11RandomWaves_4kDir_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32700  int __pyx_r;
32701  __Pyx_RefNannyDeclarations
32702  PyObject *__pyx_t_1 = NULL;
32703  int __pyx_lineno = 0;
32704  const char *__pyx_filename = NULL;
32705  int __pyx_clineno = 0;
32706  __Pyx_RefNannySetupContext("__set__", 0);
32707  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32708  __pyx_t_1 = __pyx_v_value;
32709  __Pyx_INCREF(__pyx_t_1);
32710  __Pyx_GIVEREF(__pyx_t_1);
32711  __Pyx_GOTREF(__pyx_v_self->kDir);
32712  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
32713  __pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_1);
32714  __pyx_t_1 = 0;
32715 
32716  /* function exit code */
32717  __pyx_r = 0;
32718  goto __pyx_L0;
32719  __pyx_L1_error:;
32720  __Pyx_XDECREF(__pyx_t_1);
32721  __Pyx_AddTraceback("WaveTools.RandomWaves.kDir.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32722  __pyx_r = -1;
32723  __pyx_L0:;
32724  __Pyx_RefNannyFinishContext();
32725  return __pyx_r;
32726 }
32727 
32728 /* Python wrapper */
32729 static int __pyx_pw_9WaveTools_11RandomWaves_4kDir_5__del__(PyObject *__pyx_v_self); /*proto*/
32730 static int __pyx_pw_9WaveTools_11RandomWaves_4kDir_5__del__(PyObject *__pyx_v_self) {
32731  int __pyx_r;
32732  __Pyx_RefNannyDeclarations
32733  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32734  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4kDir_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32735 
32736  /* function exit code */
32737  __Pyx_RefNannyFinishContext();
32738  return __pyx_r;
32739 }
32740 
32741 static int __pyx_pf_9WaveTools_11RandomWaves_4kDir_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32742  int __pyx_r;
32743  __Pyx_RefNannyDeclarations
32744  __Pyx_RefNannySetupContext("__del__", 0);
32745  __Pyx_INCREF(Py_None);
32746  __Pyx_GIVEREF(Py_None);
32747  __Pyx_GOTREF(__pyx_v_self->kDir);
32748  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
32749  __pyx_v_self->kDir = ((PyArrayObject *)Py_None);
32750 
32751  /* function exit code */
32752  __pyx_r = 0;
32753  __Pyx_RefNannyFinishContext();
32754  return __pyx_r;
32755 }
32756 
32757 /* Python wrapper */
32758 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2ai_1__get__(PyObject *__pyx_v_self); /*proto*/
32759 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_2ai_1__get__(PyObject *__pyx_v_self) {
32760  PyObject *__pyx_r = 0;
32761  __Pyx_RefNannyDeclarations
32762  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32763  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2ai___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32764 
32765  /* function exit code */
32766  __Pyx_RefNannyFinishContext();
32767  return __pyx_r;
32768 }
32769 
32770 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2ai___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32771  PyObject *__pyx_r = NULL;
32772  __Pyx_RefNannyDeclarations
32773  __Pyx_RefNannySetupContext("__get__", 0);
32774  __Pyx_XDECREF(__pyx_r);
32775  __Pyx_INCREF(((PyObject *)__pyx_v_self->ai));
32776  __pyx_r = ((PyObject *)__pyx_v_self->ai);
32777  goto __pyx_L0;
32778 
32779  /* function exit code */
32780  __pyx_L0:;
32781  __Pyx_XGIVEREF(__pyx_r);
32782  __Pyx_RefNannyFinishContext();
32783  return __pyx_r;
32784 }
32785 
32786 /* Python wrapper */
32787 static int __pyx_pw_9WaveTools_11RandomWaves_2ai_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32788 static int __pyx_pw_9WaveTools_11RandomWaves_2ai_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32789  int __pyx_r;
32790  __Pyx_RefNannyDeclarations
32791  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32792  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2ai_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32793 
32794  /* function exit code */
32795  __Pyx_RefNannyFinishContext();
32796  return __pyx_r;
32797 }
32798 
32799 static int __pyx_pf_9WaveTools_11RandomWaves_2ai_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32800  int __pyx_r;
32801  __Pyx_RefNannyDeclarations
32802  PyObject *__pyx_t_1 = NULL;
32803  int __pyx_lineno = 0;
32804  const char *__pyx_filename = NULL;
32805  int __pyx_clineno = 0;
32806  __Pyx_RefNannySetupContext("__set__", 0);
32807  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(2, 125, __pyx_L1_error)
32808  __pyx_t_1 = __pyx_v_value;
32809  __Pyx_INCREF(__pyx_t_1);
32810  __Pyx_GIVEREF(__pyx_t_1);
32811  __Pyx_GOTREF(__pyx_v_self->ai);
32812  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
32813  __pyx_v_self->ai = ((PyArrayObject *)__pyx_t_1);
32814  __pyx_t_1 = 0;
32815 
32816  /* function exit code */
32817  __pyx_r = 0;
32818  goto __pyx_L0;
32819  __pyx_L1_error:;
32820  __Pyx_XDECREF(__pyx_t_1);
32821  __Pyx_AddTraceback("WaveTools.RandomWaves.ai.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
32822  __pyx_r = -1;
32823  __pyx_L0:;
32824  __Pyx_RefNannyFinishContext();
32825  return __pyx_r;
32826 }
32827 
32828 /* Python wrapper */
32829 static int __pyx_pw_9WaveTools_11RandomWaves_2ai_5__del__(PyObject *__pyx_v_self); /*proto*/
32830 static int __pyx_pw_9WaveTools_11RandomWaves_2ai_5__del__(PyObject *__pyx_v_self) {
32831  int __pyx_r;
32832  __Pyx_RefNannyDeclarations
32833  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32834  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2ai_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32835 
32836  /* function exit code */
32837  __Pyx_RefNannyFinishContext();
32838  return __pyx_r;
32839 }
32840 
32841 static int __pyx_pf_9WaveTools_11RandomWaves_2ai_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32842  int __pyx_r;
32843  __Pyx_RefNannyDeclarations
32844  __Pyx_RefNannySetupContext("__del__", 0);
32845  __Pyx_INCREF(Py_None);
32846  __Pyx_GIVEREF(Py_None);
32847  __Pyx_GOTREF(__pyx_v_self->ai);
32848  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
32849  __pyx_v_self->ai = ((PyArrayObject *)Py_None);
32850 
32851  /* function exit code */
32852  __pyx_r = 0;
32853  __Pyx_RefNannyFinishContext();
32854  return __pyx_r;
32855 }
32856 
32857 /* "WaveTools.pxd":126
32858  * int N
32859  * np.ndarray fi,fim,Si_Jm,ki,omega,tanhF,g,waveDir,vDir,kDir,ai
32860  * cdef object phi # <<<<<<<<<<<<<<
32861  * cdef double _cpp_eta(self , double* x, double t)
32862  * cdef void _cpp_u(self, double *U, double* x, double t)
32863  */
32864 
32865 /* Python wrapper */
32866 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3phi_1__get__(PyObject *__pyx_v_self); /*proto*/
32867 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3phi_1__get__(PyObject *__pyx_v_self) {
32868  PyObject *__pyx_r = 0;
32869  __Pyx_RefNannyDeclarations
32870  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
32871  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3phi___get__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32872 
32873  /* function exit code */
32874  __Pyx_RefNannyFinishContext();
32875  return __pyx_r;
32876 }
32877 
32878 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_3phi___get__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32879  PyObject *__pyx_r = NULL;
32880  __Pyx_RefNannyDeclarations
32881  __Pyx_RefNannySetupContext("__get__", 0);
32882  __Pyx_XDECREF(__pyx_r);
32883  __Pyx_INCREF(__pyx_v_self->phi);
32884  __pyx_r = __pyx_v_self->phi;
32885  goto __pyx_L0;
32886 
32887  /* function exit code */
32888  __pyx_L0:;
32889  __Pyx_XGIVEREF(__pyx_r);
32890  __Pyx_RefNannyFinishContext();
32891  return __pyx_r;
32892 }
32893 
32894 /* Python wrapper */
32895 static int __pyx_pw_9WaveTools_11RandomWaves_3phi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
32896 static int __pyx_pw_9WaveTools_11RandomWaves_3phi_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
32897  int __pyx_r;
32898  __Pyx_RefNannyDeclarations
32899  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
32900  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3phi_2__set__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
32901 
32902  /* function exit code */
32903  __Pyx_RefNannyFinishContext();
32904  return __pyx_r;
32905 }
32906 
32907 static int __pyx_pf_9WaveTools_11RandomWaves_3phi_2__set__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
32908  int __pyx_r;
32909  __Pyx_RefNannyDeclarations
32910  __Pyx_RefNannySetupContext("__set__", 0);
32911  __Pyx_INCREF(__pyx_v_value);
32912  __Pyx_GIVEREF(__pyx_v_value);
32913  __Pyx_GOTREF(__pyx_v_self->phi);
32914  __Pyx_DECREF(__pyx_v_self->phi);
32915  __pyx_v_self->phi = __pyx_v_value;
32916 
32917  /* function exit code */
32918  __pyx_r = 0;
32919  __Pyx_RefNannyFinishContext();
32920  return __pyx_r;
32921 }
32922 
32923 /* Python wrapper */
32924 static int __pyx_pw_9WaveTools_11RandomWaves_3phi_5__del__(PyObject *__pyx_v_self); /*proto*/
32925 static int __pyx_pw_9WaveTools_11RandomWaves_3phi_5__del__(PyObject *__pyx_v_self) {
32926  int __pyx_r;
32927  __Pyx_RefNannyDeclarations
32928  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
32929  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_3phi_4__del__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32930 
32931  /* function exit code */
32932  __Pyx_RefNannyFinishContext();
32933  return __pyx_r;
32934 }
32935 
32936 static int __pyx_pf_9WaveTools_11RandomWaves_3phi_4__del__(struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32937  int __pyx_r;
32938  __Pyx_RefNannyDeclarations
32939  __Pyx_RefNannySetupContext("__del__", 0);
32940  __Pyx_INCREF(Py_None);
32941  __Pyx_GIVEREF(Py_None);
32942  __Pyx_GOTREF(__pyx_v_self->phi);
32943  __Pyx_DECREF(__pyx_v_self->phi);
32944  __pyx_v_self->phi = Py_None;
32945 
32946  /* function exit code */
32947  __pyx_r = 0;
32948  __Pyx_RefNannyFinishContext();
32949  return __pyx_r;
32950 }
32951 
32952 /* "(tree fragment)":1
32953  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
32954  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
32955  * def __setstate_cython__(self, __pyx_state):
32956  */
32957 
32958 /* Python wrapper */
32959 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
32960 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_9__reduce_cython__, METH_NOARGS, 0};
32961 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
32962  PyObject *__pyx_r = 0;
32963  __Pyx_RefNannyDeclarations
32964  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
32965  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_8__reduce_cython__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self));
32966 
32967  /* function exit code */
32968  __Pyx_RefNannyFinishContext();
32969  return __pyx_r;
32970 }
32971 
32972 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self) {
32973  PyObject *__pyx_r = NULL;
32974  __Pyx_RefNannyDeclarations
32975  PyObject *__pyx_t_1 = NULL;
32976  int __pyx_lineno = 0;
32977  const char *__pyx_filename = NULL;
32978  int __pyx_clineno = 0;
32979  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
32980 
32981  /* "(tree fragment)":2
32982  * def __reduce_cython__(self):
32983  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
32984  * def __setstate_cython__(self, __pyx_state):
32985  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
32986  */
32987  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
32988  __Pyx_GOTREF(__pyx_t_1);
32989  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
32990  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
32991  __PYX_ERR(1, 2, __pyx_L1_error)
32992 
32993  /* "(tree fragment)":1
32994  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
32995  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
32996  * def __setstate_cython__(self, __pyx_state):
32997  */
32998 
32999  /* function exit code */
33000  __pyx_L1_error:;
33001  __Pyx_XDECREF(__pyx_t_1);
33002  __Pyx_AddTraceback("WaveTools.RandomWaves.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
33003  __pyx_r = NULL;
33004  __Pyx_XGIVEREF(__pyx_r);
33005  __Pyx_RefNannyFinishContext();
33006  return __pyx_r;
33007 }
33008 
33009 /* "(tree fragment)":3
33010  * def __reduce_cython__(self):
33011  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
33012  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
33013  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
33014  */
33015 
33016 /* Python wrapper */
33017 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
33018 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_11__setstate_cython__, METH_O, 0};
33019 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
33020  PyObject *__pyx_r = 0;
33021  __Pyx_RefNannyDeclarations
33022  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
33023  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_10__setstate_cython__(((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
33024 
33025  /* function exit code */
33026  __Pyx_RefNannyFinishContext();
33027  return __pyx_r;
33028 }
33029 
33030 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
33031  PyObject *__pyx_r = NULL;
33032  __Pyx_RefNannyDeclarations
33033  PyObject *__pyx_t_1 = NULL;
33034  int __pyx_lineno = 0;
33035  const char *__pyx_filename = NULL;
33036  int __pyx_clineno = 0;
33037  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
33038 
33039  /* "(tree fragment)":4
33040  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
33041  * def __setstate_cython__(self, __pyx_state):
33042  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
33043  */
33044  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
33045  __Pyx_GOTREF(__pyx_t_1);
33046  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
33047  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33048  __PYX_ERR(1, 4, __pyx_L1_error)
33049 
33050  /* "(tree fragment)":3
33051  * def __reduce_cython__(self):
33052  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
33053  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
33054  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
33055  */
33056 
33057  /* function exit code */
33058  __pyx_L1_error:;
33059  __Pyx_XDECREF(__pyx_t_1);
33060  __Pyx_AddTraceback("WaveTools.RandomWaves.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
33061  __pyx_r = NULL;
33062  __Pyx_XGIVEREF(__pyx_r);
33063  __Pyx_RefNannyFinishContext();
33064  return __pyx_r;
33065 }
33066 
33067 /* "WaveTools.py":1695
33068  * Switch for optimised functions
33069  * """
33070  * def __cinit__(self, # <<<<<<<<<<<<<<
33071  * Nspectra,
33072  * Tp, # np array with
33073  */
33074 
33075 /* Python wrapper */
33076 static int __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
33077 static int __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
33078  PyObject *__pyx_v_Nspectra = 0;
33079  PyObject *__pyx_v_Tp = 0;
33080  PyObject *__pyx_v_Hs = 0;
33081  PyObject *__pyx_v_mwl = 0;
33082  PyObject *__pyx_v_depth = 0;
33083  PyObject *__pyx_v_waveDir = 0;
33084  PyObject *__pyx_v_g = 0;
33085  PyObject *__pyx_v_N = 0;
33086  PyObject *__pyx_v_bandFactor = 0;
33087  PyObject *__pyx_v_spectName = 0;
33088  PyObject *__pyx_v_spectral_params = 0;
33089  PyObject *__pyx_v_phi = 0;
33090  PyObject *__pyx_v_fast = 0;
33091  int __pyx_lineno = 0;
33092  const char *__pyx_filename = NULL;
33093  int __pyx_clineno = 0;
33094  int __pyx_r;
33095  __Pyx_RefNannyDeclarations
33096  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
33097  {
33098  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Nspectra,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,&__pyx_n_s_fast,0};
33099  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
33100 
33101  /* "WaveTools.py":1708
33102  * spectral_params, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
33103  * phi,
33104  * fast=True # <<<<<<<<<<<<<<
33105  * ):
33106  * # Checking length of arrays / lists to be equal to NSpectra
33107  */
33108  values[12] = ((PyObject *)Py_True);
33109  if (unlikely(__pyx_kwds)) {
33110  Py_ssize_t kw_args;
33111  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
33112  switch (pos_args) {
33113  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
33114  CYTHON_FALLTHROUGH;
33115  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
33116  CYTHON_FALLTHROUGH;
33117  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
33118  CYTHON_FALLTHROUGH;
33119  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
33120  CYTHON_FALLTHROUGH;
33121  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
33122  CYTHON_FALLTHROUGH;
33123  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
33124  CYTHON_FALLTHROUGH;
33125  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
33126  CYTHON_FALLTHROUGH;
33127  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
33128  CYTHON_FALLTHROUGH;
33129  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
33130  CYTHON_FALLTHROUGH;
33131  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
33132  CYTHON_FALLTHROUGH;
33133  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
33134  CYTHON_FALLTHROUGH;
33135  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
33136  CYTHON_FALLTHROUGH;
33137  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
33138  CYTHON_FALLTHROUGH;
33139  case 0: break;
33140  default: goto __pyx_L5_argtuple_error;
33141  }
33142  kw_args = PyDict_Size(__pyx_kwds);
33143  switch (pos_args) {
33144  case 0:
33145  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nspectra)) != 0)) kw_args--;
33146  else goto __pyx_L5_argtuple_error;
33147  CYTHON_FALLTHROUGH;
33148  case 1:
33149  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
33150  else {
33151  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 1); __PYX_ERR(0, 1695, __pyx_L3_error)
33152  }
33153  CYTHON_FALLTHROUGH;
33154  case 2:
33155  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
33156  else {
33157  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 2); __PYX_ERR(0, 1695, __pyx_L3_error)
33158  }
33159  CYTHON_FALLTHROUGH;
33160  case 3:
33161  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
33162  else {
33163  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 3); __PYX_ERR(0, 1695, __pyx_L3_error)
33164  }
33165  CYTHON_FALLTHROUGH;
33166  case 4:
33167  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
33168  else {
33169  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 4); __PYX_ERR(0, 1695, __pyx_L3_error)
33170  }
33171  CYTHON_FALLTHROUGH;
33172  case 5:
33173  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
33174  else {
33175  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 5); __PYX_ERR(0, 1695, __pyx_L3_error)
33176  }
33177  CYTHON_FALLTHROUGH;
33178  case 6:
33179  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
33180  else {
33181  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 6); __PYX_ERR(0, 1695, __pyx_L3_error)
33182  }
33183  CYTHON_FALLTHROUGH;
33184  case 7:
33185  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
33186  else {
33187  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 7); __PYX_ERR(0, 1695, __pyx_L3_error)
33188  }
33189  CYTHON_FALLTHROUGH;
33190  case 8:
33191  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
33192  else {
33193  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 8); __PYX_ERR(0, 1695, __pyx_L3_error)
33194  }
33195  CYTHON_FALLTHROUGH;
33196  case 9:
33197  if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
33198  else {
33199  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 9); __PYX_ERR(0, 1695, __pyx_L3_error)
33200  }
33201  CYTHON_FALLTHROUGH;
33202  case 10:
33203  if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params)) != 0)) kw_args--;
33204  else {
33205  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 10); __PYX_ERR(0, 1695, __pyx_L3_error)
33206  }
33207  CYTHON_FALLTHROUGH;
33208  case 11:
33209  if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
33210  else {
33211  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, 11); __PYX_ERR(0, 1695, __pyx_L3_error)
33212  }
33213  CYTHON_FALLTHROUGH;
33214  case 12:
33215  if (kw_args > 0) {
33216  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
33217  if (value) { values[12] = value; kw_args--; }
33218  }
33219  }
33220  if (unlikely(kw_args > 0)) {
33221  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1695, __pyx_L3_error)
33222  }
33223  } else {
33224  switch (PyTuple_GET_SIZE(__pyx_args)) {
33225  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
33226  CYTHON_FALLTHROUGH;
33227  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
33228  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
33229  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
33230  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
33231  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
33232  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
33233  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
33234  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
33235  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
33236  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
33237  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
33238  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
33239  break;
33240  default: goto __pyx_L5_argtuple_error;
33241  }
33242  }
33243  __pyx_v_Nspectra = values[0];
33244  __pyx_v_Tp = values[1];
33245  __pyx_v_Hs = values[2];
33246  __pyx_v_mwl = values[3];
33247  __pyx_v_depth = values[4];
33248  __pyx_v_waveDir = values[5];
33249  __pyx_v_g = values[6];
33250  __pyx_v_N = values[7];
33251  __pyx_v_bandFactor = values[8];
33252  __pyx_v_spectName = values[9];
33253  __pyx_v_spectral_params = values[10];
33254  __pyx_v_phi = values[11];
33255  __pyx_v_fast = values[12];
33256  }
33257  goto __pyx_L4_argument_unpacking_done;
33258  __pyx_L5_argtuple_error:;
33259  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 12, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1695, __pyx_L3_error)
33260  __pyx_L3_error:;
33261  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
33262  __Pyx_RefNannyFinishContext();
33263  return -1;
33264  __pyx_L4_argument_unpacking_done:;
33265  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves___cinit__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self), __pyx_v_Nspectra, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi, __pyx_v_fast);
33266 
33267  /* "WaveTools.py":1695
33268  * Switch for optimised functions
33269  * """
33270  * def __cinit__(self, # <<<<<<<<<<<<<<
33271  * Nspectra,
33272  * Tp, # np array with
33273  */
33274 
33275  /* function exit code */
33276  __Pyx_RefNannyFinishContext();
33277  return __pyx_r;
33278 }
33279 
33280 static int __pyx_pf_9WaveTools_23MultiSpectraRandomWaves___cinit__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_Nspectra, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_fast) {
33281  PyObject *__pyx_v_nn = NULL;
33282  PyObject *__pyx_v_NN = NULL;
33283  PyObject *__pyx_v_kk = NULL;
33284  PyObject *__pyx_v_NN1 = NULL;
33285  struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_RW = NULL;
33286  PyObject *__pyx_v_ij = NULL;
33287  int __pyx_r;
33288  __Pyx_RefNannyDeclarations
33289  bool __pyx_t_1;
33290  PyObject *__pyx_t_2 = NULL;
33291  PyObject *__pyx_t_3 = NULL;
33292  PyObject *__pyx_t_4 = NULL;
33293  int __pyx_t_5;
33294  Py_ssize_t __pyx_t_6;
33295  PyObject *__pyx_t_7 = NULL;
33296  PyObject *__pyx_t_8 = NULL;
33297  int __pyx_t_9;
33298  PyObject *__pyx_t_10 = NULL;
33299  PyObject *__pyx_t_11 = NULL;
33300  PyObject *__pyx_t_12 = NULL;
33301  PyObject *__pyx_t_13 = NULL;
33302  double __pyx_t_14;
33303  PyObject *(*__pyx_t_15)(PyObject *);
33304  int __pyx_t_16;
33305  PyObject *__pyx_t_17 = NULL;
33306  PyObject *__pyx_t_18 = NULL;
33307  PyObject *__pyx_t_19 = NULL;
33308  PyObject *__pyx_t_20 = NULL;
33309  PyObject *__pyx_t_21 = NULL;
33310  Py_ssize_t __pyx_t_22;
33311  double *__pyx_t_23;
33312  PyObject *(*__pyx_t_24)(PyObject *);
33313  Py_ssize_t __pyx_t_25;
33314  int __pyx_lineno = 0;
33315  const char *__pyx_filename = NULL;
33316  int __pyx_clineno = 0;
33317  __Pyx_RefNannySetupContext("__cinit__", 0);
33318 
33319  /* "WaveTools.py":1711
33320  * ):
33321  * # Checking length of arrays / lists to be equal to NSpectra
33322  * self.fast = fast # <<<<<<<<<<<<<<
33323  * try:
33324  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
33325  */
33326  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1711, __pyx_L1_error)
33327  __pyx_v_self->fast = __pyx_t_1;
33328 
33329  /* "WaveTools.py":1712
33330  * # Checking length of arrays / lists to be equal to NSpectra
33331  * self.fast = fast
33332  * try: # <<<<<<<<<<<<<<
33333  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
33334  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33335  */
33336  {
33337  __Pyx_PyThreadState_declare
33338  __Pyx_PyThreadState_assign
33339  __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
33340  __Pyx_XGOTREF(__pyx_t_2);
33341  __Pyx_XGOTREF(__pyx_t_3);
33342  __Pyx_XGOTREF(__pyx_t_4);
33343  /*try:*/ {
33344 
33345  /* "WaveTools.py":1713
33346  * self.fast = fast
33347  * try:
33348  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
33349  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33350  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
33351  */
33352  __pyx_t_6 = PyObject_Length(__pyx_v_Tp); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1713, __pyx_L3_error)
33353  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L3_error)
33354  __Pyx_GOTREF(__pyx_t_7);
33355  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1713, __pyx_L3_error)
33356  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33357  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1713, __pyx_L3_error)
33358  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33359  if (!__pyx_t_9) {
33360  } else {
33361  __pyx_t_5 = __pyx_t_9;
33362  goto __pyx_L10_bool_binop_done;
33363  }
33364  __pyx_t_6 = PyObject_Length(__pyx_v_Hs); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1713, __pyx_L3_error)
33365  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1713, __pyx_L3_error)
33366  __Pyx_GOTREF(__pyx_t_8);
33367  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L3_error)
33368  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33369  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1713, __pyx_L3_error)
33370  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33371  if (!__pyx_t_9) {
33372  } else {
33373  __pyx_t_5 = __pyx_t_9;
33374  goto __pyx_L10_bool_binop_done;
33375  }
33376  __pyx_t_6 = PyObject_Length(__pyx_v_waveDir); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1713, __pyx_L3_error)
33377  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L3_error)
33378  __Pyx_GOTREF(__pyx_t_7);
33379  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1713, __pyx_L3_error)
33380  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33381  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1713, __pyx_L3_error)
33382  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33383  if (!__pyx_t_9) {
33384  } else {
33385  __pyx_t_5 = __pyx_t_9;
33386  goto __pyx_L10_bool_binop_done;
33387  }
33388 
33389  /* "WaveTools.py":1714
33390  * try:
33391  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
33392  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \ # <<<<<<<<<<<<<<
33393  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
33394  *
33395  */
33396  __pyx_t_6 = PyObject_Length(__pyx_v_N); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1714, __pyx_L3_error)
33397  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1714, __pyx_L3_error)
33398  __Pyx_GOTREF(__pyx_t_8);
33399  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1714, __pyx_L3_error)
33400  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33401  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1714, __pyx_L3_error)
33402  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33403  if (!__pyx_t_9) {
33404  } else {
33405  __pyx_t_5 = __pyx_t_9;
33406  goto __pyx_L10_bool_binop_done;
33407  }
33408  __pyx_t_6 = PyObject_Length(__pyx_v_bandFactor); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1714, __pyx_L3_error)
33409  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1714, __pyx_L3_error)
33410  __Pyx_GOTREF(__pyx_t_7);
33411  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1714, __pyx_L3_error)
33412  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33413  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1714, __pyx_L3_error)
33414  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33415  if (!__pyx_t_9) {
33416  } else {
33417  __pyx_t_5 = __pyx_t_9;
33418  goto __pyx_L10_bool_binop_done;
33419  }
33420 
33421  /* "WaveTools.py":1715
33422  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
33423  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33424  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra): # <<<<<<<<<<<<<<
33425  *
33426  * logEvent('ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
33427  */
33428  __pyx_t_6 = PyObject_Length(__pyx_v_spectName); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1715, __pyx_L3_error)
33429  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1715, __pyx_L3_error)
33430  __Pyx_GOTREF(__pyx_t_8);
33431  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1715, __pyx_L3_error)
33432  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33433  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1715, __pyx_L3_error)
33434  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33435  if (!__pyx_t_9) {
33436  } else {
33437  __pyx_t_5 = __pyx_t_9;
33438  goto __pyx_L10_bool_binop_done;
33439  }
33440  __pyx_t_6 = PyObject_Length(__pyx_v_spectral_params); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1715, __pyx_L3_error)
33441  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1715, __pyx_L3_error)
33442  __Pyx_GOTREF(__pyx_t_7);
33443  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1715, __pyx_L3_error)
33444  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33445  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1715, __pyx_L3_error)
33446  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33447  if (!__pyx_t_9) {
33448  } else {
33449  __pyx_t_5 = __pyx_t_9;
33450  goto __pyx_L10_bool_binop_done;
33451  }
33452  __pyx_t_6 = PyObject_Length(__pyx_v_phi); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1715, __pyx_L3_error)
33453  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1715, __pyx_L3_error)
33454  __Pyx_GOTREF(__pyx_t_8);
33455  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1715, __pyx_L3_error)
33456  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33457  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1715, __pyx_L3_error)
33458  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33459  __pyx_t_5 = __pyx_t_9;
33460  __pyx_L10_bool_binop_done:;
33461 
33462  /* "WaveTools.py":1713
33463  * self.fast = fast
33464  * try:
33465  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
33466  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33467  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
33468  */
33469  if (__pyx_t_5) {
33470 
33471  /* "WaveTools.py":1717
33472  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
33473  *
33474  * logEvent('ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
33475  * sys.exit(1)
33476  *
33477  */
33478  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1717, __pyx_L3_error)
33479  __Pyx_GOTREF(__pyx_t_8);
33480  __pyx_t_10 = NULL;
33481  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
33482  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
33483  if (likely(__pyx_t_10)) {
33484  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
33485  __Pyx_INCREF(__pyx_t_10);
33486  __Pyx_INCREF(function);
33487  __Pyx_DECREF_SET(__pyx_t_8, function);
33488  }
33489  }
33490  __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_kp_s_ERROR_Wavetools_py_Parameters_pa) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_ERROR_Wavetools_py_Parameters_pa);
33491  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
33492  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1717, __pyx_L3_error)
33493  __Pyx_GOTREF(__pyx_t_7);
33494  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33495  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33496 
33497  /* "WaveTools.py":1718
33498  *
33499  * logEvent('ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
33500  * sys.exit(1) # <<<<<<<<<<<<<<
33501  *
33502  * except:
33503  */
33504  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_sys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1718, __pyx_L3_error)
33505  __Pyx_GOTREF(__pyx_t_8);
33506  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1718, __pyx_L3_error)
33507  __Pyx_GOTREF(__pyx_t_10);
33508  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33509  __pyx_t_8 = NULL;
33510  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
33511  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
33512  if (likely(__pyx_t_8)) {
33513  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
33514  __Pyx_INCREF(__pyx_t_8);
33515  __Pyx_INCREF(function);
33516  __Pyx_DECREF_SET(__pyx_t_10, function);
33517  }
33518  }
33519  __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_8, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_int_1);
33520  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
33521  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1718, __pyx_L3_error)
33522  __Pyx_GOTREF(__pyx_t_7);
33523  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33524  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33525 
33526  /* "WaveTools.py":1713
33527  * self.fast = fast
33528  * try:
33529  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
33530  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33531  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
33532  */
33533  }
33534 
33535  /* "WaveTools.py":1712
33536  * # Checking length of arrays / lists to be equal to NSpectra
33537  * self.fast = fast
33538  * try: # <<<<<<<<<<<<<<
33539  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
33540  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33541  */
33542  }
33543  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
33544  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
33545  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
33546  goto __pyx_L8_try_end;
33547  __pyx_L3_error:;
33548  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
33549  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
33550  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
33551 
33552  /* "WaveTools.py":1720
33553  * sys.exit(1)
33554  *
33555  * except: # <<<<<<<<<<<<<<
33556  * logEvent('ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
33557  * sys.exit(1)
33558  */
33559  /*except:*/ {
33560  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
33561  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_10, &__pyx_t_8) < 0) __PYX_ERR(0, 1720, __pyx_L5_except_error)
33562  __Pyx_GOTREF(__pyx_t_7);
33563  __Pyx_GOTREF(__pyx_t_10);
33564  __Pyx_GOTREF(__pyx_t_8);
33565 
33566  /* "WaveTools.py":1721
33567  *
33568  * except:
33569  * logEvent('ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
33570  * sys.exit(1)
33571  * # Initialize numpy arrays for complete reconstruction
33572  */
33573  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1721, __pyx_L5_except_error)
33574  __Pyx_GOTREF(__pyx_t_12);
33575  __pyx_t_13 = NULL;
33576  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
33577  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
33578  if (likely(__pyx_t_13)) {
33579  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
33580  __Pyx_INCREF(__pyx_t_13);
33581  __Pyx_INCREF(function);
33582  __Pyx_DECREF_SET(__pyx_t_12, function);
33583  }
33584  }
33585  __pyx_t_11 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_13, __pyx_kp_s_ERROR_Wavetools_py_Parameters_pa) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_kp_s_ERROR_Wavetools_py_Parameters_pa);
33586  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
33587  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1721, __pyx_L5_except_error)
33588  __Pyx_GOTREF(__pyx_t_11);
33589  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
33590  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
33591 
33592  /* "WaveTools.py":1722
33593  * except:
33594  * logEvent('ERROR! Wavetools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
33595  * sys.exit(1) # <<<<<<<<<<<<<<
33596  * # Initialize numpy arrays for complete reconstruction
33597  * self.Nall = 0
33598  */
33599  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_sys); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1722, __pyx_L5_except_error)
33600  __Pyx_GOTREF(__pyx_t_12);
33601  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exit); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1722, __pyx_L5_except_error)
33602  __Pyx_GOTREF(__pyx_t_13);
33603  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
33604  __pyx_t_12 = NULL;
33605  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
33606  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
33607  if (likely(__pyx_t_12)) {
33608  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
33609  __Pyx_INCREF(__pyx_t_12);
33610  __Pyx_INCREF(function);
33611  __Pyx_DECREF_SET(__pyx_t_13, function);
33612  }
33613  }
33614  __pyx_t_11 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_int_1);
33615  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
33616  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1722, __pyx_L5_except_error)
33617  __Pyx_GOTREF(__pyx_t_11);
33618  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
33619  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
33620  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
33621  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
33622  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
33623  goto __pyx_L4_exception_handled;
33624  }
33625  __pyx_L5_except_error:;
33626 
33627  /* "WaveTools.py":1712
33628  * # Checking length of arrays / lists to be equal to NSpectra
33629  * self.fast = fast
33630  * try: # <<<<<<<<<<<<<<
33631  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
33632  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
33633  */
33634  __Pyx_XGIVEREF(__pyx_t_2);
33635  __Pyx_XGIVEREF(__pyx_t_3);
33636  __Pyx_XGIVEREF(__pyx_t_4);
33637  __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
33638  goto __pyx_L1_error;
33639  __pyx_L4_exception_handled:;
33640  __Pyx_XGIVEREF(__pyx_t_2);
33641  __Pyx_XGIVEREF(__pyx_t_3);
33642  __Pyx_XGIVEREF(__pyx_t_4);
33643  __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
33644  __pyx_L8_try_end:;
33645  }
33646 
33647  /* "WaveTools.py":1724
33648  * sys.exit(1)
33649  * # Initialize numpy arrays for complete reconstruction
33650  * self.Nall = 0 # <<<<<<<<<<<<<<
33651  * self.mwl = mwl
33652  * self.depth = depth
33653  */
33654  __pyx_v_self->Nall = 0;
33655 
33656  /* "WaveTools.py":1725
33657  * # Initialize numpy arrays for complete reconstruction
33658  * self.Nall = 0
33659  * self.mwl = mwl # <<<<<<<<<<<<<<
33660  * self.depth = depth
33661  * self.g = np.array(g)
33662  */
33663  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1725, __pyx_L1_error)
33664  __pyx_v_self->mwl = __pyx_t_14;
33665 
33666  /* "WaveTools.py":1726
33667  * self.Nall = 0
33668  * self.mwl = mwl
33669  * self.depth = depth # <<<<<<<<<<<<<<
33670  * self.g = np.array(g)
33671  * self.vDir = setVertDir(g)
33672  */
33673  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1726, __pyx_L1_error)
33674  __pyx_v_self->depth = __pyx_t_14;
33675 
33676  /* "WaveTools.py":1727
33677  * self.mwl = mwl
33678  * self.depth = depth
33679  * self.g = np.array(g) # <<<<<<<<<<<<<<
33680  * self.vDir = setVertDir(g)
33681  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
33682  */
33683  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1727, __pyx_L1_error)
33684  __Pyx_GOTREF(__pyx_t_10);
33685  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1727, __pyx_L1_error)
33686  __Pyx_GOTREF(__pyx_t_7);
33687  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33688  __pyx_t_10 = NULL;
33689  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
33690  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
33691  if (likely(__pyx_t_10)) {
33692  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
33693  __Pyx_INCREF(__pyx_t_10);
33694  __Pyx_INCREF(function);
33695  __Pyx_DECREF_SET(__pyx_t_7, function);
33696  }
33697  }
33698  __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_10, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_g);
33699  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
33700  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1727, __pyx_L1_error)
33701  __Pyx_GOTREF(__pyx_t_8);
33702  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33703  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1727, __pyx_L1_error)
33704  __Pyx_GIVEREF(__pyx_t_8);
33705  __Pyx_GOTREF(__pyx_v_self->g);
33706  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
33707  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_8);
33708  __pyx_t_8 = 0;
33709 
33710  /* "WaveTools.py":1728
33711  * self.depth = depth
33712  * self.g = np.array(g)
33713  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
33714  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
33715  *
33716  */
33717  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1728, __pyx_L1_error)
33718  __Pyx_GOTREF(__pyx_t_7);
33719  __pyx_t_10 = NULL;
33720  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
33721  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
33722  if (likely(__pyx_t_10)) {
33723  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
33724  __Pyx_INCREF(__pyx_t_10);
33725  __Pyx_INCREF(function);
33726  __Pyx_DECREF_SET(__pyx_t_7, function);
33727  }
33728  }
33729  __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_10, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_g);
33730  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
33731  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1728, __pyx_L1_error)
33732  __Pyx_GOTREF(__pyx_t_8);
33733  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33734  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1728, __pyx_L1_error)
33735  __Pyx_GIVEREF(__pyx_t_8);
33736  __Pyx_GOTREF(__pyx_v_self->vDir);
33737  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
33738  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_8);
33739  __pyx_t_8 = 0;
33740 
33741  /* "WaveTools.py":1729
33742  * self.g = np.array(g)
33743  * self.vDir = setVertDir(g)
33744  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2]) # <<<<<<<<<<<<<<
33745  *
33746  * for nn in N:
33747  */
33748  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1729, __pyx_L1_error)
33749  __Pyx_GOTREF(__pyx_t_8);
33750  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1729, __pyx_L1_error)
33751  __Pyx_GOTREF(__pyx_t_7);
33752  __pyx_t_10 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1729, __pyx_L1_error)
33753  __Pyx_GOTREF(__pyx_t_10);
33754  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33755  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33756  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1729, __pyx_L1_error)
33757  __Pyx_GOTREF(__pyx_t_7);
33758  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1729, __pyx_L1_error)
33759  __Pyx_GOTREF(__pyx_t_8);
33760  __pyx_t_11 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1729, __pyx_L1_error)
33761  __Pyx_GOTREF(__pyx_t_11);
33762  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33763  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33764  __pyx_t_8 = PyNumber_Add(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1729, __pyx_L1_error)
33765  __Pyx_GOTREF(__pyx_t_8);
33766  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33767  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
33768  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1729, __pyx_L1_error)
33769  __Pyx_GOTREF(__pyx_t_11);
33770  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1729, __pyx_L1_error)
33771  __Pyx_GOTREF(__pyx_t_10);
33772  __pyx_t_7 = PyNumber_Multiply(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1729, __pyx_L1_error)
33773  __Pyx_GOTREF(__pyx_t_7);
33774  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
33775  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33776  __pyx_t_10 = PyNumber_Add(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1729, __pyx_L1_error)
33777  __Pyx_GOTREF(__pyx_t_10);
33778  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33779  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33780  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1729, __pyx_L1_error)
33781  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33782  __pyx_v_self->gAbs = sqrt(__pyx_t_14);
33783 
33784  /* "WaveTools.py":1731
33785  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
33786  *
33787  * for nn in N: # <<<<<<<<<<<<<<
33788  * self.Nall+=nn
33789  * if(self.Nall > 10000):
33790  */
33791  if (likely(PyList_CheckExact(__pyx_v_N)) || PyTuple_CheckExact(__pyx_v_N)) {
33792  __pyx_t_10 = __pyx_v_N; __Pyx_INCREF(__pyx_t_10); __pyx_t_6 = 0;
33793  __pyx_t_15 = NULL;
33794  } else {
33795  __pyx_t_6 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_N); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1731, __pyx_L1_error)
33796  __Pyx_GOTREF(__pyx_t_10);
33797  __pyx_t_15 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1731, __pyx_L1_error)
33798  }
33799  for (;;) {
33800  if (likely(!__pyx_t_15)) {
33801  if (likely(PyList_CheckExact(__pyx_t_10))) {
33802  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_10)) break;
33803  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
33804  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1731, __pyx_L1_error)
33805  #else
33806  __pyx_t_7 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1731, __pyx_L1_error)
33807  __Pyx_GOTREF(__pyx_t_7);
33808  #endif
33809  } else {
33810  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
33811  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
33812  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1731, __pyx_L1_error)
33813  #else
33814  __pyx_t_7 = PySequence_ITEM(__pyx_t_10, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1731, __pyx_L1_error)
33815  __Pyx_GOTREF(__pyx_t_7);
33816  #endif
33817  }
33818  } else {
33819  __pyx_t_7 = __pyx_t_15(__pyx_t_10);
33820  if (unlikely(!__pyx_t_7)) {
33821  PyObject* exc_type = PyErr_Occurred();
33822  if (exc_type) {
33823  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
33824  else __PYX_ERR(0, 1731, __pyx_L1_error)
33825  }
33826  break;
33827  }
33828  __Pyx_GOTREF(__pyx_t_7);
33829  }
33830  __Pyx_XDECREF_SET(__pyx_v_nn, __pyx_t_7);
33831  __pyx_t_7 = 0;
33832 
33833  /* "WaveTools.py":1732
33834  *
33835  * for nn in N:
33836  * self.Nall+=nn # <<<<<<<<<<<<<<
33837  * if(self.Nall > 10000):
33838  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for MultispectraRandomWaves is 10000 ",level=0)
33839  */
33840  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1732, __pyx_L1_error)
33841  __Pyx_GOTREF(__pyx_t_7);
33842  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_v_nn); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1732, __pyx_L1_error)
33843  __Pyx_GOTREF(__pyx_t_8);
33844  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33845  __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1732, __pyx_L1_error)
33846  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33847  __pyx_v_self->Nall = __pyx_t_16;
33848 
33849  /* "WaveTools.py":1731
33850  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
33851  *
33852  * for nn in N: # <<<<<<<<<<<<<<
33853  * self.Nall+=nn
33854  * if(self.Nall > 10000):
33855  */
33856  }
33857  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33858 
33859  /* "WaveTools.py":1733
33860  * for nn in N:
33861  * self.Nall+=nn
33862  * if(self.Nall > 10000): # <<<<<<<<<<<<<<
33863  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for MultispectraRandomWaves is 10000 ",level=0)
33864  *
33865  */
33866  __pyx_t_5 = ((__pyx_v_self->Nall > 0x2710) != 0);
33867  if (__pyx_t_5) {
33868 
33869  /* "WaveTools.py":1734
33870  * self.Nall+=nn
33871  * if(self.Nall > 10000):
33872  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for MultispectraRandomWaves is 10000 ",level=0) # <<<<<<<<<<<<<<
33873  *
33874  *
33875  */
33876  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1734, __pyx_L1_error)
33877  __Pyx_GOTREF(__pyx_t_10);
33878  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1734, __pyx_L1_error)
33879  __Pyx_GOTREF(__pyx_t_8);
33880  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 1734, __pyx_L1_error)
33881  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__32, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1734, __pyx_L1_error)
33882  __Pyx_GOTREF(__pyx_t_7);
33883  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33884  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33885  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
33886 
33887  /* "WaveTools.py":1733
33888  * for nn in N:
33889  * self.Nall+=nn
33890  * if(self.Nall > 10000): # <<<<<<<<<<<<<<
33891  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for MultispectraRandomWaves is 10000 ",level=0)
33892  *
33893  */
33894  }
33895 
33896  /* "WaveTools.py":1737
33897  *
33898  *
33899  * self.tanhFM = np.zeros(self.Nall,"d") # <<<<<<<<<<<<<<
33900  * self.omegaM = np.zeros(self.Nall,"d")
33901  * self.kiM = np.zeros(self.Nall,"d")
33902  */
33903  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1737, __pyx_L1_error)
33904  __Pyx_GOTREF(__pyx_t_8);
33905  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1737, __pyx_L1_error)
33906  __Pyx_GOTREF(__pyx_t_10);
33907  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33908  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1737, __pyx_L1_error)
33909  __Pyx_GOTREF(__pyx_t_8);
33910  __pyx_t_11 = NULL;
33911  __pyx_t_16 = 0;
33912  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
33913  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
33914  if (likely(__pyx_t_11)) {
33915  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
33916  __Pyx_INCREF(__pyx_t_11);
33917  __Pyx_INCREF(function);
33918  __Pyx_DECREF_SET(__pyx_t_10, function);
33919  __pyx_t_16 = 1;
33920  }
33921  }
33922  #if CYTHON_FAST_PYCALL
33923  if (PyFunction_Check(__pyx_t_10)) {
33924  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_8, __pyx_n_s_d};
33925  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1737, __pyx_L1_error)
33926  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
33927  __Pyx_GOTREF(__pyx_t_7);
33928  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33929  } else
33930  #endif
33931  #if CYTHON_FAST_PYCCALL
33932  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
33933  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_8, __pyx_n_s_d};
33934  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1737, __pyx_L1_error)
33935  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
33936  __Pyx_GOTREF(__pyx_t_7);
33937  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
33938  } else
33939  #endif
33940  {
33941  __pyx_t_13 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1737, __pyx_L1_error)
33942  __Pyx_GOTREF(__pyx_t_13);
33943  if (__pyx_t_11) {
33944  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
33945  }
33946  __Pyx_GIVEREF(__pyx_t_8);
33947  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_16, __pyx_t_8);
33948  __Pyx_INCREF(__pyx_n_s_d);
33949  __Pyx_GIVEREF(__pyx_n_s_d);
33950  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_16, __pyx_n_s_d);
33951  __pyx_t_8 = 0;
33952  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1737, __pyx_L1_error)
33953  __Pyx_GOTREF(__pyx_t_7);
33954  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
33955  }
33956  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33957  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1737, __pyx_L1_error)
33958  __Pyx_GIVEREF(__pyx_t_7);
33959  __Pyx_GOTREF(__pyx_v_self->tanhFM);
33960  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhFM));
33961  __pyx_v_self->tanhFM = ((PyArrayObject *)__pyx_t_7);
33962  __pyx_t_7 = 0;
33963 
33964  /* "WaveTools.py":1738
33965  *
33966  * self.tanhFM = np.zeros(self.Nall,"d")
33967  * self.omegaM = np.zeros(self.Nall,"d") # <<<<<<<<<<<<<<
33968  * self.kiM = np.zeros(self.Nall,"d")
33969  * self.aiM = np.zeros(self.Nall,"d")
33970  */
33971  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1738, __pyx_L1_error)
33972  __Pyx_GOTREF(__pyx_t_10);
33973  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1738, __pyx_L1_error)
33974  __Pyx_GOTREF(__pyx_t_13);
33975  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33976  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1738, __pyx_L1_error)
33977  __Pyx_GOTREF(__pyx_t_10);
33978  __pyx_t_8 = NULL;
33979  __pyx_t_16 = 0;
33980  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
33981  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_13);
33982  if (likely(__pyx_t_8)) {
33983  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
33984  __Pyx_INCREF(__pyx_t_8);
33985  __Pyx_INCREF(function);
33986  __Pyx_DECREF_SET(__pyx_t_13, function);
33987  __pyx_t_16 = 1;
33988  }
33989  }
33990  #if CYTHON_FAST_PYCALL
33991  if (PyFunction_Check(__pyx_t_13)) {
33992  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_10, __pyx_n_s_d};
33993  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1738, __pyx_L1_error)
33994  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
33995  __Pyx_GOTREF(__pyx_t_7);
33996  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
33997  } else
33998  #endif
33999  #if CYTHON_FAST_PYCCALL
34000  if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
34001  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_10, __pyx_n_s_d};
34002  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1738, __pyx_L1_error)
34003  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
34004  __Pyx_GOTREF(__pyx_t_7);
34005  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34006  } else
34007  #endif
34008  {
34009  __pyx_t_11 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1738, __pyx_L1_error)
34010  __Pyx_GOTREF(__pyx_t_11);
34011  if (__pyx_t_8) {
34012  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
34013  }
34014  __Pyx_GIVEREF(__pyx_t_10);
34015  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_16, __pyx_t_10);
34016  __Pyx_INCREF(__pyx_n_s_d);
34017  __Pyx_GIVEREF(__pyx_n_s_d);
34018  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_16, __pyx_n_s_d);
34019  __pyx_t_10 = 0;
34020  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1738, __pyx_L1_error)
34021  __Pyx_GOTREF(__pyx_t_7);
34022  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34023  }
34024  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34025  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1738, __pyx_L1_error)
34026  __Pyx_GIVEREF(__pyx_t_7);
34027  __Pyx_GOTREF(__pyx_v_self->omegaM);
34028  __Pyx_DECREF(((PyObject *)__pyx_v_self->omegaM));
34029  __pyx_v_self->omegaM = ((PyArrayObject *)__pyx_t_7);
34030  __pyx_t_7 = 0;
34031 
34032  /* "WaveTools.py":1739
34033  * self.tanhFM = np.zeros(self.Nall,"d")
34034  * self.omegaM = np.zeros(self.Nall,"d")
34035  * self.kiM = np.zeros(self.Nall,"d") # <<<<<<<<<<<<<<
34036  * self.aiM = np.zeros(self.Nall,"d")
34037  * self.kDirM = np.zeros((self.Nall,3),"d")
34038  */
34039  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1739, __pyx_L1_error)
34040  __Pyx_GOTREF(__pyx_t_13);
34041  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1739, __pyx_L1_error)
34042  __Pyx_GOTREF(__pyx_t_11);
34043  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34044  __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1739, __pyx_L1_error)
34045  __Pyx_GOTREF(__pyx_t_13);
34046  __pyx_t_10 = NULL;
34047  __pyx_t_16 = 0;
34048  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
34049  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
34050  if (likely(__pyx_t_10)) {
34051  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
34052  __Pyx_INCREF(__pyx_t_10);
34053  __Pyx_INCREF(function);
34054  __Pyx_DECREF_SET(__pyx_t_11, function);
34055  __pyx_t_16 = 1;
34056  }
34057  }
34058  #if CYTHON_FAST_PYCALL
34059  if (PyFunction_Check(__pyx_t_11)) {
34060  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_13, __pyx_n_s_d};
34061  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1739, __pyx_L1_error)
34062  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
34063  __Pyx_GOTREF(__pyx_t_7);
34064  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34065  } else
34066  #endif
34067  #if CYTHON_FAST_PYCCALL
34068  if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
34069  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_13, __pyx_n_s_d};
34070  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1739, __pyx_L1_error)
34071  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
34072  __Pyx_GOTREF(__pyx_t_7);
34073  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34074  } else
34075  #endif
34076  {
34077  __pyx_t_8 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1739, __pyx_L1_error)
34078  __Pyx_GOTREF(__pyx_t_8);
34079  if (__pyx_t_10) {
34080  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
34081  }
34082  __Pyx_GIVEREF(__pyx_t_13);
34083  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_16, __pyx_t_13);
34084  __Pyx_INCREF(__pyx_n_s_d);
34085  __Pyx_GIVEREF(__pyx_n_s_d);
34086  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_16, __pyx_n_s_d);
34087  __pyx_t_13 = 0;
34088  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1739, __pyx_L1_error)
34089  __Pyx_GOTREF(__pyx_t_7);
34090  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34091  }
34092  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34093  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1739, __pyx_L1_error)
34094  __Pyx_GIVEREF(__pyx_t_7);
34095  __Pyx_GOTREF(__pyx_v_self->kiM);
34096  __Pyx_DECREF(((PyObject *)__pyx_v_self->kiM));
34097  __pyx_v_self->kiM = ((PyArrayObject *)__pyx_t_7);
34098  __pyx_t_7 = 0;
34099 
34100  /* "WaveTools.py":1740
34101  * self.omegaM = np.zeros(self.Nall,"d")
34102  * self.kiM = np.zeros(self.Nall,"d")
34103  * self.aiM = np.zeros(self.Nall,"d") # <<<<<<<<<<<<<<
34104  * self.kDirM = np.zeros((self.Nall,3),"d")
34105  * self.phiM= np.zeros(self.Nall,"d")
34106  */
34107  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1740, __pyx_L1_error)
34108  __Pyx_GOTREF(__pyx_t_11);
34109  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1740, __pyx_L1_error)
34110  __Pyx_GOTREF(__pyx_t_8);
34111  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34112  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1740, __pyx_L1_error)
34113  __Pyx_GOTREF(__pyx_t_11);
34114  __pyx_t_13 = NULL;
34115  __pyx_t_16 = 0;
34116  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
34117  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8);
34118  if (likely(__pyx_t_13)) {
34119  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
34120  __Pyx_INCREF(__pyx_t_13);
34121  __Pyx_INCREF(function);
34122  __Pyx_DECREF_SET(__pyx_t_8, function);
34123  __pyx_t_16 = 1;
34124  }
34125  }
34126  #if CYTHON_FAST_PYCALL
34127  if (PyFunction_Check(__pyx_t_8)) {
34128  PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_11, __pyx_n_s_d};
34129  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1740, __pyx_L1_error)
34130  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
34131  __Pyx_GOTREF(__pyx_t_7);
34132  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34133  } else
34134  #endif
34135  #if CYTHON_FAST_PYCCALL
34136  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
34137  PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_11, __pyx_n_s_d};
34138  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1740, __pyx_L1_error)
34139  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
34140  __Pyx_GOTREF(__pyx_t_7);
34141  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34142  } else
34143  #endif
34144  {
34145  __pyx_t_10 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1740, __pyx_L1_error)
34146  __Pyx_GOTREF(__pyx_t_10);
34147  if (__pyx_t_13) {
34148  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __pyx_t_13 = NULL;
34149  }
34150  __Pyx_GIVEREF(__pyx_t_11);
34151  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_16, __pyx_t_11);
34152  __Pyx_INCREF(__pyx_n_s_d);
34153  __Pyx_GIVEREF(__pyx_n_s_d);
34154  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_16, __pyx_n_s_d);
34155  __pyx_t_11 = 0;
34156  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1740, __pyx_L1_error)
34157  __Pyx_GOTREF(__pyx_t_7);
34158  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34159  }
34160  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34161  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1740, __pyx_L1_error)
34162  __Pyx_GIVEREF(__pyx_t_7);
34163  __Pyx_GOTREF(__pyx_v_self->aiM);
34164  __Pyx_DECREF(((PyObject *)__pyx_v_self->aiM));
34165  __pyx_v_self->aiM = ((PyArrayObject *)__pyx_t_7);
34166  __pyx_t_7 = 0;
34167 
34168  /* "WaveTools.py":1741
34169  * self.kiM = np.zeros(self.Nall,"d")
34170  * self.aiM = np.zeros(self.Nall,"d")
34171  * self.kDirM = np.zeros((self.Nall,3),"d") # <<<<<<<<<<<<<<
34172  * self.phiM= np.zeros(self.Nall,"d")
34173  * self.waveDir = np.zeros((self.Nall,3),"d")
34174  */
34175  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1741, __pyx_L1_error)
34176  __Pyx_GOTREF(__pyx_t_8);
34177  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1741, __pyx_L1_error)
34178  __Pyx_GOTREF(__pyx_t_10);
34179  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34180  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1741, __pyx_L1_error)
34181  __Pyx_GOTREF(__pyx_t_8);
34182  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1741, __pyx_L1_error)
34183  __Pyx_GOTREF(__pyx_t_11);
34184  __Pyx_GIVEREF(__pyx_t_8);
34185  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
34186  __Pyx_INCREF(__pyx_int_3);
34187  __Pyx_GIVEREF(__pyx_int_3);
34188  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_3);
34189  __pyx_t_8 = 0;
34190  __pyx_t_8 = NULL;
34191  __pyx_t_16 = 0;
34192  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
34193  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
34194  if (likely(__pyx_t_8)) {
34195  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
34196  __Pyx_INCREF(__pyx_t_8);
34197  __Pyx_INCREF(function);
34198  __Pyx_DECREF_SET(__pyx_t_10, function);
34199  __pyx_t_16 = 1;
34200  }
34201  }
34202  #if CYTHON_FAST_PYCALL
34203  if (PyFunction_Check(__pyx_t_10)) {
34204  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_11, __pyx_n_s_d};
34205  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1741, __pyx_L1_error)
34206  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
34207  __Pyx_GOTREF(__pyx_t_7);
34208  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34209  } else
34210  #endif
34211  #if CYTHON_FAST_PYCCALL
34212  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
34213  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_11, __pyx_n_s_d};
34214  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1741, __pyx_L1_error)
34215  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
34216  __Pyx_GOTREF(__pyx_t_7);
34217  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34218  } else
34219  #endif
34220  {
34221  __pyx_t_13 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1741, __pyx_L1_error)
34222  __Pyx_GOTREF(__pyx_t_13);
34223  if (__pyx_t_8) {
34224  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8); __pyx_t_8 = NULL;
34225  }
34226  __Pyx_GIVEREF(__pyx_t_11);
34227  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_16, __pyx_t_11);
34228  __Pyx_INCREF(__pyx_n_s_d);
34229  __Pyx_GIVEREF(__pyx_n_s_d);
34230  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_16, __pyx_n_s_d);
34231  __pyx_t_11 = 0;
34232  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1741, __pyx_L1_error)
34233  __Pyx_GOTREF(__pyx_t_7);
34234  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34235  }
34236  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34237  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1741, __pyx_L1_error)
34238  __Pyx_GIVEREF(__pyx_t_7);
34239  __Pyx_GOTREF(__pyx_v_self->kDirM);
34240  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDirM));
34241  __pyx_v_self->kDirM = ((PyArrayObject *)__pyx_t_7);
34242  __pyx_t_7 = 0;
34243 
34244  /* "WaveTools.py":1742
34245  * self.aiM = np.zeros(self.Nall,"d")
34246  * self.kDirM = np.zeros((self.Nall,3),"d")
34247  * self.phiM= np.zeros(self.Nall,"d") # <<<<<<<<<<<<<<
34248  * self.waveDir = np.zeros((self.Nall,3),"d")
34249  *
34250  */
34251  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1742, __pyx_L1_error)
34252  __Pyx_GOTREF(__pyx_t_10);
34253  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1742, __pyx_L1_error)
34254  __Pyx_GOTREF(__pyx_t_13);
34255  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34256  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1742, __pyx_L1_error)
34257  __Pyx_GOTREF(__pyx_t_10);
34258  __pyx_t_11 = NULL;
34259  __pyx_t_16 = 0;
34260  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
34261  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13);
34262  if (likely(__pyx_t_11)) {
34263  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
34264  __Pyx_INCREF(__pyx_t_11);
34265  __Pyx_INCREF(function);
34266  __Pyx_DECREF_SET(__pyx_t_13, function);
34267  __pyx_t_16 = 1;
34268  }
34269  }
34270  #if CYTHON_FAST_PYCALL
34271  if (PyFunction_Check(__pyx_t_13)) {
34272  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_10, __pyx_n_s_d};
34273  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1742, __pyx_L1_error)
34274  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
34275  __Pyx_GOTREF(__pyx_t_7);
34276  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34277  } else
34278  #endif
34279  #if CYTHON_FAST_PYCCALL
34280  if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
34281  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_10, __pyx_n_s_d};
34282  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1742, __pyx_L1_error)
34283  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
34284  __Pyx_GOTREF(__pyx_t_7);
34285  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34286  } else
34287  #endif
34288  {
34289  __pyx_t_8 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1742, __pyx_L1_error)
34290  __Pyx_GOTREF(__pyx_t_8);
34291  if (__pyx_t_11) {
34292  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
34293  }
34294  __Pyx_GIVEREF(__pyx_t_10);
34295  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_16, __pyx_t_10);
34296  __Pyx_INCREF(__pyx_n_s_d);
34297  __Pyx_GIVEREF(__pyx_n_s_d);
34298  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_16, __pyx_n_s_d);
34299  __pyx_t_10 = 0;
34300  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1742, __pyx_L1_error)
34301  __Pyx_GOTREF(__pyx_t_7);
34302  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34303  }
34304  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34305  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1742, __pyx_L1_error)
34306  __Pyx_GIVEREF(__pyx_t_7);
34307  __Pyx_GOTREF(__pyx_v_self->phiM);
34308  __Pyx_DECREF(((PyObject *)__pyx_v_self->phiM));
34309  __pyx_v_self->phiM = ((PyArrayObject *)__pyx_t_7);
34310  __pyx_t_7 = 0;
34311 
34312  /* "WaveTools.py":1743
34313  * self.kDirM = np.zeros((self.Nall,3),"d")
34314  * self.phiM= np.zeros(self.Nall,"d")
34315  * self.waveDir = np.zeros((self.Nall,3),"d") # <<<<<<<<<<<<<<
34316  *
34317  *
34318  */
34319  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1743, __pyx_L1_error)
34320  __Pyx_GOTREF(__pyx_t_13);
34321  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1743, __pyx_L1_error)
34322  __Pyx_GOTREF(__pyx_t_8);
34323  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
34324  __pyx_t_13 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1743, __pyx_L1_error)
34325  __Pyx_GOTREF(__pyx_t_13);
34326  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1743, __pyx_L1_error)
34327  __Pyx_GOTREF(__pyx_t_10);
34328  __Pyx_GIVEREF(__pyx_t_13);
34329  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13);
34330  __Pyx_INCREF(__pyx_int_3);
34331  __Pyx_GIVEREF(__pyx_int_3);
34332  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_3);
34333  __pyx_t_13 = 0;
34334  __pyx_t_13 = NULL;
34335  __pyx_t_16 = 0;
34336  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
34337  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8);
34338  if (likely(__pyx_t_13)) {
34339  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
34340  __Pyx_INCREF(__pyx_t_13);
34341  __Pyx_INCREF(function);
34342  __Pyx_DECREF_SET(__pyx_t_8, function);
34343  __pyx_t_16 = 1;
34344  }
34345  }
34346  #if CYTHON_FAST_PYCALL
34347  if (PyFunction_Check(__pyx_t_8)) {
34348  PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_10, __pyx_n_s_d};
34349  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1743, __pyx_L1_error)
34350  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
34351  __Pyx_GOTREF(__pyx_t_7);
34352  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34353  } else
34354  #endif
34355  #if CYTHON_FAST_PYCCALL
34356  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
34357  PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_10, __pyx_n_s_d};
34358  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1743, __pyx_L1_error)
34359  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
34360  __Pyx_GOTREF(__pyx_t_7);
34361  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34362  } else
34363  #endif
34364  {
34365  __pyx_t_11 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1743, __pyx_L1_error)
34366  __Pyx_GOTREF(__pyx_t_11);
34367  if (__pyx_t_13) {
34368  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __pyx_t_13 = NULL;
34369  }
34370  __Pyx_GIVEREF(__pyx_t_10);
34371  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_16, __pyx_t_10);
34372  __Pyx_INCREF(__pyx_n_s_d);
34373  __Pyx_GIVEREF(__pyx_n_s_d);
34374  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_16, __pyx_n_s_d);
34375  __pyx_t_10 = 0;
34376  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1743, __pyx_L1_error)
34377  __Pyx_GOTREF(__pyx_t_7);
34378  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34379  }
34380  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34381  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1743, __pyx_L1_error)
34382  __Pyx_GIVEREF(__pyx_t_7);
34383  __Pyx_GOTREF(__pyx_v_self->waveDir);
34384  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
34385  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_7);
34386  __pyx_t_7 = 0;
34387 
34388  /* "WaveTools.py":1746
34389  *
34390  *
34391  * NN = 0 # <<<<<<<<<<<<<<
34392  * for kk in range(Nspectra):
34393  * logEvent("INFO Wavetools.py: Reading spectra No %s" %kk)
34394  */
34395  __Pyx_INCREF(__pyx_int_0);
34396  __pyx_v_NN = __pyx_int_0;
34397 
34398  /* "WaveTools.py":1747
34399  *
34400  * NN = 0
34401  * for kk in range(Nspectra): # <<<<<<<<<<<<<<
34402  * logEvent("INFO Wavetools.py: Reading spectra No %s" %kk)
34403  * NN1 = NN
34404  */
34405  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1747, __pyx_L1_error)
34406  __Pyx_GOTREF(__pyx_t_8);
34407  __pyx_t_11 = NULL;
34408  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
34409  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
34410  if (likely(__pyx_t_11)) {
34411  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
34412  __Pyx_INCREF(__pyx_t_11);
34413  __Pyx_INCREF(function);
34414  __Pyx_DECREF_SET(__pyx_t_8, function);
34415  }
34416  }
34417  __pyx_t_7 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_11, __pyx_v_Nspectra) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_Nspectra);
34418  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
34419  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1747, __pyx_L1_error)
34420  __Pyx_GOTREF(__pyx_t_7);
34421  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34422  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
34423  __pyx_t_8 = __pyx_t_7; __Pyx_INCREF(__pyx_t_8); __pyx_t_6 = 0;
34424  __pyx_t_15 = NULL;
34425  } else {
34426  __pyx_t_6 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1747, __pyx_L1_error)
34427  __Pyx_GOTREF(__pyx_t_8);
34428  __pyx_t_15 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1747, __pyx_L1_error)
34429  }
34430  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
34431  for (;;) {
34432  if (likely(!__pyx_t_15)) {
34433  if (likely(PyList_CheckExact(__pyx_t_8))) {
34434  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_8)) break;
34435  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34436  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1747, __pyx_L1_error)
34437  #else
34438  __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1747, __pyx_L1_error)
34439  __Pyx_GOTREF(__pyx_t_7);
34440  #endif
34441  } else {
34442  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
34443  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34444  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1747, __pyx_L1_error)
34445  #else
34446  __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1747, __pyx_L1_error)
34447  __Pyx_GOTREF(__pyx_t_7);
34448  #endif
34449  }
34450  } else {
34451  __pyx_t_7 = __pyx_t_15(__pyx_t_8);
34452  if (unlikely(!__pyx_t_7)) {
34453  PyObject* exc_type = PyErr_Occurred();
34454  if (exc_type) {
34455  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
34456  else __PYX_ERR(0, 1747, __pyx_L1_error)
34457  }
34458  break;
34459  }
34460  __Pyx_GOTREF(__pyx_t_7);
34461  }
34462  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_7);
34463  __pyx_t_7 = 0;
34464 
34465  /* "WaveTools.py":1748
34466  * NN = 0
34467  * for kk in range(Nspectra):
34468  * logEvent("INFO Wavetools.py: Reading spectra No %s" %kk) # <<<<<<<<<<<<<<
34469  * NN1 = NN
34470  * NN +=N[kk]
34471  */
34472  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1748, __pyx_L1_error)
34473  __Pyx_GOTREF(__pyx_t_11);
34474  __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_INFO_Wavetools_py_Reading_spectr, __pyx_v_kk); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1748, __pyx_L1_error)
34475  __Pyx_GOTREF(__pyx_t_10);
34476  __pyx_t_13 = NULL;
34477  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
34478  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
34479  if (likely(__pyx_t_13)) {
34480  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
34481  __Pyx_INCREF(__pyx_t_13);
34482  __Pyx_INCREF(function);
34483  __Pyx_DECREF_SET(__pyx_t_11, function);
34484  }
34485  }
34486  __pyx_t_7 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_13, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10);
34487  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
34488  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
34489  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1748, __pyx_L1_error)
34490  __Pyx_GOTREF(__pyx_t_7);
34491  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
34492  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
34493 
34494  /* "WaveTools.py":1749
34495  * for kk in range(Nspectra):
34496  * logEvent("INFO Wavetools.py: Reading spectra No %s" %kk)
34497  * NN1 = NN # <<<<<<<<<<<<<<
34498  * NN +=N[kk]
34499  * RW = RandomWaves(
34500  */
34501  __Pyx_INCREF(__pyx_v_NN);
34502  __Pyx_XDECREF_SET(__pyx_v_NN1, __pyx_v_NN);
34503 
34504  /* "WaveTools.py":1750
34505  * logEvent("INFO Wavetools.py: Reading spectra No %s" %kk)
34506  * NN1 = NN
34507  * NN +=N[kk] # <<<<<<<<<<<<<<
34508  * RW = RandomWaves(
34509  * Tp[kk], # np array with
34510  */
34511  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_N, __pyx_v_kk); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1750, __pyx_L1_error)
34512  __Pyx_GOTREF(__pyx_t_7);
34513  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_NN, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1750, __pyx_L1_error)
34514  __Pyx_GOTREF(__pyx_t_11);
34515  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
34516  __Pyx_DECREF_SET(__pyx_v_NN, __pyx_t_11);
34517  __pyx_t_11 = 0;
34518 
34519  /* "WaveTools.py":1752
34520  * NN +=N[kk]
34521  * RW = RandomWaves(
34522  * Tp[kk], # np array with # <<<<<<<<<<<<<<
34523  * Hs[kk],
34524  * mwl,#m significant wave height
34525  */
34526  __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_Tp, __pyx_v_kk); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1752, __pyx_L1_error)
34527  __Pyx_GOTREF(__pyx_t_11);
34528 
34529  /* "WaveTools.py":1753
34530  * RW = RandomWaves(
34531  * Tp[kk], # np array with
34532  * Hs[kk], # <<<<<<<<<<<<<<
34533  * mwl,#m significant wave height
34534  * depth, #m depth
34535  */
34536  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_Hs, __pyx_v_kk); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1753, __pyx_L1_error)
34537  __Pyx_GOTREF(__pyx_t_7);
34538 
34539  /* "WaveTools.py":1756
34540  * mwl,#m significant wave height
34541  * depth, #m depth
34542  * waveDir[kk], # <<<<<<<<<<<<<<
34543  * g, #peak frequency
34544  * N[kk],
34545  */
34546  __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_waveDir, __pyx_v_kk); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1756, __pyx_L1_error)
34547  __Pyx_GOTREF(__pyx_t_10);
34548 
34549  /* "WaveTools.py":1758
34550  * waveDir[kk],
34551  * g, #peak frequency
34552  * N[kk], # <<<<<<<<<<<<<<
34553  * bandFactor[kk], #accelerationof gravity
34554  * spectName[kk],# random words will result in error and return the available spectra
34555  */
34556  __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_v_N, __pyx_v_kk); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1758, __pyx_L1_error)
34557  __Pyx_GOTREF(__pyx_t_13);
34558 
34559  /* "WaveTools.py":1759
34560  * g, #peak frequency
34561  * N[kk],
34562  * bandFactor[kk], #accelerationof gravity # <<<<<<<<<<<<<<
34563  * spectName[kk],# random words will result in error and return the available spectra
34564  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
34565  */
34566  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_bandFactor, __pyx_v_kk); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1759, __pyx_L1_error)
34567  __Pyx_GOTREF(__pyx_t_12);
34568 
34569  /* "WaveTools.py":1760
34570  * N[kk],
34571  * bandFactor[kk], #accelerationof gravity
34572  * spectName[kk],# random words will result in error and return the available spectra # <<<<<<<<<<<<<<
34573  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
34574  * phi[kk],
34575  */
34576  __pyx_t_17 = __Pyx_PyObject_GetItem(__pyx_v_spectName, __pyx_v_kk); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1760, __pyx_L1_error)
34577  __Pyx_GOTREF(__pyx_t_17);
34578 
34579  /* "WaveTools.py":1761
34580  * bandFactor[kk], #accelerationof gravity
34581  * spectName[kk],# random words will result in error and return the available spectra
34582  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
34583  * phi[kk],
34584  * self.fast
34585  */
34586  __pyx_t_18 = __Pyx_PyObject_GetItem(__pyx_v_spectral_params, __pyx_v_kk); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1761, __pyx_L1_error)
34587  __Pyx_GOTREF(__pyx_t_18);
34588 
34589  /* "WaveTools.py":1762
34590  * spectName[kk],# random words will result in error and return the available spectra
34591  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
34592  * phi[kk], # <<<<<<<<<<<<<<
34593  * self.fast
34594  * )
34595  */
34596  __pyx_t_19 = __Pyx_PyObject_GetItem(__pyx_v_phi, __pyx_v_kk); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1762, __pyx_L1_error)
34597  __Pyx_GOTREF(__pyx_t_19);
34598 
34599  /* "WaveTools.py":1763
34600  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
34601  * phi[kk],
34602  * self.fast # <<<<<<<<<<<<<<
34603  * )
34604  * self.tanhFM[NN1:NN] = RW.tanhF
34605  */
34606  __pyx_t_20 = __Pyx_PyBool_FromLong(__pyx_v_self->fast); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1763, __pyx_L1_error)
34607  __Pyx_GOTREF(__pyx_t_20);
34608 
34609  /* "WaveTools.py":1751
34610  * NN1 = NN
34611  * NN +=N[kk]
34612  * RW = RandomWaves( # <<<<<<<<<<<<<<
34613  * Tp[kk], # np array with
34614  * Hs[kk],
34615  */
34616  __pyx_t_21 = PyTuple_New(12); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1751, __pyx_L1_error)
34617  __Pyx_GOTREF(__pyx_t_21);
34618  __Pyx_GIVEREF(__pyx_t_11);
34619  PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_11);
34620  __Pyx_GIVEREF(__pyx_t_7);
34621  PyTuple_SET_ITEM(__pyx_t_21, 1, __pyx_t_7);
34622  __Pyx_INCREF(__pyx_v_mwl);
34623  __Pyx_GIVEREF(__pyx_v_mwl);
34624  PyTuple_SET_ITEM(__pyx_t_21, 2, __pyx_v_mwl);
34625  __Pyx_INCREF(__pyx_v_depth);
34626  __Pyx_GIVEREF(__pyx_v_depth);
34627  PyTuple_SET_ITEM(__pyx_t_21, 3, __pyx_v_depth);
34628  __Pyx_GIVEREF(__pyx_t_10);
34629  PyTuple_SET_ITEM(__pyx_t_21, 4, __pyx_t_10);
34630  __Pyx_INCREF(__pyx_v_g);
34631  __Pyx_GIVEREF(__pyx_v_g);
34632  PyTuple_SET_ITEM(__pyx_t_21, 5, __pyx_v_g);
34633  __Pyx_GIVEREF(__pyx_t_13);
34634  PyTuple_SET_ITEM(__pyx_t_21, 6, __pyx_t_13);
34635  __Pyx_GIVEREF(__pyx_t_12);
34636  PyTuple_SET_ITEM(__pyx_t_21, 7, __pyx_t_12);
34637  __Pyx_GIVEREF(__pyx_t_17);
34638  PyTuple_SET_ITEM(__pyx_t_21, 8, __pyx_t_17);
34639  __Pyx_GIVEREF(__pyx_t_18);
34640  PyTuple_SET_ITEM(__pyx_t_21, 9, __pyx_t_18);
34641  __Pyx_GIVEREF(__pyx_t_19);
34642  PyTuple_SET_ITEM(__pyx_t_21, 10, __pyx_t_19);
34643  __Pyx_GIVEREF(__pyx_t_20);
34644  PyTuple_SET_ITEM(__pyx_t_21, 11, __pyx_t_20);
34645  __pyx_t_11 = 0;
34646  __pyx_t_7 = 0;
34647  __pyx_t_10 = 0;
34648  __pyx_t_13 = 0;
34649  __pyx_t_12 = 0;
34650  __pyx_t_17 = 0;
34651  __pyx_t_18 = 0;
34652  __pyx_t_19 = 0;
34653  __pyx_t_20 = 0;
34654  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_RandomWaves), __pyx_t_21, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1751, __pyx_L1_error)
34655  __Pyx_GOTREF(__pyx_t_20);
34656  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
34657  __Pyx_XDECREF_SET(__pyx_v_RW, ((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_t_20));
34658  __pyx_t_20 = 0;
34659 
34660  /* "WaveTools.py":1765
34661  * self.fast
34662  * )
34663  * self.tanhFM[NN1:NN] = RW.tanhF # <<<<<<<<<<<<<<
34664  * self.omegaM[NN1:NN] = RW.omega
34665  * self.kiM[NN1:NN] = RW.ki
34666  */
34667  __pyx_t_20 = ((PyObject *)__pyx_v_RW->tanhF);
34668  __Pyx_INCREF(__pyx_t_20);
34669  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self->tanhFM), __pyx_t_20, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 1765, __pyx_L1_error)
34670  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34671 
34672  /* "WaveTools.py":1766
34673  * )
34674  * self.tanhFM[NN1:NN] = RW.tanhF
34675  * self.omegaM[NN1:NN] = RW.omega # <<<<<<<<<<<<<<
34676  * self.kiM[NN1:NN] = RW.ki
34677  * self.aiM[NN1:NN] = RW.ai
34678  */
34679  __pyx_t_20 = ((PyObject *)__pyx_v_RW->omega);
34680  __Pyx_INCREF(__pyx_t_20);
34681  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self->omegaM), __pyx_t_20, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 1766, __pyx_L1_error)
34682  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34683 
34684  /* "WaveTools.py":1767
34685  * self.tanhFM[NN1:NN] = RW.tanhF
34686  * self.omegaM[NN1:NN] = RW.omega
34687  * self.kiM[NN1:NN] = RW.ki # <<<<<<<<<<<<<<
34688  * self.aiM[NN1:NN] = RW.ai
34689  * self.kDirM[NN1:NN,:] =RW.kDir[:,:]
34690  */
34691  __pyx_t_20 = ((PyObject *)__pyx_v_RW->ki);
34692  __Pyx_INCREF(__pyx_t_20);
34693  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self->kiM), __pyx_t_20, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 1767, __pyx_L1_error)
34694  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34695 
34696  /* "WaveTools.py":1768
34697  * self.omegaM[NN1:NN] = RW.omega
34698  * self.kiM[NN1:NN] = RW.ki
34699  * self.aiM[NN1:NN] = RW.ai # <<<<<<<<<<<<<<
34700  * self.kDirM[NN1:NN,:] =RW.kDir[:,:]
34701  * self.phiM[NN1:NN] = RW.phi
34702  */
34703  __pyx_t_20 = ((PyObject *)__pyx_v_RW->ai);
34704  __Pyx_INCREF(__pyx_t_20);
34705  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self->aiM), __pyx_t_20, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 1768, __pyx_L1_error)
34706  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34707 
34708  /* "WaveTools.py":1769
34709  * self.kiM[NN1:NN] = RW.ki
34710  * self.aiM[NN1:NN] = RW.ai
34711  * self.kDirM[NN1:NN,:] =RW.kDir[:,:] # <<<<<<<<<<<<<<
34712  * self.phiM[NN1:NN] = RW.phi
34713  * for ij in range(3):
34714  */
34715  __pyx_t_20 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RW->kDir), __pyx_tuple__33); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1769, __pyx_L1_error)
34716  __Pyx_GOTREF(__pyx_t_20);
34717  __pyx_t_21 = PySlice_New(__pyx_v_NN1, __pyx_v_NN, Py_None); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1769, __pyx_L1_error)
34718  __Pyx_GOTREF(__pyx_t_21);
34719  __pyx_t_19 = PyTuple_New(2); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1769, __pyx_L1_error)
34720  __Pyx_GOTREF(__pyx_t_19);
34721  __Pyx_GIVEREF(__pyx_t_21);
34722  PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_21);
34723  __Pyx_INCREF(__pyx_slice__4);
34724  __Pyx_GIVEREF(__pyx_slice__4);
34725  PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_slice__4);
34726  __pyx_t_21 = 0;
34727  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->kDirM), __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 1769, __pyx_L1_error)
34728  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
34729  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34730 
34731  /* "WaveTools.py":1770
34732  * self.aiM[NN1:NN] = RW.ai
34733  * self.kDirM[NN1:NN,:] =RW.kDir[:,:]
34734  * self.phiM[NN1:NN] = RW.phi # <<<<<<<<<<<<<<
34735  * for ij in range(3):
34736  * self.vDir_c[ij] = self.vDir[ij]
34737  */
34738  __pyx_t_20 = __pyx_v_RW->phi;
34739  __Pyx_INCREF(__pyx_t_20);
34740  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self->phiM), __pyx_t_20, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 1770, __pyx_L1_error)
34741  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34742 
34743  /* "WaveTools.py":1747
34744  *
34745  * NN = 0
34746  * for kk in range(Nspectra): # <<<<<<<<<<<<<<
34747  * logEvent("INFO Wavetools.py: Reading spectra No %s" %kk)
34748  * NN1 = NN
34749  */
34750  }
34751  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34752 
34753  /* "WaveTools.py":1771
34754  * self.kDirM[NN1:NN,:] =RW.kDir[:,:]
34755  * self.phiM[NN1:NN] = RW.phi
34756  * for ij in range(3): # <<<<<<<<<<<<<<
34757  * self.vDir_c[ij] = self.vDir[ij]
34758  * self.vDir_ = self.vDir_c
34759  */
34760  __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_n_s_range); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1771, __pyx_L1_error)
34761  __Pyx_GOTREF(__pyx_t_20);
34762  __pyx_t_19 = NULL;
34763  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_20))) {
34764  __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_20);
34765  if (likely(__pyx_t_19)) {
34766  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_20);
34767  __Pyx_INCREF(__pyx_t_19);
34768  __Pyx_INCREF(function);
34769  __Pyx_DECREF_SET(__pyx_t_20, function);
34770  }
34771  }
34772  __pyx_t_8 = (__pyx_t_19) ? __Pyx_PyObject_Call2Args(__pyx_t_20, __pyx_t_19, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_int_3);
34773  __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
34774  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1771, __pyx_L1_error)
34775  __Pyx_GOTREF(__pyx_t_8);
34776  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34777  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
34778  __pyx_t_20 = __pyx_t_8; __Pyx_INCREF(__pyx_t_20); __pyx_t_6 = 0;
34779  __pyx_t_15 = NULL;
34780  } else {
34781  __pyx_t_6 = -1; __pyx_t_20 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1771, __pyx_L1_error)
34782  __Pyx_GOTREF(__pyx_t_20);
34783  __pyx_t_15 = Py_TYPE(__pyx_t_20)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1771, __pyx_L1_error)
34784  }
34785  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34786  for (;;) {
34787  if (likely(!__pyx_t_15)) {
34788  if (likely(PyList_CheckExact(__pyx_t_20))) {
34789  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_20)) break;
34790  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34791  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_20, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1771, __pyx_L1_error)
34792  #else
34793  __pyx_t_8 = PySequence_ITEM(__pyx_t_20, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1771, __pyx_L1_error)
34794  __Pyx_GOTREF(__pyx_t_8);
34795  #endif
34796  } else {
34797  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_20)) break;
34798  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34799  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_20, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1771, __pyx_L1_error)
34800  #else
34801  __pyx_t_8 = PySequence_ITEM(__pyx_t_20, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1771, __pyx_L1_error)
34802  __Pyx_GOTREF(__pyx_t_8);
34803  #endif
34804  }
34805  } else {
34806  __pyx_t_8 = __pyx_t_15(__pyx_t_20);
34807  if (unlikely(!__pyx_t_8)) {
34808  PyObject* exc_type = PyErr_Occurred();
34809  if (exc_type) {
34810  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
34811  else __PYX_ERR(0, 1771, __pyx_L1_error)
34812  }
34813  break;
34814  }
34815  __Pyx_GOTREF(__pyx_t_8);
34816  }
34817  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_8);
34818  __pyx_t_8 = 0;
34819 
34820  /* "WaveTools.py":1772
34821  * self.phiM[NN1:NN] = RW.phi
34822  * for ij in range(3):
34823  * self.vDir_c[ij] = self.vDir[ij] # <<<<<<<<<<<<<<
34824  * self.vDir_ = self.vDir_c
34825  *
34826  */
34827  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->vDir), __pyx_v_ij); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1772, __pyx_L1_error)
34828  __Pyx_GOTREF(__pyx_t_8);
34829  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1772, __pyx_L1_error)
34830  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34831  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1772, __pyx_L1_error)
34832  (__pyx_v_self->vDir_c[__pyx_t_22]) = __pyx_t_14;
34833 
34834  /* "WaveTools.py":1771
34835  * self.kDirM[NN1:NN,:] =RW.kDir[:,:]
34836  * self.phiM[NN1:NN] = RW.phi
34837  * for ij in range(3): # <<<<<<<<<<<<<<
34838  * self.vDir_c[ij] = self.vDir[ij]
34839  * self.vDir_ = self.vDir_c
34840  */
34841  }
34842  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34843 
34844  /* "WaveTools.py":1773
34845  * for ij in range(3):
34846  * self.vDir_c[ij] = self.vDir[ij]
34847  * self.vDir_ = self.vDir_c # <<<<<<<<<<<<<<
34848  *
34849  *
34850  */
34851  __pyx_t_23 = __pyx_v_self->vDir_c;
34852  __pyx_v_self->vDir_ = __pyx_t_23;
34853 
34854  /* "WaveTools.py":1776
34855  *
34856  *
34857  * for ij in range(self.Nall): # <<<<<<<<<<<<<<
34858  * for kk in range(3):
34859  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk]
34860  */
34861  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1776, __pyx_L1_error)
34862  __Pyx_GOTREF(__pyx_t_8);
34863  __pyx_t_19 = __Pyx_PyInt_From_int(__pyx_v_self->Nall); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1776, __pyx_L1_error)
34864  __Pyx_GOTREF(__pyx_t_19);
34865  __pyx_t_21 = NULL;
34866  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
34867  __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_8);
34868  if (likely(__pyx_t_21)) {
34869  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
34870  __Pyx_INCREF(__pyx_t_21);
34871  __Pyx_INCREF(function);
34872  __Pyx_DECREF_SET(__pyx_t_8, function);
34873  }
34874  }
34875  __pyx_t_20 = (__pyx_t_21) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_21, __pyx_t_19) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_19);
34876  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
34877  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
34878  if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1776, __pyx_L1_error)
34879  __Pyx_GOTREF(__pyx_t_20);
34880  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
34881  if (likely(PyList_CheckExact(__pyx_t_20)) || PyTuple_CheckExact(__pyx_t_20)) {
34882  __pyx_t_8 = __pyx_t_20; __Pyx_INCREF(__pyx_t_8); __pyx_t_6 = 0;
34883  __pyx_t_15 = NULL;
34884  } else {
34885  __pyx_t_6 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_20); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1776, __pyx_L1_error)
34886  __Pyx_GOTREF(__pyx_t_8);
34887  __pyx_t_15 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1776, __pyx_L1_error)
34888  }
34889  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34890  for (;;) {
34891  if (likely(!__pyx_t_15)) {
34892  if (likely(PyList_CheckExact(__pyx_t_8))) {
34893  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_8)) break;
34894  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34895  __pyx_t_20 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_20); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1776, __pyx_L1_error)
34896  #else
34897  __pyx_t_20 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1776, __pyx_L1_error)
34898  __Pyx_GOTREF(__pyx_t_20);
34899  #endif
34900  } else {
34901  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
34902  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34903  __pyx_t_20 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_t_20); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1776, __pyx_L1_error)
34904  #else
34905  __pyx_t_20 = PySequence_ITEM(__pyx_t_8, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1776, __pyx_L1_error)
34906  __Pyx_GOTREF(__pyx_t_20);
34907  #endif
34908  }
34909  } else {
34910  __pyx_t_20 = __pyx_t_15(__pyx_t_8);
34911  if (unlikely(!__pyx_t_20)) {
34912  PyObject* exc_type = PyErr_Occurred();
34913  if (exc_type) {
34914  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
34915  else __PYX_ERR(0, 1776, __pyx_L1_error)
34916  }
34917  break;
34918  }
34919  __Pyx_GOTREF(__pyx_t_20);
34920  }
34921  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_20);
34922  __pyx_t_20 = 0;
34923 
34924  /* "WaveTools.py":1777
34925  *
34926  * for ij in range(self.Nall):
34927  * for kk in range(3): # <<<<<<<<<<<<<<
34928  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk]
34929  * self.waveDir_cM[3*ij+kk] = old_div(self.kDirM[ij,kk], self.kiM[ij])
34930  */
34931  __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_range); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1777, __pyx_L1_error)
34932  __Pyx_GOTREF(__pyx_t_19);
34933  __pyx_t_21 = NULL;
34934  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_19))) {
34935  __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_19);
34936  if (likely(__pyx_t_21)) {
34937  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19);
34938  __Pyx_INCREF(__pyx_t_21);
34939  __Pyx_INCREF(function);
34940  __Pyx_DECREF_SET(__pyx_t_19, function);
34941  }
34942  }
34943  __pyx_t_20 = (__pyx_t_21) ? __Pyx_PyObject_Call2Args(__pyx_t_19, __pyx_t_21, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_19, __pyx_int_3);
34944  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
34945  if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1777, __pyx_L1_error)
34946  __Pyx_GOTREF(__pyx_t_20);
34947  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
34948  if (likely(PyList_CheckExact(__pyx_t_20)) || PyTuple_CheckExact(__pyx_t_20)) {
34949  __pyx_t_19 = __pyx_t_20; __Pyx_INCREF(__pyx_t_19); __pyx_t_22 = 0;
34950  __pyx_t_24 = NULL;
34951  } else {
34952  __pyx_t_22 = -1; __pyx_t_19 = PyObject_GetIter(__pyx_t_20); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1777, __pyx_L1_error)
34953  __Pyx_GOTREF(__pyx_t_19);
34954  __pyx_t_24 = Py_TYPE(__pyx_t_19)->tp_iternext; if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 1777, __pyx_L1_error)
34955  }
34956  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
34957  for (;;) {
34958  if (likely(!__pyx_t_24)) {
34959  if (likely(PyList_CheckExact(__pyx_t_19))) {
34960  if (__pyx_t_22 >= PyList_GET_SIZE(__pyx_t_19)) break;
34961  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34962  __pyx_t_20 = PyList_GET_ITEM(__pyx_t_19, __pyx_t_22); __Pyx_INCREF(__pyx_t_20); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 1777, __pyx_L1_error)
34963  #else
34964  __pyx_t_20 = PySequence_ITEM(__pyx_t_19, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1777, __pyx_L1_error)
34965  __Pyx_GOTREF(__pyx_t_20);
34966  #endif
34967  } else {
34968  if (__pyx_t_22 >= PyTuple_GET_SIZE(__pyx_t_19)) break;
34969  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
34970  __pyx_t_20 = PyTuple_GET_ITEM(__pyx_t_19, __pyx_t_22); __Pyx_INCREF(__pyx_t_20); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 1777, __pyx_L1_error)
34971  #else
34972  __pyx_t_20 = PySequence_ITEM(__pyx_t_19, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1777, __pyx_L1_error)
34973  __Pyx_GOTREF(__pyx_t_20);
34974  #endif
34975  }
34976  } else {
34977  __pyx_t_20 = __pyx_t_24(__pyx_t_19);
34978  if (unlikely(!__pyx_t_20)) {
34979  PyObject* exc_type = PyErr_Occurred();
34980  if (exc_type) {
34981  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
34982  else __PYX_ERR(0, 1777, __pyx_L1_error)
34983  }
34984  break;
34985  }
34986  __Pyx_GOTREF(__pyx_t_20);
34987  }
34988  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_20);
34989  __pyx_t_20 = 0;
34990 
34991  /* "WaveTools.py":1778
34992  * for ij in range(self.Nall):
34993  * for kk in range(3):
34994  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk] # <<<<<<<<<<<<<<
34995  * self.waveDir_cM[3*ij+kk] = old_div(self.kDirM[ij,kk], self.kiM[ij])
34996  * self.omega_cM[ij] = self.omegaM[ij]
34997  */
34998  __pyx_t_20 = PyTuple_New(2); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1778, __pyx_L1_error)
34999  __Pyx_GOTREF(__pyx_t_20);
35000  __Pyx_INCREF(__pyx_v_ij);
35001  __Pyx_GIVEREF(__pyx_v_ij);
35002  PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_v_ij);
35003  __Pyx_INCREF(__pyx_v_kk);
35004  __Pyx_GIVEREF(__pyx_v_kk);
35005  PyTuple_SET_ITEM(__pyx_t_20, 1, __pyx_v_kk);
35006  __pyx_t_21 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDirM), __pyx_t_20); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1778, __pyx_L1_error)
35007  __Pyx_GOTREF(__pyx_t_21);
35008  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
35009  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_21); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1778, __pyx_L1_error)
35010  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
35011  __pyx_t_21 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1778, __pyx_L1_error)
35012  __Pyx_GOTREF(__pyx_t_21);
35013  __pyx_t_20 = PyNumber_Add(__pyx_t_21, __pyx_v_kk); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1778, __pyx_L1_error)
35014  __Pyx_GOTREF(__pyx_t_20);
35015  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
35016  __pyx_t_25 = __Pyx_PyIndex_AsSsize_t(__pyx_t_20); if (unlikely((__pyx_t_25 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1778, __pyx_L1_error)
35017  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
35018  (__pyx_v_self->kDir_cM[__pyx_t_25]) = __pyx_t_14;
35019 
35020  /* "WaveTools.py":1779
35021  * for kk in range(3):
35022  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk]
35023  * self.waveDir_cM[3*ij+kk] = old_div(self.kDirM[ij,kk], self.kiM[ij]) # <<<<<<<<<<<<<<
35024  * self.omega_cM[ij] = self.omegaM[ij]
35025  * self.ki_cM[ij] =self.kiM[ij]
35026  */
35027  __Pyx_GetModuleGlobalName(__pyx_t_21, __pyx_n_s_old_div); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1779, __pyx_L1_error)
35028  __Pyx_GOTREF(__pyx_t_21);
35029  __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1779, __pyx_L1_error)
35030  __Pyx_GOTREF(__pyx_t_18);
35031  __Pyx_INCREF(__pyx_v_ij);
35032  __Pyx_GIVEREF(__pyx_v_ij);
35033  PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_v_ij);
35034  __Pyx_INCREF(__pyx_v_kk);
35035  __Pyx_GIVEREF(__pyx_v_kk);
35036  PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_v_kk);
35037  __pyx_t_17 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDirM), __pyx_t_18); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1779, __pyx_L1_error)
35038  __Pyx_GOTREF(__pyx_t_17);
35039  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
35040  __pyx_t_18 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kiM), __pyx_v_ij); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1779, __pyx_L1_error)
35041  __Pyx_GOTREF(__pyx_t_18);
35042  __pyx_t_12 = NULL;
35043  __pyx_t_16 = 0;
35044  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_21))) {
35045  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_21);
35046  if (likely(__pyx_t_12)) {
35047  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
35048  __Pyx_INCREF(__pyx_t_12);
35049  __Pyx_INCREF(function);
35050  __Pyx_DECREF_SET(__pyx_t_21, function);
35051  __pyx_t_16 = 1;
35052  }
35053  }
35054  #if CYTHON_FAST_PYCALL
35055  if (PyFunction_Check(__pyx_t_21)) {
35056  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_17, __pyx_t_18};
35057  __pyx_t_20 = __Pyx_PyFunction_FastCall(__pyx_t_21, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1779, __pyx_L1_error)
35058  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
35059  __Pyx_GOTREF(__pyx_t_20);
35060  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
35061  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
35062  } else
35063  #endif
35064  #if CYTHON_FAST_PYCCALL
35065  if (__Pyx_PyFastCFunction_Check(__pyx_t_21)) {
35066  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_17, __pyx_t_18};
35067  __pyx_t_20 = __Pyx_PyCFunction_FastCall(__pyx_t_21, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1779, __pyx_L1_error)
35068  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
35069  __Pyx_GOTREF(__pyx_t_20);
35070  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
35071  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
35072  } else
35073  #endif
35074  {
35075  __pyx_t_13 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1779, __pyx_L1_error)
35076  __Pyx_GOTREF(__pyx_t_13);
35077  if (__pyx_t_12) {
35078  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
35079  }
35080  __Pyx_GIVEREF(__pyx_t_17);
35081  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_16, __pyx_t_17);
35082  __Pyx_GIVEREF(__pyx_t_18);
35083  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_16, __pyx_t_18);
35084  __pyx_t_17 = 0;
35085  __pyx_t_18 = 0;
35086  __pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_13, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1779, __pyx_L1_error)
35087  __Pyx_GOTREF(__pyx_t_20);
35088  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
35089  }
35090  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
35091  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_20); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1779, __pyx_L1_error)
35092  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
35093  __pyx_t_20 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1779, __pyx_L1_error)
35094  __Pyx_GOTREF(__pyx_t_20);
35095  __pyx_t_21 = PyNumber_Add(__pyx_t_20, __pyx_v_kk); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1779, __pyx_L1_error)
35096  __Pyx_GOTREF(__pyx_t_21);
35097  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
35098  __pyx_t_25 = __Pyx_PyIndex_AsSsize_t(__pyx_t_21); if (unlikely((__pyx_t_25 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1779, __pyx_L1_error)
35099  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
35100  (__pyx_v_self->waveDir_cM[__pyx_t_25]) = __pyx_t_14;
35101 
35102  /* "WaveTools.py":1777
35103  *
35104  * for ij in range(self.Nall):
35105  * for kk in range(3): # <<<<<<<<<<<<<<
35106  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk]
35107  * self.waveDir_cM[3*ij+kk] = old_div(self.kDirM[ij,kk], self.kiM[ij])
35108  */
35109  }
35110  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
35111 
35112  /* "WaveTools.py":1780
35113  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk]
35114  * self.waveDir_cM[3*ij+kk] = old_div(self.kDirM[ij,kk], self.kiM[ij])
35115  * self.omega_cM[ij] = self.omegaM[ij] # <<<<<<<<<<<<<<
35116  * self.ki_cM[ij] =self.kiM[ij]
35117  * self.tanh_cM[ij] = self.tanhFM[ij]
35118  */
35119  __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omegaM), __pyx_v_ij); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1780, __pyx_L1_error)
35120  __Pyx_GOTREF(__pyx_t_19);
35121  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_19); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1780, __pyx_L1_error)
35122  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
35123  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1780, __pyx_L1_error)
35124  (__pyx_v_self->omega_cM[__pyx_t_22]) = __pyx_t_14;
35125 
35126  /* "WaveTools.py":1781
35127  * self.waveDir_cM[3*ij+kk] = old_div(self.kDirM[ij,kk], self.kiM[ij])
35128  * self.omega_cM[ij] = self.omegaM[ij]
35129  * self.ki_cM[ij] =self.kiM[ij] # <<<<<<<<<<<<<<
35130  * self.tanh_cM[ij] = self.tanhFM[ij]
35131  * self.ai_cM[ij] = self.aiM[ij]
35132  */
35133  __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kiM), __pyx_v_ij); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1781, __pyx_L1_error)
35134  __Pyx_GOTREF(__pyx_t_19);
35135  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_19); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1781, __pyx_L1_error)
35136  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
35137  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1781, __pyx_L1_error)
35138  (__pyx_v_self->ki_cM[__pyx_t_22]) = __pyx_t_14;
35139 
35140  /* "WaveTools.py":1782
35141  * self.omega_cM[ij] = self.omegaM[ij]
35142  * self.ki_cM[ij] =self.kiM[ij]
35143  * self.tanh_cM[ij] = self.tanhFM[ij] # <<<<<<<<<<<<<<
35144  * self.ai_cM[ij] = self.aiM[ij]
35145  * self.phi_cM[ij] = self.phiM[ij]
35146  */
35147  __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->tanhFM), __pyx_v_ij); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1782, __pyx_L1_error)
35148  __Pyx_GOTREF(__pyx_t_19);
35149  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_19); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1782, __pyx_L1_error)
35150  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
35151  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1782, __pyx_L1_error)
35152  (__pyx_v_self->tanh_cM[__pyx_t_22]) = __pyx_t_14;
35153 
35154  /* "WaveTools.py":1783
35155  * self.ki_cM[ij] =self.kiM[ij]
35156  * self.tanh_cM[ij] = self.tanhFM[ij]
35157  * self.ai_cM[ij] = self.aiM[ij] # <<<<<<<<<<<<<<
35158  * self.phi_cM[ij] = self.phiM[ij]
35159  *
35160  */
35161  __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->aiM), __pyx_v_ij); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1783, __pyx_L1_error)
35162  __Pyx_GOTREF(__pyx_t_19);
35163  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_19); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1783, __pyx_L1_error)
35164  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
35165  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1783, __pyx_L1_error)
35166  (__pyx_v_self->ai_cM[__pyx_t_22]) = __pyx_t_14;
35167 
35168  /* "WaveTools.py":1784
35169  * self.tanh_cM[ij] = self.tanhFM[ij]
35170  * self.ai_cM[ij] = self.aiM[ij]
35171  * self.phi_cM[ij] = self.phiM[ij] # <<<<<<<<<<<<<<
35172  *
35173  * self.kDirM_ = self.kDir_cM
35174  */
35175  __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->phiM), __pyx_v_ij); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1784, __pyx_L1_error)
35176  __Pyx_GOTREF(__pyx_t_19);
35177  __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_19); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L1_error)
35178  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
35179  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1784, __pyx_L1_error)
35180  (__pyx_v_self->phi_cM[__pyx_t_22]) = __pyx_t_14;
35181 
35182  /* "WaveTools.py":1776
35183  *
35184  *
35185  * for ij in range(self.Nall): # <<<<<<<<<<<<<<
35186  * for kk in range(3):
35187  * self.kDir_cM[3*ij+kk] = self.kDirM[ij,kk]
35188  */
35189  }
35190  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
35191 
35192  /* "WaveTools.py":1786
35193  * self.phi_cM[ij] = self.phiM[ij]
35194  *
35195  * self.kDirM_ = self.kDir_cM # <<<<<<<<<<<<<<
35196  * self.omegaM_ = self.omega_cM
35197  * self.kiM_ =self.ki_cM
35198  */
35199  __pyx_t_23 = __pyx_v_self->kDir_cM;
35200  __pyx_v_self->kDirM_ = __pyx_t_23;
35201 
35202  /* "WaveTools.py":1787
35203  *
35204  * self.kDirM_ = self.kDir_cM
35205  * self.omegaM_ = self.omega_cM # <<<<<<<<<<<<<<
35206  * self.kiM_ =self.ki_cM
35207  * self.aiM_ = self.ai_cM
35208  */
35209  __pyx_t_23 = __pyx_v_self->omega_cM;
35210  __pyx_v_self->omegaM_ = __pyx_t_23;
35211 
35212  /* "WaveTools.py":1788
35213  * self.kDirM_ = self.kDir_cM
35214  * self.omegaM_ = self.omega_cM
35215  * self.kiM_ =self.ki_cM # <<<<<<<<<<<<<<
35216  * self.aiM_ = self.ai_cM
35217  * self.tanhM_ = self.tanh_cM
35218  */
35219  __pyx_t_23 = __pyx_v_self->ki_cM;
35220  __pyx_v_self->kiM_ = __pyx_t_23;
35221 
35222  /* "WaveTools.py":1789
35223  * self.omegaM_ = self.omega_cM
35224  * self.kiM_ =self.ki_cM
35225  * self.aiM_ = self.ai_cM # <<<<<<<<<<<<<<
35226  * self.tanhM_ = self.tanh_cM
35227  * self.phiM_ = self.phi_cM
35228  */
35229  __pyx_t_23 = __pyx_v_self->ai_cM;
35230  __pyx_v_self->aiM_ = __pyx_t_23;
35231 
35232  /* "WaveTools.py":1790
35233  * self.kiM_ =self.ki_cM
35234  * self.aiM_ = self.ai_cM
35235  * self.tanhM_ = self.tanh_cM # <<<<<<<<<<<<<<
35236  * self.phiM_ = self.phi_cM
35237  * self.waveDirM_ = self.waveDir_cM
35238  */
35239  __pyx_t_23 = __pyx_v_self->tanh_cM;
35240  __pyx_v_self->tanhM_ = __pyx_t_23;
35241 
35242  /* "WaveTools.py":1791
35243  * self.aiM_ = self.ai_cM
35244  * self.tanhM_ = self.tanh_cM
35245  * self.phiM_ = self.phi_cM # <<<<<<<<<<<<<<
35246  * self.waveDirM_ = self.waveDir_cM
35247  *
35248  */
35249  __pyx_t_23 = __pyx_v_self->phi_cM;
35250  __pyx_v_self->phiM_ = __pyx_t_23;
35251 
35252  /* "WaveTools.py":1792
35253  * self.tanhM_ = self.tanh_cM
35254  * self.phiM_ = self.phi_cM
35255  * self.waveDirM_ = self.waveDir_cM # <<<<<<<<<<<<<<
35256  *
35257  *
35258  */
35259  __pyx_t_23 = __pyx_v_self->waveDir_cM;
35260  __pyx_v_self->waveDirM_ = __pyx_t_23;
35261 
35262  /* "WaveTools.py":1695
35263  * Switch for optimised functions
35264  * """
35265  * def __cinit__(self, # <<<<<<<<<<<<<<
35266  * Nspectra,
35267  * Tp, # np array with
35268  */
35269 
35270  /* function exit code */
35271  __pyx_r = 0;
35272  goto __pyx_L0;
35273  __pyx_L1_error:;
35274  __Pyx_XDECREF(__pyx_t_7);
35275  __Pyx_XDECREF(__pyx_t_8);
35276  __Pyx_XDECREF(__pyx_t_10);
35277  __Pyx_XDECREF(__pyx_t_11);
35278  __Pyx_XDECREF(__pyx_t_12);
35279  __Pyx_XDECREF(__pyx_t_13);
35280  __Pyx_XDECREF(__pyx_t_17);
35281  __Pyx_XDECREF(__pyx_t_18);
35282  __Pyx_XDECREF(__pyx_t_19);
35283  __Pyx_XDECREF(__pyx_t_20);
35284  __Pyx_XDECREF(__pyx_t_21);
35285  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
35286  __pyx_r = -1;
35287  __pyx_L0:;
35288  __Pyx_XDECREF(__pyx_v_nn);
35289  __Pyx_XDECREF(__pyx_v_NN);
35290  __Pyx_XDECREF(__pyx_v_kk);
35291  __Pyx_XDECREF(__pyx_v_NN1);
35292  __Pyx_XDECREF((PyObject *)__pyx_v_RW);
35293  __Pyx_XDECREF(__pyx_v_ij);
35294  __Pyx_RefNannyFinishContext();
35295  return __pyx_r;
35296 }
35297 
35298 /* "WaveTools.py":1795
35299  *
35300  *
35301  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
35302  *
35303  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast)
35304  */
35305 
35306 static double __pyx_f_9WaveTools_23MultiSpectraRandomWaves__cpp_eta(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
35307  double __pyx_r;
35308  __Pyx_RefNannyDeclarations
35309  __Pyx_RefNannySetupContext("_cpp_eta", 0);
35310 
35311  /* "WaveTools.py":1797
35312  * def _cpp_eta(self, x, t):
35313  *
35314  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast) # <<<<<<<<<<<<<<
35315  *
35316  * def eta(self, x, t):
35317  */
35318  __pyx_r = proteus::__cpp_etaRandom(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDirM_, __pyx_v_self->omegaM_, __pyx_v_self->phiM_, __pyx_v_self->aiM_, __pyx_v_self->Nall, __pyx_v_self->fast);
35319  goto __pyx_L0;
35320 
35321  /* "WaveTools.py":1795
35322  *
35323  *
35324  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
35325  *
35326  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast)
35327  */
35328 
35329  /* function exit code */
35330  __pyx_L0:;
35331  __Pyx_RefNannyFinishContext();
35332  return __pyx_r;
35333 }
35334 
35335 /* "WaveTools.py":1799
35336  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast)
35337  *
35338  * def eta(self, x, t): # <<<<<<<<<<<<<<
35339  * """Calculates free surface elevation (RandomWaves class)
35340  * Parameters
35341  */
35342 
35343 /* Python wrapper */
35344 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
35345 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta[] = "Calculates free surface elevation (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
35346 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta};
35347 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
35348  PyObject *__pyx_v_x = 0;
35349  PyObject *__pyx_v_t = 0;
35350  int __pyx_lineno = 0;
35351  const char *__pyx_filename = NULL;
35352  int __pyx_clineno = 0;
35353  PyObject *__pyx_r = 0;
35354  __Pyx_RefNannyDeclarations
35355  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
35356  {
35357  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
35358  PyObject* values[2] = {0,0};
35359  if (unlikely(__pyx_kwds)) {
35360  Py_ssize_t kw_args;
35361  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
35362  switch (pos_args) {
35363  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
35364  CYTHON_FALLTHROUGH;
35365  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
35366  CYTHON_FALLTHROUGH;
35367  case 0: break;
35368  default: goto __pyx_L5_argtuple_error;
35369  }
35370  kw_args = PyDict_Size(__pyx_kwds);
35371  switch (pos_args) {
35372  case 0:
35373  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
35374  else goto __pyx_L5_argtuple_error;
35375  CYTHON_FALLTHROUGH;
35376  case 1:
35377  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
35378  else {
35379  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 1799, __pyx_L3_error)
35380  }
35381  }
35382  if (unlikely(kw_args > 0)) {
35383  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 1799, __pyx_L3_error)
35384  }
35385  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
35386  goto __pyx_L5_argtuple_error;
35387  } else {
35388  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
35389  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
35390  }
35391  __pyx_v_x = values[0];
35392  __pyx_v_t = values[1];
35393  }
35394  goto __pyx_L4_argument_unpacking_done;
35395  __pyx_L5_argtuple_error:;
35396  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1799, __pyx_L3_error)
35397  __pyx_L3_error:;
35398  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
35399  __Pyx_RefNannyFinishContext();
35400  return NULL;
35401  __pyx_L4_argument_unpacking_done:;
35402  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
35403 
35404  /* function exit code */
35405  __Pyx_RefNannyFinishContext();
35406  return __pyx_r;
35407 }
35408 
35409 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
35410  double __pyx_v_xx[3];
35411  PyObject *__pyx_r = NULL;
35412  __Pyx_RefNannyDeclarations
35413  PyObject *__pyx_t_1 = NULL;
35414  double __pyx_t_2;
35415  int __pyx_lineno = 0;
35416  const char *__pyx_filename = NULL;
35417  int __pyx_clineno = 0;
35418  __Pyx_RefNannySetupContext("eta", 0);
35419 
35420  /* "WaveTools.py":1815
35421  * """
35422  * cython.declare(xx=cython.double[3])
35423  * xx[0] = x[0] # <<<<<<<<<<<<<<
35424  * xx[1] = x[1]
35425  * xx[2] = x[2]
35426  */
35427  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1815, __pyx_L1_error)
35428  __Pyx_GOTREF(__pyx_t_1);
35429  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1815, __pyx_L1_error)
35430  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
35431  (__pyx_v_xx[0]) = __pyx_t_2;
35432 
35433  /* "WaveTools.py":1816
35434  * cython.declare(xx=cython.double[3])
35435  * xx[0] = x[0]
35436  * xx[1] = x[1] # <<<<<<<<<<<<<<
35437  * xx[2] = x[2]
35438  * return self._cpp_eta(xx,t)
35439  */
35440  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1816, __pyx_L1_error)
35441  __Pyx_GOTREF(__pyx_t_1);
35442  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1816, __pyx_L1_error)
35443  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
35444  (__pyx_v_xx[1]) = __pyx_t_2;
35445 
35446  /* "WaveTools.py":1817
35447  * xx[0] = x[0]
35448  * xx[1] = x[1]
35449  * xx[2] = x[2] # <<<<<<<<<<<<<<
35450  * return self._cpp_eta(xx,t)
35451  *
35452  */
35453  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1817, __pyx_L1_error)
35454  __Pyx_GOTREF(__pyx_t_1);
35455  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1817, __pyx_L1_error)
35456  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
35457  (__pyx_v_xx[2]) = __pyx_t_2;
35458 
35459  /* "WaveTools.py":1818
35460  * xx[1] = x[1]
35461  * xx[2] = x[2]
35462  * return self._cpp_eta(xx,t) # <<<<<<<<<<<<<<
35463  *
35464  * def _cpp_u(self, U, x, t):
35465  */
35466  __Pyx_XDECREF(__pyx_r);
35467  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1818, __pyx_L1_error)
35468  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1818, __pyx_L1_error)
35469  __Pyx_GOTREF(__pyx_t_1);
35470  __pyx_r = __pyx_t_1;
35471  __pyx_t_1 = 0;
35472  goto __pyx_L0;
35473 
35474  /* "WaveTools.py":1799
35475  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast)
35476  *
35477  * def eta(self, x, t): # <<<<<<<<<<<<<<
35478  * """Calculates free surface elevation (RandomWaves class)
35479  * Parameters
35480  */
35481 
35482  /* function exit code */
35483  __pyx_L1_error:;
35484  __Pyx_XDECREF(__pyx_t_1);
35485  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
35486  __pyx_r = NULL;
35487  __pyx_L0:;
35488  __Pyx_XGIVEREF(__pyx_r);
35489  __Pyx_RefNannyFinishContext();
35490  return __pyx_r;
35491 }
35492 
35493 /* "WaveTools.py":1820
35494  * return self._cpp_eta(xx,t)
35495  *
35496  * def _cpp_u(self, U, x, t): # <<<<<<<<<<<<<<
35497  *
35498  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast)
35499  */
35500 
35501 static void __pyx_f_9WaveTools_23MultiSpectraRandomWaves__cpp_u(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
35502  __Pyx_RefNannyDeclarations
35503  __Pyx_RefNannySetupContext("_cpp_u", 0);
35504 
35505  /* "WaveTools.py":1822
35506  * def _cpp_u(self, U, x, t):
35507  *
35508  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast) # <<<<<<<<<<<<<<
35509  *
35510  * def u(self, x, t):
35511  */
35512  proteus::__cpp_uDir(__pyx_v_U, __pyx_v_x, __pyx_v_t, __pyx_v_self->kDirM_, __pyx_v_self->kiM_, __pyx_v_self->omegaM_, __pyx_v_self->phiM_, __pyx_v_self->aiM_, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->Nall, __pyx_v_self->waveDirM_, __pyx_v_self->vDir_, __pyx_v_self->tanhM_, __pyx_v_self->gAbs, __pyx_v_self->fast);
35513 
35514  /* "WaveTools.py":1820
35515  * return self._cpp_eta(xx,t)
35516  *
35517  * def _cpp_u(self, U, x, t): # <<<<<<<<<<<<<<
35518  *
35519  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast)
35520  */
35521 
35522  /* function exit code */
35523  __Pyx_RefNannyFinishContext();
35524 }
35525 
35526 /* "WaveTools.py":1824
35527  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast)
35528  *
35529  * def u(self, x, t): # <<<<<<<<<<<<<<
35530  * """Calculates wave velocity vector (RandomWaves class)
35531  * Parameters
35532  */
35533 
35534 /* Python wrapper */
35535 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
35536 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u[] = "Calculates wave velocity vector (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
35537 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u};
35538 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
35539  PyObject *__pyx_v_x = 0;
35540  PyObject *__pyx_v_t = 0;
35541  int __pyx_lineno = 0;
35542  const char *__pyx_filename = NULL;
35543  int __pyx_clineno = 0;
35544  PyObject *__pyx_r = 0;
35545  __Pyx_RefNannyDeclarations
35546  __Pyx_RefNannySetupContext("u (wrapper)", 0);
35547  {
35548  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
35549  PyObject* values[2] = {0,0};
35550  if (unlikely(__pyx_kwds)) {
35551  Py_ssize_t kw_args;
35552  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
35553  switch (pos_args) {
35554  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
35555  CYTHON_FALLTHROUGH;
35556  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
35557  CYTHON_FALLTHROUGH;
35558  case 0: break;
35559  default: goto __pyx_L5_argtuple_error;
35560  }
35561  kw_args = PyDict_Size(__pyx_kwds);
35562  switch (pos_args) {
35563  case 0:
35564  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
35565  else goto __pyx_L5_argtuple_error;
35566  CYTHON_FALLTHROUGH;
35567  case 1:
35568  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
35569  else {
35570  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 1824, __pyx_L3_error)
35571  }
35572  }
35573  if (unlikely(kw_args > 0)) {
35574  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 1824, __pyx_L3_error)
35575  }
35576  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
35577  goto __pyx_L5_argtuple_error;
35578  } else {
35579  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
35580  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
35581  }
35582  __pyx_v_x = values[0];
35583  __pyx_v_t = values[1];
35584  }
35585  goto __pyx_L4_argument_unpacking_done;
35586  __pyx_L5_argtuple_error:;
35587  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1824, __pyx_L3_error)
35588  __pyx_L3_error:;
35589  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
35590  __Pyx_RefNannyFinishContext();
35591  return NULL;
35592  __pyx_L4_argument_unpacking_done:;
35593  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
35594 
35595  /* function exit code */
35596  __Pyx_RefNannyFinishContext();
35597  return __pyx_r;
35598 }
35599 
35600 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
35601  double __pyx_v_xx[3];
35602  double __pyx_v_cppU[3];
35603  PyObject *__pyx_v_ii = NULL;
35604  PyObject *__pyx_v_U = NULL;
35605  PyObject *__pyx_r = NULL;
35606  __Pyx_RefNannyDeclarations
35607  PyObject *__pyx_t_1 = NULL;
35608  PyObject *__pyx_t_2 = NULL;
35609  PyObject *__pyx_t_3 = NULL;
35610  Py_ssize_t __pyx_t_4;
35611  PyObject *(*__pyx_t_5)(PyObject *);
35612  double __pyx_t_6;
35613  Py_ssize_t __pyx_t_7;
35614  int __pyx_lineno = 0;
35615  const char *__pyx_filename = NULL;
35616  int __pyx_clineno = 0;
35617  __Pyx_RefNannySetupContext("u", 0);
35618 
35619  /* "WaveTools.py":1842
35620  * cython.declare(xx=cython.double[3])
35621  * cython.declare(cppU=cython.double[3])
35622  * for ii in range(3): # <<<<<<<<<<<<<<
35623  * xx[ii] = x[ii]
35624  * cppU[ii] = 0.
35625  */
35626  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1842, __pyx_L1_error)
35627  __Pyx_GOTREF(__pyx_t_2);
35628  __pyx_t_3 = NULL;
35629  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
35630  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
35631  if (likely(__pyx_t_3)) {
35632  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
35633  __Pyx_INCREF(__pyx_t_3);
35634  __Pyx_INCREF(function);
35635  __Pyx_DECREF_SET(__pyx_t_2, function);
35636  }
35637  }
35638  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
35639  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
35640  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L1_error)
35641  __Pyx_GOTREF(__pyx_t_1);
35642  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
35643  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
35644  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
35645  __pyx_t_5 = NULL;
35646  } else {
35647  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1842, __pyx_L1_error)
35648  __Pyx_GOTREF(__pyx_t_2);
35649  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1842, __pyx_L1_error)
35650  }
35651  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
35652  for (;;) {
35653  if (likely(!__pyx_t_5)) {
35654  if (likely(PyList_CheckExact(__pyx_t_2))) {
35655  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
35656  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
35657  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1842, __pyx_L1_error)
35658  #else
35659  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L1_error)
35660  __Pyx_GOTREF(__pyx_t_1);
35661  #endif
35662  } else {
35663  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
35664  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
35665  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1842, __pyx_L1_error)
35666  #else
35667  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L1_error)
35668  __Pyx_GOTREF(__pyx_t_1);
35669  #endif
35670  }
35671  } else {
35672  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
35673  if (unlikely(!__pyx_t_1)) {
35674  PyObject* exc_type = PyErr_Occurred();
35675  if (exc_type) {
35676  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
35677  else __PYX_ERR(0, 1842, __pyx_L1_error)
35678  }
35679  break;
35680  }
35681  __Pyx_GOTREF(__pyx_t_1);
35682  }
35683  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
35684  __pyx_t_1 = 0;
35685 
35686  /* "WaveTools.py":1843
35687  * cython.declare(cppU=cython.double[3])
35688  * for ii in range(3):
35689  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
35690  * cppU[ii] = 0.
35691  * U = np.zeros(3,)
35692  */
35693  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1843, __pyx_L1_error)
35694  __Pyx_GOTREF(__pyx_t_1);
35695  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1843, __pyx_L1_error)
35696  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
35697  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1843, __pyx_L1_error)
35698  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
35699 
35700  /* "WaveTools.py":1844
35701  * for ii in range(3):
35702  * xx[ii] = x[ii]
35703  * cppU[ii] = 0. # <<<<<<<<<<<<<<
35704  * U = np.zeros(3,)
35705  * self._cpp_u(cppU,xx,t)
35706  */
35707  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1844, __pyx_L1_error)
35708  (__pyx_v_cppU[__pyx_t_7]) = 0.;
35709 
35710  /* "WaveTools.py":1842
35711  * cython.declare(xx=cython.double[3])
35712  * cython.declare(cppU=cython.double[3])
35713  * for ii in range(3): # <<<<<<<<<<<<<<
35714  * xx[ii] = x[ii]
35715  * cppU[ii] = 0.
35716  */
35717  }
35718  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
35719 
35720  /* "WaveTools.py":1845
35721  * xx[ii] = x[ii]
35722  * cppU[ii] = 0.
35723  * U = np.zeros(3,) # <<<<<<<<<<<<<<
35724  * self._cpp_u(cppU,xx,t)
35725  * U[0] = cppU[0]
35726  */
35727  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1845, __pyx_L1_error)
35728  __Pyx_GOTREF(__pyx_t_1);
35729  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1845, __pyx_L1_error)
35730  __Pyx_GOTREF(__pyx_t_3);
35731  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
35732  __pyx_t_1 = NULL;
35733  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
35734  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
35735  if (likely(__pyx_t_1)) {
35736  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
35737  __Pyx_INCREF(__pyx_t_1);
35738  __Pyx_INCREF(function);
35739  __Pyx_DECREF_SET(__pyx_t_3, function);
35740  }
35741  }
35742  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
35743  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
35744  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1845, __pyx_L1_error)
35745  __Pyx_GOTREF(__pyx_t_2);
35746  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
35747  __pyx_v_U = __pyx_t_2;
35748  __pyx_t_2 = 0;
35749 
35750  /* "WaveTools.py":1846
35751  * cppU[ii] = 0.
35752  * U = np.zeros(3,)
35753  * self._cpp_u(cppU,xx,t) # <<<<<<<<<<<<<<
35754  * U[0] = cppU[0]
35755  * U[1] = cppU[1]
35756  */
35757  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1846, __pyx_L1_error)
35758  ((struct __pyx_vtabstruct_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self->__pyx_vtab)->_cpp_u(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
35759 
35760  /* "WaveTools.py":1847
35761  * U = np.zeros(3,)
35762  * self._cpp_u(cppU,xx,t)
35763  * U[0] = cppU[0] # <<<<<<<<<<<<<<
35764  * U[1] = cppU[1]
35765  * U[2] = cppU[2]
35766  */
35767  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1847, __pyx_L1_error)
35768  __Pyx_GOTREF(__pyx_t_2);
35769  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1847, __pyx_L1_error)
35770  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
35771 
35772  /* "WaveTools.py":1848
35773  * self._cpp_u(cppU,xx,t)
35774  * U[0] = cppU[0]
35775  * U[1] = cppU[1] # <<<<<<<<<<<<<<
35776  * U[2] = cppU[2]
35777  * return U
35778  */
35779  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error)
35780  __Pyx_GOTREF(__pyx_t_2);
35781  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1848, __pyx_L1_error)
35782  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
35783 
35784  /* "WaveTools.py":1849
35785  * U[0] = cppU[0]
35786  * U[1] = cppU[1]
35787  * U[2] = cppU[2] # <<<<<<<<<<<<<<
35788  * return U
35789  *
35790  */
35791  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1849, __pyx_L1_error)
35792  __Pyx_GOTREF(__pyx_t_2);
35793  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 1849, __pyx_L1_error)
35794  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
35795 
35796  /* "WaveTools.py":1850
35797  * U[1] = cppU[1]
35798  * U[2] = cppU[2]
35799  * return U # <<<<<<<<<<<<<<
35800  *
35801  *
35802  */
35803  __Pyx_XDECREF(__pyx_r);
35804  __Pyx_INCREF(__pyx_v_U);
35805  __pyx_r = __pyx_v_U;
35806  goto __pyx_L0;
35807 
35808  /* "WaveTools.py":1824
35809  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast)
35810  *
35811  * def u(self, x, t): # <<<<<<<<<<<<<<
35812  * """Calculates wave velocity vector (RandomWaves class)
35813  * Parameters
35814  */
35815 
35816  /* function exit code */
35817  __pyx_L1_error:;
35818  __Pyx_XDECREF(__pyx_t_1);
35819  __Pyx_XDECREF(__pyx_t_2);
35820  __Pyx_XDECREF(__pyx_t_3);
35821  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
35822  __pyx_r = NULL;
35823  __pyx_L0:;
35824  __Pyx_XDECREF(__pyx_v_ii);
35825  __Pyx_XDECREF(__pyx_v_U);
35826  __Pyx_XGIVEREF(__pyx_r);
35827  __Pyx_RefNannyFinishContext();
35828  return __pyx_r;
35829 }
35830 
35831 /* "WaveTools.pxd":154
35832  * cdef double[10000] phi_cM
35833  * cdef public:
35834  * double mwl,depth # <<<<<<<<<<<<<<
35835  * cdef double _cpp_eta(self, double* x, double t)
35836  * cdef void _cpp_u(self, double* U, double* x, double t)
35837  */
35838 
35839 /* Python wrapper */
35840 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
35841 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3mwl_1__get__(PyObject *__pyx_v_self) {
35842  PyObject *__pyx_r = 0;
35843  __Pyx_RefNannyDeclarations
35844  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
35845  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_3mwl___get__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self));
35846 
35847  /* function exit code */
35848  __Pyx_RefNannyFinishContext();
35849  return __pyx_r;
35850 }
35851 
35852 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_3mwl___get__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self) {
35853  PyObject *__pyx_r = NULL;
35854  __Pyx_RefNannyDeclarations
35855  PyObject *__pyx_t_1 = NULL;
35856  int __pyx_lineno = 0;
35857  const char *__pyx_filename = NULL;
35858  int __pyx_clineno = 0;
35859  __Pyx_RefNannySetupContext("__get__", 0);
35860  __Pyx_XDECREF(__pyx_r);
35861  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 154, __pyx_L1_error)
35862  __Pyx_GOTREF(__pyx_t_1);
35863  __pyx_r = __pyx_t_1;
35864  __pyx_t_1 = 0;
35865  goto __pyx_L0;
35866 
35867  /* function exit code */
35868  __pyx_L1_error:;
35869  __Pyx_XDECREF(__pyx_t_1);
35870  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
35871  __pyx_r = NULL;
35872  __pyx_L0:;
35873  __Pyx_XGIVEREF(__pyx_r);
35874  __Pyx_RefNannyFinishContext();
35875  return __pyx_r;
35876 }
35877 
35878 /* Python wrapper */
35879 static int __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
35880 static int __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
35881  int __pyx_r;
35882  __Pyx_RefNannyDeclarations
35883  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
35884  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_3mwl_2__set__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
35885 
35886  /* function exit code */
35887  __Pyx_RefNannyFinishContext();
35888  return __pyx_r;
35889 }
35890 
35891 static int __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
35892  int __pyx_r;
35893  __Pyx_RefNannyDeclarations
35894  double __pyx_t_1;
35895  int __pyx_lineno = 0;
35896  const char *__pyx_filename = NULL;
35897  int __pyx_clineno = 0;
35898  __Pyx_RefNannySetupContext("__set__", 0);
35899  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 154, __pyx_L1_error)
35900  __pyx_v_self->mwl = __pyx_t_1;
35901 
35902  /* function exit code */
35903  __pyx_r = 0;
35904  goto __pyx_L0;
35905  __pyx_L1_error:;
35906  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
35907  __pyx_r = -1;
35908  __pyx_L0:;
35909  __Pyx_RefNannyFinishContext();
35910  return __pyx_r;
35911 }
35912 
35913 /* Python wrapper */
35914 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5depth_1__get__(PyObject *__pyx_v_self); /*proto*/
35915 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5depth_1__get__(PyObject *__pyx_v_self) {
35916  PyObject *__pyx_r = 0;
35917  __Pyx_RefNannyDeclarations
35918  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
35919  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_5depth___get__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self));
35920 
35921  /* function exit code */
35922  __Pyx_RefNannyFinishContext();
35923  return __pyx_r;
35924 }
35925 
35926 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_5depth___get__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self) {
35927  PyObject *__pyx_r = NULL;
35928  __Pyx_RefNannyDeclarations
35929  PyObject *__pyx_t_1 = NULL;
35930  int __pyx_lineno = 0;
35931  const char *__pyx_filename = NULL;
35932  int __pyx_clineno = 0;
35933  __Pyx_RefNannySetupContext("__get__", 0);
35934  __Pyx_XDECREF(__pyx_r);
35935  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 154, __pyx_L1_error)
35936  __Pyx_GOTREF(__pyx_t_1);
35937  __pyx_r = __pyx_t_1;
35938  __pyx_t_1 = 0;
35939  goto __pyx_L0;
35940 
35941  /* function exit code */
35942  __pyx_L1_error:;
35943  __Pyx_XDECREF(__pyx_t_1);
35944  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.depth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
35945  __pyx_r = NULL;
35946  __pyx_L0:;
35947  __Pyx_XGIVEREF(__pyx_r);
35948  __Pyx_RefNannyFinishContext();
35949  return __pyx_r;
35950 }
35951 
35952 /* Python wrapper */
35953 static int __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
35954 static int __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
35955  int __pyx_r;
35956  __Pyx_RefNannyDeclarations
35957  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
35958  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_5depth_2__set__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
35959 
35960  /* function exit code */
35961  __Pyx_RefNannyFinishContext();
35962  return __pyx_r;
35963 }
35964 
35965 static int __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_5depth_2__set__(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, PyObject *__pyx_v_value) {
35966  int __pyx_r;
35967  __Pyx_RefNannyDeclarations
35968  double __pyx_t_1;
35969  int __pyx_lineno = 0;
35970  const char *__pyx_filename = NULL;
35971  int __pyx_clineno = 0;
35972  __Pyx_RefNannySetupContext("__set__", 0);
35973  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 154, __pyx_L1_error)
35974  __pyx_v_self->depth = __pyx_t_1;
35975 
35976  /* function exit code */
35977  __pyx_r = 0;
35978  goto __pyx_L0;
35979  __pyx_L1_error:;
35980  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.depth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
35981  __pyx_r = -1;
35982  __pyx_L0:;
35983  __Pyx_RefNannyFinishContext();
35984  return __pyx_r;
35985 }
35986 
35987 /* "(tree fragment)":1
35988  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
35989  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
35990  * def __setstate_cython__(self, __pyx_state):
35991  */
35992 
35993 /* Python wrapper */
35994 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
35995 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_7__reduce_cython__, METH_NOARGS, 0};
35996 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
35997  PyObject *__pyx_r = 0;
35998  __Pyx_RefNannyDeclarations
35999  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
36000  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_6__reduce_cython__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self));
36001 
36002  /* function exit code */
36003  __Pyx_RefNannyFinishContext();
36004  return __pyx_r;
36005 }
36006 
36007 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self) {
36008  PyObject *__pyx_r = NULL;
36009  __Pyx_RefNannyDeclarations
36010  PyObject *__pyx_t_1 = NULL;
36011  int __pyx_lineno = 0;
36012  const char *__pyx_filename = NULL;
36013  int __pyx_clineno = 0;
36014  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
36015 
36016  /* "(tree fragment)":2
36017  * def __reduce_cython__(self):
36018  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
36019  * def __setstate_cython__(self, __pyx_state):
36020  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36021  */
36022  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
36023  __Pyx_GOTREF(__pyx_t_1);
36024  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
36025  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
36026  __PYX_ERR(1, 2, __pyx_L1_error)
36027 
36028  /* "(tree fragment)":1
36029  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
36030  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36031  * def __setstate_cython__(self, __pyx_state):
36032  */
36033 
36034  /* function exit code */
36035  __pyx_L1_error:;
36036  __Pyx_XDECREF(__pyx_t_1);
36037  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
36038  __pyx_r = NULL;
36039  __Pyx_XGIVEREF(__pyx_r);
36040  __Pyx_RefNannyFinishContext();
36041  return __pyx_r;
36042 }
36043 
36044 /* "(tree fragment)":3
36045  * def __reduce_cython__(self):
36046  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36047  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
36048  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36049  */
36050 
36051 /* Python wrapper */
36052 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
36053 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_9__setstate_cython__, METH_O, 0};
36054 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
36055  PyObject *__pyx_r = 0;
36056  __Pyx_RefNannyDeclarations
36057  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
36058  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_8__setstate_cython__(((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
36059 
36060  /* function exit code */
36061  __Pyx_RefNannyFinishContext();
36062  return __pyx_r;
36063 }
36064 
36065 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
36066  PyObject *__pyx_r = NULL;
36067  __Pyx_RefNannyDeclarations
36068  PyObject *__pyx_t_1 = NULL;
36069  int __pyx_lineno = 0;
36070  const char *__pyx_filename = NULL;
36071  int __pyx_clineno = 0;
36072  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
36073 
36074  /* "(tree fragment)":4
36075  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36076  * def __setstate_cython__(self, __pyx_state):
36077  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
36078  */
36079  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
36080  __Pyx_GOTREF(__pyx_t_1);
36081  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
36082  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
36083  __PYX_ERR(1, 4, __pyx_L1_error)
36084 
36085  /* "(tree fragment)":3
36086  * def __reduce_cython__(self):
36087  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36088  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
36089  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
36090  */
36091 
36092  /* function exit code */
36093  __pyx_L1_error:;
36094  __Pyx_XDECREF(__pyx_t_1);
36095  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
36096  __pyx_r = NULL;
36097  __Pyx_XGIVEREF(__pyx_r);
36098  __Pyx_RefNannyFinishContext();
36099  return __pyx_r;
36100 }
36101 
36102 /* "WaveTools.py":1898
36103  *
36104  * """
36105  * def __cinit__(self, # <<<<<<<<<<<<<<
36106  * M, #half bin of frequencies
36107  * Tp, # np array with
36108  */
36109 
36110 /* Python wrapper */
36111 static int __pyx_pw_9WaveTools_16DirectionalWaves_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
36112 static int __pyx_pw_9WaveTools_16DirectionalWaves_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
36113  PyObject *__pyx_v_M = 0;
36114  PyObject *__pyx_v_Tp = 0;
36115  PyObject *__pyx_v_Hs = 0;
36116  PyObject *__pyx_v_mwl = 0;
36117  PyObject *__pyx_v_depth = 0;
36118  PyObject *__pyx_v_waveDir0 = 0;
36119  PyObject *__pyx_v_g = 0;
36120  PyObject *__pyx_v_N = 0;
36121  PyObject *__pyx_v_bandFactor = 0;
36122  PyObject *__pyx_v_spectName = 0;
36123  PyObject *__pyx_v_spreadName = 0;
36124  PyObject *__pyx_v_spectral_params = 0;
36125  PyObject *__pyx_v_spread_params = 0;
36126  PyObject *__pyx_v_phi = 0;
36127  PyObject *__pyx_v_phiSymm = 0;
36128  PyObject *__pyx_v_fast = 0;
36129  int __pyx_lineno = 0;
36130  const char *__pyx_filename = NULL;
36131  int __pyx_clineno = 0;
36132  int __pyx_r;
36133  __Pyx_RefNannyDeclarations
36134  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
36135  {
36136  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_M,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir0,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spreadName,&__pyx_n_s_spectral_params,&__pyx_n_s_spread_params,&__pyx_n_s_phi,&__pyx_n_s_phiSymm,&__pyx_n_s_fast,0};
36137  PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
36138 
36139  /* "WaveTools.py":1910
36140  * spectName ,# random words will result in error and return the available spectra
36141  * spreadName ,# random words will result in error and return the available spectra
36142  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
36143  * spread_params = None,
36144  * phi=None, # phi must be an (2*M+1)*N numpy array
36145  */
36146  values[11] = ((PyObject *)Py_None);
36147 
36148  /* "WaveTools.py":1911
36149  * spreadName ,# random words will result in error and return the available spectra
36150  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
36151  * spread_params = None, # <<<<<<<<<<<<<<
36152  * phi=None, # phi must be an (2*M+1)*N numpy array
36153  * phiSymm = False, # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
36154  */
36155  values[12] = ((PyObject *)Py_None);
36156 
36157  /* "WaveTools.py":1912
36158  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
36159  * spread_params = None,
36160  * phi=None, # phi must be an (2*M+1)*N numpy array # <<<<<<<<<<<<<<
36161  * phiSymm = False, # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
36162  * fast = True ):
36163  */
36164  values[13] = ((PyObject *)Py_None);
36165 
36166  /* "WaveTools.py":1913
36167  * spread_params = None,
36168  * phi=None, # phi must be an (2*M+1)*N numpy array
36169  * phiSymm = False, # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2] # <<<<<<<<<<<<<<
36170  * fast = True ):
36171  * self.fast = fast
36172  */
36173  values[14] = ((PyObject *)Py_False);
36174 
36175  /* "WaveTools.py":1914
36176  * phi=None, # phi must be an (2*M+1)*N numpy array
36177  * phiSymm = False, # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
36178  * fast = True ): # <<<<<<<<<<<<<<
36179  * self.fast = fast
36180  * validSpread = [cos2s,mitsuyasu]
36181  */
36182  values[15] = ((PyObject *)Py_True);
36183  if (unlikely(__pyx_kwds)) {
36184  Py_ssize_t kw_args;
36185  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
36186  switch (pos_args) {
36187  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
36188  CYTHON_FALLTHROUGH;
36189  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
36190  CYTHON_FALLTHROUGH;
36191  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
36192  CYTHON_FALLTHROUGH;
36193  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
36194  CYTHON_FALLTHROUGH;
36195  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
36196  CYTHON_FALLTHROUGH;
36197  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
36198  CYTHON_FALLTHROUGH;
36199  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
36200  CYTHON_FALLTHROUGH;
36201  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
36202  CYTHON_FALLTHROUGH;
36203  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
36204  CYTHON_FALLTHROUGH;
36205  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
36206  CYTHON_FALLTHROUGH;
36207  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
36208  CYTHON_FALLTHROUGH;
36209  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
36210  CYTHON_FALLTHROUGH;
36211  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
36212  CYTHON_FALLTHROUGH;
36213  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
36214  CYTHON_FALLTHROUGH;
36215  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
36216  CYTHON_FALLTHROUGH;
36217  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
36218  CYTHON_FALLTHROUGH;
36219  case 0: break;
36220  default: goto __pyx_L5_argtuple_error;
36221  }
36222  kw_args = PyDict_Size(__pyx_kwds);
36223  switch (pos_args) {
36224  case 0:
36225  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
36226  else goto __pyx_L5_argtuple_error;
36227  CYTHON_FALLTHROUGH;
36228  case 1:
36229  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
36230  else {
36231  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 1); __PYX_ERR(0, 1898, __pyx_L3_error)
36232  }
36233  CYTHON_FALLTHROUGH;
36234  case 2:
36235  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
36236  else {
36237  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 2); __PYX_ERR(0, 1898, __pyx_L3_error)
36238  }
36239  CYTHON_FALLTHROUGH;
36240  case 3:
36241  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
36242  else {
36243  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 3); __PYX_ERR(0, 1898, __pyx_L3_error)
36244  }
36245  CYTHON_FALLTHROUGH;
36246  case 4:
36247  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
36248  else {
36249  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 4); __PYX_ERR(0, 1898, __pyx_L3_error)
36250  }
36251  CYTHON_FALLTHROUGH;
36252  case 5:
36253  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir0)) != 0)) kw_args--;
36254  else {
36255  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 5); __PYX_ERR(0, 1898, __pyx_L3_error)
36256  }
36257  CYTHON_FALLTHROUGH;
36258  case 6:
36259  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
36260  else {
36261  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 6); __PYX_ERR(0, 1898, __pyx_L3_error)
36262  }
36263  CYTHON_FALLTHROUGH;
36264  case 7:
36265  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
36266  else {
36267  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 7); __PYX_ERR(0, 1898, __pyx_L3_error)
36268  }
36269  CYTHON_FALLTHROUGH;
36270  case 8:
36271  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
36272  else {
36273  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 8); __PYX_ERR(0, 1898, __pyx_L3_error)
36274  }
36275  CYTHON_FALLTHROUGH;
36276  case 9:
36277  if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
36278  else {
36279  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 9); __PYX_ERR(0, 1898, __pyx_L3_error)
36280  }
36281  CYTHON_FALLTHROUGH;
36282  case 10:
36283  if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spreadName)) != 0)) kw_args--;
36284  else {
36285  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, 10); __PYX_ERR(0, 1898, __pyx_L3_error)
36286  }
36287  CYTHON_FALLTHROUGH;
36288  case 11:
36289  if (kw_args > 0) {
36290  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params);
36291  if (value) { values[11] = value; kw_args--; }
36292  }
36293  CYTHON_FALLTHROUGH;
36294  case 12:
36295  if (kw_args > 0) {
36296  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spread_params);
36297  if (value) { values[12] = value; kw_args--; }
36298  }
36299  CYTHON_FALLTHROUGH;
36300  case 13:
36301  if (kw_args > 0) {
36302  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi);
36303  if (value) { values[13] = value; kw_args--; }
36304  }
36305  CYTHON_FALLTHROUGH;
36306  case 14:
36307  if (kw_args > 0) {
36308  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phiSymm);
36309  if (value) { values[14] = value; kw_args--; }
36310  }
36311  CYTHON_FALLTHROUGH;
36312  case 15:
36313  if (kw_args > 0) {
36314  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
36315  if (value) { values[15] = value; kw_args--; }
36316  }
36317  }
36318  if (unlikely(kw_args > 0)) {
36319  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1898, __pyx_L3_error)
36320  }
36321  } else {
36322  switch (PyTuple_GET_SIZE(__pyx_args)) {
36323  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
36324  CYTHON_FALLTHROUGH;
36325  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
36326  CYTHON_FALLTHROUGH;
36327  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
36328  CYTHON_FALLTHROUGH;
36329  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
36330  CYTHON_FALLTHROUGH;
36331  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
36332  CYTHON_FALLTHROUGH;
36333  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
36334  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
36335  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
36336  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
36337  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
36338  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
36339  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
36340  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
36341  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
36342  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
36343  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
36344  break;
36345  default: goto __pyx_L5_argtuple_error;
36346  }
36347  }
36348  __pyx_v_M = values[0];
36349  __pyx_v_Tp = values[1];
36350  __pyx_v_Hs = values[2];
36351  __pyx_v_mwl = values[3];
36352  __pyx_v_depth = values[4];
36353  __pyx_v_waveDir0 = values[5];
36354  __pyx_v_g = values[6];
36355  __pyx_v_N = values[7];
36356  __pyx_v_bandFactor = values[8];
36357  __pyx_v_spectName = values[9];
36358  __pyx_v_spreadName = values[10];
36359  __pyx_v_spectral_params = values[11];
36360  __pyx_v_spread_params = values[12];
36361  __pyx_v_phi = values[13];
36362  __pyx_v_phiSymm = values[14];
36363  __pyx_v_fast = values[15];
36364  }
36365  goto __pyx_L4_argument_unpacking_done;
36366  __pyx_L5_argtuple_error:;
36367  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 11, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1898, __pyx_L3_error)
36368  __pyx_L3_error:;
36369  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
36370  __Pyx_RefNannyFinishContext();
36371  return -1;
36372  __pyx_L4_argument_unpacking_done:;
36373  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves___cinit__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self), __pyx_v_M, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir0, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spreadName, __pyx_v_spectral_params, __pyx_v_spread_params, __pyx_v_phi, __pyx_v_phiSymm, __pyx_v_fast);
36374 
36375  /* "WaveTools.py":1898
36376  *
36377  * """
36378  * def __cinit__(self, # <<<<<<<<<<<<<<
36379  * M, #half bin of frequencies
36380  * Tp, # np array with
36381  */
36382 
36383  /* function exit code */
36384  __Pyx_RefNannyFinishContext();
36385  return __pyx_r;
36386 }
36387 
36388 static int __pyx_pf_9WaveTools_16DirectionalWaves___cinit__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_M, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir0, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spreadName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_spread_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_phiSymm, PyObject *__pyx_v_fast) {
36389  PyObject *__pyx_v_validSpread = NULL;
36390  PyObject *__pyx_v_spread_fun = NULL;
36391  struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_RW = NULL;
36392  PyObject *__pyx_v_rotation3D = NULL;
36393  PyObject *__pyx_v_thetas = NULL;
36394  PyObject *__pyx_v_dth = NULL;
36395  PyObject *__pyx_v_temp_array = NULL;
36396  PyObject *__pyx_v_directions = NULL;
36397  PyObject *__pyx_v_rr = NULL;
36398  PyObject *__pyx_v_theta = NULL;
36399  PyObject *__pyx_v_i = NULL;
36400  PyObject *__pyx_v_theta_m = NULL;
36401  PyObject *__pyx_v_Si_Sp = NULL;
36402  PyObject *__pyx_v_freq = NULL;
36403  PyObject *__pyx_v_ii = NULL;
36404  PyObject *__pyx_v_nn = NULL;
36405  PyObject *__pyx_v_mm = NULL;
36406  PyObject *__pyx_v_ij = NULL;
36407  PyObject *__pyx_v_kk = NULL;
36408  int __pyx_r;
36409  __Pyx_RefNannyDeclarations
36410  bool __pyx_t_1;
36411  PyObject *__pyx_t_2 = NULL;
36412  PyObject *__pyx_t_3 = NULL;
36413  PyObject *__pyx_t_4 = NULL;
36414  int __pyx_t_5;
36415  PyObject *__pyx_t_6 = NULL;
36416  int __pyx_t_7;
36417  PyObject *__pyx_t_8 = NULL;
36418  PyObject *__pyx_t_9 = NULL;
36419  PyObject *__pyx_t_10 = NULL;
36420  PyObject *__pyx_t_11 = NULL;
36421  double __pyx_t_12;
36422  Py_ssize_t __pyx_t_13;
36423  int __pyx_t_14;
36424  PyObject *(*__pyx_t_15)(PyObject *);
36425  PyObject *__pyx_t_16 = NULL;
36426  PyObject *__pyx_t_17 = NULL;
36427  PyObject *__pyx_t_18 = NULL;
36428  Py_ssize_t __pyx_t_19;
36429  PyObject *(*__pyx_t_20)(PyObject *);
36430  double *__pyx_t_21;
36431  Py_ssize_t __pyx_t_22;
36432  PyObject *(*__pyx_t_23)(PyObject *);
36433  Py_ssize_t __pyx_t_24;
36434  int __pyx_lineno = 0;
36435  const char *__pyx_filename = NULL;
36436  int __pyx_clineno = 0;
36437  __Pyx_RefNannySetupContext("__cinit__", 0);
36438 
36439  /* "WaveTools.py":1915
36440  * phiSymm = False, # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
36441  * fast = True ):
36442  * self.fast = fast # <<<<<<<<<<<<<<
36443  * validSpread = [cos2s,mitsuyasu]
36444  * spread_fun = loadExistingFunction(spreadName, validSpread)
36445  */
36446  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1915, __pyx_L1_error)
36447  __pyx_v_self->fast = __pyx_t_1;
36448 
36449  /* "WaveTools.py":1916
36450  * fast = True ):
36451  * self.fast = fast
36452  * validSpread = [cos2s,mitsuyasu] # <<<<<<<<<<<<<<
36453  * spread_fun = loadExistingFunction(spreadName, validSpread)
36454  * self.Mtot = 2*M+1
36455  */
36456  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cos2s); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1916, __pyx_L1_error)
36457  __Pyx_GOTREF(__pyx_t_2);
36458  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_mitsuyasu); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1916, __pyx_L1_error)
36459  __Pyx_GOTREF(__pyx_t_3);
36460  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1916, __pyx_L1_error)
36461  __Pyx_GOTREF(__pyx_t_4);
36462  __Pyx_GIVEREF(__pyx_t_2);
36463  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
36464  __Pyx_GIVEREF(__pyx_t_3);
36465  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
36466  __pyx_t_2 = 0;
36467  __pyx_t_3 = 0;
36468  __pyx_v_validSpread = ((PyObject*)__pyx_t_4);
36469  __pyx_t_4 = 0;
36470 
36471  /* "WaveTools.py":1917
36472  * self.fast = fast
36473  * validSpread = [cos2s,mitsuyasu]
36474  * spread_fun = loadExistingFunction(spreadName, validSpread) # <<<<<<<<<<<<<<
36475  * self.Mtot = 2*M+1
36476  * self.N = N
36477  */
36478  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1917, __pyx_L1_error)
36479  __Pyx_GOTREF(__pyx_t_3);
36480  __pyx_t_2 = NULL;
36481  __pyx_t_5 = 0;
36482  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
36483  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
36484  if (likely(__pyx_t_2)) {
36485  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
36486  __Pyx_INCREF(__pyx_t_2);
36487  __Pyx_INCREF(function);
36488  __Pyx_DECREF_SET(__pyx_t_3, function);
36489  __pyx_t_5 = 1;
36490  }
36491  }
36492  #if CYTHON_FAST_PYCALL
36493  if (PyFunction_Check(__pyx_t_3)) {
36494  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_spreadName, __pyx_v_validSpread};
36495  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1917, __pyx_L1_error)
36496  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
36497  __Pyx_GOTREF(__pyx_t_4);
36498  } else
36499  #endif
36500  #if CYTHON_FAST_PYCCALL
36501  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
36502  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_spreadName, __pyx_v_validSpread};
36503  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1917, __pyx_L1_error)
36504  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
36505  __Pyx_GOTREF(__pyx_t_4);
36506  } else
36507  #endif
36508  {
36509  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1917, __pyx_L1_error)
36510  __Pyx_GOTREF(__pyx_t_6);
36511  if (__pyx_t_2) {
36512  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
36513  }
36514  __Pyx_INCREF(__pyx_v_spreadName);
36515  __Pyx_GIVEREF(__pyx_v_spreadName);
36516  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_spreadName);
36517  __Pyx_INCREF(__pyx_v_validSpread);
36518  __Pyx_GIVEREF(__pyx_v_validSpread);
36519  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_validSpread);
36520  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1917, __pyx_L1_error)
36521  __Pyx_GOTREF(__pyx_t_4);
36522  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36523  }
36524  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36525  __pyx_v_spread_fun = __pyx_t_4;
36526  __pyx_t_4 = 0;
36527 
36528  /* "WaveTools.py":1918
36529  * validSpread = [cos2s,mitsuyasu]
36530  * spread_fun = loadExistingFunction(spreadName, validSpread)
36531  * self.Mtot = 2*M+1 # <<<<<<<<<<<<<<
36532  * self.N = N
36533  * self.Nall = self.Mtot*self.N
36534  */
36535  __pyx_t_4 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1918, __pyx_L1_error)
36536  __Pyx_GOTREF(__pyx_t_4);
36537  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1918, __pyx_L1_error)
36538  __Pyx_GOTREF(__pyx_t_3);
36539  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36540  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1918, __pyx_L1_error)
36541  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36542  __pyx_v_self->Mtot = __pyx_t_5;
36543 
36544  /* "WaveTools.py":1919
36545  * spread_fun = loadExistingFunction(spreadName, validSpread)
36546  * self.Mtot = 2*M+1
36547  * self.N = N # <<<<<<<<<<<<<<
36548  * self.Nall = self.Mtot*self.N
36549  * self.waveDir0 = setDirVector(waveDir0)
36550  */
36551  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_N); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1919, __pyx_L1_error)
36552  __pyx_v_self->N = __pyx_t_5;
36553 
36554  /* "WaveTools.py":1920
36555  * self.Mtot = 2*M+1
36556  * self.N = N
36557  * self.Nall = self.Mtot*self.N # <<<<<<<<<<<<<<
36558  * self.waveDir0 = setDirVector(waveDir0)
36559  * self.vDir = setVertDir(g)
36560  */
36561  __pyx_v_self->Nall = (__pyx_v_self->Mtot * __pyx_v_self->N);
36562 
36563  /* "WaveTools.py":1921
36564  * self.N = N
36565  * self.Nall = self.Mtot*self.N
36566  * self.waveDir0 = setDirVector(waveDir0) # <<<<<<<<<<<<<<
36567  * self.vDir = setVertDir(g)
36568  * if(self.Nall > 100000):
36569  */
36570  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1921, __pyx_L1_error)
36571  __Pyx_GOTREF(__pyx_t_4);
36572  __pyx_t_6 = NULL;
36573  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
36574  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
36575  if (likely(__pyx_t_6)) {
36576  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
36577  __Pyx_INCREF(__pyx_t_6);
36578  __Pyx_INCREF(function);
36579  __Pyx_DECREF_SET(__pyx_t_4, function);
36580  }
36581  }
36582  __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_v_waveDir0) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_waveDir0);
36583  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
36584  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1921, __pyx_L1_error)
36585  __Pyx_GOTREF(__pyx_t_3);
36586  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36587  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1921, __pyx_L1_error)
36588  __Pyx_GIVEREF(__pyx_t_3);
36589  __Pyx_GOTREF(__pyx_v_self->waveDir0);
36590  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir0));
36591  __pyx_v_self->waveDir0 = ((PyArrayObject *)__pyx_t_3);
36592  __pyx_t_3 = 0;
36593 
36594  /* "WaveTools.py":1922
36595  * self.Nall = self.Mtot*self.N
36596  * self.waveDir0 = setDirVector(waveDir0)
36597  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
36598  * if(self.Nall > 100000):
36599  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for DirectionalWaves is 100000 ",level=0)
36600  */
36601  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1922, __pyx_L1_error)
36602  __Pyx_GOTREF(__pyx_t_4);
36603  __pyx_t_6 = NULL;
36604  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
36605  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
36606  if (likely(__pyx_t_6)) {
36607  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
36608  __Pyx_INCREF(__pyx_t_6);
36609  __Pyx_INCREF(function);
36610  __Pyx_DECREF_SET(__pyx_t_4, function);
36611  }
36612  }
36613  __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_g);
36614  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
36615  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1922, __pyx_L1_error)
36616  __Pyx_GOTREF(__pyx_t_3);
36617  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36618  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1922, __pyx_L1_error)
36619  __Pyx_GIVEREF(__pyx_t_3);
36620  __Pyx_GOTREF(__pyx_v_self->vDir);
36621  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
36622  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_3);
36623  __pyx_t_3 = 0;
36624 
36625  /* "WaveTools.py":1923
36626  * self.waveDir0 = setDirVector(waveDir0)
36627  * self.vDir = setVertDir(g)
36628  * if(self.Nall > 100000): # <<<<<<<<<<<<<<
36629  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for DirectionalWaves is 100000 ",level=0)
36630  *
36631  */
36632  __pyx_t_7 = ((__pyx_v_self->Nall > 0x186A0) != 0);
36633  if (__pyx_t_7) {
36634 
36635  /* "WaveTools.py":1924
36636  * self.vDir = setVertDir(g)
36637  * if(self.Nall > 100000):
36638  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for DirectionalWaves is 100000 ",level=0) # <<<<<<<<<<<<<<
36639  *
36640  *
36641  */
36642  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1924, __pyx_L1_error)
36643  __Pyx_GOTREF(__pyx_t_3);
36644  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1924, __pyx_L1_error)
36645  __Pyx_GOTREF(__pyx_t_4);
36646  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 1924, __pyx_L1_error)
36647  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__36, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1924, __pyx_L1_error)
36648  __Pyx_GOTREF(__pyx_t_6);
36649  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36650  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36651  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36652 
36653  /* "WaveTools.py":1923
36654  * self.waveDir0 = setDirVector(waveDir0)
36655  * self.vDir = setVertDir(g)
36656  * if(self.Nall > 100000): # <<<<<<<<<<<<<<
36657  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for DirectionalWaves is 100000 ",level=0)
36658  *
36659  */
36660  }
36661 
36662  /* "WaveTools.py":1929
36663  *
36664  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
36665  * RW = RandomWaves( # <<<<<<<<<<<<<<
36666  * Tp, # np array with
36667  * Hs,
36668  */
36669  __pyx_t_6 = PyTuple_New(10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1929, __pyx_L1_error)
36670  __Pyx_GOTREF(__pyx_t_6);
36671  __Pyx_INCREF(__pyx_v_Tp);
36672  __Pyx_GIVEREF(__pyx_v_Tp);
36673  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_Tp);
36674  __Pyx_INCREF(__pyx_v_Hs);
36675  __Pyx_GIVEREF(__pyx_v_Hs);
36676  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_Hs);
36677  __Pyx_INCREF(__pyx_v_mwl);
36678  __Pyx_GIVEREF(__pyx_v_mwl);
36679  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_mwl);
36680  __Pyx_INCREF(__pyx_v_depth);
36681  __Pyx_GIVEREF(__pyx_v_depth);
36682  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_depth);
36683  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir0));
36684  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->waveDir0));
36685  PyTuple_SET_ITEM(__pyx_t_6, 4, ((PyObject *)__pyx_v_self->waveDir0));
36686  __Pyx_INCREF(__pyx_v_g);
36687  __Pyx_GIVEREF(__pyx_v_g);
36688  PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_v_g);
36689  __Pyx_INCREF(__pyx_v_N);
36690  __Pyx_GIVEREF(__pyx_v_N);
36691  PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_v_N);
36692  __Pyx_INCREF(__pyx_v_bandFactor);
36693  __Pyx_GIVEREF(__pyx_v_bandFactor);
36694  PyTuple_SET_ITEM(__pyx_t_6, 7, __pyx_v_bandFactor);
36695  __Pyx_INCREF(__pyx_v_spectName);
36696  __Pyx_GIVEREF(__pyx_v_spectName);
36697  PyTuple_SET_ITEM(__pyx_t_6, 8, __pyx_v_spectName);
36698  __Pyx_INCREF(__pyx_v_spectral_params);
36699  __Pyx_GIVEREF(__pyx_v_spectral_params);
36700  PyTuple_SET_ITEM(__pyx_t_6, 9, __pyx_v_spectral_params);
36701 
36702  /* "WaveTools.py":1940
36703  * spectName,# random words will result in error and return the available spectra
36704  * spectral_params, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
36705  * phi = None # <<<<<<<<<<<<<<
36706  * )
36707  *
36708  */
36709  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1940, __pyx_L1_error)
36710  __Pyx_GOTREF(__pyx_t_4);
36711  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_phi, Py_None) < 0) __PYX_ERR(0, 1940, __pyx_L1_error)
36712 
36713  /* "WaveTools.py":1929
36714  *
36715  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
36716  * RW = RandomWaves( # <<<<<<<<<<<<<<
36717  * Tp, # np array with
36718  * Hs,
36719  */
36720  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_RandomWaves), __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1929, __pyx_L1_error)
36721  __Pyx_GOTREF(__pyx_t_3);
36722  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36723  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36724  __pyx_v_RW = ((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_t_3);
36725  __pyx_t_3 = 0;
36726 
36727  /* "WaveTools.py":1946
36728  *
36729  * # Directional waves propagate usually in a plane -90 to 90 deg with respect to the direction vector, normal to the gavity direction. Rotating the waveDir0 vector around the g vector to produce the directional space
36730  * from .SpatialTools import rotation3D # <<<<<<<<<<<<<<
36731  * thetas = np.linspace(old_div(-M_PI,2),old_div(M_PI,2),2*M+1)
36732  * dth = (thetas[1] - thetas[0])
36733  */
36734  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1946, __pyx_L1_error)
36735  __Pyx_GOTREF(__pyx_t_3);
36736  __Pyx_INCREF(__pyx_n_s_rotation3D);
36737  __Pyx_GIVEREF(__pyx_n_s_rotation3D);
36738  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_rotation3D);
36739  __pyx_t_4 = __Pyx_Import(__pyx_n_s_SpatialTools, __pyx_t_3, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1946, __pyx_L1_error)
36740  __Pyx_GOTREF(__pyx_t_4);
36741  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36742  __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_rotation3D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1946, __pyx_L1_error)
36743  __Pyx_GOTREF(__pyx_t_3);
36744  __Pyx_INCREF(__pyx_t_3);
36745  __pyx_v_rotation3D = __pyx_t_3;
36746  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36747  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36748 
36749  /* "WaveTools.py":1947
36750  * # Directional waves propagate usually in a plane -90 to 90 deg with respect to the direction vector, normal to the gavity direction. Rotating the waveDir0 vector around the g vector to produce the directional space
36751  * from .SpatialTools import rotation3D
36752  * thetas = np.linspace(old_div(-M_PI,2),old_div(M_PI,2),2*M+1) # <<<<<<<<<<<<<<
36753  * dth = (thetas[1] - thetas[0])
36754  * self.waveDirs = np.zeros((2*M+1,3),)
36755  */
36756  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1947, __pyx_L1_error)
36757  __Pyx_GOTREF(__pyx_t_3);
36758  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1947, __pyx_L1_error)
36759  __Pyx_GOTREF(__pyx_t_6);
36760  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36761  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1947, __pyx_L1_error)
36762  __Pyx_GOTREF(__pyx_t_2);
36763  __pyx_t_8 = PyFloat_FromDouble((-M_PI)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1947, __pyx_L1_error)
36764  __Pyx_GOTREF(__pyx_t_8);
36765  __pyx_t_9 = NULL;
36766  __pyx_t_5 = 0;
36767  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
36768  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
36769  if (likely(__pyx_t_9)) {
36770  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
36771  __Pyx_INCREF(__pyx_t_9);
36772  __Pyx_INCREF(function);
36773  __Pyx_DECREF_SET(__pyx_t_2, function);
36774  __pyx_t_5 = 1;
36775  }
36776  }
36777  #if CYTHON_FAST_PYCALL
36778  if (PyFunction_Check(__pyx_t_2)) {
36779  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_int_2};
36780  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1947, __pyx_L1_error)
36781  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
36782  __Pyx_GOTREF(__pyx_t_3);
36783  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
36784  } else
36785  #endif
36786  #if CYTHON_FAST_PYCCALL
36787  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
36788  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_int_2};
36789  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1947, __pyx_L1_error)
36790  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
36791  __Pyx_GOTREF(__pyx_t_3);
36792  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
36793  } else
36794  #endif
36795  {
36796  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1947, __pyx_L1_error)
36797  __Pyx_GOTREF(__pyx_t_10);
36798  if (__pyx_t_9) {
36799  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
36800  }
36801  __Pyx_GIVEREF(__pyx_t_8);
36802  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_t_8);
36803  __Pyx_INCREF(__pyx_int_2);
36804  __Pyx_GIVEREF(__pyx_int_2);
36805  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_int_2);
36806  __pyx_t_8 = 0;
36807  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1947, __pyx_L1_error)
36808  __Pyx_GOTREF(__pyx_t_3);
36809  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
36810  }
36811  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
36812  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_old_div); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1947, __pyx_L1_error)
36813  __Pyx_GOTREF(__pyx_t_10);
36814  __pyx_t_8 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1947, __pyx_L1_error)
36815  __Pyx_GOTREF(__pyx_t_8);
36816  __pyx_t_9 = NULL;
36817  __pyx_t_5 = 0;
36818  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
36819  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
36820  if (likely(__pyx_t_9)) {
36821  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
36822  __Pyx_INCREF(__pyx_t_9);
36823  __Pyx_INCREF(function);
36824  __Pyx_DECREF_SET(__pyx_t_10, function);
36825  __pyx_t_5 = 1;
36826  }
36827  }
36828  #if CYTHON_FAST_PYCALL
36829  if (PyFunction_Check(__pyx_t_10)) {
36830  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_int_2};
36831  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1947, __pyx_L1_error)
36832  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
36833  __Pyx_GOTREF(__pyx_t_2);
36834  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
36835  } else
36836  #endif
36837  #if CYTHON_FAST_PYCCALL
36838  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
36839  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_int_2};
36840  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1947, __pyx_L1_error)
36841  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
36842  __Pyx_GOTREF(__pyx_t_2);
36843  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
36844  } else
36845  #endif
36846  {
36847  __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1947, __pyx_L1_error)
36848  __Pyx_GOTREF(__pyx_t_11);
36849  if (__pyx_t_9) {
36850  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
36851  }
36852  __Pyx_GIVEREF(__pyx_t_8);
36853  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_8);
36854  __Pyx_INCREF(__pyx_int_2);
36855  __Pyx_GIVEREF(__pyx_int_2);
36856  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, __pyx_int_2);
36857  __pyx_t_8 = 0;
36858  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1947, __pyx_L1_error)
36859  __Pyx_GOTREF(__pyx_t_2);
36860  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
36861  }
36862  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
36863  __pyx_t_10 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1947, __pyx_L1_error)
36864  __Pyx_GOTREF(__pyx_t_10);
36865  __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_10, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1947, __pyx_L1_error)
36866  __Pyx_GOTREF(__pyx_t_11);
36867  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
36868  __pyx_t_10 = NULL;
36869  __pyx_t_5 = 0;
36870  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
36871  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
36872  if (likely(__pyx_t_10)) {
36873  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
36874  __Pyx_INCREF(__pyx_t_10);
36875  __Pyx_INCREF(function);
36876  __Pyx_DECREF_SET(__pyx_t_6, function);
36877  __pyx_t_5 = 1;
36878  }
36879  }
36880  #if CYTHON_FAST_PYCALL
36881  if (PyFunction_Check(__pyx_t_6)) {
36882  PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_2, __pyx_t_11};
36883  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1947, __pyx_L1_error)
36884  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
36885  __Pyx_GOTREF(__pyx_t_4);
36886  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36887  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
36888  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
36889  } else
36890  #endif
36891  #if CYTHON_FAST_PYCCALL
36892  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
36893  PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_3, __pyx_t_2, __pyx_t_11};
36894  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1947, __pyx_L1_error)
36895  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
36896  __Pyx_GOTREF(__pyx_t_4);
36897  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
36898  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
36899  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
36900  } else
36901  #endif
36902  {
36903  __pyx_t_8 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1947, __pyx_L1_error)
36904  __Pyx_GOTREF(__pyx_t_8);
36905  if (__pyx_t_10) {
36906  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
36907  }
36908  __Pyx_GIVEREF(__pyx_t_3);
36909  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_3);
36910  __Pyx_GIVEREF(__pyx_t_2);
36911  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_t_2);
36912  __Pyx_GIVEREF(__pyx_t_11);
36913  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_t_11);
36914  __pyx_t_3 = 0;
36915  __pyx_t_2 = 0;
36916  __pyx_t_11 = 0;
36917  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1947, __pyx_L1_error)
36918  __Pyx_GOTREF(__pyx_t_4);
36919  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
36920  }
36921  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36922  __pyx_v_thetas = __pyx_t_4;
36923  __pyx_t_4 = 0;
36924 
36925  /* "WaveTools.py":1948
36926  * from .SpatialTools import rotation3D
36927  * thetas = np.linspace(old_div(-M_PI,2),old_div(M_PI,2),2*M+1)
36928  * dth = (thetas[1] - thetas[0]) # <<<<<<<<<<<<<<
36929  * self.waveDirs = np.zeros((2*M+1,3),)
36930  * self.phiDirs = np.zeros((2*M+1,N),)
36931  */
36932  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_thetas, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1948, __pyx_L1_error)
36933  __Pyx_GOTREF(__pyx_t_4);
36934  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_thetas, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1948, __pyx_L1_error)
36935  __Pyx_GOTREF(__pyx_t_6);
36936  __pyx_t_8 = PyNumber_Subtract(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1948, __pyx_L1_error)
36937  __Pyx_GOTREF(__pyx_t_8);
36938  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36939  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36940  __pyx_v_dth = __pyx_t_8;
36941  __pyx_t_8 = 0;
36942 
36943  /* "WaveTools.py":1949
36944  * thetas = np.linspace(old_div(-M_PI,2),old_div(M_PI,2),2*M+1)
36945  * dth = (thetas[1] - thetas[0])
36946  * self.waveDirs = np.zeros((2*M+1,3),) # <<<<<<<<<<<<<<
36947  * self.phiDirs = np.zeros((2*M+1,N),)
36948  * self.aiDirs = np.zeros((2*M+1,N),)
36949  */
36950  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1949, __pyx_L1_error)
36951  __Pyx_GOTREF(__pyx_t_6);
36952  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1949, __pyx_L1_error)
36953  __Pyx_GOTREF(__pyx_t_4);
36954  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36955  __pyx_t_6 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1949, __pyx_L1_error)
36956  __Pyx_GOTREF(__pyx_t_6);
36957  __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1949, __pyx_L1_error)
36958  __Pyx_GOTREF(__pyx_t_11);
36959  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36960  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1949, __pyx_L1_error)
36961  __Pyx_GOTREF(__pyx_t_6);
36962  __Pyx_GIVEREF(__pyx_t_11);
36963  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11);
36964  __Pyx_INCREF(__pyx_int_3);
36965  __Pyx_GIVEREF(__pyx_int_3);
36966  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
36967  __pyx_t_11 = 0;
36968  __pyx_t_11 = NULL;
36969  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
36970  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
36971  if (likely(__pyx_t_11)) {
36972  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
36973  __Pyx_INCREF(__pyx_t_11);
36974  __Pyx_INCREF(function);
36975  __Pyx_DECREF_SET(__pyx_t_4, function);
36976  }
36977  }
36978  __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_11, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
36979  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
36980  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
36981  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1949, __pyx_L1_error)
36982  __Pyx_GOTREF(__pyx_t_8);
36983  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
36984  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1949, __pyx_L1_error)
36985  __Pyx_GIVEREF(__pyx_t_8);
36986  __Pyx_GOTREF(__pyx_v_self->waveDirs);
36987  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDirs));
36988  __pyx_v_self->waveDirs = ((PyArrayObject *)__pyx_t_8);
36989  __pyx_t_8 = 0;
36990 
36991  /* "WaveTools.py":1950
36992  * dth = (thetas[1] - thetas[0])
36993  * self.waveDirs = np.zeros((2*M+1,3),)
36994  * self.phiDirs = np.zeros((2*M+1,N),) # <<<<<<<<<<<<<<
36995  * self.aiDirs = np.zeros((2*M+1,N),)
36996  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
36997  */
36998  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1950, __pyx_L1_error)
36999  __Pyx_GOTREF(__pyx_t_4);
37000  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1950, __pyx_L1_error)
37001  __Pyx_GOTREF(__pyx_t_6);
37002  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37003  __pyx_t_4 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1950, __pyx_L1_error)
37004  __Pyx_GOTREF(__pyx_t_4);
37005  __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1950, __pyx_L1_error)
37006  __Pyx_GOTREF(__pyx_t_11);
37007  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37008  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1950, __pyx_L1_error)
37009  __Pyx_GOTREF(__pyx_t_4);
37010  __Pyx_GIVEREF(__pyx_t_11);
37011  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11);
37012  __Pyx_INCREF(__pyx_v_N);
37013  __Pyx_GIVEREF(__pyx_v_N);
37014  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_N);
37015  __pyx_t_11 = 0;
37016  __pyx_t_11 = NULL;
37017  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
37018  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
37019  if (likely(__pyx_t_11)) {
37020  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
37021  __Pyx_INCREF(__pyx_t_11);
37022  __Pyx_INCREF(function);
37023  __Pyx_DECREF_SET(__pyx_t_6, function);
37024  }
37025  }
37026  __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_11, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4);
37027  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
37028  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37029  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1950, __pyx_L1_error)
37030  __Pyx_GOTREF(__pyx_t_8);
37031  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37032  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1950, __pyx_L1_error)
37033  __Pyx_GIVEREF(__pyx_t_8);
37034  __Pyx_GOTREF(__pyx_v_self->phiDirs);
37035  __Pyx_DECREF(((PyObject *)__pyx_v_self->phiDirs));
37036  __pyx_v_self->phiDirs = ((PyArrayObject *)__pyx_t_8);
37037  __pyx_t_8 = 0;
37038 
37039  /* "WaveTools.py":1951
37040  * self.waveDirs = np.zeros((2*M+1,3),)
37041  * self.phiDirs = np.zeros((2*M+1,N),)
37042  * self.aiDirs = np.zeros((2*M+1,N),) # <<<<<<<<<<<<<<
37043  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
37044  *
37045  */
37046  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1951, __pyx_L1_error)
37047  __Pyx_GOTREF(__pyx_t_6);
37048  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1951, __pyx_L1_error)
37049  __Pyx_GOTREF(__pyx_t_4);
37050  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37051  __pyx_t_6 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1951, __pyx_L1_error)
37052  __Pyx_GOTREF(__pyx_t_6);
37053  __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1951, __pyx_L1_error)
37054  __Pyx_GOTREF(__pyx_t_11);
37055  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37056  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1951, __pyx_L1_error)
37057  __Pyx_GOTREF(__pyx_t_6);
37058  __Pyx_GIVEREF(__pyx_t_11);
37059  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11);
37060  __Pyx_INCREF(__pyx_v_N);
37061  __Pyx_GIVEREF(__pyx_v_N);
37062  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_N);
37063  __pyx_t_11 = 0;
37064  __pyx_t_11 = NULL;
37065  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
37066  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
37067  if (likely(__pyx_t_11)) {
37068  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
37069  __Pyx_INCREF(__pyx_t_11);
37070  __Pyx_INCREF(function);
37071  __Pyx_DECREF_SET(__pyx_t_4, function);
37072  }
37073  }
37074  __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_11, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
37075  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
37076  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37077  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1951, __pyx_L1_error)
37078  __Pyx_GOTREF(__pyx_t_8);
37079  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37080  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1951, __pyx_L1_error)
37081  __Pyx_GIVEREF(__pyx_t_8);
37082  __Pyx_GOTREF(__pyx_v_self->aiDirs);
37083  __Pyx_DECREF(((PyObject *)__pyx_v_self->aiDirs));
37084  __pyx_v_self->aiDirs = ((PyArrayObject *)__pyx_t_8);
37085  __pyx_t_8 = 0;
37086 
37087  /* "WaveTools.py":1952
37088  * self.phiDirs = np.zeros((2*M+1,N),)
37089  * self.aiDirs = np.zeros((2*M+1,N),)
37090  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2]) # <<<<<<<<<<<<<<
37091  *
37092  * temp_array = np.zeros((1,3),)
37093  */
37094  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1952, __pyx_L1_error)
37095  __Pyx_GOTREF(__pyx_t_8);
37096  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1952, __pyx_L1_error)
37097  __Pyx_GOTREF(__pyx_t_4);
37098  __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1952, __pyx_L1_error)
37099  __Pyx_GOTREF(__pyx_t_6);
37100  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37101  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37102  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1952, __pyx_L1_error)
37103  __Pyx_GOTREF(__pyx_t_4);
37104  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1952, __pyx_L1_error)
37105  __Pyx_GOTREF(__pyx_t_8);
37106  __pyx_t_11 = PyNumber_Multiply(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1952, __pyx_L1_error)
37107  __Pyx_GOTREF(__pyx_t_11);
37108  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37109  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37110  __pyx_t_8 = PyNumber_Add(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1952, __pyx_L1_error)
37111  __Pyx_GOTREF(__pyx_t_8);
37112  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37113  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
37114  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1952, __pyx_L1_error)
37115  __Pyx_GOTREF(__pyx_t_11);
37116  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1952, __pyx_L1_error)
37117  __Pyx_GOTREF(__pyx_t_6);
37118  __pyx_t_4 = PyNumber_Multiply(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1952, __pyx_L1_error)
37119  __Pyx_GOTREF(__pyx_t_4);
37120  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
37121  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37122  __pyx_t_6 = PyNumber_Add(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1952, __pyx_L1_error)
37123  __Pyx_GOTREF(__pyx_t_6);
37124  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37125  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37126  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1952, __pyx_L1_error)
37127  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37128  __pyx_v_self->gAbs = sqrt(__pyx_t_12);
37129 
37130  /* "WaveTools.py":1954
37131  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
37132  *
37133  * temp_array = np.zeros((1,3),) # <<<<<<<<<<<<<<
37134  * temp_array[0,:] = waveDir0
37135  * directions = list(range(0,self.Mtot))
37136  */
37137  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1954, __pyx_L1_error)
37138  __Pyx_GOTREF(__pyx_t_4);
37139  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1954, __pyx_L1_error)
37140  __Pyx_GOTREF(__pyx_t_8);
37141  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37142  __pyx_t_4 = NULL;
37143  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
37144  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
37145  if (likely(__pyx_t_4)) {
37146  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
37147  __Pyx_INCREF(__pyx_t_4);
37148  __Pyx_INCREF(function);
37149  __Pyx_DECREF_SET(__pyx_t_8, function);
37150  }
37151  }
37152  __pyx_t_6 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_4, __pyx_tuple__37) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_tuple__37);
37153  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
37154  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1954, __pyx_L1_error)
37155  __Pyx_GOTREF(__pyx_t_6);
37156  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37157  __pyx_v_temp_array = __pyx_t_6;
37158  __pyx_t_6 = 0;
37159 
37160  /* "WaveTools.py":1955
37161  *
37162  * temp_array = np.zeros((1,3),)
37163  * temp_array[0,:] = waveDir0 # <<<<<<<<<<<<<<
37164  * directions = list(range(0,self.Mtot))
37165  *
37166  */
37167  if (unlikely(PyObject_SetItem(__pyx_v_temp_array, __pyx_tuple__11, __pyx_v_waveDir0) < 0)) __PYX_ERR(0, 1955, __pyx_L1_error)
37168 
37169  /* "WaveTools.py":1956
37170  * temp_array = np.zeros((1,3),)
37171  * temp_array[0,:] = waveDir0
37172  * directions = list(range(0,self.Mtot)) # <<<<<<<<<<<<<<
37173  *
37174  * # initialising wave directions
37175  */
37176  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1956, __pyx_L1_error)
37177  __Pyx_GOTREF(__pyx_t_8);
37178  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->Mtot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1956, __pyx_L1_error)
37179  __Pyx_GOTREF(__pyx_t_4);
37180  __pyx_t_11 = NULL;
37181  __pyx_t_5 = 0;
37182  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
37183  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
37184  if (likely(__pyx_t_11)) {
37185  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
37186  __Pyx_INCREF(__pyx_t_11);
37187  __Pyx_INCREF(function);
37188  __Pyx_DECREF_SET(__pyx_t_8, function);
37189  __pyx_t_5 = 1;
37190  }
37191  }
37192  #if CYTHON_FAST_PYCALL
37193  if (PyFunction_Check(__pyx_t_8)) {
37194  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_int_0, __pyx_t_4};
37195  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1956, __pyx_L1_error)
37196  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
37197  __Pyx_GOTREF(__pyx_t_6);
37198  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37199  } else
37200  #endif
37201  #if CYTHON_FAST_PYCCALL
37202  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
37203  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_int_0, __pyx_t_4};
37204  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1956, __pyx_L1_error)
37205  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
37206  __Pyx_GOTREF(__pyx_t_6);
37207  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37208  } else
37209  #endif
37210  {
37211  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1956, __pyx_L1_error)
37212  __Pyx_GOTREF(__pyx_t_2);
37213  if (__pyx_t_11) {
37214  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __pyx_t_11 = NULL;
37215  }
37216  __Pyx_INCREF(__pyx_int_0);
37217  __Pyx_GIVEREF(__pyx_int_0);
37218  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_int_0);
37219  __Pyx_GIVEREF(__pyx_t_4);
37220  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_t_4);
37221  __pyx_t_4 = 0;
37222  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1956, __pyx_L1_error)
37223  __Pyx_GOTREF(__pyx_t_6);
37224  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37225  }
37226  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37227  __pyx_t_8 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1956, __pyx_L1_error)
37228  __Pyx_GOTREF(__pyx_t_8);
37229  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37230  __pyx_v_directions = ((PyObject*)__pyx_t_8);
37231  __pyx_t_8 = 0;
37232 
37233  /* "WaveTools.py":1959
37234  *
37235  * # initialising wave directions
37236  * for rr in directions: # <<<<<<<<<<<<<<
37237  * theta = thetas[rr]
37238  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
37239  */
37240  __pyx_t_8 = __pyx_v_directions; __Pyx_INCREF(__pyx_t_8); __pyx_t_13 = 0;
37241  for (;;) {
37242  if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_8)) break;
37243  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
37244  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_13); __Pyx_INCREF(__pyx_t_6); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 1959, __pyx_L1_error)
37245  #else
37246  __pyx_t_6 = PySequence_ITEM(__pyx_t_8, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1959, __pyx_L1_error)
37247  __Pyx_GOTREF(__pyx_t_6);
37248  #endif
37249  __Pyx_XDECREF_SET(__pyx_v_rr, __pyx_t_6);
37250  __pyx_t_6 = 0;
37251 
37252  /* "WaveTools.py":1960
37253  * # initialising wave directions
37254  * for rr in directions:
37255  * theta = thetas[rr] # <<<<<<<<<<<<<<
37256  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
37257  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
37258  */
37259  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_thetas, __pyx_v_rr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1960, __pyx_L1_error)
37260  __Pyx_GOTREF(__pyx_t_6);
37261  __Pyx_XDECREF_SET(__pyx_v_theta, __pyx_t_6);
37262  __pyx_t_6 = 0;
37263 
37264  /* "WaveTools.py":1961
37265  * for rr in directions:
37266  * theta = thetas[rr]
37267  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:] # <<<<<<<<<<<<<<
37268  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
37269  *
37270  */
37271  __Pyx_INCREF(__pyx_v_rotation3D);
37272  __pyx_t_2 = __pyx_v_rotation3D; __pyx_t_4 = NULL;
37273  __pyx_t_5 = 0;
37274  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
37275  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
37276  if (likely(__pyx_t_4)) {
37277  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
37278  __Pyx_INCREF(__pyx_t_4);
37279  __Pyx_INCREF(function);
37280  __Pyx_DECREF_SET(__pyx_t_2, function);
37281  __pyx_t_5 = 1;
37282  }
37283  }
37284  #if CYTHON_FAST_PYCALL
37285  if (PyFunction_Check(__pyx_t_2)) {
37286  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_temp_array, __pyx_v_theta, ((PyObject *)__pyx_v_self->vDir)};
37287  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1961, __pyx_L1_error)
37288  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
37289  __Pyx_GOTREF(__pyx_t_6);
37290  } else
37291  #endif
37292  #if CYTHON_FAST_PYCCALL
37293  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
37294  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_temp_array, __pyx_v_theta, ((PyObject *)__pyx_v_self->vDir)};
37295  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1961, __pyx_L1_error)
37296  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
37297  __Pyx_GOTREF(__pyx_t_6);
37298  } else
37299  #endif
37300  {
37301  __pyx_t_11 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1961, __pyx_L1_error)
37302  __Pyx_GOTREF(__pyx_t_11);
37303  if (__pyx_t_4) {
37304  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
37305  }
37306  __Pyx_INCREF(__pyx_v_temp_array);
37307  __Pyx_GIVEREF(__pyx_v_temp_array);
37308  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_v_temp_array);
37309  __Pyx_INCREF(__pyx_v_theta);
37310  __Pyx_GIVEREF(__pyx_v_theta);
37311  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, __pyx_v_theta);
37312  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
37313  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->vDir));
37314  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_5, ((PyObject *)__pyx_v_self->vDir));
37315  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1961, __pyx_L1_error)
37316  __Pyx_GOTREF(__pyx_t_6);
37317  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
37318  }
37319  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37320  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_tuple__11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1961, __pyx_L1_error)
37321  __Pyx_GOTREF(__pyx_t_2);
37322  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37323  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1961, __pyx_L1_error)
37324  __Pyx_GOTREF(__pyx_t_6);
37325  __Pyx_INCREF(__pyx_v_rr);
37326  __Pyx_GIVEREF(__pyx_v_rr);
37327  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_rr);
37328  __Pyx_INCREF(__pyx_slice__4);
37329  __Pyx_GIVEREF(__pyx_slice__4);
37330  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__4);
37331  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->waveDirs), __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 1961, __pyx_L1_error)
37332  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37333  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37334 
37335  /* "WaveTools.py":1962
37336  * theta = thetas[rr]
37337  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
37338  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:]) # <<<<<<<<<<<<<<
37339  *
37340  *
37341  */
37342  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1962, __pyx_L1_error)
37343  __Pyx_GOTREF(__pyx_t_6);
37344  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1962, __pyx_L1_error)
37345  __Pyx_GOTREF(__pyx_t_11);
37346  __Pyx_INCREF(__pyx_v_rr);
37347  __Pyx_GIVEREF(__pyx_v_rr);
37348  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_rr);
37349  __Pyx_INCREF(__pyx_slice__4);
37350  __Pyx_GIVEREF(__pyx_slice__4);
37351  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_slice__4);
37352  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDirs), __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1962, __pyx_L1_error)
37353  __Pyx_GOTREF(__pyx_t_4);
37354  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
37355  __pyx_t_11 = NULL;
37356  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
37357  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
37358  if (likely(__pyx_t_11)) {
37359  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
37360  __Pyx_INCREF(__pyx_t_11);
37361  __Pyx_INCREF(function);
37362  __Pyx_DECREF_SET(__pyx_t_6, function);
37363  }
37364  }
37365  __pyx_t_2 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_11, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4);
37366  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
37367  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37368  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1962, __pyx_L1_error)
37369  __Pyx_GOTREF(__pyx_t_2);
37370  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37371  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1962, __pyx_L1_error)
37372  __Pyx_GOTREF(__pyx_t_6);
37373  __Pyx_INCREF(__pyx_v_rr);
37374  __Pyx_GIVEREF(__pyx_v_rr);
37375  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_rr);
37376  __Pyx_INCREF(__pyx_slice__4);
37377  __Pyx_GIVEREF(__pyx_slice__4);
37378  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__4);
37379  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->waveDirs), __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 1962, __pyx_L1_error)
37380  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37381  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37382 
37383  /* "WaveTools.py":1959
37384  *
37385  * # initialising wave directions
37386  * for rr in directions: # <<<<<<<<<<<<<<
37387  * theta = thetas[rr]
37388  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
37389  */
37390  }
37391  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37392 
37393  /* "WaveTools.py":1966
37394  *
37395  * # Initialising phasing
37396  * if phi is None: # <<<<<<<<<<<<<<
37397  * self.phiDirs = 2.0*M_PI*np.random.rand(self.Mtot,RW.fi.shape[0])
37398  * elif np.shape(phi) == (2*M+1,RW.fi.shape[0]):
37399  */
37400  __pyx_t_7 = (__pyx_v_phi == Py_None);
37401  __pyx_t_14 = (__pyx_t_7 != 0);
37402  if (__pyx_t_14) {
37403 
37404  /* "WaveTools.py":1967
37405  * # Initialising phasing
37406  * if phi is None:
37407  * self.phiDirs = 2.0*M_PI*np.random.rand(self.Mtot,RW.fi.shape[0]) # <<<<<<<<<<<<<<
37408  * elif np.shape(phi) == (2*M+1,RW.fi.shape[0]):
37409  * self.phiDirs = phi
37410  */
37411  __pyx_t_8 = PyFloat_FromDouble((2.0 * M_PI)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1967, __pyx_L1_error)
37412  __Pyx_GOTREF(__pyx_t_8);
37413  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1967, __pyx_L1_error)
37414  __Pyx_GOTREF(__pyx_t_6);
37415  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1967, __pyx_L1_error)
37416  __Pyx_GOTREF(__pyx_t_4);
37417  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37418  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_rand); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1967, __pyx_L1_error)
37419  __Pyx_GOTREF(__pyx_t_6);
37420  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37421  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->Mtot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1967, __pyx_L1_error)
37422  __Pyx_GOTREF(__pyx_t_4);
37423  __pyx_t_11 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_RW->fi->dimensions[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1967, __pyx_L1_error)
37424  __Pyx_GOTREF(__pyx_t_11);
37425  __pyx_t_3 = NULL;
37426  __pyx_t_5 = 0;
37427  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
37428  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
37429  if (likely(__pyx_t_3)) {
37430  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
37431  __Pyx_INCREF(__pyx_t_3);
37432  __Pyx_INCREF(function);
37433  __Pyx_DECREF_SET(__pyx_t_6, function);
37434  __pyx_t_5 = 1;
37435  }
37436  }
37437  #if CYTHON_FAST_PYCALL
37438  if (PyFunction_Check(__pyx_t_6)) {
37439  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_11};
37440  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1967, __pyx_L1_error)
37441  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
37442  __Pyx_GOTREF(__pyx_t_2);
37443  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37444  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
37445  } else
37446  #endif
37447  #if CYTHON_FAST_PYCCALL
37448  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
37449  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_11};
37450  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1967, __pyx_L1_error)
37451  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
37452  __Pyx_GOTREF(__pyx_t_2);
37453  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
37454  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
37455  } else
37456  #endif
37457  {
37458  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1967, __pyx_L1_error)
37459  __Pyx_GOTREF(__pyx_t_10);
37460  if (__pyx_t_3) {
37461  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
37462  }
37463  __Pyx_GIVEREF(__pyx_t_4);
37464  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_t_4);
37465  __Pyx_GIVEREF(__pyx_t_11);
37466  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_t_11);
37467  __pyx_t_4 = 0;
37468  __pyx_t_11 = 0;
37469  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1967, __pyx_L1_error)
37470  __Pyx_GOTREF(__pyx_t_2);
37471  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
37472  }
37473  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37474  __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1967, __pyx_L1_error)
37475  __Pyx_GOTREF(__pyx_t_6);
37476  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37477  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37478  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1967, __pyx_L1_error)
37479  __Pyx_GIVEREF(__pyx_t_6);
37480  __Pyx_GOTREF(__pyx_v_self->phiDirs);
37481  __Pyx_DECREF(((PyObject *)__pyx_v_self->phiDirs));
37482  __pyx_v_self->phiDirs = ((PyArrayObject *)__pyx_t_6);
37483  __pyx_t_6 = 0;
37484 
37485  /* "WaveTools.py":1966
37486  *
37487  * # Initialising phasing
37488  * if phi is None: # <<<<<<<<<<<<<<
37489  * self.phiDirs = 2.0*M_PI*np.random.rand(self.Mtot,RW.fi.shape[0])
37490  * elif np.shape(phi) == (2*M+1,RW.fi.shape[0]):
37491  */
37492  goto __pyx_L6;
37493  }
37494 
37495  /* "WaveTools.py":1968
37496  * if phi is None:
37497  * self.phiDirs = 2.0*M_PI*np.random.rand(self.Mtot,RW.fi.shape[0])
37498  * elif np.shape(phi) == (2*M+1,RW.fi.shape[0]): # <<<<<<<<<<<<<<
37499  * self.phiDirs = phi
37500  * else:
37501  */
37502  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1968, __pyx_L1_error)
37503  __Pyx_GOTREF(__pyx_t_2);
37504  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1968, __pyx_L1_error)
37505  __Pyx_GOTREF(__pyx_t_8);
37506  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37507  __pyx_t_2 = NULL;
37508  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
37509  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
37510  if (likely(__pyx_t_2)) {
37511  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
37512  __Pyx_INCREF(__pyx_t_2);
37513  __Pyx_INCREF(function);
37514  __Pyx_DECREF_SET(__pyx_t_8, function);
37515  }
37516  }
37517  __pyx_t_6 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_v_phi) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_phi);
37518  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
37519  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1968, __pyx_L1_error)
37520  __Pyx_GOTREF(__pyx_t_6);
37521  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37522  __pyx_t_8 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1968, __pyx_L1_error)
37523  __Pyx_GOTREF(__pyx_t_8);
37524  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_8, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1968, __pyx_L1_error)
37525  __Pyx_GOTREF(__pyx_t_2);
37526  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37527  __pyx_t_8 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_RW->fi->dimensions[0])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1968, __pyx_L1_error)
37528  __Pyx_GOTREF(__pyx_t_8);
37529  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1968, __pyx_L1_error)
37530  __Pyx_GOTREF(__pyx_t_10);
37531  __Pyx_GIVEREF(__pyx_t_2);
37532  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2);
37533  __Pyx_GIVEREF(__pyx_t_8);
37534  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_8);
37535  __pyx_t_2 = 0;
37536  __pyx_t_8 = 0;
37537  __pyx_t_8 = PyObject_RichCompare(__pyx_t_6, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1968, __pyx_L1_error)
37538  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37539  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
37540  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1968, __pyx_L1_error)
37541  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37542  if (__pyx_t_14) {
37543 
37544  /* "WaveTools.py":1969
37545  * self.phiDirs = 2.0*M_PI*np.random.rand(self.Mtot,RW.fi.shape[0])
37546  * elif np.shape(phi) == (2*M+1,RW.fi.shape[0]):
37547  * self.phiDirs = phi # <<<<<<<<<<<<<<
37548  * else:
37549  * logEvent("ERROR! Wavetools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
37550  */
37551  if (!(likely(((__pyx_v_phi) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_phi, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1969, __pyx_L1_error)
37552  __pyx_t_8 = __pyx_v_phi;
37553  __Pyx_INCREF(__pyx_t_8);
37554  __Pyx_GIVEREF(__pyx_t_8);
37555  __Pyx_GOTREF(__pyx_v_self->phiDirs);
37556  __Pyx_DECREF(((PyObject *)__pyx_v_self->phiDirs));
37557  __pyx_v_self->phiDirs = ((PyArrayObject *)__pyx_t_8);
37558  __pyx_t_8 = 0;
37559 
37560  /* "WaveTools.py":1968
37561  * if phi is None:
37562  * self.phiDirs = 2.0*M_PI*np.random.rand(self.Mtot,RW.fi.shape[0])
37563  * elif np.shape(phi) == (2*M+1,RW.fi.shape[0]): # <<<<<<<<<<<<<<
37564  * self.phiDirs = phi
37565  * else:
37566  */
37567  goto __pyx_L6;
37568  }
37569 
37570  /* "WaveTools.py":1971
37571  * self.phiDirs = phi
37572  * else:
37573  * logEvent("ERROR! Wavetools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N") # <<<<<<<<<<<<<<
37574  * sys.exit(1)
37575  *
37576  */
37577  /*else*/ {
37578  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1971, __pyx_L1_error)
37579  __Pyx_GOTREF(__pyx_t_10);
37580  __pyx_t_6 = NULL;
37581  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
37582  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10);
37583  if (likely(__pyx_t_6)) {
37584  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
37585  __Pyx_INCREF(__pyx_t_6);
37586  __Pyx_INCREF(function);
37587  __Pyx_DECREF_SET(__pyx_t_10, function);
37588  }
37589  }
37590  __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_6, __pyx_kp_s_ERROR_Wavetools_py_phi_in_Direct) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_ERROR_Wavetools_py_phi_in_Direct);
37591  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
37592  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1971, __pyx_L1_error)
37593  __Pyx_GOTREF(__pyx_t_8);
37594  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
37595  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37596 
37597  /* "WaveTools.py":1972
37598  * else:
37599  * logEvent("ERROR! Wavetools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
37600  * sys.exit(1) # <<<<<<<<<<<<<<
37601  *
37602  * if (phiSymm):
37603  */
37604  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_sys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1972, __pyx_L1_error)
37605  __Pyx_GOTREF(__pyx_t_10);
37606  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1972, __pyx_L1_error)
37607  __Pyx_GOTREF(__pyx_t_6);
37608  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
37609  __pyx_t_10 = NULL;
37610  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
37611  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
37612  if (likely(__pyx_t_10)) {
37613  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
37614  __Pyx_INCREF(__pyx_t_10);
37615  __Pyx_INCREF(function);
37616  __Pyx_DECREF_SET(__pyx_t_6, function);
37617  }
37618  }
37619  __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_10, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_1);
37620  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
37621  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1972, __pyx_L1_error)
37622  __Pyx_GOTREF(__pyx_t_8);
37623  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37624  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37625  }
37626  __pyx_L6:;
37627 
37628  /* "WaveTools.py":1974
37629  * sys.exit(1)
37630  *
37631  * if (phiSymm): # <<<<<<<<<<<<<<
37632  * for i in range(0,M):
37633  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
37634  */
37635  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_phiSymm); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1974, __pyx_L1_error)
37636  if (__pyx_t_14) {
37637 
37638  /* "WaveTools.py":1975
37639  *
37640  * if (phiSymm):
37641  * for i in range(0,M): # <<<<<<<<<<<<<<
37642  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
37643  *
37644  */
37645  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1975, __pyx_L1_error)
37646  __Pyx_GOTREF(__pyx_t_6);
37647  __pyx_t_10 = NULL;
37648  __pyx_t_5 = 0;
37649  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
37650  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
37651  if (likely(__pyx_t_10)) {
37652  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
37653  __Pyx_INCREF(__pyx_t_10);
37654  __Pyx_INCREF(function);
37655  __Pyx_DECREF_SET(__pyx_t_6, function);
37656  __pyx_t_5 = 1;
37657  }
37658  }
37659  #if CYTHON_FAST_PYCALL
37660  if (PyFunction_Check(__pyx_t_6)) {
37661  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_int_0, __pyx_v_M};
37662  __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error)
37663  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
37664  __Pyx_GOTREF(__pyx_t_8);
37665  } else
37666  #endif
37667  #if CYTHON_FAST_PYCCALL
37668  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
37669  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_int_0, __pyx_v_M};
37670  __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error)
37671  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
37672  __Pyx_GOTREF(__pyx_t_8);
37673  } else
37674  #endif
37675  {
37676  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1975, __pyx_L1_error)
37677  __Pyx_GOTREF(__pyx_t_2);
37678  if (__pyx_t_10) {
37679  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); __pyx_t_10 = NULL;
37680  }
37681  __Pyx_INCREF(__pyx_int_0);
37682  __Pyx_GIVEREF(__pyx_int_0);
37683  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_int_0);
37684  __Pyx_INCREF(__pyx_v_M);
37685  __Pyx_GIVEREF(__pyx_v_M);
37686  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_M);
37687  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error)
37688  __Pyx_GOTREF(__pyx_t_8);
37689  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37690  }
37691  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37692  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
37693  __pyx_t_6 = __pyx_t_8; __Pyx_INCREF(__pyx_t_6); __pyx_t_13 = 0;
37694  __pyx_t_15 = NULL;
37695  } else {
37696  __pyx_t_13 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1975, __pyx_L1_error)
37697  __Pyx_GOTREF(__pyx_t_6);
37698  __pyx_t_15 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1975, __pyx_L1_error)
37699  }
37700  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37701  for (;;) {
37702  if (likely(!__pyx_t_15)) {
37703  if (likely(PyList_CheckExact(__pyx_t_6))) {
37704  if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_6)) break;
37705  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
37706  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 1975, __pyx_L1_error)
37707  #else
37708  __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error)
37709  __Pyx_GOTREF(__pyx_t_8);
37710  #endif
37711  } else {
37712  if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
37713  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
37714  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 1975, __pyx_L1_error)
37715  #else
37716  __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error)
37717  __Pyx_GOTREF(__pyx_t_8);
37718  #endif
37719  }
37720  } else {
37721  __pyx_t_8 = __pyx_t_15(__pyx_t_6);
37722  if (unlikely(!__pyx_t_8)) {
37723  PyObject* exc_type = PyErr_Occurred();
37724  if (exc_type) {
37725  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
37726  else __PYX_ERR(0, 1975, __pyx_L1_error)
37727  }
37728  break;
37729  }
37730  __Pyx_GOTREF(__pyx_t_8);
37731  }
37732  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_8);
37733  __pyx_t_8 = 0;
37734 
37735  /* "WaveTools.py":1976
37736  * if (phiSymm):
37737  * for i in range(0,M):
37738  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:] # <<<<<<<<<<<<<<
37739  *
37740  *
37741  */
37742  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1976, __pyx_L1_error)
37743  __Pyx_GOTREF(__pyx_t_8);
37744  __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_8, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1976, __pyx_L1_error)
37745  __Pyx_GOTREF(__pyx_t_2);
37746  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37747  __pyx_t_8 = PyNumber_Subtract(__pyx_t_2, __pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1976, __pyx_L1_error)
37748  __Pyx_GOTREF(__pyx_t_8);
37749  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37750  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1976, __pyx_L1_error)
37751  __Pyx_GOTREF(__pyx_t_2);
37752  __Pyx_GIVEREF(__pyx_t_8);
37753  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);
37754  __Pyx_INCREF(__pyx_slice__4);
37755  __Pyx_GIVEREF(__pyx_slice__4);
37756  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__4);
37757  __pyx_t_8 = 0;
37758  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->phiDirs), __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1976, __pyx_L1_error)
37759  __Pyx_GOTREF(__pyx_t_8);
37760  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37761  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_M, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1976, __pyx_L1_error)
37762  __Pyx_GOTREF(__pyx_t_2);
37763  __pyx_t_10 = PyNumber_Add(__pyx_t_2, __pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1976, __pyx_L1_error)
37764  __Pyx_GOTREF(__pyx_t_10);
37765  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37766  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1976, __pyx_L1_error)
37767  __Pyx_GOTREF(__pyx_t_2);
37768  __Pyx_GIVEREF(__pyx_t_10);
37769  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10);
37770  __Pyx_INCREF(__pyx_slice__4);
37771  __Pyx_GIVEREF(__pyx_slice__4);
37772  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__4);
37773  __pyx_t_10 = 0;
37774  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->phiDirs), __pyx_t_2, __pyx_t_8) < 0)) __PYX_ERR(0, 1976, __pyx_L1_error)
37775  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37776  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37777 
37778  /* "WaveTools.py":1975
37779  *
37780  * if (phiSymm):
37781  * for i in range(0,M): # <<<<<<<<<<<<<<
37782  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
37783  *
37784  */
37785  }
37786  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37787 
37788  /* "WaveTools.py":1974
37789  * sys.exit(1)
37790  *
37791  * if (phiSymm): # <<<<<<<<<<<<<<
37792  * for i in range(0,M):
37793  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
37794  */
37795  }
37796 
37797  /* "WaveTools.py":1981
37798  *
37799  *
37800  * theta_m = reduceToIntervals(thetas,dth) # <<<<<<<<<<<<<<
37801  * if (spread_params is None):
37802  * Si_Sp = spread_fun(theta_m,RW.fim)
37803  */
37804  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1981, __pyx_L1_error)
37805  __Pyx_GOTREF(__pyx_t_8);
37806  __pyx_t_2 = NULL;
37807  __pyx_t_5 = 0;
37808  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
37809  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
37810  if (likely(__pyx_t_2)) {
37811  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
37812  __Pyx_INCREF(__pyx_t_2);
37813  __Pyx_INCREF(function);
37814  __Pyx_DECREF_SET(__pyx_t_8, function);
37815  __pyx_t_5 = 1;
37816  }
37817  }
37818  #if CYTHON_FAST_PYCALL
37819  if (PyFunction_Check(__pyx_t_8)) {
37820  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_thetas, __pyx_v_dth};
37821  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error)
37822  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
37823  __Pyx_GOTREF(__pyx_t_6);
37824  } else
37825  #endif
37826  #if CYTHON_FAST_PYCCALL
37827  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
37828  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_thetas, __pyx_v_dth};
37829  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error)
37830  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
37831  __Pyx_GOTREF(__pyx_t_6);
37832  } else
37833  #endif
37834  {
37835  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1981, __pyx_L1_error)
37836  __Pyx_GOTREF(__pyx_t_10);
37837  if (__pyx_t_2) {
37838  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
37839  }
37840  __Pyx_INCREF(__pyx_v_thetas);
37841  __Pyx_GIVEREF(__pyx_v_thetas);
37842  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_v_thetas);
37843  __Pyx_INCREF(__pyx_v_dth);
37844  __Pyx_GIVEREF(__pyx_v_dth);
37845  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_v_dth);
37846  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error)
37847  __Pyx_GOTREF(__pyx_t_6);
37848  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
37849  }
37850  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37851  __pyx_v_theta_m = __pyx_t_6;
37852  __pyx_t_6 = 0;
37853 
37854  /* "WaveTools.py":1982
37855  *
37856  * theta_m = reduceToIntervals(thetas,dth)
37857  * if (spread_params is None): # <<<<<<<<<<<<<<
37858  * Si_Sp = spread_fun(theta_m,RW.fim)
37859  * else:
37860  */
37861  __pyx_t_14 = (__pyx_v_spread_params == Py_None);
37862  __pyx_t_7 = (__pyx_t_14 != 0);
37863  if (__pyx_t_7) {
37864 
37865  /* "WaveTools.py":1983
37866  * theta_m = reduceToIntervals(thetas,dth)
37867  * if (spread_params is None):
37868  * Si_Sp = spread_fun(theta_m,RW.fim) # <<<<<<<<<<<<<<
37869  * else:
37870  * try:
37871  */
37872  __Pyx_INCREF(__pyx_v_spread_fun);
37873  __pyx_t_8 = __pyx_v_spread_fun; __pyx_t_10 = NULL;
37874  __pyx_t_5 = 0;
37875  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
37876  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
37877  if (likely(__pyx_t_10)) {
37878  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
37879  __Pyx_INCREF(__pyx_t_10);
37880  __Pyx_INCREF(function);
37881  __Pyx_DECREF_SET(__pyx_t_8, function);
37882  __pyx_t_5 = 1;
37883  }
37884  }
37885  #if CYTHON_FAST_PYCALL
37886  if (PyFunction_Check(__pyx_t_8)) {
37887  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_theta_m, ((PyObject *)__pyx_v_RW->fim)};
37888  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1983, __pyx_L1_error)
37889  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
37890  __Pyx_GOTREF(__pyx_t_6);
37891  } else
37892  #endif
37893  #if CYTHON_FAST_PYCCALL
37894  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
37895  PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_theta_m, ((PyObject *)__pyx_v_RW->fim)};
37896  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1983, __pyx_L1_error)
37897  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
37898  __Pyx_GOTREF(__pyx_t_6);
37899  } else
37900  #endif
37901  {
37902  __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1983, __pyx_L1_error)
37903  __Pyx_GOTREF(__pyx_t_2);
37904  if (__pyx_t_10) {
37905  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); __pyx_t_10 = NULL;
37906  }
37907  __Pyx_INCREF(__pyx_v_theta_m);
37908  __Pyx_GIVEREF(__pyx_v_theta_m);
37909  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_v_theta_m);
37910  __Pyx_INCREF(((PyObject *)__pyx_v_RW->fim));
37911  __Pyx_GIVEREF(((PyObject *)__pyx_v_RW->fim));
37912  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, ((PyObject *)__pyx_v_RW->fim));
37913  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1983, __pyx_L1_error)
37914  __Pyx_GOTREF(__pyx_t_6);
37915  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
37916  }
37917  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37918  __pyx_v_Si_Sp = __pyx_t_6;
37919  __pyx_t_6 = 0;
37920 
37921  /* "WaveTools.py":1982
37922  *
37923  * theta_m = reduceToIntervals(thetas,dth)
37924  * if (spread_params is None): # <<<<<<<<<<<<<<
37925  * Si_Sp = spread_fun(theta_m,RW.fim)
37926  * else:
37927  */
37928  goto __pyx_L10;
37929  }
37930 
37931  /* "WaveTools.py":1985
37932  * Si_Sp = spread_fun(theta_m,RW.fim)
37933  * else:
37934  * try: # <<<<<<<<<<<<<<
37935  * Si_Sp = spread_fun(theta_m,RW.fim, **spread_params)
37936  * except:
37937  */
37938  /*else*/ {
37939  {
37940  __Pyx_PyThreadState_declare
37941  __Pyx_PyThreadState_assign
37942  __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
37943  __Pyx_XGOTREF(__pyx_t_16);
37944  __Pyx_XGOTREF(__pyx_t_17);
37945  __Pyx_XGOTREF(__pyx_t_18);
37946  /*try:*/ {
37947 
37948  /* "WaveTools.py":1986
37949  * else:
37950  * try:
37951  * Si_Sp = spread_fun(theta_m,RW.fim, **spread_params) # <<<<<<<<<<<<<<
37952  * except:
37953  * logEvent('ERROR! Wavetools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
37954  */
37955  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1986, __pyx_L11_error)
37956  __Pyx_GOTREF(__pyx_t_6);
37957  __Pyx_INCREF(__pyx_v_theta_m);
37958  __Pyx_GIVEREF(__pyx_v_theta_m);
37959  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_theta_m);
37960  __Pyx_INCREF(((PyObject *)__pyx_v_RW->fim));
37961  __Pyx_GIVEREF(((PyObject *)__pyx_v_RW->fim));
37962  PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_RW->fim));
37963  if (unlikely(__pyx_v_spread_params == Py_None)) {
37964  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
37965  __PYX_ERR(0, 1986, __pyx_L11_error)
37966  }
37967  if (likely(PyDict_CheckExact(__pyx_v_spread_params))) {
37968  __pyx_t_8 = PyDict_Copy(__pyx_v_spread_params); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1986, __pyx_L11_error)
37969  __Pyx_GOTREF(__pyx_t_8);
37970  } else {
37971  __pyx_t_8 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spread_params, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1986, __pyx_L11_error)
37972  __Pyx_GOTREF(__pyx_t_8);
37973  }
37974  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_spread_fun, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1986, __pyx_L11_error)
37975  __Pyx_GOTREF(__pyx_t_2);
37976  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
37977  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
37978  __pyx_v_Si_Sp = __pyx_t_2;
37979  __pyx_t_2 = 0;
37980 
37981  /* "WaveTools.py":1985
37982  * Si_Sp = spread_fun(theta_m,RW.fim)
37983  * else:
37984  * try: # <<<<<<<<<<<<<<
37985  * Si_Sp = spread_fun(theta_m,RW.fim, **spread_params)
37986  * except:
37987  */
37988  }
37989  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
37990  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
37991  __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
37992  goto __pyx_L16_try_end;
37993  __pyx_L11_error:;
37994  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
37995  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
37996  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
37997  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
37998  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
37999  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38000  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
38001  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
38002 
38003  /* "WaveTools.py":1987
38004  * try:
38005  * Si_Sp = spread_fun(theta_m,RW.fim, **spread_params)
38006  * except: # <<<<<<<<<<<<<<
38007  * logEvent('ERROR! Wavetools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
38008  * sys.exit(1)
38009  */
38010  /*except:*/ {
38011  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
38012  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(0, 1987, __pyx_L13_except_error)
38013  __Pyx_GOTREF(__pyx_t_2);
38014  __Pyx_GOTREF(__pyx_t_8);
38015  __Pyx_GOTREF(__pyx_t_6);
38016 
38017  /* "WaveTools.py":1988
38018  * Si_Sp = spread_fun(theta_m,RW.fim, **spread_params)
38019  * except:
38020  * logEvent('ERROR! Wavetools.py: Additional spread parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
38021  * sys.exit(1)
38022  *
38023  */
38024  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1988, __pyx_L13_except_error)
38025  __Pyx_GOTREF(__pyx_t_11);
38026  __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ERROR_Wavetools_py_Additional_sp_2, __pyx_v_spectName); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1988, __pyx_L13_except_error)
38027  __Pyx_GOTREF(__pyx_t_4);
38028  __pyx_t_3 = NULL;
38029  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
38030  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
38031  if (likely(__pyx_t_3)) {
38032  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
38033  __Pyx_INCREF(__pyx_t_3);
38034  __Pyx_INCREF(function);
38035  __Pyx_DECREF_SET(__pyx_t_11, function);
38036  }
38037  }
38038  __pyx_t_10 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_4);
38039  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
38040  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38041  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1988, __pyx_L13_except_error)
38042  __Pyx_GOTREF(__pyx_t_10);
38043  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38044  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
38045 
38046  /* "WaveTools.py":1989
38047  * except:
38048  * logEvent('ERROR! Wavetools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
38049  * sys.exit(1) # <<<<<<<<<<<<<<
38050  *
38051  * # Setting amplitudes
38052  */
38053  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1989, __pyx_L13_except_error)
38054  __Pyx_GOTREF(__pyx_t_11);
38055  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1989, __pyx_L13_except_error)
38056  __Pyx_GOTREF(__pyx_t_4);
38057  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38058  __pyx_t_11 = NULL;
38059  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
38060  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
38061  if (likely(__pyx_t_11)) {
38062  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
38063  __Pyx_INCREF(__pyx_t_11);
38064  __Pyx_INCREF(function);
38065  __Pyx_DECREF_SET(__pyx_t_4, function);
38066  }
38067  }
38068  __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_11, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
38069  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
38070  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1989, __pyx_L13_except_error)
38071  __Pyx_GOTREF(__pyx_t_10);
38072  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38073  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
38074  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38075  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
38076  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38077  goto __pyx_L12_exception_handled;
38078  }
38079  __pyx_L13_except_error:;
38080 
38081  /* "WaveTools.py":1985
38082  * Si_Sp = spread_fun(theta_m,RW.fim)
38083  * else:
38084  * try: # <<<<<<<<<<<<<<
38085  * Si_Sp = spread_fun(theta_m,RW.fim, **spread_params)
38086  * except:
38087  */
38088  __Pyx_XGIVEREF(__pyx_t_16);
38089  __Pyx_XGIVEREF(__pyx_t_17);
38090  __Pyx_XGIVEREF(__pyx_t_18);
38091  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
38092  goto __pyx_L1_error;
38093  __pyx_L12_exception_handled:;
38094  __Pyx_XGIVEREF(__pyx_t_16);
38095  __Pyx_XGIVEREF(__pyx_t_17);
38096  __Pyx_XGIVEREF(__pyx_t_18);
38097  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
38098  __pyx_L16_try_end:;
38099  }
38100  }
38101  __pyx_L10:;
38102 
38103  /* "WaveTools.py":1993
38104  * # Setting amplitudes
38105  * #Normalising the spreading function
38106  * freq = list(range(0,N)) # <<<<<<<<<<<<<<
38107  * # Normalising integral over all frequencies
38108  * for ii in freq:
38109  */
38110  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1993, __pyx_L1_error)
38111  __Pyx_GOTREF(__pyx_t_8);
38112  __pyx_t_2 = NULL;
38113  __pyx_t_5 = 0;
38114  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
38115  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
38116  if (likely(__pyx_t_2)) {
38117  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
38118  __Pyx_INCREF(__pyx_t_2);
38119  __Pyx_INCREF(function);
38120  __Pyx_DECREF_SET(__pyx_t_8, function);
38121  __pyx_t_5 = 1;
38122  }
38123  }
38124  #if CYTHON_FAST_PYCALL
38125  if (PyFunction_Check(__pyx_t_8)) {
38126  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_int_0, __pyx_v_N};
38127  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1993, __pyx_L1_error)
38128  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38129  __Pyx_GOTREF(__pyx_t_6);
38130  } else
38131  #endif
38132  #if CYTHON_FAST_PYCCALL
38133  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
38134  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_int_0, __pyx_v_N};
38135  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1993, __pyx_L1_error)
38136  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38137  __Pyx_GOTREF(__pyx_t_6);
38138  } else
38139  #endif
38140  {
38141  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1993, __pyx_L1_error)
38142  __Pyx_GOTREF(__pyx_t_10);
38143  if (__pyx_t_2) {
38144  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
38145  }
38146  __Pyx_INCREF(__pyx_int_0);
38147  __Pyx_GIVEREF(__pyx_int_0);
38148  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_int_0);
38149  __Pyx_INCREF(__pyx_v_N);
38150  __Pyx_GIVEREF(__pyx_v_N);
38151  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_v_N);
38152  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1993, __pyx_L1_error)
38153  __Pyx_GOTREF(__pyx_t_6);
38154  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
38155  }
38156  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
38157  __pyx_t_8 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1993, __pyx_L1_error)
38158  __Pyx_GOTREF(__pyx_t_8);
38159  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38160  __pyx_v_freq = ((PyObject*)__pyx_t_8);
38161  __pyx_t_8 = 0;
38162 
38163  /* "WaveTools.py":1995
38164  * freq = list(range(0,N))
38165  * # Normalising integral over all frequencies
38166  * for ii in freq: # <<<<<<<<<<<<<<
38167  * Si_Sp[:,ii] = normIntegral(Si_Sp[:,ii],theta_m)
38168  * Si_Sp[:,ii]*= RW.Si_Jm[ii]
38169  */
38170  __pyx_t_8 = __pyx_v_freq; __Pyx_INCREF(__pyx_t_8); __pyx_t_13 = 0;
38171  for (;;) {
38172  if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_8)) break;
38173  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38174  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_13); __Pyx_INCREF(__pyx_t_6); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 1995, __pyx_L1_error)
38175  #else
38176  __pyx_t_6 = PySequence_ITEM(__pyx_t_8, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1995, __pyx_L1_error)
38177  __Pyx_GOTREF(__pyx_t_6);
38178  #endif
38179  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_6);
38180  __pyx_t_6 = 0;
38181 
38182  /* "WaveTools.py":1996
38183  * # Normalising integral over all frequencies
38184  * for ii in freq:
38185  * Si_Sp[:,ii] = normIntegral(Si_Sp[:,ii],theta_m) # <<<<<<<<<<<<<<
38186  * Si_Sp[:,ii]*= RW.Si_Jm[ii]
38187  * # Creating amplitudes spectrum
38188  */
38189  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_normIntegral); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1996, __pyx_L1_error)
38190  __Pyx_GOTREF(__pyx_t_10);
38191  if (unlikely(!__pyx_v_Si_Sp)) { __Pyx_RaiseUnboundLocalError("Si_Sp"); __PYX_ERR(0, 1996, __pyx_L1_error) }
38192  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1996, __pyx_L1_error)
38193  __Pyx_GOTREF(__pyx_t_2);
38194  __Pyx_INCREF(__pyx_slice__4);
38195  __Pyx_GIVEREF(__pyx_slice__4);
38196  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__4);
38197  __Pyx_INCREF(__pyx_v_ii);
38198  __Pyx_GIVEREF(__pyx_v_ii);
38199  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ii);
38200  __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_Si_Sp, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1996, __pyx_L1_error)
38201  __Pyx_GOTREF(__pyx_t_4);
38202  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38203  __pyx_t_2 = NULL;
38204  __pyx_t_5 = 0;
38205  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
38206  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
38207  if (likely(__pyx_t_2)) {
38208  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
38209  __Pyx_INCREF(__pyx_t_2);
38210  __Pyx_INCREF(function);
38211  __Pyx_DECREF_SET(__pyx_t_10, function);
38212  __pyx_t_5 = 1;
38213  }
38214  }
38215  #if CYTHON_FAST_PYCALL
38216  if (PyFunction_Check(__pyx_t_10)) {
38217  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_theta_m};
38218  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1996, __pyx_L1_error)
38219  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38220  __Pyx_GOTREF(__pyx_t_6);
38221  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38222  } else
38223  #endif
38224  #if CYTHON_FAST_PYCCALL
38225  if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
38226  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_theta_m};
38227  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1996, __pyx_L1_error)
38228  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38229  __Pyx_GOTREF(__pyx_t_6);
38230  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38231  } else
38232  #endif
38233  {
38234  __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1996, __pyx_L1_error)
38235  __Pyx_GOTREF(__pyx_t_11);
38236  if (__pyx_t_2) {
38237  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __pyx_t_2 = NULL;
38238  }
38239  __Pyx_GIVEREF(__pyx_t_4);
38240  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_4);
38241  __Pyx_INCREF(__pyx_v_theta_m);
38242  __Pyx_GIVEREF(__pyx_v_theta_m);
38243  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, __pyx_v_theta_m);
38244  __pyx_t_4 = 0;
38245  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1996, __pyx_L1_error)
38246  __Pyx_GOTREF(__pyx_t_6);
38247  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38248  }
38249  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
38250  if (unlikely(!__pyx_v_Si_Sp)) { __Pyx_RaiseUnboundLocalError("Si_Sp"); __PYX_ERR(0, 1996, __pyx_L1_error) }
38251  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1996, __pyx_L1_error)
38252  __Pyx_GOTREF(__pyx_t_10);
38253  __Pyx_INCREF(__pyx_slice__4);
38254  __Pyx_GIVEREF(__pyx_slice__4);
38255  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_slice__4);
38256  __Pyx_INCREF(__pyx_v_ii);
38257  __Pyx_GIVEREF(__pyx_v_ii);
38258  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_ii);
38259  if (unlikely(PyObject_SetItem(__pyx_v_Si_Sp, __pyx_t_10, __pyx_t_6) < 0)) __PYX_ERR(0, 1996, __pyx_L1_error)
38260  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
38261  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38262 
38263  /* "WaveTools.py":1997
38264  * for ii in freq:
38265  * Si_Sp[:,ii] = normIntegral(Si_Sp[:,ii],theta_m)
38266  * Si_Sp[:,ii]*= RW.Si_Jm[ii] # <<<<<<<<<<<<<<
38267  * # Creating amplitudes spectrum
38268  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(Si_Sp,theta_m,RW.fim))
38269  */
38270  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1997, __pyx_L1_error)
38271  __Pyx_GOTREF(__pyx_t_6);
38272  __Pyx_INCREF(__pyx_slice__4);
38273  __Pyx_GIVEREF(__pyx_slice__4);
38274  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__4);
38275  __Pyx_INCREF(__pyx_v_ii);
38276  __Pyx_GIVEREF(__pyx_v_ii);
38277  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_ii);
38278  if (unlikely(!__pyx_v_Si_Sp)) { __Pyx_RaiseUnboundLocalError("Si_Sp"); __PYX_ERR(0, 1997, __pyx_L1_error) }
38279  __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_Si_Sp, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1997, __pyx_L1_error)
38280  __Pyx_GOTREF(__pyx_t_10);
38281  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RW->Si_Jm), __pyx_v_ii); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1997, __pyx_L1_error)
38282  __Pyx_GOTREF(__pyx_t_11);
38283  __pyx_t_4 = PyNumber_InPlaceMultiply(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1997, __pyx_L1_error)
38284  __Pyx_GOTREF(__pyx_t_4);
38285  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
38286  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38287  if (unlikely(!__pyx_v_Si_Sp)) { __Pyx_RaiseUnboundLocalError("Si_Sp"); __PYX_ERR(0, 1997, __pyx_L1_error) }
38288  if (unlikely(PyObject_SetItem(__pyx_v_Si_Sp, __pyx_t_6, __pyx_t_4) < 0)) __PYX_ERR(0, 1997, __pyx_L1_error)
38289  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38290  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38291 
38292  /* "WaveTools.py":1995
38293  * freq = list(range(0,N))
38294  * # Normalising integral over all frequencies
38295  * for ii in freq: # <<<<<<<<<<<<<<
38296  * Si_Sp[:,ii] = normIntegral(Si_Sp[:,ii],theta_m)
38297  * Si_Sp[:,ii]*= RW.Si_Jm[ii]
38298  */
38299  }
38300  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
38301 
38302  /* "WaveTools.py":1999
38303  * Si_Sp[:,ii]*= RW.Si_Jm[ii]
38304  * # Creating amplitudes spectrum
38305  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(Si_Sp,theta_m,RW.fim)) # <<<<<<<<<<<<<<
38306  * self.mwl = mwl
38307  * self.depth = depth
38308  */
38309  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1999, __pyx_L1_error)
38310  __Pyx_GOTREF(__pyx_t_6);
38311  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1999, __pyx_L1_error)
38312  __Pyx_GOTREF(__pyx_t_4);
38313  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38314  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_returnRectangles3D); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1999, __pyx_L1_error)
38315  __Pyx_GOTREF(__pyx_t_11);
38316  if (unlikely(!__pyx_v_Si_Sp)) { __Pyx_RaiseUnboundLocalError("Si_Sp"); __PYX_ERR(0, 1999, __pyx_L1_error) }
38317  __pyx_t_10 = NULL;
38318  __pyx_t_5 = 0;
38319  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
38320  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
38321  if (likely(__pyx_t_10)) {
38322  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
38323  __Pyx_INCREF(__pyx_t_10);
38324  __Pyx_INCREF(function);
38325  __Pyx_DECREF_SET(__pyx_t_11, function);
38326  __pyx_t_5 = 1;
38327  }
38328  }
38329  #if CYTHON_FAST_PYCALL
38330  if (PyFunction_Check(__pyx_t_11)) {
38331  PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_Si_Sp, __pyx_v_theta_m, ((PyObject *)__pyx_v_RW->fim)};
38332  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1999, __pyx_L1_error)
38333  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
38334  __Pyx_GOTREF(__pyx_t_6);
38335  } else
38336  #endif
38337  #if CYTHON_FAST_PYCCALL
38338  if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
38339  PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_Si_Sp, __pyx_v_theta_m, ((PyObject *)__pyx_v_RW->fim)};
38340  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1999, __pyx_L1_error)
38341  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
38342  __Pyx_GOTREF(__pyx_t_6);
38343  } else
38344  #endif
38345  {
38346  __pyx_t_2 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1999, __pyx_L1_error)
38347  __Pyx_GOTREF(__pyx_t_2);
38348  if (__pyx_t_10) {
38349  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); __pyx_t_10 = NULL;
38350  }
38351  __Pyx_INCREF(__pyx_v_Si_Sp);
38352  __Pyx_GIVEREF(__pyx_v_Si_Sp);
38353  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_v_Si_Sp);
38354  __Pyx_INCREF(__pyx_v_theta_m);
38355  __Pyx_GIVEREF(__pyx_v_theta_m);
38356  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_theta_m);
38357  __Pyx_INCREF(((PyObject *)__pyx_v_RW->fim));
38358  __Pyx_GIVEREF(((PyObject *)__pyx_v_RW->fim));
38359  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_5, ((PyObject *)__pyx_v_RW->fim));
38360  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1999, __pyx_L1_error)
38361  __Pyx_GOTREF(__pyx_t_6);
38362  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38363  }
38364  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38365  __pyx_t_11 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1999, __pyx_L1_error)
38366  __Pyx_GOTREF(__pyx_t_11);
38367  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38368  __pyx_t_6 = NULL;
38369  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
38370  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
38371  if (likely(__pyx_t_6)) {
38372  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
38373  __Pyx_INCREF(__pyx_t_6);
38374  __Pyx_INCREF(function);
38375  __Pyx_DECREF_SET(__pyx_t_4, function);
38376  }
38377  }
38378  __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11);
38379  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38380  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38381  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1999, __pyx_L1_error)
38382  __Pyx_GOTREF(__pyx_t_8);
38383  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38384  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self->aiDirs), __pyx_t_8, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1) < 0) __PYX_ERR(0, 1999, __pyx_L1_error)
38385  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
38386 
38387  /* "WaveTools.py":2000
38388  * # Creating amplitudes spectrum
38389  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(Si_Sp,theta_m,RW.fim))
38390  * self.mwl = mwl # <<<<<<<<<<<<<<
38391  * self.depth = depth
38392  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d")
38393  */
38394  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2000, __pyx_L1_error)
38395  __pyx_v_self->mwl = __pyx_t_12;
38396 
38397  /* "WaveTools.py":2001
38398  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(Si_Sp,theta_m,RW.fim))
38399  * self.mwl = mwl
38400  * self.depth = depth # <<<<<<<<<<<<<<
38401  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d")
38402  * for nn in range(self.N):
38403  */
38404  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2001, __pyx_L1_error)
38405  __pyx_v_self->depth = __pyx_t_12;
38406 
38407  /* "WaveTools.py":2002
38408  * self.mwl = mwl
38409  * self.depth = depth
38410  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d") # <<<<<<<<<<<<<<
38411  * for nn in range(self.N):
38412  * for mm in range(self.Mtot):
38413  */
38414  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2002, __pyx_L1_error)
38415  __Pyx_GOTREF(__pyx_t_4);
38416  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2002, __pyx_L1_error)
38417  __Pyx_GOTREF(__pyx_t_11);
38418  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38419  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2002, __pyx_L1_error)
38420  __Pyx_GOTREF(__pyx_t_4);
38421  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->Mtot); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2002, __pyx_L1_error)
38422  __Pyx_GOTREF(__pyx_t_6);
38423  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2002, __pyx_L1_error)
38424  __Pyx_GOTREF(__pyx_t_2);
38425  __Pyx_GIVEREF(__pyx_t_4);
38426  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
38427  __Pyx_GIVEREF(__pyx_t_6);
38428  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
38429  __Pyx_INCREF(__pyx_int_3);
38430  __Pyx_GIVEREF(__pyx_int_3);
38431  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_int_3);
38432  __pyx_t_4 = 0;
38433  __pyx_t_6 = 0;
38434  __pyx_t_6 = NULL;
38435  __pyx_t_5 = 0;
38436  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
38437  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
38438  if (likely(__pyx_t_6)) {
38439  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
38440  __Pyx_INCREF(__pyx_t_6);
38441  __Pyx_INCREF(function);
38442  __Pyx_DECREF_SET(__pyx_t_11, function);
38443  __pyx_t_5 = 1;
38444  }
38445  }
38446  #if CYTHON_FAST_PYCALL
38447  if (PyFunction_Check(__pyx_t_11)) {
38448  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_n_s_d};
38449  __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2002, __pyx_L1_error)
38450  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38451  __Pyx_GOTREF(__pyx_t_8);
38452  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38453  } else
38454  #endif
38455  #if CYTHON_FAST_PYCCALL
38456  if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
38457  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_n_s_d};
38458  __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2002, __pyx_L1_error)
38459  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38460  __Pyx_GOTREF(__pyx_t_8);
38461  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38462  } else
38463  #endif
38464  {
38465  __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2002, __pyx_L1_error)
38466  __Pyx_GOTREF(__pyx_t_4);
38467  if (__pyx_t_6) {
38468  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
38469  }
38470  __Pyx_GIVEREF(__pyx_t_2);
38471  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_t_2);
38472  __Pyx_INCREF(__pyx_n_s_d);
38473  __Pyx_GIVEREF(__pyx_n_s_d);
38474  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_n_s_d);
38475  __pyx_t_2 = 0;
38476  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2002, __pyx_L1_error)
38477  __Pyx_GOTREF(__pyx_t_8);
38478  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38479  }
38480  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38481  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2002, __pyx_L1_error)
38482  __Pyx_GIVEREF(__pyx_t_8);
38483  __Pyx_GOTREF(__pyx_v_self->kDirs);
38484  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDirs));
38485  __pyx_v_self->kDirs = ((PyArrayObject *)__pyx_t_8);
38486  __pyx_t_8 = 0;
38487 
38488  /* "WaveTools.py":2003
38489  * self.depth = depth
38490  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d")
38491  * for nn in range(self.N): # <<<<<<<<<<<<<<
38492  * for mm in range(self.Mtot):
38493  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:]
38494  */
38495  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2003, __pyx_L1_error)
38496  __Pyx_GOTREF(__pyx_t_11);
38497  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2003, __pyx_L1_error)
38498  __Pyx_GOTREF(__pyx_t_4);
38499  __pyx_t_2 = NULL;
38500  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
38501  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_11);
38502  if (likely(__pyx_t_2)) {
38503  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
38504  __Pyx_INCREF(__pyx_t_2);
38505  __Pyx_INCREF(function);
38506  __Pyx_DECREF_SET(__pyx_t_11, function);
38507  }
38508  }
38509  __pyx_t_8 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_4);
38510  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38511  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38512  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2003, __pyx_L1_error)
38513  __Pyx_GOTREF(__pyx_t_8);
38514  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38515  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
38516  __pyx_t_11 = __pyx_t_8; __Pyx_INCREF(__pyx_t_11); __pyx_t_13 = 0;
38517  __pyx_t_15 = NULL;
38518  } else {
38519  __pyx_t_13 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2003, __pyx_L1_error)
38520  __Pyx_GOTREF(__pyx_t_11);
38521  __pyx_t_15 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2003, __pyx_L1_error)
38522  }
38523  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
38524  for (;;) {
38525  if (likely(!__pyx_t_15)) {
38526  if (likely(PyList_CheckExact(__pyx_t_11))) {
38527  if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_11)) break;
38528  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38529  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 2003, __pyx_L1_error)
38530  #else
38531  __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2003, __pyx_L1_error)
38532  __Pyx_GOTREF(__pyx_t_8);
38533  #endif
38534  } else {
38535  if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
38536  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38537  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_13); __Pyx_INCREF(__pyx_t_8); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 2003, __pyx_L1_error)
38538  #else
38539  __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2003, __pyx_L1_error)
38540  __Pyx_GOTREF(__pyx_t_8);
38541  #endif
38542  }
38543  } else {
38544  __pyx_t_8 = __pyx_t_15(__pyx_t_11);
38545  if (unlikely(!__pyx_t_8)) {
38546  PyObject* exc_type = PyErr_Occurred();
38547  if (exc_type) {
38548  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
38549  else __PYX_ERR(0, 2003, __pyx_L1_error)
38550  }
38551  break;
38552  }
38553  __Pyx_GOTREF(__pyx_t_8);
38554  }
38555  __Pyx_XDECREF_SET(__pyx_v_nn, __pyx_t_8);
38556  __pyx_t_8 = 0;
38557 
38558  /* "WaveTools.py":2004
38559  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d")
38560  * for nn in range(self.N):
38561  * for mm in range(self.Mtot): # <<<<<<<<<<<<<<
38562  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:]
38563  *
38564  */
38565  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2004, __pyx_L1_error)
38566  __Pyx_GOTREF(__pyx_t_4);
38567  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->Mtot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2004, __pyx_L1_error)
38568  __Pyx_GOTREF(__pyx_t_2);
38569  __pyx_t_6 = NULL;
38570  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
38571  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
38572  if (likely(__pyx_t_6)) {
38573  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
38574  __Pyx_INCREF(__pyx_t_6);
38575  __Pyx_INCREF(function);
38576  __Pyx_DECREF_SET(__pyx_t_4, function);
38577  }
38578  }
38579  __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2);
38580  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38581  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38582  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2004, __pyx_L1_error)
38583  __Pyx_GOTREF(__pyx_t_8);
38584  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38585  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
38586  __pyx_t_4 = __pyx_t_8; __Pyx_INCREF(__pyx_t_4); __pyx_t_19 = 0;
38587  __pyx_t_20 = NULL;
38588  } else {
38589  __pyx_t_19 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2004, __pyx_L1_error)
38590  __Pyx_GOTREF(__pyx_t_4);
38591  __pyx_t_20 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2004, __pyx_L1_error)
38592  }
38593  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
38594  for (;;) {
38595  if (likely(!__pyx_t_20)) {
38596  if (likely(PyList_CheckExact(__pyx_t_4))) {
38597  if (__pyx_t_19 >= PyList_GET_SIZE(__pyx_t_4)) break;
38598  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38599  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_19); __Pyx_INCREF(__pyx_t_8); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 2004, __pyx_L1_error)
38600  #else
38601  __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2004, __pyx_L1_error)
38602  __Pyx_GOTREF(__pyx_t_8);
38603  #endif
38604  } else {
38605  if (__pyx_t_19 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
38606  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38607  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_19); __Pyx_INCREF(__pyx_t_8); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 2004, __pyx_L1_error)
38608  #else
38609  __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2004, __pyx_L1_error)
38610  __Pyx_GOTREF(__pyx_t_8);
38611  #endif
38612  }
38613  } else {
38614  __pyx_t_8 = __pyx_t_20(__pyx_t_4);
38615  if (unlikely(!__pyx_t_8)) {
38616  PyObject* exc_type = PyErr_Occurred();
38617  if (exc_type) {
38618  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
38619  else __PYX_ERR(0, 2004, __pyx_L1_error)
38620  }
38621  break;
38622  }
38623  __Pyx_GOTREF(__pyx_t_8);
38624  }
38625  __Pyx_XDECREF_SET(__pyx_v_mm, __pyx_t_8);
38626  __pyx_t_8 = 0;
38627 
38628  /* "WaveTools.py":2005
38629  * for nn in range(self.N):
38630  * for mm in range(self.Mtot):
38631  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:] # <<<<<<<<<<<<<<
38632  *
38633  * for ij in range(3):
38634  */
38635  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RW->ki), __pyx_v_nn); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2005, __pyx_L1_error)
38636  __Pyx_GOTREF(__pyx_t_8);
38637  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2005, __pyx_L1_error)
38638  __Pyx_GOTREF(__pyx_t_2);
38639  __Pyx_INCREF(__pyx_v_mm);
38640  __Pyx_GIVEREF(__pyx_v_mm);
38641  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_mm);
38642  __Pyx_INCREF(__pyx_slice__4);
38643  __Pyx_GIVEREF(__pyx_slice__4);
38644  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__4);
38645  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDirs), __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2005, __pyx_L1_error)
38646  __Pyx_GOTREF(__pyx_t_6);
38647  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38648  __pyx_t_2 = PyNumber_Multiply(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2005, __pyx_L1_error)
38649  __Pyx_GOTREF(__pyx_t_2);
38650  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
38651  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38652  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2005, __pyx_L1_error)
38653  __Pyx_GOTREF(__pyx_t_6);
38654  __Pyx_INCREF(__pyx_v_nn);
38655  __Pyx_GIVEREF(__pyx_v_nn);
38656  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_nn);
38657  __Pyx_INCREF(__pyx_v_mm);
38658  __Pyx_GIVEREF(__pyx_v_mm);
38659  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_mm);
38660  __Pyx_INCREF(__pyx_slice__4);
38661  __Pyx_GIVEREF(__pyx_slice__4);
38662  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_slice__4);
38663  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->kDirs), __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 2005, __pyx_L1_error)
38664  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38665  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38666 
38667  /* "WaveTools.py":2004
38668  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d")
38669  * for nn in range(self.N):
38670  * for mm in range(self.Mtot): # <<<<<<<<<<<<<<
38671  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:]
38672  *
38673  */
38674  }
38675  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38676 
38677  /* "WaveTools.py":2003
38678  * self.depth = depth
38679  * self.kDirs = np.zeros((self.N, self.Mtot, 3),"d")
38680  * for nn in range(self.N): # <<<<<<<<<<<<<<
38681  * for mm in range(self.Mtot):
38682  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:]
38683  */
38684  }
38685  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38686 
38687  /* "WaveTools.py":2007
38688  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:]
38689  *
38690  * for ij in range(3): # <<<<<<<<<<<<<<
38691  * self.vDir_c[ij] = self.vDir[ij]
38692  * self.vDir_ = self.vDir_c
38693  */
38694  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2007, __pyx_L1_error)
38695  __Pyx_GOTREF(__pyx_t_4);
38696  __pyx_t_2 = NULL;
38697  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
38698  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
38699  if (likely(__pyx_t_2)) {
38700  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
38701  __Pyx_INCREF(__pyx_t_2);
38702  __Pyx_INCREF(function);
38703  __Pyx_DECREF_SET(__pyx_t_4, function);
38704  }
38705  }
38706  __pyx_t_11 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_3);
38707  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
38708  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2007, __pyx_L1_error)
38709  __Pyx_GOTREF(__pyx_t_11);
38710  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38711  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
38712  __pyx_t_4 = __pyx_t_11; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0;
38713  __pyx_t_15 = NULL;
38714  } else {
38715  __pyx_t_13 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2007, __pyx_L1_error)
38716  __Pyx_GOTREF(__pyx_t_4);
38717  __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2007, __pyx_L1_error)
38718  }
38719  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38720  for (;;) {
38721  if (likely(!__pyx_t_15)) {
38722  if (likely(PyList_CheckExact(__pyx_t_4))) {
38723  if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_4)) break;
38724  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38725  __pyx_t_11 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_11); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 2007, __pyx_L1_error)
38726  #else
38727  __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2007, __pyx_L1_error)
38728  __Pyx_GOTREF(__pyx_t_11);
38729  #endif
38730  } else {
38731  if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
38732  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38733  __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_11); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 2007, __pyx_L1_error)
38734  #else
38735  __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2007, __pyx_L1_error)
38736  __Pyx_GOTREF(__pyx_t_11);
38737  #endif
38738  }
38739  } else {
38740  __pyx_t_11 = __pyx_t_15(__pyx_t_4);
38741  if (unlikely(!__pyx_t_11)) {
38742  PyObject* exc_type = PyErr_Occurred();
38743  if (exc_type) {
38744  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
38745  else __PYX_ERR(0, 2007, __pyx_L1_error)
38746  }
38747  break;
38748  }
38749  __Pyx_GOTREF(__pyx_t_11);
38750  }
38751  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_11);
38752  __pyx_t_11 = 0;
38753 
38754  /* "WaveTools.py":2008
38755  *
38756  * for ij in range(3):
38757  * self.vDir_c[ij] = self.vDir[ij] # <<<<<<<<<<<<<<
38758  * self.vDir_ = self.vDir_c
38759  *
38760  */
38761  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->vDir), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2008, __pyx_L1_error)
38762  __Pyx_GOTREF(__pyx_t_11);
38763  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2008, __pyx_L1_error)
38764  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38765  __pyx_t_19 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_19 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2008, __pyx_L1_error)
38766  (__pyx_v_self->vDir_c[__pyx_t_19]) = __pyx_t_12;
38767 
38768  /* "WaveTools.py":2007
38769  * self.kDirs[nn,mm,:] = RW.ki[nn]*self.waveDirs[mm,:]
38770  *
38771  * for ij in range(3): # <<<<<<<<<<<<<<
38772  * self.vDir_c[ij] = self.vDir[ij]
38773  * self.vDir_ = self.vDir_c
38774  */
38775  }
38776  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38777 
38778  /* "WaveTools.py":2009
38779  * for ij in range(3):
38780  * self.vDir_c[ij] = self.vDir[ij]
38781  * self.vDir_ = self.vDir_c # <<<<<<<<<<<<<<
38782  *
38783  *
38784  */
38785  __pyx_t_21 = __pyx_v_self->vDir_c;
38786  __pyx_v_self->vDir_ = __pyx_t_21;
38787 
38788  /* "WaveTools.py":2012
38789  *
38790  *
38791  * for mm in range(self.Mtot): # <<<<<<<<<<<<<<
38792  * for nn in range(self.N):
38793  * ij = mm * self.N + nn
38794  */
38795  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2012, __pyx_L1_error)
38796  __Pyx_GOTREF(__pyx_t_11);
38797  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->Mtot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2012, __pyx_L1_error)
38798  __Pyx_GOTREF(__pyx_t_2);
38799  __pyx_t_6 = NULL;
38800  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
38801  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
38802  if (likely(__pyx_t_6)) {
38803  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
38804  __Pyx_INCREF(__pyx_t_6);
38805  __Pyx_INCREF(function);
38806  __Pyx_DECREF_SET(__pyx_t_11, function);
38807  }
38808  }
38809  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_2);
38810  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
38811  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38812  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
38813  __Pyx_GOTREF(__pyx_t_4);
38814  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
38815  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
38816  __pyx_t_11 = __pyx_t_4; __Pyx_INCREF(__pyx_t_11); __pyx_t_13 = 0;
38817  __pyx_t_15 = NULL;
38818  } else {
38819  __pyx_t_13 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2012, __pyx_L1_error)
38820  __Pyx_GOTREF(__pyx_t_11);
38821  __pyx_t_15 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2012, __pyx_L1_error)
38822  }
38823  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38824  for (;;) {
38825  if (likely(!__pyx_t_15)) {
38826  if (likely(PyList_CheckExact(__pyx_t_11))) {
38827  if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_11)) break;
38828  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38829  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_13); __Pyx_INCREF(__pyx_t_4); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 2012, __pyx_L1_error)
38830  #else
38831  __pyx_t_4 = PySequence_ITEM(__pyx_t_11, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
38832  __Pyx_GOTREF(__pyx_t_4);
38833  #endif
38834  } else {
38835  if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
38836  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38837  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_13); __Pyx_INCREF(__pyx_t_4); __pyx_t_13++; if (unlikely(0 < 0)) __PYX_ERR(0, 2012, __pyx_L1_error)
38838  #else
38839  __pyx_t_4 = PySequence_ITEM(__pyx_t_11, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2012, __pyx_L1_error)
38840  __Pyx_GOTREF(__pyx_t_4);
38841  #endif
38842  }
38843  } else {
38844  __pyx_t_4 = __pyx_t_15(__pyx_t_11);
38845  if (unlikely(!__pyx_t_4)) {
38846  PyObject* exc_type = PyErr_Occurred();
38847  if (exc_type) {
38848  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
38849  else __PYX_ERR(0, 2012, __pyx_L1_error)
38850  }
38851  break;
38852  }
38853  __Pyx_GOTREF(__pyx_t_4);
38854  }
38855  __Pyx_XDECREF_SET(__pyx_v_mm, __pyx_t_4);
38856  __pyx_t_4 = 0;
38857 
38858  /* "WaveTools.py":2013
38859  *
38860  * for mm in range(self.Mtot):
38861  * for nn in range(self.N): # <<<<<<<<<<<<<<
38862  * ij = mm * self.N + nn
38863  * self.ai_c[ij] = self.aiDirs[mm,nn]
38864  */
38865  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error)
38866  __Pyx_GOTREF(__pyx_t_2);
38867  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2013, __pyx_L1_error)
38868  __Pyx_GOTREF(__pyx_t_6);
38869  __pyx_t_8 = NULL;
38870  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
38871  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
38872  if (likely(__pyx_t_8)) {
38873  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
38874  __Pyx_INCREF(__pyx_t_8);
38875  __Pyx_INCREF(function);
38876  __Pyx_DECREF_SET(__pyx_t_2, function);
38877  }
38878  }
38879  __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6);
38880  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
38881  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38882  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2013, __pyx_L1_error)
38883  __Pyx_GOTREF(__pyx_t_4);
38884  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
38885  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
38886  __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_19 = 0;
38887  __pyx_t_20 = NULL;
38888  } else {
38889  __pyx_t_19 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error)
38890  __Pyx_GOTREF(__pyx_t_2);
38891  __pyx_t_20 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2013, __pyx_L1_error)
38892  }
38893  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38894  for (;;) {
38895  if (likely(!__pyx_t_20)) {
38896  if (likely(PyList_CheckExact(__pyx_t_2))) {
38897  if (__pyx_t_19 >= PyList_GET_SIZE(__pyx_t_2)) break;
38898  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38899  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_19); __Pyx_INCREF(__pyx_t_4); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 2013, __pyx_L1_error)
38900  #else
38901  __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2013, __pyx_L1_error)
38902  __Pyx_GOTREF(__pyx_t_4);
38903  #endif
38904  } else {
38905  if (__pyx_t_19 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
38906  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
38907  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_19); __Pyx_INCREF(__pyx_t_4); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 2013, __pyx_L1_error)
38908  #else
38909  __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2013, __pyx_L1_error)
38910  __Pyx_GOTREF(__pyx_t_4);
38911  #endif
38912  }
38913  } else {
38914  __pyx_t_4 = __pyx_t_20(__pyx_t_2);
38915  if (unlikely(!__pyx_t_4)) {
38916  PyObject* exc_type = PyErr_Occurred();
38917  if (exc_type) {
38918  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
38919  else __PYX_ERR(0, 2013, __pyx_L1_error)
38920  }
38921  break;
38922  }
38923  __Pyx_GOTREF(__pyx_t_4);
38924  }
38925  __Pyx_XDECREF_SET(__pyx_v_nn, __pyx_t_4);
38926  __pyx_t_4 = 0;
38927 
38928  /* "WaveTools.py":2014
38929  * for mm in range(self.Mtot):
38930  * for nn in range(self.N):
38931  * ij = mm * self.N + nn # <<<<<<<<<<<<<<
38932  * self.ai_c[ij] = self.aiDirs[mm,nn]
38933  * self.phi_c[ij] = self.phiDirs[mm,nn]
38934  */
38935  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2014, __pyx_L1_error)
38936  __Pyx_GOTREF(__pyx_t_4);
38937  __pyx_t_6 = PyNumber_Multiply(__pyx_v_mm, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2014, __pyx_L1_error)
38938  __Pyx_GOTREF(__pyx_t_6);
38939  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38940  __pyx_t_4 = PyNumber_Add(__pyx_t_6, __pyx_v_nn); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2014, __pyx_L1_error)
38941  __Pyx_GOTREF(__pyx_t_4);
38942  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38943  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_4);
38944  __pyx_t_4 = 0;
38945 
38946  /* "WaveTools.py":2015
38947  * for nn in range(self.N):
38948  * ij = mm * self.N + nn
38949  * self.ai_c[ij] = self.aiDirs[mm,nn] # <<<<<<<<<<<<<<
38950  * self.phi_c[ij] = self.phiDirs[mm,nn]
38951  * self.omega_c[ij] = RW.omega[nn]
38952  */
38953  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2015, __pyx_L1_error)
38954  __Pyx_GOTREF(__pyx_t_4);
38955  __Pyx_INCREF(__pyx_v_mm);
38956  __Pyx_GIVEREF(__pyx_v_mm);
38957  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_mm);
38958  __Pyx_INCREF(__pyx_v_nn);
38959  __Pyx_GIVEREF(__pyx_v_nn);
38960  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_nn);
38961  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->aiDirs), __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2015, __pyx_L1_error)
38962  __Pyx_GOTREF(__pyx_t_6);
38963  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38964  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2015, __pyx_L1_error)
38965  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38966  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2015, __pyx_L1_error)
38967  (__pyx_v_self->ai_c[__pyx_t_22]) = __pyx_t_12;
38968 
38969  /* "WaveTools.py":2016
38970  * ij = mm * self.N + nn
38971  * self.ai_c[ij] = self.aiDirs[mm,nn]
38972  * self.phi_c[ij] = self.phiDirs[mm,nn] # <<<<<<<<<<<<<<
38973  * self.omega_c[ij] = RW.omega[nn]
38974  * self.ki_c[ij] =RW.ki[nn]
38975  */
38976  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2016, __pyx_L1_error)
38977  __Pyx_GOTREF(__pyx_t_6);
38978  __Pyx_INCREF(__pyx_v_mm);
38979  __Pyx_GIVEREF(__pyx_v_mm);
38980  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_mm);
38981  __Pyx_INCREF(__pyx_v_nn);
38982  __Pyx_GIVEREF(__pyx_v_nn);
38983  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_nn);
38984  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->phiDirs), __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2016, __pyx_L1_error)
38985  __Pyx_GOTREF(__pyx_t_4);
38986  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
38987  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2016, __pyx_L1_error)
38988  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
38989  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2016, __pyx_L1_error)
38990  (__pyx_v_self->phi_c[__pyx_t_22]) = __pyx_t_12;
38991 
38992  /* "WaveTools.py":2017
38993  * self.ai_c[ij] = self.aiDirs[mm,nn]
38994  * self.phi_c[ij] = self.phiDirs[mm,nn]
38995  * self.omega_c[ij] = RW.omega[nn] # <<<<<<<<<<<<<<
38996  * self.ki_c[ij] =RW.ki[nn]
38997  * self.tanh_c[ij] = RW.tanhF[nn]
38998  */
38999  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RW->omega), __pyx_v_nn); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2017, __pyx_L1_error)
39000  __Pyx_GOTREF(__pyx_t_4);
39001  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2017, __pyx_L1_error)
39002  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39003  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2017, __pyx_L1_error)
39004  (__pyx_v_self->omega_c[__pyx_t_22]) = __pyx_t_12;
39005 
39006  /* "WaveTools.py":2018
39007  * self.phi_c[ij] = self.phiDirs[mm,nn]
39008  * self.omega_c[ij] = RW.omega[nn]
39009  * self.ki_c[ij] =RW.ki[nn] # <<<<<<<<<<<<<<
39010  * self.tanh_c[ij] = RW.tanhF[nn]
39011  * for kk in range(3):
39012  */
39013  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RW->ki), __pyx_v_nn); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2018, __pyx_L1_error)
39014  __Pyx_GOTREF(__pyx_t_4);
39015  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2018, __pyx_L1_error)
39016  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39017  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2018, __pyx_L1_error)
39018  (__pyx_v_self->ki_c[__pyx_t_22]) = __pyx_t_12;
39019 
39020  /* "WaveTools.py":2019
39021  * self.omega_c[ij] = RW.omega[nn]
39022  * self.ki_c[ij] =RW.ki[nn]
39023  * self.tanh_c[ij] = RW.tanhF[nn] # <<<<<<<<<<<<<<
39024  * for kk in range(3):
39025  * self.kDir_c[3*ij+kk] = self.kDirs[nn,mm,kk]
39026  */
39027  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RW->tanhF), __pyx_v_nn); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2019, __pyx_L1_error)
39028  __Pyx_GOTREF(__pyx_t_4);
39029  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2019, __pyx_L1_error)
39030  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39031  __pyx_t_22 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_22 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2019, __pyx_L1_error)
39032  (__pyx_v_self->tanh_c[__pyx_t_22]) = __pyx_t_12;
39033 
39034  /* "WaveTools.py":2020
39035  * self.ki_c[ij] =RW.ki[nn]
39036  * self.tanh_c[ij] = RW.tanhF[nn]
39037  * for kk in range(3): # <<<<<<<<<<<<<<
39038  * self.kDir_c[3*ij+kk] = self.kDirs[nn,mm,kk]
39039  * self.waveDir_c[3*ij+kk] = self.waveDirs[mm,kk]
39040  */
39041  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2020, __pyx_L1_error)
39042  __Pyx_GOTREF(__pyx_t_6);
39043  __pyx_t_8 = NULL;
39044  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
39045  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
39046  if (likely(__pyx_t_8)) {
39047  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
39048  __Pyx_INCREF(__pyx_t_8);
39049  __Pyx_INCREF(function);
39050  __Pyx_DECREF_SET(__pyx_t_6, function);
39051  }
39052  }
39053  __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_3);
39054  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
39055  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2020, __pyx_L1_error)
39056  __Pyx_GOTREF(__pyx_t_4);
39057  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
39058  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
39059  __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6); __pyx_t_22 = 0;
39060  __pyx_t_23 = NULL;
39061  } else {
39062  __pyx_t_22 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2020, __pyx_L1_error)
39063  __Pyx_GOTREF(__pyx_t_6);
39064  __pyx_t_23 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2020, __pyx_L1_error)
39065  }
39066  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39067  for (;;) {
39068  if (likely(!__pyx_t_23)) {
39069  if (likely(PyList_CheckExact(__pyx_t_6))) {
39070  if (__pyx_t_22 >= PyList_GET_SIZE(__pyx_t_6)) break;
39071  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
39072  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_22); __Pyx_INCREF(__pyx_t_4); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 2020, __pyx_L1_error)
39073  #else
39074  __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2020, __pyx_L1_error)
39075  __Pyx_GOTREF(__pyx_t_4);
39076  #endif
39077  } else {
39078  if (__pyx_t_22 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
39079  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
39080  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_22); __Pyx_INCREF(__pyx_t_4); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 2020, __pyx_L1_error)
39081  #else
39082  __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2020, __pyx_L1_error)
39083  __Pyx_GOTREF(__pyx_t_4);
39084  #endif
39085  }
39086  } else {
39087  __pyx_t_4 = __pyx_t_23(__pyx_t_6);
39088  if (unlikely(!__pyx_t_4)) {
39089  PyObject* exc_type = PyErr_Occurred();
39090  if (exc_type) {
39091  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
39092  else __PYX_ERR(0, 2020, __pyx_L1_error)
39093  }
39094  break;
39095  }
39096  __Pyx_GOTREF(__pyx_t_4);
39097  }
39098  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_4);
39099  __pyx_t_4 = 0;
39100 
39101  /* "WaveTools.py":2021
39102  * self.tanh_c[ij] = RW.tanhF[nn]
39103  * for kk in range(3):
39104  * self.kDir_c[3*ij+kk] = self.kDirs[nn,mm,kk] # <<<<<<<<<<<<<<
39105  * self.waveDir_c[3*ij+kk] = self.waveDirs[mm,kk]
39106  *
39107  */
39108  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2021, __pyx_L1_error)
39109  __Pyx_GOTREF(__pyx_t_4);
39110  __Pyx_INCREF(__pyx_v_nn);
39111  __Pyx_GIVEREF(__pyx_v_nn);
39112  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_nn);
39113  __Pyx_INCREF(__pyx_v_mm);
39114  __Pyx_GIVEREF(__pyx_v_mm);
39115  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_mm);
39116  __Pyx_INCREF(__pyx_v_kk);
39117  __Pyx_GIVEREF(__pyx_v_kk);
39118  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_kk);
39119  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDirs), __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2021, __pyx_L1_error)
39120  __Pyx_GOTREF(__pyx_t_8);
39121  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39122  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2021, __pyx_L1_error)
39123  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
39124  __pyx_t_8 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2021, __pyx_L1_error)
39125  __Pyx_GOTREF(__pyx_t_8);
39126  __pyx_t_4 = PyNumber_Add(__pyx_t_8, __pyx_v_kk); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2021, __pyx_L1_error)
39127  __Pyx_GOTREF(__pyx_t_4);
39128  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
39129  __pyx_t_24 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_24 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2021, __pyx_L1_error)
39130  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39131  (__pyx_v_self->kDir_c[__pyx_t_24]) = __pyx_t_12;
39132 
39133  /* "WaveTools.py":2022
39134  * for kk in range(3):
39135  * self.kDir_c[3*ij+kk] = self.kDirs[nn,mm,kk]
39136  * self.waveDir_c[3*ij+kk] = self.waveDirs[mm,kk] # <<<<<<<<<<<<<<
39137  *
39138  * self.kDir_ = self.kDir_c
39139  */
39140  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2022, __pyx_L1_error)
39141  __Pyx_GOTREF(__pyx_t_4);
39142  __Pyx_INCREF(__pyx_v_mm);
39143  __Pyx_GIVEREF(__pyx_v_mm);
39144  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_mm);
39145  __Pyx_INCREF(__pyx_v_kk);
39146  __Pyx_GIVEREF(__pyx_v_kk);
39147  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_kk);
39148  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDirs), __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2022, __pyx_L1_error)
39149  __Pyx_GOTREF(__pyx_t_8);
39150  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39151  __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2022, __pyx_L1_error)
39152  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
39153  __pyx_t_8 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2022, __pyx_L1_error)
39154  __Pyx_GOTREF(__pyx_t_8);
39155  __pyx_t_4 = PyNumber_Add(__pyx_t_8, __pyx_v_kk); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2022, __pyx_L1_error)
39156  __Pyx_GOTREF(__pyx_t_4);
39157  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
39158  __pyx_t_24 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_24 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2022, __pyx_L1_error)
39159  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
39160  (__pyx_v_self->waveDir_c[__pyx_t_24]) = __pyx_t_12;
39161 
39162  /* "WaveTools.py":2020
39163  * self.ki_c[ij] =RW.ki[nn]
39164  * self.tanh_c[ij] = RW.tanhF[nn]
39165  * for kk in range(3): # <<<<<<<<<<<<<<
39166  * self.kDir_c[3*ij+kk] = self.kDirs[nn,mm,kk]
39167  * self.waveDir_c[3*ij+kk] = self.waveDirs[mm,kk]
39168  */
39169  }
39170  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
39171 
39172  /* "WaveTools.py":2013
39173  *
39174  * for mm in range(self.Mtot):
39175  * for nn in range(self.N): # <<<<<<<<<<<<<<
39176  * ij = mm * self.N + nn
39177  * self.ai_c[ij] = self.aiDirs[mm,nn]
39178  */
39179  }
39180  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
39181 
39182  /* "WaveTools.py":2012
39183  *
39184  *
39185  * for mm in range(self.Mtot): # <<<<<<<<<<<<<<
39186  * for nn in range(self.N):
39187  * ij = mm * self.N + nn
39188  */
39189  }
39190  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
39191 
39192  /* "WaveTools.py":2024
39193  * self.waveDir_c[3*ij+kk] = self.waveDirs[mm,kk]
39194  *
39195  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
39196  * self.omega_ = self.omega_c
39197  * self.ki_ =self.ki_c
39198  */
39199  __pyx_t_21 = __pyx_v_self->kDir_c;
39200  __pyx_v_self->kDir_ = __pyx_t_21;
39201 
39202  /* "WaveTools.py":2025
39203  *
39204  * self.kDir_ = self.kDir_c
39205  * self.omega_ = self.omega_c # <<<<<<<<<<<<<<
39206  * self.ki_ =self.ki_c
39207  * self.ai_ = self.ai_c
39208  */
39209  __pyx_t_21 = __pyx_v_self->omega_c;
39210  __pyx_v_self->omega_ = __pyx_t_21;
39211 
39212  /* "WaveTools.py":2026
39213  * self.kDir_ = self.kDir_c
39214  * self.omega_ = self.omega_c
39215  * self.ki_ =self.ki_c # <<<<<<<<<<<<<<
39216  * self.ai_ = self.ai_c
39217  * self.tanh_ = self.tanh_c
39218  */
39219  __pyx_t_21 = __pyx_v_self->ki_c;
39220  __pyx_v_self->ki_ = __pyx_t_21;
39221 
39222  /* "WaveTools.py":2027
39223  * self.omega_ = self.omega_c
39224  * self.ki_ =self.ki_c
39225  * self.ai_ = self.ai_c # <<<<<<<<<<<<<<
39226  * self.tanh_ = self.tanh_c
39227  * self.phi_ = self.phi_c
39228  */
39229  __pyx_t_21 = __pyx_v_self->ai_c;
39230  __pyx_v_self->ai_ = __pyx_t_21;
39231 
39232  /* "WaveTools.py":2028
39233  * self.ki_ =self.ki_c
39234  * self.ai_ = self.ai_c
39235  * self.tanh_ = self.tanh_c # <<<<<<<<<<<<<<
39236  * self.phi_ = self.phi_c
39237  * self.waveDir_ = self.waveDir_c
39238  */
39239  __pyx_t_21 = __pyx_v_self->tanh_c;
39240  __pyx_v_self->tanh_ = __pyx_t_21;
39241 
39242  /* "WaveTools.py":2029
39243  * self.ai_ = self.ai_c
39244  * self.tanh_ = self.tanh_c
39245  * self.phi_ = self.phi_c # <<<<<<<<<<<<<<
39246  * self.waveDir_ = self.waveDir_c
39247  *
39248  */
39249  __pyx_t_21 = __pyx_v_self->phi_c;
39250  __pyx_v_self->phi_ = __pyx_t_21;
39251 
39252  /* "WaveTools.py":2030
39253  * self.tanh_ = self.tanh_c
39254  * self.phi_ = self.phi_c
39255  * self.waveDir_ = self.waveDir_c # <<<<<<<<<<<<<<
39256  *
39257  * def _cpp_eta(self, x, t):
39258  */
39259  __pyx_t_21 = __pyx_v_self->waveDir_c;
39260  __pyx_v_self->waveDir_ = __pyx_t_21;
39261 
39262  /* "WaveTools.py":1898
39263  *
39264  * """
39265  * def __cinit__(self, # <<<<<<<<<<<<<<
39266  * M, #half bin of frequencies
39267  * Tp, # np array with
39268  */
39269 
39270  /* function exit code */
39271  __pyx_r = 0;
39272  goto __pyx_L0;
39273  __pyx_L1_error:;
39274  __Pyx_XDECREF(__pyx_t_2);
39275  __Pyx_XDECREF(__pyx_t_3);
39276  __Pyx_XDECREF(__pyx_t_4);
39277  __Pyx_XDECREF(__pyx_t_6);
39278  __Pyx_XDECREF(__pyx_t_8);
39279  __Pyx_XDECREF(__pyx_t_9);
39280  __Pyx_XDECREF(__pyx_t_10);
39281  __Pyx_XDECREF(__pyx_t_11);
39282  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
39283  __pyx_r = -1;
39284  __pyx_L0:;
39285  __Pyx_XDECREF(__pyx_v_validSpread);
39286  __Pyx_XDECREF(__pyx_v_spread_fun);
39287  __Pyx_XDECREF((PyObject *)__pyx_v_RW);
39288  __Pyx_XDECREF(__pyx_v_rotation3D);
39289  __Pyx_XDECREF(__pyx_v_thetas);
39290  __Pyx_XDECREF(__pyx_v_dth);
39291  __Pyx_XDECREF(__pyx_v_temp_array);
39292  __Pyx_XDECREF(__pyx_v_directions);
39293  __Pyx_XDECREF(__pyx_v_rr);
39294  __Pyx_XDECREF(__pyx_v_theta);
39295  __Pyx_XDECREF(__pyx_v_i);
39296  __Pyx_XDECREF(__pyx_v_theta_m);
39297  __Pyx_XDECREF(__pyx_v_Si_Sp);
39298  __Pyx_XDECREF(__pyx_v_freq);
39299  __Pyx_XDECREF(__pyx_v_ii);
39300  __Pyx_XDECREF(__pyx_v_nn);
39301  __Pyx_XDECREF(__pyx_v_mm);
39302  __Pyx_XDECREF(__pyx_v_ij);
39303  __Pyx_XDECREF(__pyx_v_kk);
39304  __Pyx_RefNannyFinishContext();
39305  return __pyx_r;
39306 }
39307 
39308 /* "WaveTools.py":2032
39309  * self.waveDir_ = self.waveDir_c
39310  *
39311  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
39312  *
39313  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast)
39314  */
39315 
39316 static double __pyx_f_9WaveTools_16DirectionalWaves__cpp_eta(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
39317  double __pyx_r;
39318  __Pyx_RefNannyDeclarations
39319  __Pyx_RefNannySetupContext("_cpp_eta", 0);
39320 
39321  /* "WaveTools.py":2034
39322  * def _cpp_eta(self, x, t):
39323  *
39324  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast) # <<<<<<<<<<<<<<
39325  *
39326  * def eta(self, x, t):
39327  */
39328  __pyx_r = proteus::__cpp_etaRandom(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->Nall, __pyx_v_self->fast);
39329  goto __pyx_L0;
39330 
39331  /* "WaveTools.py":2032
39332  * self.waveDir_ = self.waveDir_c
39333  *
39334  * def _cpp_eta(self, x, t): # <<<<<<<<<<<<<<
39335  *
39336  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast)
39337  */
39338 
39339  /* function exit code */
39340  __pyx_L0:;
39341  __Pyx_RefNannyFinishContext();
39342  return __pyx_r;
39343 }
39344 
39345 /* "WaveTools.py":2036
39346  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast)
39347  *
39348  * def eta(self, x, t): # <<<<<<<<<<<<<<
39349  * """Calculates free surface elevation (RandomWaves class)
39350  * Parameters
39351  */
39352 
39353 /* Python wrapper */
39354 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
39355 static char __pyx_doc_9WaveTools_16DirectionalWaves_2eta[] = "Calculates free surface elevation (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
39356 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_16DirectionalWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_2eta};
39357 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3eta(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
39358  PyObject *__pyx_v_x = 0;
39359  PyObject *__pyx_v_t = 0;
39360  int __pyx_lineno = 0;
39361  const char *__pyx_filename = NULL;
39362  int __pyx_clineno = 0;
39363  PyObject *__pyx_r = 0;
39364  __Pyx_RefNannyDeclarations
39365  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
39366  {
39367  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
39368  PyObject* values[2] = {0,0};
39369  if (unlikely(__pyx_kwds)) {
39370  Py_ssize_t kw_args;
39371  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
39372  switch (pos_args) {
39373  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
39374  CYTHON_FALLTHROUGH;
39375  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
39376  CYTHON_FALLTHROUGH;
39377  case 0: break;
39378  default: goto __pyx_L5_argtuple_error;
39379  }
39380  kw_args = PyDict_Size(__pyx_kwds);
39381  switch (pos_args) {
39382  case 0:
39383  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
39384  else goto __pyx_L5_argtuple_error;
39385  CYTHON_FALLTHROUGH;
39386  case 1:
39387  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
39388  else {
39389  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, 1); __PYX_ERR(0, 2036, __pyx_L3_error)
39390  }
39391  }
39392  if (unlikely(kw_args > 0)) {
39393  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 2036, __pyx_L3_error)
39394  }
39395  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
39396  goto __pyx_L5_argtuple_error;
39397  } else {
39398  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
39399  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
39400  }
39401  __pyx_v_x = values[0];
39402  __pyx_v_t = values[1];
39403  }
39404  goto __pyx_L4_argument_unpacking_done;
39405  __pyx_L5_argtuple_error:;
39406  __Pyx_RaiseArgtupleInvalid("eta", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2036, __pyx_L3_error)
39407  __pyx_L3_error:;
39408  __Pyx_AddTraceback("WaveTools.DirectionalWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
39409  __Pyx_RefNannyFinishContext();
39410  return NULL;
39411  __pyx_L4_argument_unpacking_done:;
39412  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_2eta(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
39413 
39414  /* function exit code */
39415  __Pyx_RefNannyFinishContext();
39416  return __pyx_r;
39417 }
39418 
39419 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_2eta(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
39420  double __pyx_v_xx[3];
39421  PyObject *__pyx_r = NULL;
39422  __Pyx_RefNannyDeclarations
39423  PyObject *__pyx_t_1 = NULL;
39424  double __pyx_t_2;
39425  int __pyx_lineno = 0;
39426  const char *__pyx_filename = NULL;
39427  int __pyx_clineno = 0;
39428  __Pyx_RefNannySetupContext("eta", 0);
39429 
39430  /* "WaveTools.py":2052
39431  * """
39432  * cython.declare(xx=cython.double[3])
39433  * xx[0] = x[0] # <<<<<<<<<<<<<<
39434  * xx[1] = x[1]
39435  * xx[2] = x[2]
39436  */
39437  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2052, __pyx_L1_error)
39438  __Pyx_GOTREF(__pyx_t_1);
39439  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2052, __pyx_L1_error)
39440  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
39441  (__pyx_v_xx[0]) = __pyx_t_2;
39442 
39443  /* "WaveTools.py":2053
39444  * cython.declare(xx=cython.double[3])
39445  * xx[0] = x[0]
39446  * xx[1] = x[1] # <<<<<<<<<<<<<<
39447  * xx[2] = x[2]
39448  * return self._cpp_eta(xx,t)
39449  */
39450  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2053, __pyx_L1_error)
39451  __Pyx_GOTREF(__pyx_t_1);
39452  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2053, __pyx_L1_error)
39453  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
39454  (__pyx_v_xx[1]) = __pyx_t_2;
39455 
39456  /* "WaveTools.py":2054
39457  * xx[0] = x[0]
39458  * xx[1] = x[1]
39459  * xx[2] = x[2] # <<<<<<<<<<<<<<
39460  * return self._cpp_eta(xx,t)
39461  *
39462  */
39463  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2054, __pyx_L1_error)
39464  __Pyx_GOTREF(__pyx_t_1);
39465  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2054, __pyx_L1_error)
39466  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
39467  (__pyx_v_xx[2]) = __pyx_t_2;
39468 
39469  /* "WaveTools.py":2055
39470  * xx[1] = x[1]
39471  * xx[2] = x[2]
39472  * return self._cpp_eta(xx,t) # <<<<<<<<<<<<<<
39473  *
39474  * def _cpp_u(self,U, x, t):
39475  */
39476  __Pyx_XDECREF(__pyx_r);
39477  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2055, __pyx_L1_error)
39478  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_DirectionalWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2055, __pyx_L1_error)
39479  __Pyx_GOTREF(__pyx_t_1);
39480  __pyx_r = __pyx_t_1;
39481  __pyx_t_1 = 0;
39482  goto __pyx_L0;
39483 
39484  /* "WaveTools.py":2036
39485  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast)
39486  *
39487  * def eta(self, x, t): # <<<<<<<<<<<<<<
39488  * """Calculates free surface elevation (RandomWaves class)
39489  * Parameters
39490  */
39491 
39492  /* function exit code */
39493  __pyx_L1_error:;
39494  __Pyx_XDECREF(__pyx_t_1);
39495  __Pyx_AddTraceback("WaveTools.DirectionalWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
39496  __pyx_r = NULL;
39497  __pyx_L0:;
39498  __Pyx_XGIVEREF(__pyx_r);
39499  __Pyx_RefNannyFinishContext();
39500  return __pyx_r;
39501 }
39502 
39503 /* "WaveTools.py":2057
39504  * return self._cpp_eta(xx,t)
39505  *
39506  * def _cpp_u(self,U, x, t): # <<<<<<<<<<<<<<
39507  *
39508  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
39509  */
39510 
39511 static void __pyx_f_9WaveTools_16DirectionalWaves__cpp_u(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
39512  __Pyx_RefNannyDeclarations
39513  __Pyx_RefNannySetupContext("_cpp_u", 0);
39514 
39515  /* "WaveTools.py":2059
39516  * def _cpp_u(self,U, x, t):
39517  *
39518  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast) # <<<<<<<<<<<<<<
39519  *
39520  * def u(self, x, t):
39521  */
39522  proteus::__cpp_uDir(__pyx_v_U, __pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->Nall, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanh_, __pyx_v_self->gAbs, __pyx_v_self->fast);
39523 
39524  /* "WaveTools.py":2057
39525  * return self._cpp_eta(xx,t)
39526  *
39527  * def _cpp_u(self,U, x, t): # <<<<<<<<<<<<<<
39528  *
39529  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
39530  */
39531 
39532  /* function exit code */
39533  __Pyx_RefNannyFinishContext();
39534 }
39535 
39536 /* "WaveTools.py":2061
39537  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
39538  *
39539  * def u(self, x, t): # <<<<<<<<<<<<<<
39540  * """Calculates wave velocity vector (RandomWaves class)
39541  * Parameters
39542  */
39543 
39544 /* Python wrapper */
39545 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
39546 static char __pyx_doc_9WaveTools_16DirectionalWaves_4u[] = "Calculates wave velocity vector (RandomWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
39547 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_16DirectionalWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_4u};
39548 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5u(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
39549  PyObject *__pyx_v_x = 0;
39550  PyObject *__pyx_v_t = 0;
39551  int __pyx_lineno = 0;
39552  const char *__pyx_filename = NULL;
39553  int __pyx_clineno = 0;
39554  PyObject *__pyx_r = 0;
39555  __Pyx_RefNannyDeclarations
39556  __Pyx_RefNannySetupContext("u (wrapper)", 0);
39557  {
39558  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
39559  PyObject* values[2] = {0,0};
39560  if (unlikely(__pyx_kwds)) {
39561  Py_ssize_t kw_args;
39562  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
39563  switch (pos_args) {
39564  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
39565  CYTHON_FALLTHROUGH;
39566  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
39567  CYTHON_FALLTHROUGH;
39568  case 0: break;
39569  default: goto __pyx_L5_argtuple_error;
39570  }
39571  kw_args = PyDict_Size(__pyx_kwds);
39572  switch (pos_args) {
39573  case 0:
39574  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
39575  else goto __pyx_L5_argtuple_error;
39576  CYTHON_FALLTHROUGH;
39577  case 1:
39578  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
39579  else {
39580  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, 1); __PYX_ERR(0, 2061, __pyx_L3_error)
39581  }
39582  }
39583  if (unlikely(kw_args > 0)) {
39584  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 2061, __pyx_L3_error)
39585  }
39586  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
39587  goto __pyx_L5_argtuple_error;
39588  } else {
39589  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
39590  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
39591  }
39592  __pyx_v_x = values[0];
39593  __pyx_v_t = values[1];
39594  }
39595  goto __pyx_L4_argument_unpacking_done;
39596  __pyx_L5_argtuple_error:;
39597  __Pyx_RaiseArgtupleInvalid("u", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2061, __pyx_L3_error)
39598  __pyx_L3_error:;
39599  __Pyx_AddTraceback("WaveTools.DirectionalWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
39600  __Pyx_RefNannyFinishContext();
39601  return NULL;
39602  __pyx_L4_argument_unpacking_done:;
39603  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_4u(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
39604 
39605  /* function exit code */
39606  __Pyx_RefNannyFinishContext();
39607  return __pyx_r;
39608 }
39609 
39610 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_4u(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
39611  double __pyx_v_xx[3];
39612  double __pyx_v_cppU[3];
39613  PyObject *__pyx_v_ii = NULL;
39614  PyObject *__pyx_v_U = NULL;
39615  PyObject *__pyx_r = NULL;
39616  __Pyx_RefNannyDeclarations
39617  PyObject *__pyx_t_1 = NULL;
39618  PyObject *__pyx_t_2 = NULL;
39619  PyObject *__pyx_t_3 = NULL;
39620  Py_ssize_t __pyx_t_4;
39621  PyObject *(*__pyx_t_5)(PyObject *);
39622  double __pyx_t_6;
39623  Py_ssize_t __pyx_t_7;
39624  int __pyx_lineno = 0;
39625  const char *__pyx_filename = NULL;
39626  int __pyx_clineno = 0;
39627  __Pyx_RefNannySetupContext("u", 0);
39628 
39629  /* "WaveTools.py":2079
39630  * cython.declare(xx=cython.double[3])
39631  * cython.declare(cppU=cython.double[3])
39632  * for ii in range(3): # <<<<<<<<<<<<<<
39633  * xx[ii] = x[ii]
39634  * cppU[ii] = 0.
39635  */
39636  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2079, __pyx_L1_error)
39637  __Pyx_GOTREF(__pyx_t_2);
39638  __pyx_t_3 = NULL;
39639  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
39640  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
39641  if (likely(__pyx_t_3)) {
39642  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
39643  __Pyx_INCREF(__pyx_t_3);
39644  __Pyx_INCREF(function);
39645  __Pyx_DECREF_SET(__pyx_t_2, function);
39646  }
39647  }
39648  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
39649  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
39650  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __pyx_L1_error)
39651  __Pyx_GOTREF(__pyx_t_1);
39652  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
39653  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
39654  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
39655  __pyx_t_5 = NULL;
39656  } else {
39657  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2079, __pyx_L1_error)
39658  __Pyx_GOTREF(__pyx_t_2);
39659  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2079, __pyx_L1_error)
39660  }
39661  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
39662  for (;;) {
39663  if (likely(!__pyx_t_5)) {
39664  if (likely(PyList_CheckExact(__pyx_t_2))) {
39665  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
39666  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
39667  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2079, __pyx_L1_error)
39668  #else
39669  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __pyx_L1_error)
39670  __Pyx_GOTREF(__pyx_t_1);
39671  #endif
39672  } else {
39673  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
39674  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
39675  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2079, __pyx_L1_error)
39676  #else
39677  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __pyx_L1_error)
39678  __Pyx_GOTREF(__pyx_t_1);
39679  #endif
39680  }
39681  } else {
39682  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
39683  if (unlikely(!__pyx_t_1)) {
39684  PyObject* exc_type = PyErr_Occurred();
39685  if (exc_type) {
39686  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
39687  else __PYX_ERR(0, 2079, __pyx_L1_error)
39688  }
39689  break;
39690  }
39691  __Pyx_GOTREF(__pyx_t_1);
39692  }
39693  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
39694  __pyx_t_1 = 0;
39695 
39696  /* "WaveTools.py":2080
39697  * cython.declare(cppU=cython.double[3])
39698  * for ii in range(3):
39699  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
39700  * cppU[ii] = 0.
39701  * U = np.zeros(3,)
39702  */
39703  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2080, __pyx_L1_error)
39704  __Pyx_GOTREF(__pyx_t_1);
39705  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2080, __pyx_L1_error)
39706  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
39707  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2080, __pyx_L1_error)
39708  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
39709 
39710  /* "WaveTools.py":2081
39711  * for ii in range(3):
39712  * xx[ii] = x[ii]
39713  * cppU[ii] = 0. # <<<<<<<<<<<<<<
39714  * U = np.zeros(3,)
39715  * self._cpp_u(cppU,xx,t)
39716  */
39717  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2081, __pyx_L1_error)
39718  (__pyx_v_cppU[__pyx_t_7]) = 0.;
39719 
39720  /* "WaveTools.py":2079
39721  * cython.declare(xx=cython.double[3])
39722  * cython.declare(cppU=cython.double[3])
39723  * for ii in range(3): # <<<<<<<<<<<<<<
39724  * xx[ii] = x[ii]
39725  * cppU[ii] = 0.
39726  */
39727  }
39728  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
39729 
39730  /* "WaveTools.py":2082
39731  * xx[ii] = x[ii]
39732  * cppU[ii] = 0.
39733  * U = np.zeros(3,) # <<<<<<<<<<<<<<
39734  * self._cpp_u(cppU,xx,t)
39735  * U[0] = cppU[0]
39736  */
39737  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2082, __pyx_L1_error)
39738  __Pyx_GOTREF(__pyx_t_1);
39739  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error)
39740  __Pyx_GOTREF(__pyx_t_3);
39741  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
39742  __pyx_t_1 = NULL;
39743  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
39744  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
39745  if (likely(__pyx_t_1)) {
39746  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
39747  __Pyx_INCREF(__pyx_t_1);
39748  __Pyx_INCREF(function);
39749  __Pyx_DECREF_SET(__pyx_t_3, function);
39750  }
39751  }
39752  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
39753  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
39754  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2082, __pyx_L1_error)
39755  __Pyx_GOTREF(__pyx_t_2);
39756  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
39757  __pyx_v_U = __pyx_t_2;
39758  __pyx_t_2 = 0;
39759 
39760  /* "WaveTools.py":2083
39761  * cppU[ii] = 0.
39762  * U = np.zeros(3,)
39763  * self._cpp_u(cppU,xx,t) # <<<<<<<<<<<<<<
39764  * U[0] = cppU[0]
39765  * U[1] = cppU[1]
39766  */
39767  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2083, __pyx_L1_error)
39768  ((struct __pyx_vtabstruct_9WaveTools_DirectionalWaves *)__pyx_v_self->__pyx_vtab)->_cpp_u(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
39769 
39770  /* "WaveTools.py":2084
39771  * U = np.zeros(3,)
39772  * self._cpp_u(cppU,xx,t)
39773  * U[0] = cppU[0] # <<<<<<<<<<<<<<
39774  * U[1] = cppU[1]
39775  * U[2] = cppU[2]
39776  */
39777  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2084, __pyx_L1_error)
39778  __Pyx_GOTREF(__pyx_t_2);
39779  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2084, __pyx_L1_error)
39780  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
39781 
39782  /* "WaveTools.py":2085
39783  * self._cpp_u(cppU,xx,t)
39784  * U[0] = cppU[0]
39785  * U[1] = cppU[1] # <<<<<<<<<<<<<<
39786  * U[2] = cppU[2]
39787  * return U
39788  */
39789  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2085, __pyx_L1_error)
39790  __Pyx_GOTREF(__pyx_t_2);
39791  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2085, __pyx_L1_error)
39792  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
39793 
39794  /* "WaveTools.py":2086
39795  * U[0] = cppU[0]
39796  * U[1] = cppU[1]
39797  * U[2] = cppU[2] # <<<<<<<<<<<<<<
39798  * return U
39799  *
39800  */
39801  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2086, __pyx_L1_error)
39802  __Pyx_GOTREF(__pyx_t_2);
39803  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2086, __pyx_L1_error)
39804  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
39805 
39806  /* "WaveTools.py":2087
39807  * U[1] = cppU[1]
39808  * U[2] = cppU[2]
39809  * return U # <<<<<<<<<<<<<<
39810  *
39811  *
39812  */
39813  __Pyx_XDECREF(__pyx_r);
39814  __Pyx_INCREF(__pyx_v_U);
39815  __pyx_r = __pyx_v_U;
39816  goto __pyx_L0;
39817 
39818  /* "WaveTools.py":2061
39819  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
39820  *
39821  * def u(self, x, t): # <<<<<<<<<<<<<<
39822  * """Calculates wave velocity vector (RandomWaves class)
39823  * Parameters
39824  */
39825 
39826  /* function exit code */
39827  __pyx_L1_error:;
39828  __Pyx_XDECREF(__pyx_t_1);
39829  __Pyx_XDECREF(__pyx_t_2);
39830  __Pyx_XDECREF(__pyx_t_3);
39831  __Pyx_AddTraceback("WaveTools.DirectionalWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
39832  __pyx_r = NULL;
39833  __pyx_L0:;
39834  __Pyx_XDECREF(__pyx_v_ii);
39835  __Pyx_XDECREF(__pyx_v_U);
39836  __Pyx_XGIVEREF(__pyx_r);
39837  __Pyx_RefNannyFinishContext();
39838  return __pyx_r;
39839 }
39840 
39841 /* "WaveTools.pxd":180
39842  * cdef double[100000] phi_c
39843  * cdef public:
39844  * double mwl,depth # <<<<<<<<<<<<<<
39845  * cdef double _cpp_eta(self, double* x, double t)
39846  * cdef void _cpp_u(self, double* U, double* x, double t)
39847  */
39848 
39849 /* Python wrapper */
39850 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
39851 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3mwl_1__get__(PyObject *__pyx_v_self) {
39852  PyObject *__pyx_r = 0;
39853  __Pyx_RefNannyDeclarations
39854  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
39855  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_3mwl___get__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self));
39856 
39857  /* function exit code */
39858  __Pyx_RefNannyFinishContext();
39859  return __pyx_r;
39860 }
39861 
39862 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_3mwl___get__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self) {
39863  PyObject *__pyx_r = NULL;
39864  __Pyx_RefNannyDeclarations
39865  PyObject *__pyx_t_1 = NULL;
39866  int __pyx_lineno = 0;
39867  const char *__pyx_filename = NULL;
39868  int __pyx_clineno = 0;
39869  __Pyx_RefNannySetupContext("__get__", 0);
39870  __Pyx_XDECREF(__pyx_r);
39871  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
39872  __Pyx_GOTREF(__pyx_t_1);
39873  __pyx_r = __pyx_t_1;
39874  __pyx_t_1 = 0;
39875  goto __pyx_L0;
39876 
39877  /* function exit code */
39878  __pyx_L1_error:;
39879  __Pyx_XDECREF(__pyx_t_1);
39880  __Pyx_AddTraceback("WaveTools.DirectionalWaves.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
39881  __pyx_r = NULL;
39882  __pyx_L0:;
39883  __Pyx_XGIVEREF(__pyx_r);
39884  __Pyx_RefNannyFinishContext();
39885  return __pyx_r;
39886 }
39887 
39888 /* Python wrapper */
39889 static int __pyx_pw_9WaveTools_16DirectionalWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
39890 static int __pyx_pw_9WaveTools_16DirectionalWaves_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
39891  int __pyx_r;
39892  __Pyx_RefNannyDeclarations
39893  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
39894  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_3mwl_2__set__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
39895 
39896  /* function exit code */
39897  __Pyx_RefNannyFinishContext();
39898  return __pyx_r;
39899 }
39900 
39901 static int __pyx_pf_9WaveTools_16DirectionalWaves_3mwl_2__set__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_value) {
39902  int __pyx_r;
39903  __Pyx_RefNannyDeclarations
39904  double __pyx_t_1;
39905  int __pyx_lineno = 0;
39906  const char *__pyx_filename = NULL;
39907  int __pyx_clineno = 0;
39908  __Pyx_RefNannySetupContext("__set__", 0);
39909  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 180, __pyx_L1_error)
39910  __pyx_v_self->mwl = __pyx_t_1;
39911 
39912  /* function exit code */
39913  __pyx_r = 0;
39914  goto __pyx_L0;
39915  __pyx_L1_error:;
39916  __Pyx_AddTraceback("WaveTools.DirectionalWaves.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
39917  __pyx_r = -1;
39918  __pyx_L0:;
39919  __Pyx_RefNannyFinishContext();
39920  return __pyx_r;
39921 }
39922 
39923 /* Python wrapper */
39924 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5depth_1__get__(PyObject *__pyx_v_self); /*proto*/
39925 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5depth_1__get__(PyObject *__pyx_v_self) {
39926  PyObject *__pyx_r = 0;
39927  __Pyx_RefNannyDeclarations
39928  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
39929  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_5depth___get__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self));
39930 
39931  /* function exit code */
39932  __Pyx_RefNannyFinishContext();
39933  return __pyx_r;
39934 }
39935 
39936 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_5depth___get__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self) {
39937  PyObject *__pyx_r = NULL;
39938  __Pyx_RefNannyDeclarations
39939  PyObject *__pyx_t_1 = NULL;
39940  int __pyx_lineno = 0;
39941  const char *__pyx_filename = NULL;
39942  int __pyx_clineno = 0;
39943  __Pyx_RefNannySetupContext("__get__", 0);
39944  __Pyx_XDECREF(__pyx_r);
39945  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
39946  __Pyx_GOTREF(__pyx_t_1);
39947  __pyx_r = __pyx_t_1;
39948  __pyx_t_1 = 0;
39949  goto __pyx_L0;
39950 
39951  /* function exit code */
39952  __pyx_L1_error:;
39953  __Pyx_XDECREF(__pyx_t_1);
39954  __Pyx_AddTraceback("WaveTools.DirectionalWaves.depth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
39955  __pyx_r = NULL;
39956  __pyx_L0:;
39957  __Pyx_XGIVEREF(__pyx_r);
39958  __Pyx_RefNannyFinishContext();
39959  return __pyx_r;
39960 }
39961 
39962 /* Python wrapper */
39963 static int __pyx_pw_9WaveTools_16DirectionalWaves_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
39964 static int __pyx_pw_9WaveTools_16DirectionalWaves_5depth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
39965  int __pyx_r;
39966  __Pyx_RefNannyDeclarations
39967  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
39968  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_5depth_2__set__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
39969 
39970  /* function exit code */
39971  __Pyx_RefNannyFinishContext();
39972  return __pyx_r;
39973 }
39974 
39975 static int __pyx_pf_9WaveTools_16DirectionalWaves_5depth_2__set__(struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, PyObject *__pyx_v_value) {
39976  int __pyx_r;
39977  __Pyx_RefNannyDeclarations
39978  double __pyx_t_1;
39979  int __pyx_lineno = 0;
39980  const char *__pyx_filename = NULL;
39981  int __pyx_clineno = 0;
39982  __Pyx_RefNannySetupContext("__set__", 0);
39983  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 180, __pyx_L1_error)
39984  __pyx_v_self->depth = __pyx_t_1;
39985 
39986  /* function exit code */
39987  __pyx_r = 0;
39988  goto __pyx_L0;
39989  __pyx_L1_error:;
39990  __Pyx_AddTraceback("WaveTools.DirectionalWaves.depth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
39991  __pyx_r = -1;
39992  __pyx_L0:;
39993  __Pyx_RefNannyFinishContext();
39994  return __pyx_r;
39995 }
39996 
39997 /* "(tree fragment)":1
39998  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
39999  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40000  * def __setstate_cython__(self, __pyx_state):
40001  */
40002 
40003 /* Python wrapper */
40004 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
40005 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_7__reduce_cython__, METH_NOARGS, 0};
40006 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
40007  PyObject *__pyx_r = 0;
40008  __Pyx_RefNannyDeclarations
40009  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
40010  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_6__reduce_cython__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self));
40011 
40012  /* function exit code */
40013  __Pyx_RefNannyFinishContext();
40014  return __pyx_r;
40015 }
40016 
40017 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self) {
40018  PyObject *__pyx_r = NULL;
40019  __Pyx_RefNannyDeclarations
40020  PyObject *__pyx_t_1 = NULL;
40021  int __pyx_lineno = 0;
40022  const char *__pyx_filename = NULL;
40023  int __pyx_clineno = 0;
40024  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
40025 
40026  /* "(tree fragment)":2
40027  * def __reduce_cython__(self):
40028  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
40029  * def __setstate_cython__(self, __pyx_state):
40030  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40031  */
40032  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
40033  __Pyx_GOTREF(__pyx_t_1);
40034  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
40035  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
40036  __PYX_ERR(1, 2, __pyx_L1_error)
40037 
40038  /* "(tree fragment)":1
40039  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
40040  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40041  * def __setstate_cython__(self, __pyx_state):
40042  */
40043 
40044  /* function exit code */
40045  __pyx_L1_error:;
40046  __Pyx_XDECREF(__pyx_t_1);
40047  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
40048  __pyx_r = NULL;
40049  __Pyx_XGIVEREF(__pyx_r);
40050  __Pyx_RefNannyFinishContext();
40051  return __pyx_r;
40052 }
40053 
40054 /* "(tree fragment)":3
40055  * def __reduce_cython__(self):
40056  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40057  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
40058  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40059  */
40060 
40061 /* Python wrapper */
40062 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
40063 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_9__setstate_cython__, METH_O, 0};
40064 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
40065  PyObject *__pyx_r = 0;
40066  __Pyx_RefNannyDeclarations
40067  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
40068  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_8__setstate_cython__(((struct __pyx_obj_9WaveTools_DirectionalWaves *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
40069 
40070  /* function exit code */
40071  __Pyx_RefNannyFinishContext();
40072  return __pyx_r;
40073 }
40074 
40075 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_DirectionalWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
40076  PyObject *__pyx_r = NULL;
40077  __Pyx_RefNannyDeclarations
40078  PyObject *__pyx_t_1 = NULL;
40079  int __pyx_lineno = 0;
40080  const char *__pyx_filename = NULL;
40081  int __pyx_clineno = 0;
40082  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
40083 
40084  /* "(tree fragment)":4
40085  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40086  * def __setstate_cython__(self, __pyx_state):
40087  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
40088  */
40089  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
40090  __Pyx_GOTREF(__pyx_t_1);
40091  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
40092  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
40093  __PYX_ERR(1, 4, __pyx_L1_error)
40094 
40095  /* "(tree fragment)":3
40096  * def __reduce_cython__(self):
40097  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40098  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
40099  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
40100  */
40101 
40102  /* function exit code */
40103  __pyx_L1_error:;
40104  __Pyx_XDECREF(__pyx_t_1);
40105  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
40106  __pyx_r = NULL;
40107  __Pyx_XGIVEREF(__pyx_r);
40108  __Pyx_RefNannyFinishContext();
40109  return __pyx_r;
40110 }
40111 
40112 /* "WaveTools.py":2134
40113  *
40114  * """
40115  * def __init__(self, # <<<<<<<<<<<<<<
40116  * timeSeriesFile, # e.g.= "Timeseries.txt",
40117  * skiprows,
40118  */
40119 
40120 /* Python wrapper */
40121 static int __pyx_pw_9WaveTools_10TimeSeries_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
40122 static int __pyx_pw_9WaveTools_10TimeSeries_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
40123  PyObject *__pyx_v_timeSeriesFile = 0;
40124  PyObject *__pyx_v_skiprows = 0;
40125  PyObject *__pyx_v_timeSeriesPosition = 0;
40126  PyObject *__pyx_v_depth = 0;
40127  PyObject *__pyx_v_N = 0;
40128  PyObject *__pyx_v_mwl = 0;
40129  PyObject *__pyx_v_waveDir = 0;
40130  PyObject *__pyx_v_g = 0;
40131  PyObject *__pyx_v_cutoffTotal = 0;
40132  PyObject *__pyx_v_rec_direct = 0;
40133  PyObject *__pyx_v_window_params = 0;
40134  PyObject *__pyx_v_arrayData = 0;
40135  PyObject *__pyx_v_seriesArray = 0;
40136  PyObject *__pyx_v_Lgen = 0;
40137  PyObject *__pyx_v_fast = 0;
40138  int __pyx_lineno = 0;
40139  const char *__pyx_filename = NULL;
40140  int __pyx_clineno = 0;
40141  int __pyx_r;
40142  __Pyx_RefNannyDeclarations
40143  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
40144  {
40145  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeSeriesFile,&__pyx_n_s_skiprows,&__pyx_n_s_timeSeriesPosition,&__pyx_n_s_depth,&__pyx_n_s_N,&__pyx_n_s_mwl,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_cutoffTotal,&__pyx_n_s_rec_direct,&__pyx_n_s_window_params,&__pyx_n_s_arrayData,&__pyx_n_s_seriesArray,&__pyx_n_s_Lgen,&__pyx_n_s_fast,0};
40146  PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
40147  values[8] = ((PyObject *)__pyx_float_0_01);
40148 
40149  /* "WaveTools.py":2144
40150  * g,
40151  * cutoffTotal = 0.01,
40152  * rec_direct = True, # <<<<<<<<<<<<<<
40153  * window_params = None, #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff}
40154  * arrayData = False,
40155  */
40156  values[9] = ((PyObject *)Py_True);
40157 
40158  /* "WaveTools.py":2145
40159  * cutoffTotal = 0.01,
40160  * rec_direct = True,
40161  * window_params = None, #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff} # <<<<<<<<<<<<<<
40162  * arrayData = False,
40163  * seriesArray = None,
40164  */
40165  values[10] = ((PyObject *)Py_None);
40166 
40167  /* "WaveTools.py":2146
40168  * rec_direct = True,
40169  * window_params = None, #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff}
40170  * arrayData = False, # <<<<<<<<<<<<<<
40171  * seriesArray = None,
40172  * Lgen = np.array([0.,0.,0]),
40173  */
40174  values[11] = ((PyObject *)Py_False);
40175 
40176  /* "WaveTools.py":2147
40177  * window_params = None, #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff}
40178  * arrayData = False,
40179  * seriesArray = None, # <<<<<<<<<<<<<<
40180  * Lgen = np.array([0.,0.,0]),
40181  * fast = True
40182  */
40183  values[12] = ((PyObject *)Py_None);
40184  values[13] = __pyx_k__40;
40185 
40186  /* "WaveTools.py":2149
40187  * seriesArray = None,
40188  * Lgen = np.array([0.,0.,0]),
40189  * fast = True # <<<<<<<<<<<<<<
40190  * ):
40191  * self.fast = fast
40192  */
40193  values[14] = ((PyObject *)Py_True);
40194  if (unlikely(__pyx_kwds)) {
40195  Py_ssize_t kw_args;
40196  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
40197  switch (pos_args) {
40198  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
40199  CYTHON_FALLTHROUGH;
40200  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
40201  CYTHON_FALLTHROUGH;
40202  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
40203  CYTHON_FALLTHROUGH;
40204  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
40205  CYTHON_FALLTHROUGH;
40206  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
40207  CYTHON_FALLTHROUGH;
40208  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
40209  CYTHON_FALLTHROUGH;
40210  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
40211  CYTHON_FALLTHROUGH;
40212  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
40213  CYTHON_FALLTHROUGH;
40214  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
40215  CYTHON_FALLTHROUGH;
40216  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
40217  CYTHON_FALLTHROUGH;
40218  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
40219  CYTHON_FALLTHROUGH;
40220  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
40221  CYTHON_FALLTHROUGH;
40222  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
40223  CYTHON_FALLTHROUGH;
40224  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
40225  CYTHON_FALLTHROUGH;
40226  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
40227  CYTHON_FALLTHROUGH;
40228  case 0: break;
40229  default: goto __pyx_L5_argtuple_error;
40230  }
40231  kw_args = PyDict_Size(__pyx_kwds);
40232  switch (pos_args) {
40233  case 0:
40234  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeSeriesFile)) != 0)) kw_args--;
40235  else goto __pyx_L5_argtuple_error;
40236  CYTHON_FALLTHROUGH;
40237  case 1:
40238  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_skiprows)) != 0)) kw_args--;
40239  else {
40240  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 1); __PYX_ERR(0, 2134, __pyx_L3_error)
40241  }
40242  CYTHON_FALLTHROUGH;
40243  case 2:
40244  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeSeriesPosition)) != 0)) kw_args--;
40245  else {
40246  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 2); __PYX_ERR(0, 2134, __pyx_L3_error)
40247  }
40248  CYTHON_FALLTHROUGH;
40249  case 3:
40250  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
40251  else {
40252  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 3); __PYX_ERR(0, 2134, __pyx_L3_error)
40253  }
40254  CYTHON_FALLTHROUGH;
40255  case 4:
40256  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
40257  else {
40258  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 4); __PYX_ERR(0, 2134, __pyx_L3_error)
40259  }
40260  CYTHON_FALLTHROUGH;
40261  case 5:
40262  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
40263  else {
40264  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 5); __PYX_ERR(0, 2134, __pyx_L3_error)
40265  }
40266  CYTHON_FALLTHROUGH;
40267  case 6:
40268  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
40269  else {
40270  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 6); __PYX_ERR(0, 2134, __pyx_L3_error)
40271  }
40272  CYTHON_FALLTHROUGH;
40273  case 7:
40274  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
40275  else {
40276  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, 7); __PYX_ERR(0, 2134, __pyx_L3_error)
40277  }
40278  CYTHON_FALLTHROUGH;
40279  case 8:
40280  if (kw_args > 0) {
40281  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cutoffTotal);
40282  if (value) { values[8] = value; kw_args--; }
40283  }
40284  CYTHON_FALLTHROUGH;
40285  case 9:
40286  if (kw_args > 0) {
40287  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rec_direct);
40288  if (value) { values[9] = value; kw_args--; }
40289  }
40290  CYTHON_FALLTHROUGH;
40291  case 10:
40292  if (kw_args > 0) {
40293  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_window_params);
40294  if (value) { values[10] = value; kw_args--; }
40295  }
40296  CYTHON_FALLTHROUGH;
40297  case 11:
40298  if (kw_args > 0) {
40299  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arrayData);
40300  if (value) { values[11] = value; kw_args--; }
40301  }
40302  CYTHON_FALLTHROUGH;
40303  case 12:
40304  if (kw_args > 0) {
40305  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_seriesArray);
40306  if (value) { values[12] = value; kw_args--; }
40307  }
40308  CYTHON_FALLTHROUGH;
40309  case 13:
40310  if (kw_args > 0) {
40311  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Lgen);
40312  if (value) { values[13] = value; kw_args--; }
40313  }
40314  CYTHON_FALLTHROUGH;
40315  case 14:
40316  if (kw_args > 0) {
40317  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
40318  if (value) { values[14] = value; kw_args--; }
40319  }
40320  }
40321  if (unlikely(kw_args > 0)) {
40322  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2134, __pyx_L3_error)
40323  }
40324  } else {
40325  switch (PyTuple_GET_SIZE(__pyx_args)) {
40326  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
40327  CYTHON_FALLTHROUGH;
40328  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
40329  CYTHON_FALLTHROUGH;
40330  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
40331  CYTHON_FALLTHROUGH;
40332  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
40333  CYTHON_FALLTHROUGH;
40334  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
40335  CYTHON_FALLTHROUGH;
40336  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
40337  CYTHON_FALLTHROUGH;
40338  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
40339  CYTHON_FALLTHROUGH;
40340  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
40341  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
40342  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
40343  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
40344  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
40345  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
40346  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
40347  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
40348  break;
40349  default: goto __pyx_L5_argtuple_error;
40350  }
40351  }
40352  __pyx_v_timeSeriesFile = values[0];
40353  __pyx_v_skiprows = values[1];
40354  __pyx_v_timeSeriesPosition = values[2];
40355  __pyx_v_depth = values[3];
40356  __pyx_v_N = values[4];
40357  __pyx_v_mwl = values[5];
40358  __pyx_v_waveDir = values[6];
40359  __pyx_v_g = values[7];
40360  __pyx_v_cutoffTotal = values[8];
40361  __pyx_v_rec_direct = values[9];
40362  __pyx_v_window_params = values[10];
40363  __pyx_v_arrayData = values[11];
40364  __pyx_v_seriesArray = values[12];
40365  __pyx_v_Lgen = values[13];
40366  __pyx_v_fast = values[14];
40367  }
40368  goto __pyx_L4_argument_unpacking_done;
40369  __pyx_L5_argtuple_error:;
40370  __Pyx_RaiseArgtupleInvalid("__init__", 0, 8, 15, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2134, __pyx_L3_error)
40371  __pyx_L3_error:;
40372  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
40373  __Pyx_RefNannyFinishContext();
40374  return -1;
40375  __pyx_L4_argument_unpacking_done:;
40376  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries___init__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), __pyx_v_timeSeriesFile, __pyx_v_skiprows, __pyx_v_timeSeriesPosition, __pyx_v_depth, __pyx_v_N, __pyx_v_mwl, __pyx_v_waveDir, __pyx_v_g, __pyx_v_cutoffTotal, __pyx_v_rec_direct, __pyx_v_window_params, __pyx_v_arrayData, __pyx_v_seriesArray, __pyx_v_Lgen, __pyx_v_fast);
40377 
40378  /* "WaveTools.py":2134
40379  *
40380  * """
40381  * def __init__(self, # <<<<<<<<<<<<<<
40382  * timeSeriesFile, # e.g.= "Timeseries.txt",
40383  * skiprows,
40384  */
40385 
40386  /* function exit code */
40387  __Pyx_RefNannyFinishContext();
40388  return __pyx_r;
40389 }
40390 
40391 static int __pyx_pf_9WaveTools_10TimeSeries___init__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_timeSeriesFile, PyObject *__pyx_v_skiprows, PyObject *__pyx_v_timeSeriesPosition, PyObject *__pyx_v_depth, PyObject *__pyx_v_N, PyObject *__pyx_v_mwl, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_cutoffTotal, PyObject *__pyx_v_rec_direct, PyObject *__pyx_v_window_params, PyObject *__pyx_v_arrayData, PyObject *__pyx_v_seriesArray, PyObject *__pyx_v_Lgen, PyObject *__pyx_v_fast) {
40392  CYTHON_UNUSED PyObject *__pyx_v_Nwaves = NULL;
40393  PyObject *__pyx_v_tdata = NULL;
40394  PyObject *__pyx_v_filetype = NULL;
40395  PyObject *__pyx_v_fid = NULL;
40396  Py_ssize_t __pyx_v_ncols;
40397  PyObject *__pyx_v_time_temp = NULL;
40398  int __pyx_v_doInterp;
40399  PyObject *__pyx_v_i = NULL;
40400  PyObject *__pyx_v_dt_temp = NULL;
40401  PyObject *__pyx_v_Nf = NULL;
40402  Py_ssize_t __pyx_v_nfft;
40403  PyObject *__pyx_v_decomp = NULL;
40404  PyObject *__pyx_v_ipeak = NULL;
40405  PyObject *__pyx_v_imax = NULL;
40406  PyObject *__pyx_v_imin = NULL;
40407  PyObject *__pyx_v_ii = NULL;
40408  PyObject *__pyx_v_ij = NULL;
40409  PyObject *__pyx_v_kk = NULL;
40410  PyObject *__pyx_v_windowName = NULL;
40411  PyObject *__pyx_v_validWindows = NULL;
40412  PyObject *__pyx_v_wind_filt = NULL;
40413  double __pyx_v_diff;
40414  PyObject *__pyx_v_jj = NULL;
40415  PyObject *__pyx_v_span = NULL;
40416  PyObject *__pyx_v_tfirst = NULL;
40417  PyObject *__pyx_v_tlast = NULL;
40418  PyObject *__pyx_v_ispan1 = NULL;
40419  PyObject *__pyx_v_ispan2 = NULL;
40420  PyObject *__pyx_v_tstart = NULL;
40421  PyObject *__pyx_v_wind = NULL;
40422  PyObject *__pyx_v_Nftemp = NULL;
40423  PyObject *__pyx_v_ki = NULL;
40424  PyObject *__pyx_v_kDir = NULL;
40425  PyObject *__pyx_v_Tlag = NULL;
40426  int __pyx_r;
40427  __Pyx_RefNannyDeclarations
40428  bool __pyx_t_1;
40429  double __pyx_t_2;
40430  int __pyx_t_3;
40431  PyObject *__pyx_t_4 = NULL;
40432  PyObject *__pyx_t_5 = NULL;
40433  PyObject *__pyx_t_6 = NULL;
40434  PyObject *__pyx_t_7 = NULL;
40435  Py_ssize_t __pyx_t_8;
40436  int __pyx_t_9;
40437  int __pyx_t_10;
40438  PyObject *__pyx_t_11 = NULL;
40439  PyObject *__pyx_t_12 = NULL;
40440  PyObject *(*__pyx_t_13)(PyObject *);
40441  PyObject *__pyx_t_14 = NULL;
40442  long __pyx_t_15;
40443  Py_ssize_t __pyx_t_16;
40444  PyObject *(*__pyx_t_17)(PyObject *);
40445  Py_ssize_t __pyx_t_18;
40446  double *__pyx_t_19;
40447  PyObject *__pyx_t_20 = NULL;
40448  PyObject *__pyx_t_21 = NULL;
40449  PyObject *__pyx_t_22 = NULL;
40450  PyObject *__pyx_t_23 = NULL;
40451  int __pyx_t_24;
40452  PyObject *__pyx_t_25 = NULL;
40453  PyObject *__pyx_t_26 = NULL;
40454  PyObject *(*__pyx_t_27)(PyObject *);
40455  Py_ssize_t __pyx_t_28;
40456  double (*__pyx_t_29)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double);
40457  void (*__pyx_t_30)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double);
40458  double (*__pyx_t_31)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double);
40459  void (*__pyx_t_32)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double);
40460  int __pyx_lineno = 0;
40461  const char *__pyx_filename = NULL;
40462  int __pyx_clineno = 0;
40463  __Pyx_RefNannySetupContext("__init__", 0);
40464 
40465  /* "WaveTools.py":2151
40466  * fast = True
40467  * ):
40468  * self.fast = fast # <<<<<<<<<<<<<<
40469  * self.rec_direct = rec_direct
40470  * # Setting the depth
40471  */
40472  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2151, __pyx_L1_error)
40473  __pyx_v_self->fast = __pyx_t_1;
40474 
40475  /* "WaveTools.py":2152
40476  * ):
40477  * self.fast = fast
40478  * self.rec_direct = rec_direct # <<<<<<<<<<<<<<
40479  * # Setting the depth
40480  * self.depth = depth
40481  */
40482  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_rec_direct); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2152, __pyx_L1_error)
40483  __pyx_v_self->rec_direct = __pyx_t_1;
40484 
40485  /* "WaveTools.py":2154
40486  * self.rec_direct = rec_direct
40487  * # Setting the depth
40488  * self.depth = depth # <<<<<<<<<<<<<<
40489  * # Number of wave components
40490  * self.N = N
40491  */
40492  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L1_error)
40493  __pyx_v_self->depth = __pyx_t_2;
40494 
40495  /* "WaveTools.py":2156
40496  * self.depth = depth
40497  * # Number of wave components
40498  * self.N = N # <<<<<<<<<<<<<<
40499  * self.tanhF = np.zeros(N,"d")
40500  * Nwaves = None
40501  */
40502  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_N); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2156, __pyx_L1_error)
40503  __pyx_v_self->N = __pyx_t_3;
40504 
40505  /* "WaveTools.py":2157
40506  * # Number of wave components
40507  * self.N = N
40508  * self.tanhF = np.zeros(N,"d") # <<<<<<<<<<<<<<
40509  * Nwaves = None
40510  * # Position of timeSeriesFile
40511  */
40512  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2157, __pyx_L1_error)
40513  __Pyx_GOTREF(__pyx_t_5);
40514  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2157, __pyx_L1_error)
40515  __Pyx_GOTREF(__pyx_t_6);
40516  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
40517  __pyx_t_5 = NULL;
40518  __pyx_t_3 = 0;
40519  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
40520  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
40521  if (likely(__pyx_t_5)) {
40522  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
40523  __Pyx_INCREF(__pyx_t_5);
40524  __Pyx_INCREF(function);
40525  __Pyx_DECREF_SET(__pyx_t_6, function);
40526  __pyx_t_3 = 1;
40527  }
40528  }
40529  #if CYTHON_FAST_PYCALL
40530  if (PyFunction_Check(__pyx_t_6)) {
40531  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_N, __pyx_n_s_d};
40532  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2157, __pyx_L1_error)
40533  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
40534  __Pyx_GOTREF(__pyx_t_4);
40535  } else
40536  #endif
40537  #if CYTHON_FAST_PYCCALL
40538  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
40539  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_N, __pyx_n_s_d};
40540  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2157, __pyx_L1_error)
40541  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
40542  __Pyx_GOTREF(__pyx_t_4);
40543  } else
40544  #endif
40545  {
40546  __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2157, __pyx_L1_error)
40547  __Pyx_GOTREF(__pyx_t_7);
40548  if (__pyx_t_5) {
40549  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
40550  }
40551  __Pyx_INCREF(__pyx_v_N);
40552  __Pyx_GIVEREF(__pyx_v_N);
40553  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_N);
40554  __Pyx_INCREF(__pyx_n_s_d);
40555  __Pyx_GIVEREF(__pyx_n_s_d);
40556  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_n_s_d);
40557  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2157, __pyx_L1_error)
40558  __Pyx_GOTREF(__pyx_t_4);
40559  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40560  }
40561  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40562  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2157, __pyx_L1_error)
40563  __Pyx_GIVEREF(__pyx_t_4);
40564  __Pyx_GOTREF(__pyx_v_self->tanhF);
40565  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhF));
40566  __pyx_v_self->tanhF = ((PyArrayObject *)__pyx_t_4);
40567  __pyx_t_4 = 0;
40568 
40569  /* "WaveTools.py":2158
40570  * self.N = N
40571  * self.tanhF = np.zeros(N,"d")
40572  * Nwaves = None # <<<<<<<<<<<<<<
40573  * # Position of timeSeriesFile
40574  * if(len(timeSeriesPosition)==3):
40575  */
40576  __Pyx_INCREF(Py_None);
40577  __pyx_v_Nwaves = Py_None;
40578 
40579  /* "WaveTools.py":2160
40580  * Nwaves = None
40581  * # Position of timeSeriesFile
40582  * if(len(timeSeriesPosition)==3): # <<<<<<<<<<<<<<
40583  * self.x0 = timeSeriesPosition
40584  * else:
40585  */
40586  __pyx_t_8 = PyObject_Length(__pyx_v_timeSeriesPosition); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2160, __pyx_L1_error)
40587  __pyx_t_9 = ((__pyx_t_8 == 3) != 0);
40588  if (__pyx_t_9) {
40589 
40590  /* "WaveTools.py":2161
40591  * # Position of timeSeriesFile
40592  * if(len(timeSeriesPosition)==3):
40593  * self.x0 = timeSeriesPosition # <<<<<<<<<<<<<<
40594  * else:
40595  * logEvent("ERROR! Wavetools.py: Location vector for timeSeries must have three-components",level=0)
40596  */
40597  if (!(likely(((__pyx_v_timeSeriesPosition) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_timeSeriesPosition, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2161, __pyx_L1_error)
40598  __pyx_t_4 = __pyx_v_timeSeriesPosition;
40599  __Pyx_INCREF(__pyx_t_4);
40600  __Pyx_GIVEREF(__pyx_t_4);
40601  __Pyx_GOTREF(__pyx_v_self->x0);
40602  __Pyx_DECREF(((PyObject *)__pyx_v_self->x0));
40603  __pyx_v_self->x0 = ((PyArrayObject *)__pyx_t_4);
40604  __pyx_t_4 = 0;
40605 
40606  /* "WaveTools.py":2160
40607  * Nwaves = None
40608  * # Position of timeSeriesFile
40609  * if(len(timeSeriesPosition)==3): # <<<<<<<<<<<<<<
40610  * self.x0 = timeSeriesPosition
40611  * else:
40612  */
40613  goto __pyx_L3;
40614  }
40615 
40616  /* "WaveTools.py":2163
40617  * self.x0 = timeSeriesPosition
40618  * else:
40619  * logEvent("ERROR! Wavetools.py: Location vector for timeSeries must have three-components",level=0) # <<<<<<<<<<<<<<
40620  * sys.exit(1)
40621  *
40622  */
40623  /*else*/ {
40624  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2163, __pyx_L1_error)
40625  __Pyx_GOTREF(__pyx_t_4);
40626  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2163, __pyx_L1_error)
40627  __Pyx_GOTREF(__pyx_t_6);
40628  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 2163, __pyx_L1_error)
40629  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__41, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2163, __pyx_L1_error)
40630  __Pyx_GOTREF(__pyx_t_7);
40631  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
40632  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40633  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40634 
40635  /* "WaveTools.py":2164
40636  * else:
40637  * logEvent("ERROR! Wavetools.py: Location vector for timeSeries must have three-components",level=0)
40638  * sys.exit(1) # <<<<<<<<<<<<<<
40639  *
40640  *
40641  */
40642  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2164, __pyx_L1_error)
40643  __Pyx_GOTREF(__pyx_t_6);
40644  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2164, __pyx_L1_error)
40645  __Pyx_GOTREF(__pyx_t_4);
40646  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40647  __pyx_t_6 = NULL;
40648  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
40649  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
40650  if (likely(__pyx_t_6)) {
40651  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
40652  __Pyx_INCREF(__pyx_t_6);
40653  __Pyx_INCREF(function);
40654  __Pyx_DECREF_SET(__pyx_t_4, function);
40655  }
40656  }
40657  __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
40658  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
40659  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2164, __pyx_L1_error)
40660  __Pyx_GOTREF(__pyx_t_7);
40661  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
40662  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40663  }
40664  __pyx_L3:;
40665 
40666  /* "WaveTools.py":2168
40667  *
40668  * # Mean water level
40669  * self.mwl = mwl # <<<<<<<<<<<<<<
40670  * # Wave direction
40671  * self.waveDir = setDirVector(waveDir)
40672  */
40673  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_mwl); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2168, __pyx_L1_error)
40674  __pyx_v_self->mwl = __pyx_t_2;
40675 
40676  /* "WaveTools.py":2170
40677  * self.mwl = mwl
40678  * # Wave direction
40679  * self.waveDir = setDirVector(waveDir) # <<<<<<<<<<<<<<
40680  * # Gravity
40681  * self.g = np.array(g)
40682  */
40683  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_setDirVector); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2170, __pyx_L1_error)
40684  __Pyx_GOTREF(__pyx_t_4);
40685  __pyx_t_6 = NULL;
40686  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
40687  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
40688  if (likely(__pyx_t_6)) {
40689  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
40690  __Pyx_INCREF(__pyx_t_6);
40691  __Pyx_INCREF(function);
40692  __Pyx_DECREF_SET(__pyx_t_4, function);
40693  }
40694  }
40695  __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_v_waveDir) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_waveDir);
40696  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
40697  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2170, __pyx_L1_error)
40698  __Pyx_GOTREF(__pyx_t_7);
40699  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
40700  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2170, __pyx_L1_error)
40701  __Pyx_GIVEREF(__pyx_t_7);
40702  __Pyx_GOTREF(__pyx_v_self->waveDir);
40703  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
40704  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_7);
40705  __pyx_t_7 = 0;
40706 
40707  /* "WaveTools.py":2172
40708  * self.waveDir = setDirVector(waveDir)
40709  * # Gravity
40710  * self.g = np.array(g) # <<<<<<<<<<<<<<
40711  * # Derived variables
40712  * # Gravity magnitude
40713  */
40714  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2172, __pyx_L1_error)
40715  __Pyx_GOTREF(__pyx_t_4);
40716  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2172, __pyx_L1_error)
40717  __Pyx_GOTREF(__pyx_t_6);
40718  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
40719  __pyx_t_4 = NULL;
40720  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
40721  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
40722  if (likely(__pyx_t_4)) {
40723  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
40724  __Pyx_INCREF(__pyx_t_4);
40725  __Pyx_INCREF(function);
40726  __Pyx_DECREF_SET(__pyx_t_6, function);
40727  }
40728  }
40729  __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g);
40730  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
40731  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2172, __pyx_L1_error)
40732  __Pyx_GOTREF(__pyx_t_7);
40733  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40734  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2172, __pyx_L1_error)
40735  __Pyx_GIVEREF(__pyx_t_7);
40736  __Pyx_GOTREF(__pyx_v_self->g);
40737  __Pyx_DECREF(((PyObject *)__pyx_v_self->g));
40738  __pyx_v_self->g = ((PyArrayObject *)__pyx_t_7);
40739  __pyx_t_7 = 0;
40740 
40741  /* "WaveTools.py":2175
40742  * # Derived variables
40743  * # Gravity magnitude
40744  * self.gAbs = sqrt(sum(g * g)) # <<<<<<<<<<<<<<
40745  * # Definition of gravity direction
40746  * self.vDir = setVertDir(g)
40747  */
40748  __pyx_t_7 = PyNumber_Multiply(__pyx_v_g, __pyx_v_g); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2175, __pyx_L1_error)
40749  __Pyx_GOTREF(__pyx_t_7);
40750  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2175, __pyx_L1_error)
40751  __Pyx_GOTREF(__pyx_t_6);
40752  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40753  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2175, __pyx_L1_error)
40754  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40755  __pyx_v_self->gAbs = sqrt(__pyx_t_2);
40756 
40757  /* "WaveTools.py":2177
40758  * self.gAbs = sqrt(sum(g * g))
40759  * # Definition of gravity direction
40760  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
40761  * dirCheck(self.waveDir,self.vDir)
40762  * #Reading time series
40763  */
40764  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_setVertDir); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2177, __pyx_L1_error)
40765  __Pyx_GOTREF(__pyx_t_7);
40766  __pyx_t_4 = NULL;
40767  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
40768  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
40769  if (likely(__pyx_t_4)) {
40770  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
40771  __Pyx_INCREF(__pyx_t_4);
40772  __Pyx_INCREF(function);
40773  __Pyx_DECREF_SET(__pyx_t_7, function);
40774  }
40775  }
40776  __pyx_t_6 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_v_g) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_g);
40777  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
40778  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2177, __pyx_L1_error)
40779  __Pyx_GOTREF(__pyx_t_6);
40780  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40781  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2177, __pyx_L1_error)
40782  __Pyx_GIVEREF(__pyx_t_6);
40783  __Pyx_GOTREF(__pyx_v_self->vDir);
40784  __Pyx_DECREF(((PyObject *)__pyx_v_self->vDir));
40785  __pyx_v_self->vDir = ((PyArrayObject *)__pyx_t_6);
40786  __pyx_t_6 = 0;
40787 
40788  /* "WaveTools.py":2178
40789  * # Definition of gravity direction
40790  * self.vDir = setVertDir(g)
40791  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
40792  * #Reading time series
40793  *
40794  */
40795  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_dirCheck); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2178, __pyx_L1_error)
40796  __Pyx_GOTREF(__pyx_t_7);
40797  __pyx_t_4 = NULL;
40798  __pyx_t_3 = 0;
40799  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
40800  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
40801  if (likely(__pyx_t_4)) {
40802  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
40803  __Pyx_INCREF(__pyx_t_4);
40804  __Pyx_INCREF(function);
40805  __Pyx_DECREF_SET(__pyx_t_7, function);
40806  __pyx_t_3 = 1;
40807  }
40808  }
40809  #if CYTHON_FAST_PYCALL
40810  if (PyFunction_Check(__pyx_t_7)) {
40811  PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
40812  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2178, __pyx_L1_error)
40813  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
40814  __Pyx_GOTREF(__pyx_t_6);
40815  } else
40816  #endif
40817  #if CYTHON_FAST_PYCCALL
40818  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
40819  PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_self->waveDir), ((PyObject *)__pyx_v_self->vDir)};
40820  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2178, __pyx_L1_error)
40821  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
40822  __Pyx_GOTREF(__pyx_t_6);
40823  } else
40824  #endif
40825  {
40826  __pyx_t_5 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2178, __pyx_L1_error)
40827  __Pyx_GOTREF(__pyx_t_5);
40828  if (__pyx_t_4) {
40829  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
40830  }
40831  __Pyx_INCREF(((PyObject *)__pyx_v_self->waveDir));
40832  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->waveDir));
40833  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_3, ((PyObject *)__pyx_v_self->waveDir));
40834  __Pyx_INCREF(((PyObject *)__pyx_v_self->vDir));
40835  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->vDir));
40836  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_3, ((PyObject *)__pyx_v_self->vDir));
40837  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2178, __pyx_L1_error)
40838  __Pyx_GOTREF(__pyx_t_6);
40839  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
40840  }
40841  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40842  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40843 
40844  /* "WaveTools.py":2182
40845  *
40846  *
40847  * if(arrayData): # <<<<<<<<<<<<<<
40848  * tdata = seriesArray
40849  * else:
40850  */
40851  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_arrayData); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2182, __pyx_L1_error)
40852  if (__pyx_t_9) {
40853 
40854  /* "WaveTools.py":2183
40855  *
40856  * if(arrayData):
40857  * tdata = seriesArray # <<<<<<<<<<<<<<
40858  * else:
40859  * filetype = timeSeriesFile[-4:]
40860  */
40861  __Pyx_INCREF(__pyx_v_seriesArray);
40862  __pyx_v_tdata = __pyx_v_seriesArray;
40863 
40864  /* "WaveTools.py":2182
40865  *
40866  *
40867  * if(arrayData): # <<<<<<<<<<<<<<
40868  * tdata = seriesArray
40869  * else:
40870  */
40871  goto __pyx_L4;
40872  }
40873 
40874  /* "WaveTools.py":2185
40875  * tdata = seriesArray
40876  * else:
40877  * filetype = timeSeriesFile[-4:] # <<<<<<<<<<<<<<
40878  * fid = open(timeSeriesFile,"r")
40879  * if (filetype !=".txt") and (filetype != ".csv"):
40880  */
40881  /*else*/ {
40882  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_timeSeriesFile, -4L, 0, NULL, NULL, &__pyx_slice__42, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2185, __pyx_L1_error)
40883  __Pyx_GOTREF(__pyx_t_6);
40884  __pyx_v_filetype = __pyx_t_6;
40885  __pyx_t_6 = 0;
40886 
40887  /* "WaveTools.py":2186
40888  * else:
40889  * filetype = timeSeriesFile[-4:]
40890  * fid = open(timeSeriesFile,"r") # <<<<<<<<<<<<<<
40891  * if (filetype !=".txt") and (filetype != ".csv"):
40892  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
40893  */
40894  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2186, __pyx_L1_error)
40895  __Pyx_GOTREF(__pyx_t_6);
40896  __Pyx_INCREF(__pyx_v_timeSeriesFile);
40897  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
40898  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_timeSeriesFile);
40899  __Pyx_INCREF(__pyx_n_s_r);
40900  __Pyx_GIVEREF(__pyx_n_s_r);
40901  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_r);
40902  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2186, __pyx_L1_error)
40903  __Pyx_GOTREF(__pyx_t_7);
40904  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40905  __pyx_v_fid = __pyx_t_7;
40906  __pyx_t_7 = 0;
40907 
40908  /* "WaveTools.py":2187
40909  * filetype = timeSeriesFile[-4:]
40910  * fid = open(timeSeriesFile,"r")
40911  * if (filetype !=".txt") and (filetype != ".csv"): # <<<<<<<<<<<<<<
40912  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
40913  * sys.exit(1)
40914  */
40915  __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_txt, Py_NE)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2187, __pyx_L1_error)
40916  if (__pyx_t_10) {
40917  } else {
40918  __pyx_t_9 = __pyx_t_10;
40919  goto __pyx_L6_bool_binop_done;
40920  }
40921  __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_csv, Py_NE)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2187, __pyx_L1_error)
40922  __pyx_t_9 = __pyx_t_10;
40923  __pyx_L6_bool_binop_done:;
40924  if (__pyx_t_9) {
40925 
40926  /* "WaveTools.py":2188
40927  * fid = open(timeSeriesFile,"r")
40928  * if (filetype !=".txt") and (filetype != ".csv"):
40929  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0) # <<<<<<<<<<<<<<
40930  * sys.exit(1)
40931  * elif (filetype == ".csv"):
40932  */
40933  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2188, __pyx_L1_error)
40934  __Pyx_GOTREF(__pyx_t_7);
40935  __pyx_t_6 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ERROR_Wavetools_py_File_s_must_b, __pyx_v_timeSeriesFile); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2188, __pyx_L1_error)
40936  __Pyx_GOTREF(__pyx_t_6);
40937  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2188, __pyx_L1_error)
40938  __Pyx_GOTREF(__pyx_t_5);
40939  __Pyx_GIVEREF(__pyx_t_6);
40940  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
40941  __pyx_t_6 = 0;
40942  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2188, __pyx_L1_error)
40943  __Pyx_GOTREF(__pyx_t_6);
40944  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 2188, __pyx_L1_error)
40945  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2188, __pyx_L1_error)
40946  __Pyx_GOTREF(__pyx_t_4);
40947  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
40948  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
40949  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40950  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
40951 
40952  /* "WaveTools.py":2189
40953  * if (filetype !=".txt") and (filetype != ".csv"):
40954  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
40955  * sys.exit(1) # <<<<<<<<<<<<<<
40956  * elif (filetype == ".csv"):
40957  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
40958  */
40959  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2189, __pyx_L1_error)
40960  __Pyx_GOTREF(__pyx_t_6);
40961  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2189, __pyx_L1_error)
40962  __Pyx_GOTREF(__pyx_t_5);
40963  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
40964  __pyx_t_6 = NULL;
40965  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
40966  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
40967  if (likely(__pyx_t_6)) {
40968  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
40969  __Pyx_INCREF(__pyx_t_6);
40970  __Pyx_INCREF(function);
40971  __Pyx_DECREF_SET(__pyx_t_5, function);
40972  }
40973  }
40974  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_1);
40975  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
40976  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2189, __pyx_L1_error)
40977  __Pyx_GOTREF(__pyx_t_4);
40978  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
40979  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
40980 
40981  /* "WaveTools.py":2187
40982  * filetype = timeSeriesFile[-4:]
40983  * fid = open(timeSeriesFile,"r")
40984  * if (filetype !=".txt") and (filetype != ".csv"): # <<<<<<<<<<<<<<
40985  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
40986  * sys.exit(1)
40987  */
40988  goto __pyx_L5;
40989  }
40990 
40991  /* "WaveTools.py":2190
40992  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
40993  * sys.exit(1)
40994  * elif (filetype == ".csv"): # <<<<<<<<<<<<<<
40995  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
40996  * else:
40997  */
40998  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_csv, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2190, __pyx_L1_error)
40999  if (__pyx_t_9) {
41000 
41001  /* "WaveTools.py":2191
41002  * sys.exit(1)
41003  * elif (filetype == ".csv"):
41004  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",") # <<<<<<<<<<<<<<
41005  * else:
41006  * tdata = np.loadtxt(fid,skiprows=skiprows)
41007  */
41008  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2191, __pyx_L1_error)
41009  __Pyx_GOTREF(__pyx_t_4);
41010  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_loadtxt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2191, __pyx_L1_error)
41011  __Pyx_GOTREF(__pyx_t_5);
41012  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41013  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2191, __pyx_L1_error)
41014  __Pyx_GOTREF(__pyx_t_4);
41015  __Pyx_INCREF(__pyx_v_fid);
41016  __Pyx_GIVEREF(__pyx_v_fid);
41017  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_fid);
41018  __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2191, __pyx_L1_error)
41019  __Pyx_GOTREF(__pyx_t_6);
41020  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_skiprows, __pyx_v_skiprows) < 0) __PYX_ERR(0, 2191, __pyx_L1_error)
41021  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_delimiter, __pyx_kp_s__43) < 0) __PYX_ERR(0, 2191, __pyx_L1_error)
41022  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2191, __pyx_L1_error)
41023  __Pyx_GOTREF(__pyx_t_7);
41024  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41025  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41026  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41027  __pyx_v_tdata = __pyx_t_7;
41028  __pyx_t_7 = 0;
41029 
41030  /* "WaveTools.py":2190
41031  * logEvent("ERROR! Wavetools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
41032  * sys.exit(1)
41033  * elif (filetype == ".csv"): # <<<<<<<<<<<<<<
41034  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
41035  * else:
41036  */
41037  goto __pyx_L5;
41038  }
41039 
41040  /* "WaveTools.py":2193
41041  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
41042  * else:
41043  * tdata = np.loadtxt(fid,skiprows=skiprows) # <<<<<<<<<<<<<<
41044  * fid.close()
41045  * #Checks for tseries file
41046  */
41047  /*else*/ {
41048  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2193, __pyx_L1_error)
41049  __Pyx_GOTREF(__pyx_t_7);
41050  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_loadtxt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2193, __pyx_L1_error)
41051  __Pyx_GOTREF(__pyx_t_6);
41052  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41053  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2193, __pyx_L1_error)
41054  __Pyx_GOTREF(__pyx_t_7);
41055  __Pyx_INCREF(__pyx_v_fid);
41056  __Pyx_GIVEREF(__pyx_v_fid);
41057  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_fid);
41058  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2193, __pyx_L1_error)
41059  __Pyx_GOTREF(__pyx_t_4);
41060  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_skiprows, __pyx_v_skiprows) < 0) __PYX_ERR(0, 2193, __pyx_L1_error)
41061  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2193, __pyx_L1_error)
41062  __Pyx_GOTREF(__pyx_t_5);
41063  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41064  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41065  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41066  __pyx_v_tdata = __pyx_t_5;
41067  __pyx_t_5 = 0;
41068  }
41069  __pyx_L5:;
41070 
41071  /* "WaveTools.py":2194
41072  * else:
41073  * tdata = np.loadtxt(fid,skiprows=skiprows)
41074  * fid.close() # <<<<<<<<<<<<<<
41075  * #Checks for tseries file
41076  * # Only 2 columns: time & eta
41077  */
41078  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fid, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2194, __pyx_L1_error)
41079  __Pyx_GOTREF(__pyx_t_4);
41080  __pyx_t_7 = NULL;
41081  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
41082  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
41083  if (likely(__pyx_t_7)) {
41084  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
41085  __Pyx_INCREF(__pyx_t_7);
41086  __Pyx_INCREF(function);
41087  __Pyx_DECREF_SET(__pyx_t_4, function);
41088  }
41089  }
41090  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
41091  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
41092  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2194, __pyx_L1_error)
41093  __Pyx_GOTREF(__pyx_t_5);
41094  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41095  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41096  }
41097  __pyx_L4:;
41098 
41099  /* "WaveTools.py":2197
41100  * #Checks for tseries file
41101  * # Only 2 columns: time & eta
41102  * ncols = len(tdata[0,:]) # <<<<<<<<<<<<<<
41103  * if ncols != 2:
41104  * logEvent("ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
41105  */
41106  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); __PYX_ERR(0, 2197, __pyx_L1_error) }
41107  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2197, __pyx_L1_error)
41108  __Pyx_GOTREF(__pyx_t_5);
41109  __pyx_t_8 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2197, __pyx_L1_error)
41110  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41111  __pyx_v_ncols = __pyx_t_8;
41112 
41113  /* "WaveTools.py":2198
41114  * # Only 2 columns: time & eta
41115  * ncols = len(tdata[0,:])
41116  * if ncols != 2: # <<<<<<<<<<<<<<
41117  * logEvent("ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
41118  * sys.exit(1)
41119  */
41120  __pyx_t_9 = ((__pyx_v_ncols != 2) != 0);
41121  if (__pyx_t_9) {
41122 
41123  /* "WaveTools.py":2199
41124  * ncols = len(tdata[0,:])
41125  * if ncols != 2:
41126  * logEvent("ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0) # <<<<<<<<<<<<<<
41127  * sys.exit(1)
41128  * time_temp = tdata[:,0]
41129  */
41130  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2199, __pyx_L1_error)
41131  __Pyx_GOTREF(__pyx_t_5);
41132  __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ERROR_Wavetools_py_Timeseries_fi, __pyx_v_timeSeriesFile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2199, __pyx_L1_error)
41133  __Pyx_GOTREF(__pyx_t_4);
41134  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2199, __pyx_L1_error)
41135  __Pyx_GOTREF(__pyx_t_7);
41136  __Pyx_GIVEREF(__pyx_t_4);
41137  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
41138  __pyx_t_4 = 0;
41139  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2199, __pyx_L1_error)
41140  __Pyx_GOTREF(__pyx_t_4);
41141  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 2199, __pyx_L1_error)
41142  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2199, __pyx_L1_error)
41143  __Pyx_GOTREF(__pyx_t_6);
41144  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41145  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41146  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41147  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41148 
41149  /* "WaveTools.py":2200
41150  * if ncols != 2:
41151  * logEvent("ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
41152  * sys.exit(1) # <<<<<<<<<<<<<<
41153  * time_temp = tdata[:,0]
41154  * self.dt = old_div((time_temp[-1]-time_temp[0]),(len(time_temp)-1))
41155  */
41156  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2200, __pyx_L1_error)
41157  __Pyx_GOTREF(__pyx_t_4);
41158  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2200, __pyx_L1_error)
41159  __Pyx_GOTREF(__pyx_t_7);
41160  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41161  __pyx_t_4 = NULL;
41162  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
41163  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
41164  if (likely(__pyx_t_4)) {
41165  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
41166  __Pyx_INCREF(__pyx_t_4);
41167  __Pyx_INCREF(function);
41168  __Pyx_DECREF_SET(__pyx_t_7, function);
41169  }
41170  }
41171  __pyx_t_6 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_int_1);
41172  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
41173  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2200, __pyx_L1_error)
41174  __Pyx_GOTREF(__pyx_t_6);
41175  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41176  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41177 
41178  /* "WaveTools.py":2198
41179  * # Only 2 columns: time & eta
41180  * ncols = len(tdata[0,:])
41181  * if ncols != 2: # <<<<<<<<<<<<<<
41182  * logEvent("ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
41183  * sys.exit(1)
41184  */
41185  }
41186 
41187  /* "WaveTools.py":2201
41188  * logEvent("ERROR! Wavetools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
41189  * sys.exit(1)
41190  * time_temp = tdata[:,0] # <<<<<<<<<<<<<<
41191  * self.dt = old_div((time_temp[-1]-time_temp[0]),(len(time_temp)-1))
41192  *
41193  */
41194  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); __PYX_ERR(0, 2201, __pyx_L1_error) }
41195  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__25); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2201, __pyx_L1_error)
41196  __Pyx_GOTREF(__pyx_t_6);
41197  __pyx_v_time_temp = __pyx_t_6;
41198  __pyx_t_6 = 0;
41199 
41200  /* "WaveTools.py":2202
41201  * sys.exit(1)
41202  * time_temp = tdata[:,0]
41203  * self.dt = old_div((time_temp[-1]-time_temp[0]),(len(time_temp)-1)) # <<<<<<<<<<<<<<
41204  *
41205  *
41206  */
41207  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_old_div); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2202, __pyx_L1_error)
41208  __Pyx_GOTREF(__pyx_t_7);
41209  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_time_temp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2202, __pyx_L1_error)
41210  __Pyx_GOTREF(__pyx_t_4);
41211  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_time_temp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2202, __pyx_L1_error)
41212  __Pyx_GOTREF(__pyx_t_5);
41213  __pyx_t_11 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2202, __pyx_L1_error)
41214  __Pyx_GOTREF(__pyx_t_11);
41215  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
41216  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41217  __pyx_t_8 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2202, __pyx_L1_error)
41218  __pyx_t_5 = PyInt_FromSsize_t((__pyx_t_8 - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2202, __pyx_L1_error)
41219  __Pyx_GOTREF(__pyx_t_5);
41220  __pyx_t_4 = NULL;
41221  __pyx_t_3 = 0;
41222  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
41223  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
41224  if (likely(__pyx_t_4)) {
41225  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
41226  __Pyx_INCREF(__pyx_t_4);
41227  __Pyx_INCREF(function);
41228  __Pyx_DECREF_SET(__pyx_t_7, function);
41229  __pyx_t_3 = 1;
41230  }
41231  }
41232  #if CYTHON_FAST_PYCALL
41233  if (PyFunction_Check(__pyx_t_7)) {
41234  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_11, __pyx_t_5};
41235  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2202, __pyx_L1_error)
41236  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
41237  __Pyx_GOTREF(__pyx_t_6);
41238  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41239  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41240  } else
41241  #endif
41242  #if CYTHON_FAST_PYCCALL
41243  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
41244  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_11, __pyx_t_5};
41245  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2202, __pyx_L1_error)
41246  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
41247  __Pyx_GOTREF(__pyx_t_6);
41248  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41249  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41250  } else
41251  #endif
41252  {
41253  __pyx_t_12 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2202, __pyx_L1_error)
41254  __Pyx_GOTREF(__pyx_t_12);
41255  if (__pyx_t_4) {
41256  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4); __pyx_t_4 = NULL;
41257  }
41258  __Pyx_GIVEREF(__pyx_t_11);
41259  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_3, __pyx_t_11);
41260  __Pyx_GIVEREF(__pyx_t_5);
41261  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_3, __pyx_t_5);
41262  __pyx_t_11 = 0;
41263  __pyx_t_5 = 0;
41264  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2202, __pyx_L1_error)
41265  __Pyx_GOTREF(__pyx_t_6);
41266  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41267  }
41268  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41269  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2202, __pyx_L1_error)
41270  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41271  __pyx_v_self->dt = __pyx_t_2;
41272 
41273  /* "WaveTools.py":2207
41274  *
41275  * # If necessary, perform interpolation
41276  * doInterp = False # <<<<<<<<<<<<<<
41277  * for i in range(1,len(time_temp)):
41278  * dt_temp = time_temp[i]-time_temp[i-1]
41279  */
41280  __pyx_v_doInterp = 0;
41281 
41282  /* "WaveTools.py":2208
41283  * # If necessary, perform interpolation
41284  * doInterp = False
41285  * for i in range(1,len(time_temp)): # <<<<<<<<<<<<<<
41286  * dt_temp = time_temp[i]-time_temp[i-1]
41287  * #check if time is at first column
41288  */
41289  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_range); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2208, __pyx_L1_error)
41290  __Pyx_GOTREF(__pyx_t_7);
41291  __pyx_t_8 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2208, __pyx_L1_error)
41292  __pyx_t_12 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2208, __pyx_L1_error)
41293  __Pyx_GOTREF(__pyx_t_12);
41294  __pyx_t_5 = NULL;
41295  __pyx_t_3 = 0;
41296  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
41297  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
41298  if (likely(__pyx_t_5)) {
41299  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
41300  __Pyx_INCREF(__pyx_t_5);
41301  __Pyx_INCREF(function);
41302  __Pyx_DECREF_SET(__pyx_t_7, function);
41303  __pyx_t_3 = 1;
41304  }
41305  }
41306  #if CYTHON_FAST_PYCALL
41307  if (PyFunction_Check(__pyx_t_7)) {
41308  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_12};
41309  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2208, __pyx_L1_error)
41310  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
41311  __Pyx_GOTREF(__pyx_t_6);
41312  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41313  } else
41314  #endif
41315  #if CYTHON_FAST_PYCCALL
41316  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
41317  PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_12};
41318  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2208, __pyx_L1_error)
41319  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
41320  __Pyx_GOTREF(__pyx_t_6);
41321  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41322  } else
41323  #endif
41324  {
41325  __pyx_t_11 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2208, __pyx_L1_error)
41326  __Pyx_GOTREF(__pyx_t_11);
41327  if (__pyx_t_5) {
41328  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
41329  }
41330  __Pyx_INCREF(__pyx_int_1);
41331  __Pyx_GIVEREF(__pyx_int_1);
41332  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_3, __pyx_int_1);
41333  __Pyx_GIVEREF(__pyx_t_12);
41334  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_3, __pyx_t_12);
41335  __pyx_t_12 = 0;
41336  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2208, __pyx_L1_error)
41337  __Pyx_GOTREF(__pyx_t_6);
41338  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41339  }
41340  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41341  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
41342  __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0;
41343  __pyx_t_13 = NULL;
41344  } else {
41345  __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2208, __pyx_L1_error)
41346  __Pyx_GOTREF(__pyx_t_7);
41347  __pyx_t_13 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2208, __pyx_L1_error)
41348  }
41349  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41350  for (;;) {
41351  if (likely(!__pyx_t_13)) {
41352  if (likely(PyList_CheckExact(__pyx_t_7))) {
41353  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
41354  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
41355  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2208, __pyx_L1_error)
41356  #else
41357  __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2208, __pyx_L1_error)
41358  __Pyx_GOTREF(__pyx_t_6);
41359  #endif
41360  } else {
41361  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
41362  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
41363  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2208, __pyx_L1_error)
41364  #else
41365  __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2208, __pyx_L1_error)
41366  __Pyx_GOTREF(__pyx_t_6);
41367  #endif
41368  }
41369  } else {
41370  __pyx_t_6 = __pyx_t_13(__pyx_t_7);
41371  if (unlikely(!__pyx_t_6)) {
41372  PyObject* exc_type = PyErr_Occurred();
41373  if (exc_type) {
41374  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
41375  else __PYX_ERR(0, 2208, __pyx_L1_error)
41376  }
41377  break;
41378  }
41379  __Pyx_GOTREF(__pyx_t_6);
41380  }
41381  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6);
41382  __pyx_t_6 = 0;
41383 
41384  /* "WaveTools.py":2209
41385  * doInterp = False
41386  * for i in range(1,len(time_temp)):
41387  * dt_temp = time_temp[i]-time_temp[i-1] # <<<<<<<<<<<<<<
41388  * #check if time is at first column
41389  * if time_temp[i]<=time_temp[i-1]:
41390  */
41391  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_time_temp, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2209, __pyx_L1_error)
41392  __Pyx_GOTREF(__pyx_t_6);
41393  __pyx_t_11 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2209, __pyx_L1_error)
41394  __Pyx_GOTREF(__pyx_t_11);
41395  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_time_temp, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2209, __pyx_L1_error)
41396  __Pyx_GOTREF(__pyx_t_12);
41397  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41398  __pyx_t_11 = PyNumber_Subtract(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2209, __pyx_L1_error)
41399  __Pyx_GOTREF(__pyx_t_11);
41400  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41401  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41402  __Pyx_XDECREF_SET(__pyx_v_dt_temp, __pyx_t_11);
41403  __pyx_t_11 = 0;
41404 
41405  /* "WaveTools.py":2211
41406  * dt_temp = time_temp[i]-time_temp[i-1]
41407  * #check if time is at first column
41408  * if time_temp[i]<=time_temp[i-1]: # <<<<<<<<<<<<<<
41409  * logEvent("ERROR! WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
41410  * sys.exit(1)
41411  */
41412  __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_time_temp, __pyx_v_i); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2211, __pyx_L1_error)
41413  __Pyx_GOTREF(__pyx_t_11);
41414  __pyx_t_12 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2211, __pyx_L1_error)
41415  __Pyx_GOTREF(__pyx_t_12);
41416  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_time_temp, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2211, __pyx_L1_error)
41417  __Pyx_GOTREF(__pyx_t_6);
41418  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41419  __pyx_t_12 = PyObject_RichCompare(__pyx_t_11, __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2211, __pyx_L1_error)
41420  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41421  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41422  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2211, __pyx_L1_error)
41423  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41424  if (__pyx_t_9) {
41425 
41426  /* "WaveTools.py":2212
41427  * #check if time is at first column
41428  * if time_temp[i]<=time_temp[i-1]:
41429  * logEvent("ERROR! WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) ) # <<<<<<<<<<<<<<
41430  * sys.exit(1)
41431  * #check if sampling rate is constant
41432  */
41433  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2212, __pyx_L1_error)
41434  __Pyx_GOTREF(__pyx_t_6);
41435  __pyx_t_11 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2212, __pyx_L1_error)
41436  __Pyx_GOTREF(__pyx_t_11);
41437  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2212, __pyx_L1_error)
41438  __Pyx_GOTREF(__pyx_t_5);
41439  __Pyx_GIVEREF(__pyx_t_11);
41440  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11);
41441  __Pyx_INCREF(__pyx_v_i);
41442  __Pyx_GIVEREF(__pyx_v_i);
41443  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_i);
41444  __Pyx_INCREF(__pyx_v_timeSeriesFile);
41445  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
41446  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_timeSeriesFile);
41447  __pyx_t_11 = 0;
41448  __pyx_t_11 = __Pyx_PyString_Format(__pyx_kp_s_ERROR_WaveTools_py_Found_not_con, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2212, __pyx_L1_error)
41449  __Pyx_GOTREF(__pyx_t_11);
41450  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41451  __pyx_t_5 = NULL;
41452  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
41453  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
41454  if (likely(__pyx_t_5)) {
41455  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
41456  __Pyx_INCREF(__pyx_t_5);
41457  __Pyx_INCREF(function);
41458  __Pyx_DECREF_SET(__pyx_t_6, function);
41459  }
41460  }
41461  __pyx_t_12 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_11);
41462  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
41463  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41464  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2212, __pyx_L1_error)
41465  __Pyx_GOTREF(__pyx_t_12);
41466  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41467  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41468 
41469  /* "WaveTools.py":2213
41470  * if time_temp[i]<=time_temp[i-1]:
41471  * logEvent("ERROR! WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
41472  * sys.exit(1) # <<<<<<<<<<<<<<
41473  * #check if sampling rate is constant
41474  * if dt_temp!=self.dt:
41475  */
41476  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2213, __pyx_L1_error)
41477  __Pyx_GOTREF(__pyx_t_6);
41478  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2213, __pyx_L1_error)
41479  __Pyx_GOTREF(__pyx_t_11);
41480  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41481  __pyx_t_6 = NULL;
41482  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
41483  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
41484  if (likely(__pyx_t_6)) {
41485  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
41486  __Pyx_INCREF(__pyx_t_6);
41487  __Pyx_INCREF(function);
41488  __Pyx_DECREF_SET(__pyx_t_11, function);
41489  }
41490  }
41491  __pyx_t_12 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_int_1);
41492  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
41493  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2213, __pyx_L1_error)
41494  __Pyx_GOTREF(__pyx_t_12);
41495  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41496  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41497 
41498  /* "WaveTools.py":2211
41499  * dt_temp = time_temp[i]-time_temp[i-1]
41500  * #check if time is at first column
41501  * if time_temp[i]<=time_temp[i-1]: # <<<<<<<<<<<<<<
41502  * logEvent("ERROR! WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
41503  * sys.exit(1)
41504  */
41505  }
41506 
41507  /* "WaveTools.py":2215
41508  * sys.exit(1)
41509  * #check if sampling rate is constant
41510  * if dt_temp!=self.dt: # <<<<<<<<<<<<<<
41511  * doInterp = True
41512  * if(doInterp):
41513  */
41514  __pyx_t_12 = PyFloat_FromDouble(__pyx_v_self->dt); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2215, __pyx_L1_error)
41515  __Pyx_GOTREF(__pyx_t_12);
41516  __pyx_t_11 = PyObject_RichCompare(__pyx_v_dt_temp, __pyx_t_12, Py_NE); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2215, __pyx_L1_error)
41517  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41518  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2215, __pyx_L1_error)
41519  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41520  if (__pyx_t_9) {
41521 
41522  /* "WaveTools.py":2216
41523  * #check if sampling rate is constant
41524  * if dt_temp!=self.dt:
41525  * doInterp = True # <<<<<<<<<<<<<<
41526  * if(doInterp):
41527  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
41528  */
41529  __pyx_v_doInterp = 1;
41530 
41531  /* "WaveTools.py":2215
41532  * sys.exit(1)
41533  * #check if sampling rate is constant
41534  * if dt_temp!=self.dt: # <<<<<<<<<<<<<<
41535  * doInterp = True
41536  * if(doInterp):
41537  */
41538  }
41539 
41540  /* "WaveTools.py":2208
41541  * # If necessary, perform interpolation
41542  * doInterp = False
41543  * for i in range(1,len(time_temp)): # <<<<<<<<<<<<<<
41544  * dt_temp = time_temp[i]-time_temp[i-1]
41545  * #check if time is at first column
41546  */
41547  }
41548  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41549 
41550  /* "WaveTools.py":2217
41551  * if dt_temp!=self.dt:
41552  * doInterp = True
41553  * if(doInterp): # <<<<<<<<<<<<<<
41554  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
41555  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
41556  */
41557  __pyx_t_9 = (__pyx_v_doInterp != 0);
41558  if (__pyx_t_9) {
41559 
41560  /* "WaveTools.py":2218
41561  * doInterp = True
41562  * if(doInterp):
41563  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0) # <<<<<<<<<<<<<<
41564  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
41565  * self.etaS = np.interp(self.time,time_temp,tdata[:,1])
41566  */
41567  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2218, __pyx_L1_error)
41568  __Pyx_GOTREF(__pyx_t_7);
41569  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2218, __pyx_L1_error)
41570  __Pyx_GOTREF(__pyx_t_11);
41571  if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 2218, __pyx_L1_error)
41572  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__44, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2218, __pyx_L1_error)
41573  __Pyx_GOTREF(__pyx_t_12);
41574  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41575  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41576  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41577 
41578  /* "WaveTools.py":2219
41579  * if(doInterp):
41580  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
41581  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp)) # <<<<<<<<<<<<<<
41582  * self.etaS = np.interp(self.time,time_temp,tdata[:,1])
41583  * else:
41584  */
41585  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2219, __pyx_L1_error)
41586  __Pyx_GOTREF(__pyx_t_11);
41587  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_linspace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2219, __pyx_L1_error)
41588  __Pyx_GOTREF(__pyx_t_7);
41589  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41590  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_time_temp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2219, __pyx_L1_error)
41591  __Pyx_GOTREF(__pyx_t_11);
41592  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_time_temp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2219, __pyx_L1_error)
41593  __Pyx_GOTREF(__pyx_t_6);
41594  __pyx_t_8 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2219, __pyx_L1_error)
41595  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2219, __pyx_L1_error)
41596  __Pyx_GOTREF(__pyx_t_5);
41597  __pyx_t_4 = NULL;
41598  __pyx_t_3 = 0;
41599  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
41600  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
41601  if (likely(__pyx_t_4)) {
41602  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
41603  __Pyx_INCREF(__pyx_t_4);
41604  __Pyx_INCREF(function);
41605  __Pyx_DECREF_SET(__pyx_t_7, function);
41606  __pyx_t_3 = 1;
41607  }
41608  }
41609  #if CYTHON_FAST_PYCALL
41610  if (PyFunction_Check(__pyx_t_7)) {
41611  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_11, __pyx_t_6, __pyx_t_5};
41612  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2219, __pyx_L1_error)
41613  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
41614  __Pyx_GOTREF(__pyx_t_12);
41615  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41616  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41617  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41618  } else
41619  #endif
41620  #if CYTHON_FAST_PYCCALL
41621  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
41622  PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_11, __pyx_t_6, __pyx_t_5};
41623  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2219, __pyx_L1_error)
41624  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
41625  __Pyx_GOTREF(__pyx_t_12);
41626  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
41627  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41628  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
41629  } else
41630  #endif
41631  {
41632  __pyx_t_14 = PyTuple_New(3+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2219, __pyx_L1_error)
41633  __Pyx_GOTREF(__pyx_t_14);
41634  if (__pyx_t_4) {
41635  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL;
41636  }
41637  __Pyx_GIVEREF(__pyx_t_11);
41638  PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_3, __pyx_t_11);
41639  __Pyx_GIVEREF(__pyx_t_6);
41640  PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_3, __pyx_t_6);
41641  __Pyx_GIVEREF(__pyx_t_5);
41642  PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_3, __pyx_t_5);
41643  __pyx_t_11 = 0;
41644  __pyx_t_6 = 0;
41645  __pyx_t_5 = 0;
41646  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2219, __pyx_L1_error)
41647  __Pyx_GOTREF(__pyx_t_12);
41648  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41649  }
41650  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41651  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2219, __pyx_L1_error)
41652  __Pyx_GIVEREF(__pyx_t_12);
41653  __Pyx_GOTREF(__pyx_v_self->time);
41654  __Pyx_DECREF(((PyObject *)__pyx_v_self->time));
41655  __pyx_v_self->time = ((PyArrayObject *)__pyx_t_12);
41656  __pyx_t_12 = 0;
41657 
41658  /* "WaveTools.py":2220
41659  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
41660  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
41661  * self.etaS = np.interp(self.time,time_temp,tdata[:,1]) # <<<<<<<<<<<<<<
41662  * else:
41663  * self.time = time_temp
41664  */
41665  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2220, __pyx_L1_error)
41666  __Pyx_GOTREF(__pyx_t_7);
41667  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_interp); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2220, __pyx_L1_error)
41668  __Pyx_GOTREF(__pyx_t_14);
41669  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41670  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); __PYX_ERR(0, 2220, __pyx_L1_error) }
41671  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__26); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2220, __pyx_L1_error)
41672  __Pyx_GOTREF(__pyx_t_7);
41673  __pyx_t_5 = NULL;
41674  __pyx_t_3 = 0;
41675  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
41676  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_14);
41677  if (likely(__pyx_t_5)) {
41678  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
41679  __Pyx_INCREF(__pyx_t_5);
41680  __Pyx_INCREF(function);
41681  __Pyx_DECREF_SET(__pyx_t_14, function);
41682  __pyx_t_3 = 1;
41683  }
41684  }
41685  #if CYTHON_FAST_PYCALL
41686  if (PyFunction_Check(__pyx_t_14)) {
41687  PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self->time), __pyx_v_time_temp, __pyx_t_7};
41688  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2220, __pyx_L1_error)
41689  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
41690  __Pyx_GOTREF(__pyx_t_12);
41691  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41692  } else
41693  #endif
41694  #if CYTHON_FAST_PYCCALL
41695  if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) {
41696  PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self->time), __pyx_v_time_temp, __pyx_t_7};
41697  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2220, __pyx_L1_error)
41698  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
41699  __Pyx_GOTREF(__pyx_t_12);
41700  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41701  } else
41702  #endif
41703  {
41704  __pyx_t_6 = PyTuple_New(3+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2220, __pyx_L1_error)
41705  __Pyx_GOTREF(__pyx_t_6);
41706  if (__pyx_t_5) {
41707  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
41708  }
41709  __Pyx_INCREF(((PyObject *)__pyx_v_self->time));
41710  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->time));
41711  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_3, ((PyObject *)__pyx_v_self->time));
41712  __Pyx_INCREF(__pyx_v_time_temp);
41713  __Pyx_GIVEREF(__pyx_v_time_temp);
41714  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_3, __pyx_v_time_temp);
41715  __Pyx_GIVEREF(__pyx_t_7);
41716  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_3, __pyx_t_7);
41717  __pyx_t_7 = 0;
41718  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_6, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2220, __pyx_L1_error)
41719  __Pyx_GOTREF(__pyx_t_12);
41720  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41721  }
41722  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41723  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2220, __pyx_L1_error)
41724  __Pyx_GIVEREF(__pyx_t_12);
41725  __Pyx_GOTREF(__pyx_v_self->etaS);
41726  __Pyx_DECREF(((PyObject *)__pyx_v_self->etaS));
41727  __pyx_v_self->etaS = ((PyArrayObject *)__pyx_t_12);
41728  __pyx_t_12 = 0;
41729 
41730  /* "WaveTools.py":2217
41731  * if dt_temp!=self.dt:
41732  * doInterp = True
41733  * if(doInterp): # <<<<<<<<<<<<<<
41734  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
41735  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
41736  */
41737  goto __pyx_L13;
41738  }
41739 
41740  /* "WaveTools.py":2222
41741  * self.etaS = np.interp(self.time,time_temp,tdata[:,1])
41742  * else:
41743  * self.time = time_temp # <<<<<<<<<<<<<<
41744  * self.etaS = tdata[:,1]
41745  *
41746  */
41747  /*else*/ {
41748  if (!(likely(((__pyx_v_time_temp) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_time_temp, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2222, __pyx_L1_error)
41749  __pyx_t_12 = __pyx_v_time_temp;
41750  __Pyx_INCREF(__pyx_t_12);
41751  __Pyx_GIVEREF(__pyx_t_12);
41752  __Pyx_GOTREF(__pyx_v_self->time);
41753  __Pyx_DECREF(((PyObject *)__pyx_v_self->time));
41754  __pyx_v_self->time = ((PyArrayObject *)__pyx_t_12);
41755  __pyx_t_12 = 0;
41756 
41757  /* "WaveTools.py":2223
41758  * else:
41759  * self.time = time_temp
41760  * self.etaS = tdata[:,1] # <<<<<<<<<<<<<<
41761  *
41762  * self.t0 = self.time[0]
41763  */
41764  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); __PYX_ERR(0, 2223, __pyx_L1_error) }
41765  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__26); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2223, __pyx_L1_error)
41766  __Pyx_GOTREF(__pyx_t_12);
41767  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2223, __pyx_L1_error)
41768  __Pyx_GIVEREF(__pyx_t_12);
41769  __Pyx_GOTREF(__pyx_v_self->etaS);
41770  __Pyx_DECREF(((PyObject *)__pyx_v_self->etaS));
41771  __pyx_v_self->etaS = ((PyArrayObject *)__pyx_t_12);
41772  __pyx_t_12 = 0;
41773  }
41774  __pyx_L13:;
41775 
41776  /* "WaveTools.py":2225
41777  * self.etaS = tdata[:,1]
41778  *
41779  * self.t0 = self.time[0] # <<<<<<<<<<<<<<
41780  * # Remove mean level from raw data
41781  * self.etaS -= np.mean(self.etaS)
41782  */
41783  __pyx_t_12 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->time), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2225, __pyx_L1_error)
41784  __Pyx_GOTREF(__pyx_t_12);
41785  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2225, __pyx_L1_error)
41786  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41787  __pyx_v_self->t0 = __pyx_t_2;
41788 
41789  /* "WaveTools.py":2227
41790  * self.t0 = self.time[0]
41791  * # Remove mean level from raw data
41792  * self.etaS -= np.mean(self.etaS) # <<<<<<<<<<<<<<
41793  * # Filter out first 2.5 % and last 2.5% to make the signal periodic
41794  * self.etaS *= costap(len(self.time),cutoff=cutoffTotal)
41795  */
41796  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2227, __pyx_L1_error)
41797  __Pyx_GOTREF(__pyx_t_14);
41798  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_mean); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2227, __pyx_L1_error)
41799  __Pyx_GOTREF(__pyx_t_6);
41800  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41801  __pyx_t_14 = NULL;
41802  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
41803  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
41804  if (likely(__pyx_t_14)) {
41805  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
41806  __Pyx_INCREF(__pyx_t_14);
41807  __Pyx_INCREF(function);
41808  __Pyx_DECREF_SET(__pyx_t_6, function);
41809  }
41810  }
41811  __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, ((PyObject *)__pyx_v_self->etaS)) : __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self->etaS));
41812  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
41813  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2227, __pyx_L1_error)
41814  __Pyx_GOTREF(__pyx_t_12);
41815  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41816  __pyx_t_6 = PyNumber_InPlaceSubtract(((PyObject *)__pyx_v_self->etaS), __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2227, __pyx_L1_error)
41817  __Pyx_GOTREF(__pyx_t_6);
41818  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41819  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2227, __pyx_L1_error)
41820  __Pyx_GIVEREF(__pyx_t_6);
41821  __Pyx_GOTREF(__pyx_v_self->etaS);
41822  __Pyx_DECREF(((PyObject *)__pyx_v_self->etaS));
41823  __pyx_v_self->etaS = ((PyArrayObject *)__pyx_t_6);
41824  __pyx_t_6 = 0;
41825 
41826  /* "WaveTools.py":2229
41827  * self.etaS -= np.mean(self.etaS)
41828  * # Filter out first 2.5 % and last 2.5% to make the signal periodic
41829  * self.etaS *= costap(len(self.time),cutoff=cutoffTotal) # <<<<<<<<<<<<<<
41830  * # clear tdata from memory
41831  * del tdata
41832  */
41833  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_costap); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2229, __pyx_L1_error)
41834  __Pyx_GOTREF(__pyx_t_6);
41835  __pyx_t_12 = ((PyObject *)__pyx_v_self->time);
41836  __Pyx_INCREF(__pyx_t_12);
41837  __pyx_t_8 = PyObject_Length(__pyx_t_12); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2229, __pyx_L1_error)
41838  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41839  __pyx_t_12 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2229, __pyx_L1_error)
41840  __Pyx_GOTREF(__pyx_t_12);
41841  __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2229, __pyx_L1_error)
41842  __Pyx_GOTREF(__pyx_t_14);
41843  __Pyx_GIVEREF(__pyx_t_12);
41844  PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12);
41845  __pyx_t_12 = 0;
41846  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2229, __pyx_L1_error)
41847  __Pyx_GOTREF(__pyx_t_12);
41848  if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_cutoff, __pyx_v_cutoffTotal) < 0) __PYX_ERR(0, 2229, __pyx_L1_error)
41849  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2229, __pyx_L1_error)
41850  __Pyx_GOTREF(__pyx_t_7);
41851  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
41852  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41853  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41854  __pyx_t_12 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->etaS), __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2229, __pyx_L1_error)
41855  __Pyx_GOTREF(__pyx_t_12);
41856  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41857  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2229, __pyx_L1_error)
41858  __Pyx_GIVEREF(__pyx_t_12);
41859  __Pyx_GOTREF(__pyx_v_self->etaS);
41860  __Pyx_DECREF(((PyObject *)__pyx_v_self->etaS));
41861  __pyx_v_self->etaS = ((PyArrayObject *)__pyx_t_12);
41862  __pyx_t_12 = 0;
41863 
41864  /* "WaveTools.py":2231
41865  * self.etaS *= costap(len(self.time),cutoff=cutoffTotal)
41866  * # clear tdata from memory
41867  * del tdata # <<<<<<<<<<<<<<
41868  * # Calculate time lenght
41869  * self.tlength = (self.time[-1]-self.time[0])
41870  */
41871  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); __PYX_ERR(0, 2231, __pyx_L1_error) }
41872  __Pyx_DECREF(__pyx_v_tdata);
41873  __pyx_v_tdata = NULL;
41874 
41875  /* "WaveTools.py":2233
41876  * del tdata
41877  * # Calculate time lenght
41878  * self.tlength = (self.time[-1]-self.time[0]) # <<<<<<<<<<<<<<
41879  * # Matrix initialisation
41880  * self.windows_handover = []
41881  */
41882  __pyx_t_12 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->time), -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2233, __pyx_L1_error)
41883  __Pyx_GOTREF(__pyx_t_12);
41884  __pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->time), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2233, __pyx_L1_error)
41885  __Pyx_GOTREF(__pyx_t_7);
41886  __pyx_t_14 = PyNumber_Subtract(__pyx_t_12, __pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2233, __pyx_L1_error)
41887  __Pyx_GOTREF(__pyx_t_14);
41888  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
41889  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41890  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L1_error)
41891  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41892  __pyx_v_self->tlength = __pyx_t_2;
41893 
41894  /* "WaveTools.py":2235
41895  * self.tlength = (self.time[-1]-self.time[0])
41896  * # Matrix initialisation
41897  * self.windows_handover = [] # <<<<<<<<<<<<<<
41898  * self.windows_rec = []
41899  * self.Twindow = 10.
41900  */
41901  __pyx_t_14 = PyList_New(0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2235, __pyx_L1_error)
41902  __Pyx_GOTREF(__pyx_t_14);
41903  __Pyx_GIVEREF(__pyx_t_14);
41904  __Pyx_GOTREF(__pyx_v_self->windows_handover);
41905  __Pyx_DECREF(__pyx_v_self->windows_handover);
41906  __pyx_v_self->windows_handover = ((PyObject*)__pyx_t_14);
41907  __pyx_t_14 = 0;
41908 
41909  /* "WaveTools.py":2236
41910  * # Matrix initialisation
41911  * self.windows_handover = []
41912  * self.windows_rec = [] # <<<<<<<<<<<<<<
41913  * self.Twindow = 10.
41914  *
41915  */
41916  __pyx_t_14 = PyList_New(0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2236, __pyx_L1_error)
41917  __Pyx_GOTREF(__pyx_t_14);
41918  __Pyx_GIVEREF(__pyx_t_14);
41919  __Pyx_GOTREF(__pyx_v_self->windows_rec);
41920  __Pyx_DECREF(__pyx_v_self->windows_rec);
41921  __pyx_v_self->windows_rec = ((PyObject*)__pyx_t_14);
41922  __pyx_t_14 = 0;
41923 
41924  /* "WaveTools.py":2237
41925  * self.windows_handover = []
41926  * self.windows_rec = []
41927  * self.Twindow = 10. # <<<<<<<<<<<<<<
41928  *
41929  *
41930  */
41931  __pyx_v_self->Twindow = 10.;
41932 
41933  /* "WaveTools.py":2241
41934  *
41935  * # Direct decomposition of the time series for using at reconstruct_direct
41936  * if (self.rec_direct): # <<<<<<<<<<<<<<
41937  * Nf = self.N
41938  * nfft=len(self.time)
41939  */
41940  __pyx_t_9 = (__pyx_v_self->rec_direct != 0);
41941  if (__pyx_t_9) {
41942 
41943  /* "WaveTools.py":2242
41944  * # Direct decomposition of the time series for using at reconstruct_direct
41945  * if (self.rec_direct):
41946  * Nf = self.N # <<<<<<<<<<<<<<
41947  * nfft=len(self.time)
41948  * logEvent("INFO: WaveTools.py: performing a direct series decomposition")
41949  */
41950  __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2242, __pyx_L1_error)
41951  __Pyx_GOTREF(__pyx_t_14);
41952  __pyx_v_Nf = __pyx_t_14;
41953  __pyx_t_14 = 0;
41954 
41955  /* "WaveTools.py":2243
41956  * if (self.rec_direct):
41957  * Nf = self.N
41958  * nfft=len(self.time) # <<<<<<<<<<<<<<
41959  * logEvent("INFO: WaveTools.py: performing a direct series decomposition")
41960  * decomp = decompose_tseries(self.time,self.etaS,self.dt)
41961  */
41962  __pyx_t_14 = ((PyObject *)__pyx_v_self->time);
41963  __Pyx_INCREF(__pyx_t_14);
41964  __pyx_t_8 = PyObject_Length(__pyx_t_14); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2243, __pyx_L1_error)
41965  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41966  __pyx_v_nfft = __pyx_t_8;
41967 
41968  /* "WaveTools.py":2244
41969  * Nf = self.N
41970  * nfft=len(self.time)
41971  * logEvent("INFO: WaveTools.py: performing a direct series decomposition") # <<<<<<<<<<<<<<
41972  * decomp = decompose_tseries(self.time,self.etaS,self.dt)
41973  * self.ai = decomp[1]
41974  */
41975  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2244, __pyx_L1_error)
41976  __Pyx_GOTREF(__pyx_t_7);
41977  __pyx_t_12 = NULL;
41978  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
41979  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
41980  if (likely(__pyx_t_12)) {
41981  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
41982  __Pyx_INCREF(__pyx_t_12);
41983  __Pyx_INCREF(function);
41984  __Pyx_DECREF_SET(__pyx_t_7, function);
41985  }
41986  }
41987  __pyx_t_14 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_12, __pyx_kp_s_INFO_WaveTools_py_performing_a_d) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_s_INFO_WaveTools_py_performing_a_d);
41988  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
41989  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2244, __pyx_L1_error)
41990  __Pyx_GOTREF(__pyx_t_14);
41991  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
41992  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
41993 
41994  /* "WaveTools.py":2245
41995  * nfft=len(self.time)
41996  * logEvent("INFO: WaveTools.py: performing a direct series decomposition")
41997  * decomp = decompose_tseries(self.time,self.etaS,self.dt) # <<<<<<<<<<<<<<
41998  * self.ai = decomp[1]
41999  * ipeak = np.where(self.ai == max(self.ai))[0][0]
42000  */
42001  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_decompose_tseries); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2245, __pyx_L1_error)
42002  __Pyx_GOTREF(__pyx_t_7);
42003  __pyx_t_12 = PyFloat_FromDouble(__pyx_v_self->dt); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2245, __pyx_L1_error)
42004  __Pyx_GOTREF(__pyx_t_12);
42005  __pyx_t_6 = NULL;
42006  __pyx_t_3 = 0;
42007  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
42008  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
42009  if (likely(__pyx_t_6)) {
42010  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
42011  __Pyx_INCREF(__pyx_t_6);
42012  __Pyx_INCREF(function);
42013  __Pyx_DECREF_SET(__pyx_t_7, function);
42014  __pyx_t_3 = 1;
42015  }
42016  }
42017  #if CYTHON_FAST_PYCALL
42018  if (PyFunction_Check(__pyx_t_7)) {
42019  PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_v_self->time), ((PyObject *)__pyx_v_self->etaS), __pyx_t_12};
42020  __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2245, __pyx_L1_error)
42021  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
42022  __Pyx_GOTREF(__pyx_t_14);
42023  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42024  } else
42025  #endif
42026  #if CYTHON_FAST_PYCCALL
42027  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
42028  PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_v_self->time), ((PyObject *)__pyx_v_self->etaS), __pyx_t_12};
42029  __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2245, __pyx_L1_error)
42030  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
42031  __Pyx_GOTREF(__pyx_t_14);
42032  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42033  } else
42034  #endif
42035  {
42036  __pyx_t_5 = PyTuple_New(3+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2245, __pyx_L1_error)
42037  __Pyx_GOTREF(__pyx_t_5);
42038  if (__pyx_t_6) {
42039  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
42040  }
42041  __Pyx_INCREF(((PyObject *)__pyx_v_self->time));
42042  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->time));
42043  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_3, ((PyObject *)__pyx_v_self->time));
42044  __Pyx_INCREF(((PyObject *)__pyx_v_self->etaS));
42045  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->etaS));
42046  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_3, ((PyObject *)__pyx_v_self->etaS));
42047  __Pyx_GIVEREF(__pyx_t_12);
42048  PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_3, __pyx_t_12);
42049  __pyx_t_12 = 0;
42050  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2245, __pyx_L1_error)
42051  __Pyx_GOTREF(__pyx_t_14);
42052  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42053  }
42054  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42055  __pyx_v_decomp = __pyx_t_14;
42056  __pyx_t_14 = 0;
42057 
42058  /* "WaveTools.py":2246
42059  * logEvent("INFO: WaveTools.py: performing a direct series decomposition")
42060  * decomp = decompose_tseries(self.time,self.etaS,self.dt)
42061  * self.ai = decomp[1] # <<<<<<<<<<<<<<
42062  * ipeak = np.where(self.ai == max(self.ai))[0][0]
42063  * imax = min(ipeak + old_div(Nf,2),len(self.ai))
42064  */
42065  __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2246, __pyx_L1_error)
42066  __Pyx_GOTREF(__pyx_t_14);
42067  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2246, __pyx_L1_error)
42068  __Pyx_GIVEREF(__pyx_t_14);
42069  __Pyx_GOTREF(__pyx_v_self->ai);
42070  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
42071  __pyx_v_self->ai = ((PyArrayObject *)__pyx_t_14);
42072  __pyx_t_14 = 0;
42073 
42074  /* "WaveTools.py":2247
42075  * decomp = decompose_tseries(self.time,self.etaS,self.dt)
42076  * self.ai = decomp[1]
42077  * ipeak = np.where(self.ai == max(self.ai))[0][0] # <<<<<<<<<<<<<<
42078  * imax = min(ipeak + old_div(Nf,2),len(self.ai))
42079  * imin = max(0,ipeak - old_div(Nf,2))
42080  */
42081  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2247, __pyx_L1_error)
42082  __Pyx_GOTREF(__pyx_t_7);
42083  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2247, __pyx_L1_error)
42084  __Pyx_GOTREF(__pyx_t_5);
42085  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42086  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, ((PyObject *)__pyx_v_self->ai)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2247, __pyx_L1_error)
42087  __Pyx_GOTREF(__pyx_t_7);
42088  __pyx_t_12 = PyObject_RichCompare(((PyObject *)__pyx_v_self->ai), __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2247, __pyx_L1_error)
42089  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42090  __pyx_t_7 = NULL;
42091  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
42092  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
42093  if (likely(__pyx_t_7)) {
42094  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
42095  __Pyx_INCREF(__pyx_t_7);
42096  __Pyx_INCREF(function);
42097  __Pyx_DECREF_SET(__pyx_t_5, function);
42098  }
42099  }
42100  __pyx_t_14 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_12);
42101  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
42102  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42103  if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2247, __pyx_L1_error)
42104  __Pyx_GOTREF(__pyx_t_14);
42105  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42106  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_14, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2247, __pyx_L1_error)
42107  __Pyx_GOTREF(__pyx_t_5);
42108  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42109  __pyx_t_14 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2247, __pyx_L1_error)
42110  __Pyx_GOTREF(__pyx_t_14);
42111  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42112  __pyx_v_ipeak = __pyx_t_14;
42113  __pyx_t_14 = 0;
42114 
42115  /* "WaveTools.py":2248
42116  * self.ai = decomp[1]
42117  * ipeak = np.where(self.ai == max(self.ai))[0][0]
42118  * imax = min(ipeak + old_div(Nf,2),len(self.ai)) # <<<<<<<<<<<<<<
42119  * imin = max(0,ipeak - old_div(Nf,2))
42120  * self.ai = self.ai[imin:imax]
42121  */
42122  __pyx_t_14 = ((PyObject *)__pyx_v_self->ai);
42123  __Pyx_INCREF(__pyx_t_14);
42124  __pyx_t_8 = PyObject_Length(__pyx_t_14); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2248, __pyx_L1_error)
42125  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42126  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2248, __pyx_L1_error)
42127  __Pyx_GOTREF(__pyx_t_5);
42128  __pyx_t_12 = NULL;
42129  __pyx_t_3 = 0;
42130  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
42131  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
42132  if (likely(__pyx_t_12)) {
42133  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
42134  __Pyx_INCREF(__pyx_t_12);
42135  __Pyx_INCREF(function);
42136  __Pyx_DECREF_SET(__pyx_t_5, function);
42137  __pyx_t_3 = 1;
42138  }
42139  }
42140  #if CYTHON_FAST_PYCALL
42141  if (PyFunction_Check(__pyx_t_5)) {
42142  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_Nf, __pyx_int_2};
42143  __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2248, __pyx_L1_error)
42144  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
42145  __Pyx_GOTREF(__pyx_t_14);
42146  } else
42147  #endif
42148  #if CYTHON_FAST_PYCCALL
42149  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
42150  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_Nf, __pyx_int_2};
42151  __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2248, __pyx_L1_error)
42152  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
42153  __Pyx_GOTREF(__pyx_t_14);
42154  } else
42155  #endif
42156  {
42157  __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2248, __pyx_L1_error)
42158  __Pyx_GOTREF(__pyx_t_7);
42159  if (__pyx_t_12) {
42160  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL;
42161  }
42162  __Pyx_INCREF(__pyx_v_Nf);
42163  __Pyx_GIVEREF(__pyx_v_Nf);
42164  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_Nf);
42165  __Pyx_INCREF(__pyx_int_2);
42166  __Pyx_GIVEREF(__pyx_int_2);
42167  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_int_2);
42168  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2248, __pyx_L1_error)
42169  __Pyx_GOTREF(__pyx_t_14);
42170  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42171  }
42172  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42173  __pyx_t_5 = PyNumber_Add(__pyx_v_ipeak, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2248, __pyx_L1_error)
42174  __Pyx_GOTREF(__pyx_t_5);
42175  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42176  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2248, __pyx_L1_error)
42177  __Pyx_GOTREF(__pyx_t_7);
42178  __pyx_t_12 = PyObject_RichCompare(__pyx_t_7, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2248, __pyx_L1_error)
42179  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42180  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2248, __pyx_L1_error)
42181  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42182  if (__pyx_t_9) {
42183  __pyx_t_12 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2248, __pyx_L1_error)
42184  __Pyx_GOTREF(__pyx_t_12);
42185  __pyx_t_14 = __pyx_t_12;
42186  __pyx_t_12 = 0;
42187  } else {
42188  __Pyx_INCREF(__pyx_t_5);
42189  __pyx_t_14 = __pyx_t_5;
42190  }
42191  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42192  __pyx_t_5 = __pyx_t_14;
42193  __Pyx_INCREF(__pyx_t_5);
42194  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42195  __pyx_v_imax = __pyx_t_5;
42196  __pyx_t_5 = 0;
42197 
42198  /* "WaveTools.py":2249
42199  * ipeak = np.where(self.ai == max(self.ai))[0][0]
42200  * imax = min(ipeak + old_div(Nf,2),len(self.ai))
42201  * imin = max(0,ipeak - old_div(Nf,2)) # <<<<<<<<<<<<<<
42202  * self.ai = self.ai[imin:imax]
42203  * self.omega = decomp[0][imin:imax]
42204  */
42205  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_old_div); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2249, __pyx_L1_error)
42206  __Pyx_GOTREF(__pyx_t_14);
42207  __pyx_t_12 = NULL;
42208  __pyx_t_3 = 0;
42209  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
42210  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14);
42211  if (likely(__pyx_t_12)) {
42212  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
42213  __Pyx_INCREF(__pyx_t_12);
42214  __Pyx_INCREF(function);
42215  __Pyx_DECREF_SET(__pyx_t_14, function);
42216  __pyx_t_3 = 1;
42217  }
42218  }
42219  #if CYTHON_FAST_PYCALL
42220  if (PyFunction_Check(__pyx_t_14)) {
42221  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_Nf, __pyx_int_2};
42222  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2249, __pyx_L1_error)
42223  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
42224  __Pyx_GOTREF(__pyx_t_5);
42225  } else
42226  #endif
42227  #if CYTHON_FAST_PYCCALL
42228  if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) {
42229  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_Nf, __pyx_int_2};
42230  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2249, __pyx_L1_error)
42231  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
42232  __Pyx_GOTREF(__pyx_t_5);
42233  } else
42234  #endif
42235  {
42236  __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2249, __pyx_L1_error)
42237  __Pyx_GOTREF(__pyx_t_7);
42238  if (__pyx_t_12) {
42239  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL;
42240  }
42241  __Pyx_INCREF(__pyx_v_Nf);
42242  __Pyx_GIVEREF(__pyx_v_Nf);
42243  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_v_Nf);
42244  __Pyx_INCREF(__pyx_int_2);
42245  __Pyx_GIVEREF(__pyx_int_2);
42246  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_int_2);
42247  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2249, __pyx_L1_error)
42248  __Pyx_GOTREF(__pyx_t_5);
42249  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42250  }
42251  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42252  __pyx_t_14 = PyNumber_Subtract(__pyx_v_ipeak, __pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2249, __pyx_L1_error)
42253  __Pyx_GOTREF(__pyx_t_14);
42254  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42255  __pyx_t_15 = 0;
42256  __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_t_15); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2249, __pyx_L1_error)
42257  __Pyx_GOTREF(__pyx_t_7);
42258  __pyx_t_12 = PyObject_RichCompare(__pyx_t_14, __pyx_t_7, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2249, __pyx_L1_error)
42259  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42260  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2249, __pyx_L1_error)
42261  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42262  if (__pyx_t_9) {
42263  __Pyx_INCREF(__pyx_t_14);
42264  __pyx_t_5 = __pyx_t_14;
42265  } else {
42266  __pyx_t_12 = __Pyx_PyInt_From_long(__pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2249, __pyx_L1_error)
42267  __Pyx_GOTREF(__pyx_t_12);
42268  __pyx_t_5 = __pyx_t_12;
42269  __pyx_t_12 = 0;
42270  }
42271  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42272  __pyx_t_14 = __pyx_t_5;
42273  __Pyx_INCREF(__pyx_t_14);
42274  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42275  __pyx_v_imin = __pyx_t_14;
42276  __pyx_t_14 = 0;
42277 
42278  /* "WaveTools.py":2250
42279  * imax = min(ipeak + old_div(Nf,2),len(self.ai))
42280  * imin = max(0,ipeak - old_div(Nf,2))
42281  * self.ai = self.ai[imin:imax] # <<<<<<<<<<<<<<
42282  * self.omega = decomp[0][imin:imax]
42283  * self.phi = - decomp[2][imin:imax]
42284  */
42285  __pyx_t_14 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->ai), 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2250, __pyx_L1_error)
42286  __Pyx_GOTREF(__pyx_t_14);
42287  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2250, __pyx_L1_error)
42288  __Pyx_GIVEREF(__pyx_t_14);
42289  __Pyx_GOTREF(__pyx_v_self->ai);
42290  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
42291  __pyx_v_self->ai = ((PyArrayObject *)__pyx_t_14);
42292  __pyx_t_14 = 0;
42293 
42294  /* "WaveTools.py":2251
42295  * imin = max(0,ipeak - old_div(Nf,2))
42296  * self.ai = self.ai[imin:imax]
42297  * self.omega = decomp[0][imin:imax] # <<<<<<<<<<<<<<
42298  * self.phi = - decomp[2][imin:imax]
42299  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
42300  */
42301  __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2251, __pyx_L1_error)
42302  __Pyx_GOTREF(__pyx_t_14);
42303  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_14, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2251, __pyx_L1_error)
42304  __Pyx_GOTREF(__pyx_t_5);
42305  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42306  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2251, __pyx_L1_error)
42307  __Pyx_GIVEREF(__pyx_t_5);
42308  __Pyx_GOTREF(__pyx_v_self->omega);
42309  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
42310  __pyx_v_self->omega = ((PyArrayObject *)__pyx_t_5);
42311  __pyx_t_5 = 0;
42312 
42313  /* "WaveTools.py":2252
42314  * self.ai = self.ai[imin:imax]
42315  * self.omega = decomp[0][imin:imax]
42316  * self.phi = - decomp[2][imin:imax] # <<<<<<<<<<<<<<
42317  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
42318  * self.Nf = imax - imin
42319  */
42320  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_decomp, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2252, __pyx_L1_error)
42321  __Pyx_GOTREF(__pyx_t_5);
42322  __pyx_t_14 = __Pyx_PyObject_GetSlice(__pyx_t_5, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2252, __pyx_L1_error)
42323  __Pyx_GOTREF(__pyx_t_14);
42324  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42325  __pyx_t_5 = PyNumber_Negative(__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2252, __pyx_L1_error)
42326  __Pyx_GOTREF(__pyx_t_5);
42327  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42328  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2252, __pyx_L1_error)
42329  __Pyx_GIVEREF(__pyx_t_5);
42330  __Pyx_GOTREF(__pyx_v_self->phi);
42331  __Pyx_DECREF(((PyObject *)__pyx_v_self->phi));
42332  __pyx_v_self->phi = ((PyArrayObject *)__pyx_t_5);
42333  __pyx_t_5 = 0;
42334 
42335  /* "WaveTools.py":2253
42336  * self.omega = decomp[0][imin:imax]
42337  * self.phi = - decomp[2][imin:imax]
42338  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
42339  * self.Nf = imax - imin
42340  * self.setup = decomp[3]
42341  */
42342  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2253, __pyx_L1_error)
42343  __Pyx_GOTREF(__pyx_t_5);
42344  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2253, __pyx_L1_error)
42345  __Pyx_GOTREF(__pyx_t_14);
42346  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2253, __pyx_L1_error)
42347  __Pyx_GOTREF(__pyx_t_12);
42348  __Pyx_INCREF(((PyObject *)__pyx_v_self->omega));
42349  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->omega));
42350  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_v_self->omega));
42351  __Pyx_GIVEREF(__pyx_t_14);
42352  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_14);
42353  __pyx_t_14 = 0;
42354  __pyx_t_14 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2253, __pyx_L1_error)
42355  __Pyx_GOTREF(__pyx_t_14);
42356  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2253, __pyx_L1_error)
42357  __Pyx_GOTREF(__pyx_t_7);
42358  if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_g, __pyx_t_7) < 0) __PYX_ERR(0, 2253, __pyx_L1_error)
42359  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42360  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2253, __pyx_L1_error)
42361  __Pyx_GOTREF(__pyx_t_7);
42362  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42363  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42364  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42365  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2253, __pyx_L1_error)
42366  __Pyx_GIVEREF(__pyx_t_7);
42367  __Pyx_GOTREF(__pyx_v_self->ki);
42368  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
42369  __pyx_v_self->ki = ((PyArrayObject *)__pyx_t_7);
42370  __pyx_t_7 = 0;
42371 
42372  /* "WaveTools.py":2254
42373  * self.phi = - decomp[2][imin:imax]
42374  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
42375  * self.Nf = imax - imin # <<<<<<<<<<<<<<
42376  * self.setup = decomp[3]
42377  * self.kDir = np.zeros((len(self.ki),3),"d")
42378  */
42379  __pyx_t_7 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2254, __pyx_L1_error)
42380  __Pyx_GOTREF(__pyx_t_7);
42381  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2254, __pyx_L1_error)
42382  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42383  __pyx_v_self->Nf = __pyx_t_3;
42384 
42385  /* "WaveTools.py":2255
42386  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
42387  * self.Nf = imax - imin
42388  * self.setup = decomp[3] # <<<<<<<<<<<<<<
42389  * self.kDir = np.zeros((len(self.ki),3),"d")
42390  * for ii in range(len(self.ki)):
42391  */
42392  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_decomp, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2255, __pyx_L1_error)
42393  __Pyx_GOTREF(__pyx_t_7);
42394  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2255, __pyx_L1_error)
42395  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42396  __pyx_v_self->setup = __pyx_t_2;
42397 
42398  /* "WaveTools.py":2256
42399  * self.Nf = imax - imin
42400  * self.setup = decomp[3]
42401  * self.kDir = np.zeros((len(self.ki),3),"d") # <<<<<<<<<<<<<<
42402  * for ii in range(len(self.ki)):
42403  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
42404  */
42405  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2256, __pyx_L1_error)
42406  __Pyx_GOTREF(__pyx_t_14);
42407  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_zeros); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2256, __pyx_L1_error)
42408  __Pyx_GOTREF(__pyx_t_12);
42409  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42410  __pyx_t_14 = ((PyObject *)__pyx_v_self->ki);
42411  __Pyx_INCREF(__pyx_t_14);
42412  __pyx_t_8 = PyObject_Length(__pyx_t_14); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2256, __pyx_L1_error)
42413  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42414  __pyx_t_14 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2256, __pyx_L1_error)
42415  __Pyx_GOTREF(__pyx_t_14);
42416  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2256, __pyx_L1_error)
42417  __Pyx_GOTREF(__pyx_t_5);
42418  __Pyx_GIVEREF(__pyx_t_14);
42419  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_14);
42420  __Pyx_INCREF(__pyx_int_3);
42421  __Pyx_GIVEREF(__pyx_int_3);
42422  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
42423  __pyx_t_14 = 0;
42424  __pyx_t_14 = NULL;
42425  __pyx_t_3 = 0;
42426  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
42427  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_12);
42428  if (likely(__pyx_t_14)) {
42429  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
42430  __Pyx_INCREF(__pyx_t_14);
42431  __Pyx_INCREF(function);
42432  __Pyx_DECREF_SET(__pyx_t_12, function);
42433  __pyx_t_3 = 1;
42434  }
42435  }
42436  #if CYTHON_FAST_PYCALL
42437  if (PyFunction_Check(__pyx_t_12)) {
42438  PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_5, __pyx_n_s_d};
42439  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2256, __pyx_L1_error)
42440  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
42441  __Pyx_GOTREF(__pyx_t_7);
42442  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42443  } else
42444  #endif
42445  #if CYTHON_FAST_PYCCALL
42446  if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
42447  PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_5, __pyx_n_s_d};
42448  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2256, __pyx_L1_error)
42449  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
42450  __Pyx_GOTREF(__pyx_t_7);
42451  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42452  } else
42453  #endif
42454  {
42455  __pyx_t_6 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2256, __pyx_L1_error)
42456  __Pyx_GOTREF(__pyx_t_6);
42457  if (__pyx_t_14) {
42458  __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_14); __pyx_t_14 = NULL;
42459  }
42460  __Pyx_GIVEREF(__pyx_t_5);
42461  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_3, __pyx_t_5);
42462  __Pyx_INCREF(__pyx_n_s_d);
42463  __Pyx_GIVEREF(__pyx_n_s_d);
42464  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_3, __pyx_n_s_d);
42465  __pyx_t_5 = 0;
42466  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2256, __pyx_L1_error)
42467  __Pyx_GOTREF(__pyx_t_7);
42468  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42469  }
42470  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42471  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2256, __pyx_L1_error)
42472  __Pyx_GIVEREF(__pyx_t_7);
42473  __Pyx_GOTREF(__pyx_v_self->kDir);
42474  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
42475  __pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_7);
42476  __pyx_t_7 = 0;
42477 
42478  /* "WaveTools.py":2257
42479  * self.setup = decomp[3]
42480  * self.kDir = np.zeros((len(self.ki),3),"d")
42481  * for ii in range(len(self.ki)): # <<<<<<<<<<<<<<
42482  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
42483  *
42484  */
42485  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_range); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2257, __pyx_L1_error)
42486  __Pyx_GOTREF(__pyx_t_12);
42487  __pyx_t_6 = ((PyObject *)__pyx_v_self->ki);
42488  __Pyx_INCREF(__pyx_t_6);
42489  __pyx_t_8 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2257, __pyx_L1_error)
42490  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42491  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2257, __pyx_L1_error)
42492  __Pyx_GOTREF(__pyx_t_6);
42493  __pyx_t_5 = NULL;
42494  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
42495  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
42496  if (likely(__pyx_t_5)) {
42497  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
42498  __Pyx_INCREF(__pyx_t_5);
42499  __Pyx_INCREF(function);
42500  __Pyx_DECREF_SET(__pyx_t_12, function);
42501  }
42502  }
42503  __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_6);
42504  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
42505  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42506  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2257, __pyx_L1_error)
42507  __Pyx_GOTREF(__pyx_t_7);
42508  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42509  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
42510  __pyx_t_12 = __pyx_t_7; __Pyx_INCREF(__pyx_t_12); __pyx_t_8 = 0;
42511  __pyx_t_13 = NULL;
42512  } else {
42513  __pyx_t_8 = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2257, __pyx_L1_error)
42514  __Pyx_GOTREF(__pyx_t_12);
42515  __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2257, __pyx_L1_error)
42516  }
42517  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42518  for (;;) {
42519  if (likely(!__pyx_t_13)) {
42520  if (likely(PyList_CheckExact(__pyx_t_12))) {
42521  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_12)) break;
42522  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
42523  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_12, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2257, __pyx_L1_error)
42524  #else
42525  __pyx_t_7 = PySequence_ITEM(__pyx_t_12, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2257, __pyx_L1_error)
42526  __Pyx_GOTREF(__pyx_t_7);
42527  #endif
42528  } else {
42529  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_12)) break;
42530  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
42531  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_12, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2257, __pyx_L1_error)
42532  #else
42533  __pyx_t_7 = PySequence_ITEM(__pyx_t_12, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2257, __pyx_L1_error)
42534  __Pyx_GOTREF(__pyx_t_7);
42535  #endif
42536  }
42537  } else {
42538  __pyx_t_7 = __pyx_t_13(__pyx_t_12);
42539  if (unlikely(!__pyx_t_7)) {
42540  PyObject* exc_type = PyErr_Occurred();
42541  if (exc_type) {
42542  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
42543  else __PYX_ERR(0, 2257, __pyx_L1_error)
42544  }
42545  break;
42546  }
42547  __Pyx_GOTREF(__pyx_t_7);
42548  }
42549  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_7);
42550  __pyx_t_7 = 0;
42551 
42552  /* "WaveTools.py":2258
42553  * self.kDir = np.zeros((len(self.ki),3),"d")
42554  * for ii in range(len(self.ki)):
42555  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
42556  *
42557  * for ij in range(self.Nf):
42558  */
42559  __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ii); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2258, __pyx_L1_error)
42560  __Pyx_GOTREF(__pyx_t_7);
42561  __pyx_t_6 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2258, __pyx_L1_error)
42562  __Pyx_GOTREF(__pyx_t_6);
42563  __pyx_t_5 = PyNumber_Multiply(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2258, __pyx_L1_error)
42564  __Pyx_GOTREF(__pyx_t_5);
42565  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42566  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42567  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2258, __pyx_L1_error)
42568  __Pyx_GOTREF(__pyx_t_6);
42569  __Pyx_INCREF(__pyx_v_ii);
42570  __Pyx_GIVEREF(__pyx_v_ii);
42571  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ii);
42572  __Pyx_INCREF(__pyx_slice__4);
42573  __Pyx_GIVEREF(__pyx_slice__4);
42574  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__4);
42575  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_6, __pyx_t_5) < 0)) __PYX_ERR(0, 2258, __pyx_L1_error)
42576  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42577  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42578 
42579  /* "WaveTools.py":2257
42580  * self.setup = decomp[3]
42581  * self.kDir = np.zeros((len(self.ki),3),"d")
42582  * for ii in range(len(self.ki)): # <<<<<<<<<<<<<<
42583  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
42584  *
42585  */
42586  }
42587  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42588 
42589  /* "WaveTools.py":2260
42590  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
42591  *
42592  * for ij in range(self.Nf): # <<<<<<<<<<<<<<
42593  * self.omega_c[ij] = self.omega[ij]
42594  * self.ki_c[ij] =self.ki[ij]
42595  */
42596  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_range); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2260, __pyx_L1_error)
42597  __Pyx_GOTREF(__pyx_t_5);
42598  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->Nf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2260, __pyx_L1_error)
42599  __Pyx_GOTREF(__pyx_t_6);
42600  __pyx_t_7 = NULL;
42601  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
42602  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
42603  if (likely(__pyx_t_7)) {
42604  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
42605  __Pyx_INCREF(__pyx_t_7);
42606  __Pyx_INCREF(function);
42607  __Pyx_DECREF_SET(__pyx_t_5, function);
42608  }
42609  }
42610  __pyx_t_12 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
42611  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
42612  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42613  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2260, __pyx_L1_error)
42614  __Pyx_GOTREF(__pyx_t_12);
42615  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42616  if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) {
42617  __pyx_t_5 = __pyx_t_12; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
42618  __pyx_t_13 = NULL;
42619  } else {
42620  __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2260, __pyx_L1_error)
42621  __Pyx_GOTREF(__pyx_t_5);
42622  __pyx_t_13 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2260, __pyx_L1_error)
42623  }
42624  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42625  for (;;) {
42626  if (likely(!__pyx_t_13)) {
42627  if (likely(PyList_CheckExact(__pyx_t_5))) {
42628  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
42629  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
42630  __pyx_t_12 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2260, __pyx_L1_error)
42631  #else
42632  __pyx_t_12 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2260, __pyx_L1_error)
42633  __Pyx_GOTREF(__pyx_t_12);
42634  #endif
42635  } else {
42636  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
42637  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
42638  __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2260, __pyx_L1_error)
42639  #else
42640  __pyx_t_12 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2260, __pyx_L1_error)
42641  __Pyx_GOTREF(__pyx_t_12);
42642  #endif
42643  }
42644  } else {
42645  __pyx_t_12 = __pyx_t_13(__pyx_t_5);
42646  if (unlikely(!__pyx_t_12)) {
42647  PyObject* exc_type = PyErr_Occurred();
42648  if (exc_type) {
42649  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
42650  else __PYX_ERR(0, 2260, __pyx_L1_error)
42651  }
42652  break;
42653  }
42654  __Pyx_GOTREF(__pyx_t_12);
42655  }
42656  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_12);
42657  __pyx_t_12 = 0;
42658 
42659  /* "WaveTools.py":2261
42660  *
42661  * for ij in range(self.Nf):
42662  * self.omega_c[ij] = self.omega[ij] # <<<<<<<<<<<<<<
42663  * self.ki_c[ij] =self.ki[ij]
42664  * self.tanh_c[ij] = np.tanh(self.ki[ij]*self.depth)
42665  */
42666  __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omega), __pyx_v_ij); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2261, __pyx_L1_error)
42667  __Pyx_GOTREF(__pyx_t_12);
42668  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2261, __pyx_L1_error)
42669  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42670  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2261, __pyx_L1_error)
42671  (__pyx_v_self->omega_c[__pyx_t_16]) = __pyx_t_2;
42672 
42673  /* "WaveTools.py":2262
42674  * for ij in range(self.Nf):
42675  * self.omega_c[ij] = self.omega[ij]
42676  * self.ki_c[ij] =self.ki[ij] # <<<<<<<<<<<<<<
42677  * self.tanh_c[ij] = np.tanh(self.ki[ij]*self.depth)
42678  * self.ai_c[ij] = self.ai[ij]
42679  */
42680  __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ij); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2262, __pyx_L1_error)
42681  __Pyx_GOTREF(__pyx_t_12);
42682  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2262, __pyx_L1_error)
42683  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42684  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2262, __pyx_L1_error)
42685  (__pyx_v_self->ki_c[__pyx_t_16]) = __pyx_t_2;
42686 
42687  /* "WaveTools.py":2263
42688  * self.omega_c[ij] = self.omega[ij]
42689  * self.ki_c[ij] =self.ki[ij]
42690  * self.tanh_c[ij] = np.tanh(self.ki[ij]*self.depth) # <<<<<<<<<<<<<<
42691  * self.ai_c[ij] = self.ai[ij]
42692  * self.phi_c[ij] = self.phi[ij]
42693  */
42694  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2263, __pyx_L1_error)
42695  __Pyx_GOTREF(__pyx_t_6);
42696  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_tanh); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2263, __pyx_L1_error)
42697  __Pyx_GOTREF(__pyx_t_7);
42698  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42699  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ij); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2263, __pyx_L1_error)
42700  __Pyx_GOTREF(__pyx_t_6);
42701  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2263, __pyx_L1_error)
42702  __Pyx_GOTREF(__pyx_t_14);
42703  __pyx_t_11 = PyNumber_Multiply(__pyx_t_6, __pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2263, __pyx_L1_error)
42704  __Pyx_GOTREF(__pyx_t_11);
42705  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
42706  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
42707  __pyx_t_14 = NULL;
42708  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
42709  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
42710  if (likely(__pyx_t_14)) {
42711  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
42712  __Pyx_INCREF(__pyx_t_14);
42713  __Pyx_INCREF(function);
42714  __Pyx_DECREF_SET(__pyx_t_7, function);
42715  }
42716  }
42717  __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_14, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_11);
42718  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
42719  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
42720  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2263, __pyx_L1_error)
42721  __Pyx_GOTREF(__pyx_t_12);
42722  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42723  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2263, __pyx_L1_error)
42724  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42725  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2263, __pyx_L1_error)
42726  (__pyx_v_self->tanh_c[__pyx_t_16]) = __pyx_t_2;
42727 
42728  /* "WaveTools.py":2264
42729  * self.ki_c[ij] =self.ki[ij]
42730  * self.tanh_c[ij] = np.tanh(self.ki[ij]*self.depth)
42731  * self.ai_c[ij] = self.ai[ij] # <<<<<<<<<<<<<<
42732  * self.phi_c[ij] = self.phi[ij]
42733  * for kk in range(3):
42734  */
42735  __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ai), __pyx_v_ij); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2264, __pyx_L1_error)
42736  __Pyx_GOTREF(__pyx_t_12);
42737  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2264, __pyx_L1_error)
42738  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42739  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2264, __pyx_L1_error)
42740  (__pyx_v_self->ai_c[__pyx_t_16]) = __pyx_t_2;
42741 
42742  /* "WaveTools.py":2265
42743  * self.tanh_c[ij] = np.tanh(self.ki[ij]*self.depth)
42744  * self.ai_c[ij] = self.ai[ij]
42745  * self.phi_c[ij] = self.phi[ij] # <<<<<<<<<<<<<<
42746  * for kk in range(3):
42747  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
42748  */
42749  __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->phi), __pyx_v_ij); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2265, __pyx_L1_error)
42750  __Pyx_GOTREF(__pyx_t_12);
42751  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2265, __pyx_L1_error)
42752  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42753  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2265, __pyx_L1_error)
42754  (__pyx_v_self->phi_c[__pyx_t_16]) = __pyx_t_2;
42755 
42756  /* "WaveTools.py":2266
42757  * self.ai_c[ij] = self.ai[ij]
42758  * self.phi_c[ij] = self.phi[ij]
42759  * for kk in range(3): # <<<<<<<<<<<<<<
42760  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
42761  * self.kDir_ = self.kDir_c
42762  */
42763  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_range); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2266, __pyx_L1_error)
42764  __Pyx_GOTREF(__pyx_t_7);
42765  __pyx_t_11 = NULL;
42766  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
42767  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
42768  if (likely(__pyx_t_11)) {
42769  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
42770  __Pyx_INCREF(__pyx_t_11);
42771  __Pyx_INCREF(function);
42772  __Pyx_DECREF_SET(__pyx_t_7, function);
42773  }
42774  }
42775  __pyx_t_12 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_11, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_int_3);
42776  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
42777  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L1_error)
42778  __Pyx_GOTREF(__pyx_t_12);
42779  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42780  if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) {
42781  __pyx_t_7 = __pyx_t_12; __Pyx_INCREF(__pyx_t_7); __pyx_t_16 = 0;
42782  __pyx_t_17 = NULL;
42783  } else {
42784  __pyx_t_16 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2266, __pyx_L1_error)
42785  __Pyx_GOTREF(__pyx_t_7);
42786  __pyx_t_17 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2266, __pyx_L1_error)
42787  }
42788  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42789  for (;;) {
42790  if (likely(!__pyx_t_17)) {
42791  if (likely(PyList_CheckExact(__pyx_t_7))) {
42792  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_7)) break;
42793  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
42794  __pyx_t_12 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_16); __Pyx_INCREF(__pyx_t_12); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 2266, __pyx_L1_error)
42795  #else
42796  __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L1_error)
42797  __Pyx_GOTREF(__pyx_t_12);
42798  #endif
42799  } else {
42800  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
42801  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
42802  __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_16); __Pyx_INCREF(__pyx_t_12); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 2266, __pyx_L1_error)
42803  #else
42804  __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L1_error)
42805  __Pyx_GOTREF(__pyx_t_12);
42806  #endif
42807  }
42808  } else {
42809  __pyx_t_12 = __pyx_t_17(__pyx_t_7);
42810  if (unlikely(!__pyx_t_12)) {
42811  PyObject* exc_type = PyErr_Occurred();
42812  if (exc_type) {
42813  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
42814  else __PYX_ERR(0, 2266, __pyx_L1_error)
42815  }
42816  break;
42817  }
42818  __Pyx_GOTREF(__pyx_t_12);
42819  }
42820  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_12);
42821  __pyx_t_12 = 0;
42822 
42823  /* "WaveTools.py":2267
42824  * self.phi_c[ij] = self.phi[ij]
42825  * for kk in range(3):
42826  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk] # <<<<<<<<<<<<<<
42827  * self.kDir_ = self.kDir_c
42828  * self.omega_ = self.omega_c
42829  */
42830  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2267, __pyx_L1_error)
42831  __Pyx_GOTREF(__pyx_t_12);
42832  __Pyx_INCREF(__pyx_v_ij);
42833  __Pyx_GIVEREF(__pyx_v_ij);
42834  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_ij);
42835  __Pyx_INCREF(__pyx_v_kk);
42836  __Pyx_GIVEREF(__pyx_v_kk);
42837  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_kk);
42838  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2267, __pyx_L1_error)
42839  __Pyx_GOTREF(__pyx_t_11);
42840  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42841  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2267, __pyx_L1_error)
42842  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
42843  __pyx_t_11 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2267, __pyx_L1_error)
42844  __Pyx_GOTREF(__pyx_t_11);
42845  __pyx_t_12 = PyNumber_Add(__pyx_t_11, __pyx_v_kk); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2267, __pyx_L1_error)
42846  __Pyx_GOTREF(__pyx_t_12);
42847  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
42848  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_t_12); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2267, __pyx_L1_error)
42849  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
42850  (__pyx_v_self->kDir_c[__pyx_t_18]) = __pyx_t_2;
42851 
42852  /* "WaveTools.py":2266
42853  * self.ai_c[ij] = self.ai[ij]
42854  * self.phi_c[ij] = self.phi[ij]
42855  * for kk in range(3): # <<<<<<<<<<<<<<
42856  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
42857  * self.kDir_ = self.kDir_c
42858  */
42859  }
42860  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42861 
42862  /* "WaveTools.py":2260
42863  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
42864  *
42865  * for ij in range(self.Nf): # <<<<<<<<<<<<<<
42866  * self.omega_c[ij] = self.omega[ij]
42867  * self.ki_c[ij] =self.ki[ij]
42868  */
42869  }
42870  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42871 
42872  /* "WaveTools.py":2268
42873  * for kk in range(3):
42874  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
42875  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
42876  * self.omega_ = self.omega_c
42877  * self.ki_ =self.ki_c
42878  */
42879  __pyx_t_19 = __pyx_v_self->kDir_c;
42880  __pyx_v_self->kDir_ = __pyx_t_19;
42881 
42882  /* "WaveTools.py":2269
42883  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
42884  * self.kDir_ = self.kDir_c
42885  * self.omega_ = self.omega_c # <<<<<<<<<<<<<<
42886  * self.ki_ =self.ki_c
42887  * self.ai_ = self.ai_c
42888  */
42889  __pyx_t_19 = __pyx_v_self->omega_c;
42890  __pyx_v_self->omega_ = __pyx_t_19;
42891 
42892  /* "WaveTools.py":2270
42893  * self.kDir_ = self.kDir_c
42894  * self.omega_ = self.omega_c
42895  * self.ki_ =self.ki_c # <<<<<<<<<<<<<<
42896  * self.ai_ = self.ai_c
42897  * self.tanh_ = self.tanh_c
42898  */
42899  __pyx_t_19 = __pyx_v_self->ki_c;
42900  __pyx_v_self->ki_ = __pyx_t_19;
42901 
42902  /* "WaveTools.py":2271
42903  * self.omega_ = self.omega_c
42904  * self.ki_ =self.ki_c
42905  * self.ai_ = self.ai_c # <<<<<<<<<<<<<<
42906  * self.tanh_ = self.tanh_c
42907  * self.phi_ = self.phi_c
42908  */
42909  __pyx_t_19 = __pyx_v_self->ai_c;
42910  __pyx_v_self->ai_ = __pyx_t_19;
42911 
42912  /* "WaveTools.py":2272
42913  * self.ki_ =self.ki_c
42914  * self.ai_ = self.ai_c
42915  * self.tanh_ = self.tanh_c # <<<<<<<<<<<<<<
42916  * self.phi_ = self.phi_c
42917  *
42918  */
42919  __pyx_t_19 = __pyx_v_self->tanh_c;
42920  __pyx_v_self->tanh_ = __pyx_t_19;
42921 
42922  /* "WaveTools.py":2273
42923  * self.ai_ = self.ai_c
42924  * self.tanh_ = self.tanh_c
42925  * self.phi_ = self.phi_c # <<<<<<<<<<<<<<
42926  *
42927  *
42928  */
42929  __pyx_t_19 = __pyx_v_self->phi_c;
42930  __pyx_v_self->phi_ = __pyx_t_19;
42931 
42932  /* "WaveTools.py":2241
42933  *
42934  * # Direct decomposition of the time series for using at reconstruct_direct
42935  * if (self.rec_direct): # <<<<<<<<<<<<<<
42936  * Nf = self.N
42937  * nfft=len(self.time)
42938  */
42939  goto __pyx_L14;
42940  }
42941 
42942  /* "WaveTools.py":2281
42943  * # Spectral windowing
42944  * else:
42945  * if (window_params is None): # <<<<<<<<<<<<<<
42946  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
42947  * sys.exit(1)
42948  */
42949  /*else*/ {
42950  __pyx_t_9 = (__pyx_v_window_params == Py_None);
42951  __pyx_t_10 = (__pyx_t_9 != 0);
42952  if (__pyx_t_10) {
42953 
42954  /* "WaveTools.py":2282
42955  * else:
42956  * if (window_params is None):
42957  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary") # <<<<<<<<<<<<<<
42958  * sys.exit(1)
42959  * try:
42960  */
42961  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2282, __pyx_L1_error)
42962  __Pyx_GOTREF(__pyx_t_7);
42963  __pyx_t_12 = NULL;
42964  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
42965  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7);
42966  if (likely(__pyx_t_12)) {
42967  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
42968  __Pyx_INCREF(__pyx_t_12);
42969  __Pyx_INCREF(function);
42970  __Pyx_DECREF_SET(__pyx_t_7, function);
42971  }
42972  }
42973  __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_12, __pyx_kp_s_ERROR_WaveTools_py_Set_parameter) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_s_ERROR_WaveTools_py_Set_parameter);
42974  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
42975  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2282, __pyx_L1_error)
42976  __Pyx_GOTREF(__pyx_t_5);
42977  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42978  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
42979 
42980  /* "WaveTools.py":2283
42981  * if (window_params is None):
42982  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
42983  * sys.exit(1) # <<<<<<<<<<<<<<
42984  * try:
42985  * self.Nwaves = window_params["Nwaves"]
42986  */
42987  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2283, __pyx_L1_error)
42988  __Pyx_GOTREF(__pyx_t_7);
42989  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2283, __pyx_L1_error)
42990  __Pyx_GOTREF(__pyx_t_12);
42991  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
42992  __pyx_t_7 = NULL;
42993  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
42994  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12);
42995  if (likely(__pyx_t_7)) {
42996  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
42997  __Pyx_INCREF(__pyx_t_7);
42998  __Pyx_INCREF(function);
42999  __Pyx_DECREF_SET(__pyx_t_12, function);
43000  }
43001  }
43002  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_7, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_int_1);
43003  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43004  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2283, __pyx_L1_error)
43005  __Pyx_GOTREF(__pyx_t_5);
43006  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
43007  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43008 
43009  /* "WaveTools.py":2281
43010  * # Spectral windowing
43011  * else:
43012  * if (window_params is None): # <<<<<<<<<<<<<<
43013  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
43014  * sys.exit(1)
43015  */
43016  }
43017 
43018  /* "WaveTools.py":2284
43019  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
43020  * sys.exit(1)
43021  * try: # <<<<<<<<<<<<<<
43022  * self.Nwaves = window_params["Nwaves"]
43023  * except:
43024  */
43025  {
43026  __Pyx_PyThreadState_declare
43027  __Pyx_PyThreadState_assign
43028  __Pyx_ExceptionSave(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
43029  __Pyx_XGOTREF(__pyx_t_20);
43030  __Pyx_XGOTREF(__pyx_t_21);
43031  __Pyx_XGOTREF(__pyx_t_22);
43032  /*try:*/ {
43033 
43034  /* "WaveTools.py":2285
43035  * sys.exit(1)
43036  * try:
43037  * self.Nwaves = window_params["Nwaves"] # <<<<<<<<<<<<<<
43038  * except:
43039  * logEvent("ERROR! WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
43040  */
43041  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_window_params, __pyx_n_s_Nwaves); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2285, __pyx_L22_error)
43042  __Pyx_GOTREF(__pyx_t_5);
43043  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2285, __pyx_L22_error)
43044  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43045  __pyx_v_self->Nwaves = __pyx_t_3;
43046 
43047  /* "WaveTools.py":2284
43048  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
43049  * sys.exit(1)
43050  * try: # <<<<<<<<<<<<<<
43051  * self.Nwaves = window_params["Nwaves"]
43052  * except:
43053  */
43054  }
43055  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
43056  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
43057  __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
43058  goto __pyx_L27_try_end;
43059  __pyx_L22_error:;
43060  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43061  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43062  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43063  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
43064  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43065  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43066  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43067 
43068  /* "WaveTools.py":2286
43069  * try:
43070  * self.Nwaves = window_params["Nwaves"]
43071  * except: # <<<<<<<<<<<<<<
43072  * logEvent("ERROR! WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
43073  * sys.exit(1)
43074  */
43075  /*except:*/ {
43076  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
43077  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_12, &__pyx_t_7) < 0) __PYX_ERR(0, 2286, __pyx_L24_except_error)
43078  __Pyx_GOTREF(__pyx_t_5);
43079  __Pyx_GOTREF(__pyx_t_12);
43080  __Pyx_GOTREF(__pyx_t_7);
43081 
43082  /* "WaveTools.py":2287
43083  * self.Nwaves = window_params["Nwaves"]
43084  * except:
43085  * logEvent("ERROR! WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary") # <<<<<<<<<<<<<<
43086  * sys.exit(1)
43087  *
43088  */
43089  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2287, __pyx_L24_except_error)
43090  __Pyx_GOTREF(__pyx_t_14);
43091  __pyx_t_6 = NULL;
43092  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
43093  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_14);
43094  if (likely(__pyx_t_6)) {
43095  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
43096  __Pyx_INCREF(__pyx_t_6);
43097  __Pyx_INCREF(function);
43098  __Pyx_DECREF_SET(__pyx_t_14, function);
43099  }
43100  }
43101  __pyx_t_11 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_6, __pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke);
43102  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43103  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2287, __pyx_L24_except_error)
43104  __Pyx_GOTREF(__pyx_t_11);
43105  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
43106  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43107 
43108  /* "WaveTools.py":2288
43109  * except:
43110  * logEvent("ERROR! WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
43111  * sys.exit(1) # <<<<<<<<<<<<<<
43112  *
43113  * try:
43114  */
43115  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_sys); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2288, __pyx_L24_except_error)
43116  __Pyx_GOTREF(__pyx_t_14);
43117  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2288, __pyx_L24_except_error)
43118  __Pyx_GOTREF(__pyx_t_6);
43119  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
43120  __pyx_t_14 = NULL;
43121  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
43122  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
43123  if (likely(__pyx_t_14)) {
43124  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
43125  __Pyx_INCREF(__pyx_t_14);
43126  __Pyx_INCREF(function);
43127  __Pyx_DECREF_SET(__pyx_t_6, function);
43128  }
43129  }
43130  __pyx_t_11 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_1);
43131  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43132  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2288, __pyx_L24_except_error)
43133  __Pyx_GOTREF(__pyx_t_11);
43134  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43135  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43136  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43137  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43138  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43139  goto __pyx_L23_exception_handled;
43140  }
43141  __pyx_L24_except_error:;
43142 
43143  /* "WaveTools.py":2284
43144  * logEvent("ERROR! WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
43145  * sys.exit(1)
43146  * try: # <<<<<<<<<<<<<<
43147  * self.Nwaves = window_params["Nwaves"]
43148  * except:
43149  */
43150  __Pyx_XGIVEREF(__pyx_t_20);
43151  __Pyx_XGIVEREF(__pyx_t_21);
43152  __Pyx_XGIVEREF(__pyx_t_22);
43153  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
43154  goto __pyx_L1_error;
43155  __pyx_L23_exception_handled:;
43156  __Pyx_XGIVEREF(__pyx_t_20);
43157  __Pyx_XGIVEREF(__pyx_t_21);
43158  __Pyx_XGIVEREF(__pyx_t_22);
43159  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
43160  __pyx_L27_try_end:;
43161  }
43162 
43163  /* "WaveTools.py":2290
43164  * sys.exit(1)
43165  *
43166  * try: # <<<<<<<<<<<<<<
43167  * self.Tm = window_params["Tm"]
43168  * except:
43169  */
43170  {
43171  __Pyx_PyThreadState_declare
43172  __Pyx_PyThreadState_assign
43173  __Pyx_ExceptionSave(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
43174  __Pyx_XGOTREF(__pyx_t_22);
43175  __Pyx_XGOTREF(__pyx_t_21);
43176  __Pyx_XGOTREF(__pyx_t_20);
43177  /*try:*/ {
43178 
43179  /* "WaveTools.py":2291
43180  *
43181  * try:
43182  * self.Tm = window_params["Tm"] # <<<<<<<<<<<<<<
43183  * except:
43184  * logEvent("ERROR! WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
43185  */
43186  __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_window_params, __pyx_n_s_Tm); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2291, __pyx_L30_error)
43187  __Pyx_GOTREF(__pyx_t_7);
43188  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2291, __pyx_L30_error)
43189  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
43190  __pyx_v_self->Tm = __pyx_t_2;
43191 
43192  /* "WaveTools.py":2290
43193  * sys.exit(1)
43194  *
43195  * try: # <<<<<<<<<<<<<<
43196  * self.Tm = window_params["Tm"]
43197  * except:
43198  */
43199  }
43200  __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
43201  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
43202  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
43203  goto __pyx_L35_try_end;
43204  __pyx_L30_error:;
43205  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43206  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43207  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43208  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
43209  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43210  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43211  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43212 
43213  /* "WaveTools.py":2292
43214  * try:
43215  * self.Tm = window_params["Tm"]
43216  * except: # <<<<<<<<<<<<<<
43217  * logEvent("ERROR! WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
43218  * sys.exit(1)
43219  */
43220  /*except:*/ {
43221  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
43222  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_12, &__pyx_t_5) < 0) __PYX_ERR(0, 2292, __pyx_L32_except_error)
43223  __Pyx_GOTREF(__pyx_t_7);
43224  __Pyx_GOTREF(__pyx_t_12);
43225  __Pyx_GOTREF(__pyx_t_5);
43226 
43227  /* "WaveTools.py":2293
43228  * self.Tm = window_params["Tm"]
43229  * except:
43230  * logEvent("ERROR! WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary") # <<<<<<<<<<<<<<
43231  * sys.exit(1)
43232  *
43233  */
43234  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2293, __pyx_L32_except_error)
43235  __Pyx_GOTREF(__pyx_t_6);
43236  __pyx_t_14 = NULL;
43237  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
43238  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
43239  if (likely(__pyx_t_14)) {
43240  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
43241  __Pyx_INCREF(__pyx_t_14);
43242  __Pyx_INCREF(function);
43243  __Pyx_DECREF_SET(__pyx_t_6, function);
43244  }
43245  }
43246  __pyx_t_11 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, __pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_2);
43247  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43248  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2293, __pyx_L32_except_error)
43249  __Pyx_GOTREF(__pyx_t_11);
43250  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43251  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43252 
43253  /* "WaveTools.py":2294
43254  * except:
43255  * logEvent("ERROR! WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
43256  * sys.exit(1) # <<<<<<<<<<<<<<
43257  *
43258  * try:
43259  */
43260  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2294, __pyx_L32_except_error)
43261  __Pyx_GOTREF(__pyx_t_6);
43262  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2294, __pyx_L32_except_error)
43263  __Pyx_GOTREF(__pyx_t_14);
43264  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43265  __pyx_t_6 = NULL;
43266  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
43267  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_14);
43268  if (likely(__pyx_t_6)) {
43269  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
43270  __Pyx_INCREF(__pyx_t_6);
43271  __Pyx_INCREF(function);
43272  __Pyx_DECREF_SET(__pyx_t_14, function);
43273  }
43274  }
43275  __pyx_t_11 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_6, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_int_1);
43276  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43277  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2294, __pyx_L32_except_error)
43278  __Pyx_GOTREF(__pyx_t_11);
43279  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
43280  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43281  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43282  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43283  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43284  goto __pyx_L31_exception_handled;
43285  }
43286  __pyx_L32_except_error:;
43287 
43288  /* "WaveTools.py":2290
43289  * sys.exit(1)
43290  *
43291  * try: # <<<<<<<<<<<<<<
43292  * self.Tm = window_params["Tm"]
43293  * except:
43294  */
43295  __Pyx_XGIVEREF(__pyx_t_22);
43296  __Pyx_XGIVEREF(__pyx_t_21);
43297  __Pyx_XGIVEREF(__pyx_t_20);
43298  __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
43299  goto __pyx_L1_error;
43300  __pyx_L31_exception_handled:;
43301  __Pyx_XGIVEREF(__pyx_t_22);
43302  __Pyx_XGIVEREF(__pyx_t_21);
43303  __Pyx_XGIVEREF(__pyx_t_20);
43304  __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
43305  __pyx_L35_try_end:;
43306  }
43307 
43308  /* "WaveTools.py":2296
43309  * sys.exit(1)
43310  *
43311  * try: # <<<<<<<<<<<<<<
43312  * windowName = window_params["Window"]
43313  * except:
43314  */
43315  {
43316  __Pyx_PyThreadState_declare
43317  __Pyx_PyThreadState_assign
43318  __Pyx_ExceptionSave(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
43319  __Pyx_XGOTREF(__pyx_t_20);
43320  __Pyx_XGOTREF(__pyx_t_21);
43321  __Pyx_XGOTREF(__pyx_t_22);
43322  /*try:*/ {
43323 
43324  /* "WaveTools.py":2297
43325  *
43326  * try:
43327  * windowName = window_params["Window"] # <<<<<<<<<<<<<<
43328  * except:
43329  * logEvent("ERROR! WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
43330  */
43331  __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_window_params, __pyx_n_s_Window); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2297, __pyx_L38_error)
43332  __Pyx_GOTREF(__pyx_t_5);
43333  __pyx_v_windowName = __pyx_t_5;
43334  __pyx_t_5 = 0;
43335 
43336  /* "WaveTools.py":2296
43337  * sys.exit(1)
43338  *
43339  * try: # <<<<<<<<<<<<<<
43340  * windowName = window_params["Window"]
43341  * except:
43342  */
43343  }
43344  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
43345  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
43346  __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
43347  goto __pyx_L43_try_end;
43348  __pyx_L38_error:;
43349  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43350  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43351  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43352  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
43353  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43354  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43355  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43356 
43357  /* "WaveTools.py":2298
43358  * try:
43359  * windowName = window_params["Window"]
43360  * except: # <<<<<<<<<<<<<<
43361  * logEvent("ERROR! WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
43362  * sys.exit(1)
43363  */
43364  /*except:*/ {
43365  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
43366  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_12, &__pyx_t_7) < 0) __PYX_ERR(0, 2298, __pyx_L40_except_error)
43367  __Pyx_GOTREF(__pyx_t_5);
43368  __Pyx_GOTREF(__pyx_t_12);
43369  __Pyx_GOTREF(__pyx_t_7);
43370 
43371  /* "WaveTools.py":2299
43372  * windowName = window_params["Window"]
43373  * except:
43374  * logEvent("ERROR! WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary") # <<<<<<<<<<<<<<
43375  * sys.exit(1)
43376  *
43377  */
43378  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2299, __pyx_L40_except_error)
43379  __Pyx_GOTREF(__pyx_t_14);
43380  __pyx_t_6 = NULL;
43381  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) {
43382  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_14);
43383  if (likely(__pyx_t_6)) {
43384  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
43385  __Pyx_INCREF(__pyx_t_6);
43386  __Pyx_INCREF(function);
43387  __Pyx_DECREF_SET(__pyx_t_14, function);
43388  }
43389  }
43390  __pyx_t_11 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_6, __pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_3) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_3);
43391  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43392  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2299, __pyx_L40_except_error)
43393  __Pyx_GOTREF(__pyx_t_11);
43394  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
43395  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43396 
43397  /* "WaveTools.py":2300
43398  * except:
43399  * logEvent("ERROR! WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
43400  * sys.exit(1) # <<<<<<<<<<<<<<
43401  *
43402  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
43403  */
43404  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_sys); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2300, __pyx_L40_except_error)
43405  __Pyx_GOTREF(__pyx_t_14);
43406  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2300, __pyx_L40_except_error)
43407  __Pyx_GOTREF(__pyx_t_6);
43408  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
43409  __pyx_t_14 = NULL;
43410  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
43411  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
43412  if (likely(__pyx_t_14)) {
43413  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
43414  __Pyx_INCREF(__pyx_t_14);
43415  __Pyx_INCREF(function);
43416  __Pyx_DECREF_SET(__pyx_t_6, function);
43417  }
43418  }
43419  __pyx_t_11 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_1);
43420  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43421  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2300, __pyx_L40_except_error)
43422  __Pyx_GOTREF(__pyx_t_11);
43423  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43424  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43425  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43426  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43427  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43428  goto __pyx_L39_exception_handled;
43429  }
43430  __pyx_L40_except_error:;
43431 
43432  /* "WaveTools.py":2296
43433  * sys.exit(1)
43434  *
43435  * try: # <<<<<<<<<<<<<<
43436  * windowName = window_params["Window"]
43437  * except:
43438  */
43439  __Pyx_XGIVEREF(__pyx_t_20);
43440  __Pyx_XGIVEREF(__pyx_t_21);
43441  __Pyx_XGIVEREF(__pyx_t_22);
43442  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
43443  goto __pyx_L1_error;
43444  __pyx_L39_exception_handled:;
43445  __Pyx_XGIVEREF(__pyx_t_20);
43446  __Pyx_XGIVEREF(__pyx_t_21);
43447  __Pyx_XGIVEREF(__pyx_t_22);
43448  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
43449  __pyx_L43_try_end:;
43450  }
43451 
43452  /* "WaveTools.py":2302
43453  * sys.exit(1)
43454  *
43455  * if(self.Nwaves > 0.5*self.tlength / self.Tm): # <<<<<<<<<<<<<<
43456  * logEvent("ERROR! WaveTools.py: Reconstruction is expected to have two windows or more. Plese reduce the number of waves per window or switch to direct decomposition )")
43457  * sys.exit(1)
43458  */
43459  __pyx_t_2 = (0.5 * __pyx_v_self->tlength);
43460  if (unlikely(__pyx_v_self->Tm == 0)) {
43461  PyErr_SetString(PyExc_ZeroDivisionError, "float division");
43462  __PYX_ERR(0, 2302, __pyx_L1_error)
43463  }
43464  __pyx_t_10 = ((__pyx_v_self->Nwaves > (__pyx_t_2 / __pyx_v_self->Tm)) != 0);
43465  if (__pyx_t_10) {
43466 
43467  /* "WaveTools.py":2303
43468  *
43469  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
43470  * logEvent("ERROR! WaveTools.py: Reconstruction is expected to have two windows or more. Plese reduce the number of waves per window or switch to direct decomposition )") # <<<<<<<<<<<<<<
43471  * sys.exit(1)
43472  *
43473  */
43474  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2303, __pyx_L1_error)
43475  __Pyx_GOTREF(__pyx_t_12);
43476  __pyx_t_5 = NULL;
43477  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
43478  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
43479  if (likely(__pyx_t_5)) {
43480  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
43481  __Pyx_INCREF(__pyx_t_5);
43482  __Pyx_INCREF(function);
43483  __Pyx_DECREF_SET(__pyx_t_12, function);
43484  }
43485  }
43486  __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_5, __pyx_kp_s_ERROR_WaveTools_py_Reconstructio) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_kp_s_ERROR_WaveTools_py_Reconstructio);
43487  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43488  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2303, __pyx_L1_error)
43489  __Pyx_GOTREF(__pyx_t_7);
43490  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
43491  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
43492 
43493  /* "WaveTools.py":2304
43494  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
43495  * logEvent("ERROR! WaveTools.py: Reconstruction is expected to have two windows or more. Plese reduce the number of waves per window or switch to direct decomposition )")
43496  * sys.exit(1) # <<<<<<<<<<<<<<
43497  *
43498  *
43499  */
43500  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_sys); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2304, __pyx_L1_error)
43501  __Pyx_GOTREF(__pyx_t_12);
43502  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2304, __pyx_L1_error)
43503  __Pyx_GOTREF(__pyx_t_5);
43504  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
43505  __pyx_t_12 = NULL;
43506  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
43507  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
43508  if (likely(__pyx_t_12)) {
43509  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
43510  __Pyx_INCREF(__pyx_t_12);
43511  __Pyx_INCREF(function);
43512  __Pyx_DECREF_SET(__pyx_t_5, function);
43513  }
43514  }
43515  __pyx_t_7 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_12, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_1);
43516  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43517  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2304, __pyx_L1_error)
43518  __Pyx_GOTREF(__pyx_t_7);
43519  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43520  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
43521 
43522  /* "WaveTools.py":2302
43523  * sys.exit(1)
43524  *
43525  * if(self.Nwaves > 0.5*self.tlength / self.Tm): # <<<<<<<<<<<<<<
43526  * logEvent("ERROR! WaveTools.py: Reconstruction is expected to have two windows or more. Plese reduce the number of waves per window or switch to direct decomposition )")
43527  * sys.exit(1)
43528  */
43529  }
43530 
43531  /* "WaveTools.py":2308
43532  *
43533  *
43534  * validWindows = [costap, tophat] # <<<<<<<<<<<<<<
43535  * wind_filt = loadExistingFunction(windowName, validWindows)
43536  * logEvent("INFO WaveTools.py: performing series decomposition with spectral windows")
43537  */
43538  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_costap); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2308, __pyx_L1_error)
43539  __Pyx_GOTREF(__pyx_t_7);
43540  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_tophat); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2308, __pyx_L1_error)
43541  __Pyx_GOTREF(__pyx_t_5);
43542  __pyx_t_12 = PyList_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2308, __pyx_L1_error)
43543  __Pyx_GOTREF(__pyx_t_12);
43544  __Pyx_GIVEREF(__pyx_t_7);
43545  PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_7);
43546  __Pyx_GIVEREF(__pyx_t_5);
43547  PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_5);
43548  __pyx_t_7 = 0;
43549  __pyx_t_5 = 0;
43550  __pyx_v_validWindows = ((PyObject*)__pyx_t_12);
43551  __pyx_t_12 = 0;
43552 
43553  /* "WaveTools.py":2309
43554  *
43555  * validWindows = [costap, tophat]
43556  * wind_filt = loadExistingFunction(windowName, validWindows) # <<<<<<<<<<<<<<
43557  * logEvent("INFO WaveTools.py: performing series decomposition with spectral windows")
43558  * # Portion of overlap, compared to window time
43559  */
43560  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2309, __pyx_L1_error)
43561  __Pyx_GOTREF(__pyx_t_5);
43562  if (unlikely(!__pyx_v_windowName)) { __Pyx_RaiseUnboundLocalError("windowName"); __PYX_ERR(0, 2309, __pyx_L1_error) }
43563  __pyx_t_7 = NULL;
43564  __pyx_t_3 = 0;
43565  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
43566  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
43567  if (likely(__pyx_t_7)) {
43568  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
43569  __Pyx_INCREF(__pyx_t_7);
43570  __Pyx_INCREF(function);
43571  __Pyx_DECREF_SET(__pyx_t_5, function);
43572  __pyx_t_3 = 1;
43573  }
43574  }
43575  #if CYTHON_FAST_PYCALL
43576  if (PyFunction_Check(__pyx_t_5)) {
43577  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_windowName, __pyx_v_validWindows};
43578  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2309, __pyx_L1_error)
43579  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43580  __Pyx_GOTREF(__pyx_t_12);
43581  } else
43582  #endif
43583  #if CYTHON_FAST_PYCCALL
43584  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
43585  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_windowName, __pyx_v_validWindows};
43586  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2309, __pyx_L1_error)
43587  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43588  __Pyx_GOTREF(__pyx_t_12);
43589  } else
43590  #endif
43591  {
43592  __pyx_t_11 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2309, __pyx_L1_error)
43593  __Pyx_GOTREF(__pyx_t_11);
43594  if (__pyx_t_7) {
43595  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL;
43596  }
43597  __Pyx_INCREF(__pyx_v_windowName);
43598  __Pyx_GIVEREF(__pyx_v_windowName);
43599  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_3, __pyx_v_windowName);
43600  __Pyx_INCREF(__pyx_v_validWindows);
43601  __Pyx_GIVEREF(__pyx_v_validWindows);
43602  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_3, __pyx_v_validWindows);
43603  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2309, __pyx_L1_error)
43604  __Pyx_GOTREF(__pyx_t_12);
43605  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43606  }
43607  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43608  __pyx_v_wind_filt = __pyx_t_12;
43609  __pyx_t_12 = 0;
43610 
43611  /* "WaveTools.py":2310
43612  * validWindows = [costap, tophat]
43613  * wind_filt = loadExistingFunction(windowName, validWindows)
43614  * logEvent("INFO WaveTools.py: performing series decomposition with spectral windows") # <<<<<<<<<<<<<<
43615  * # Portion of overlap, compared to window time
43616  * try:
43617  */
43618  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2310, __pyx_L1_error)
43619  __Pyx_GOTREF(__pyx_t_5);
43620  __pyx_t_11 = NULL;
43621  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
43622  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
43623  if (likely(__pyx_t_11)) {
43624  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
43625  __Pyx_INCREF(__pyx_t_11);
43626  __Pyx_INCREF(function);
43627  __Pyx_DECREF_SET(__pyx_t_5, function);
43628  }
43629  }
43630  __pyx_t_12 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_11, __pyx_kp_s_INFO_WaveTools_py_performing_ser) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_s_INFO_WaveTools_py_performing_ser);
43631  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43632  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2310, __pyx_L1_error)
43633  __Pyx_GOTREF(__pyx_t_12);
43634  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43635  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
43636 
43637  /* "WaveTools.py":2312
43638  * logEvent("INFO WaveTools.py: performing series decomposition with spectral windows")
43639  * # Portion of overlap, compared to window time
43640  * try: # <<<<<<<<<<<<<<
43641  * self.overlap = window_params["Overlap"]
43642  * except:
43643  */
43644  {
43645  __Pyx_PyThreadState_declare
43646  __Pyx_PyThreadState_assign
43647  __Pyx_ExceptionSave(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
43648  __Pyx_XGOTREF(__pyx_t_22);
43649  __Pyx_XGOTREF(__pyx_t_21);
43650  __Pyx_XGOTREF(__pyx_t_20);
43651  /*try:*/ {
43652 
43653  /* "WaveTools.py":2313
43654  * # Portion of overlap, compared to window time
43655  * try:
43656  * self.overlap = window_params["Overlap"] # <<<<<<<<<<<<<<
43657  * except:
43658  * self.overlap = 0.7
43659  */
43660  __pyx_t_12 = __Pyx_PyObject_Dict_GetItem(__pyx_v_window_params, __pyx_n_s_Overlap); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2313, __pyx_L47_error)
43661  __Pyx_GOTREF(__pyx_t_12);
43662  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2313, __pyx_L47_error)
43663  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
43664  __pyx_v_self->overlap = __pyx_t_2;
43665 
43666  /* "WaveTools.py":2312
43667  * logEvent("INFO WaveTools.py: performing series decomposition with spectral windows")
43668  * # Portion of overlap, compared to window time
43669  * try: # <<<<<<<<<<<<<<
43670  * self.overlap = window_params["Overlap"]
43671  * except:
43672  */
43673  }
43674  __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
43675  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
43676  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
43677  goto __pyx_L52_try_end;
43678  __pyx_L47_error:;
43679  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43680  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43681  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43682  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
43683  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43684  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43685  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43686 
43687  /* "WaveTools.py":2314
43688  * try:
43689  * self.overlap = window_params["Overlap"]
43690  * except: # <<<<<<<<<<<<<<
43691  * self.overlap = 0.7
43692  * logEvent("INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)")
43693  */
43694  /*except:*/ {
43695  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
43696  if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_5, &__pyx_t_11) < 0) __PYX_ERR(0, 2314, __pyx_L49_except_error)
43697  __Pyx_GOTREF(__pyx_t_12);
43698  __Pyx_GOTREF(__pyx_t_5);
43699  __Pyx_GOTREF(__pyx_t_11);
43700 
43701  /* "WaveTools.py":2315
43702  * self.overlap = window_params["Overlap"]
43703  * except:
43704  * self.overlap = 0.7 # <<<<<<<<<<<<<<
43705  * logEvent("INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)")
43706  *
43707  */
43708  __pyx_v_self->overlap = 0.7;
43709 
43710  /* "WaveTools.py":2316
43711  * except:
43712  * self.overlap = 0.7
43713  * logEvent("INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)") # <<<<<<<<<<<<<<
43714  *
43715  * try:
43716  */
43717  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2316, __pyx_L49_except_error)
43718  __Pyx_GOTREF(__pyx_t_6);
43719  __pyx_t_14 = NULL;
43720  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
43721  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
43722  if (likely(__pyx_t_14)) {
43723  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
43724  __Pyx_INCREF(__pyx_t_14);
43725  __Pyx_INCREF(function);
43726  __Pyx_DECREF_SET(__pyx_t_6, function);
43727  }
43728  }
43729  __pyx_t_7 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, __pyx_kp_s_INFO_WaveTools_py_Overlap_entry) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_INFO_WaveTools_py_Overlap_entry);
43730  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43731  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2316, __pyx_L49_except_error)
43732  __Pyx_GOTREF(__pyx_t_7);
43733  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43734  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
43735  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43736  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43737  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43738  goto __pyx_L48_exception_handled;
43739  }
43740  __pyx_L49_except_error:;
43741 
43742  /* "WaveTools.py":2312
43743  * logEvent("INFO WaveTools.py: performing series decomposition with spectral windows")
43744  * # Portion of overlap, compared to window time
43745  * try: # <<<<<<<<<<<<<<
43746  * self.overlap = window_params["Overlap"]
43747  * except:
43748  */
43749  __Pyx_XGIVEREF(__pyx_t_22);
43750  __Pyx_XGIVEREF(__pyx_t_21);
43751  __Pyx_XGIVEREF(__pyx_t_20);
43752  __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
43753  goto __pyx_L1_error;
43754  __pyx_L48_exception_handled:;
43755  __Pyx_XGIVEREF(__pyx_t_22);
43756  __Pyx_XGIVEREF(__pyx_t_21);
43757  __Pyx_XGIVEREF(__pyx_t_20);
43758  __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
43759  __pyx_L52_try_end:;
43760  }
43761 
43762  /* "WaveTools.py":2318
43763  * logEvent("INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)")
43764  *
43765  * try: # <<<<<<<<<<<<<<
43766  * self.cutoff = window_params["Cutoff"]
43767  * except:
43768  */
43769  {
43770  __Pyx_PyThreadState_declare
43771  __Pyx_PyThreadState_assign
43772  __Pyx_ExceptionSave(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
43773  __Pyx_XGOTREF(__pyx_t_20);
43774  __Pyx_XGOTREF(__pyx_t_21);
43775  __Pyx_XGOTREF(__pyx_t_22);
43776  /*try:*/ {
43777 
43778  /* "WaveTools.py":2319
43779  *
43780  * try:
43781  * self.cutoff = window_params["Cutoff"] # <<<<<<<<<<<<<<
43782  * except:
43783  * self.cutoff= 0.1
43784  */
43785  __pyx_t_11 = __Pyx_PyObject_Dict_GetItem(__pyx_v_window_params, __pyx_n_s_Cutoff); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2319, __pyx_L55_error)
43786  __Pyx_GOTREF(__pyx_t_11);
43787  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2319, __pyx_L55_error)
43788  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43789  __pyx_v_self->cutoff = __pyx_t_2;
43790 
43791  /* "WaveTools.py":2318
43792  * logEvent("INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)")
43793  *
43794  * try: # <<<<<<<<<<<<<<
43795  * self.cutoff = window_params["Cutoff"]
43796  * except:
43797  */
43798  }
43799  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
43800  __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
43801  __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
43802  goto __pyx_L60_try_end;
43803  __pyx_L55_error:;
43804  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43805  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43806  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43807  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
43808  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43809  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
43810  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43811 
43812  /* "WaveTools.py":2320
43813  * try:
43814  * self.cutoff = window_params["Cutoff"]
43815  * except: # <<<<<<<<<<<<<<
43816  * self.cutoff= 0.1
43817  * logEvent("INFO WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)")
43818  */
43819  /*except:*/ {
43820  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
43821  if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_5, &__pyx_t_12) < 0) __PYX_ERR(0, 2320, __pyx_L57_except_error)
43822  __Pyx_GOTREF(__pyx_t_11);
43823  __Pyx_GOTREF(__pyx_t_5);
43824  __Pyx_GOTREF(__pyx_t_12);
43825 
43826  /* "WaveTools.py":2321
43827  * self.cutoff = window_params["Cutoff"]
43828  * except:
43829  * self.cutoff= 0.1 # <<<<<<<<<<<<<<
43830  * logEvent("INFO WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)")
43831  *
43832  */
43833  __pyx_v_self->cutoff = 0.1;
43834 
43835  /* "WaveTools.py":2322
43836  * except:
43837  * self.cutoff= 0.1
43838  * logEvent("INFO WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)") # <<<<<<<<<<<<<<
43839  *
43840  *
43841  */
43842  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2322, __pyx_L57_except_error)
43843  __Pyx_GOTREF(__pyx_t_6);
43844  __pyx_t_14 = NULL;
43845  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
43846  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
43847  if (likely(__pyx_t_14)) {
43848  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
43849  __Pyx_INCREF(__pyx_t_14);
43850  __Pyx_INCREF(function);
43851  __Pyx_DECREF_SET(__pyx_t_6, function);
43852  }
43853  }
43854  __pyx_t_7 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, __pyx_kp_s_INFO_WaveTools_py_Cutoff_entry_i) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_INFO_WaveTools_py_Cutoff_entry_i);
43855  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
43856  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2322, __pyx_L57_except_error)
43857  __Pyx_GOTREF(__pyx_t_7);
43858  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43859  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
43860  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43861  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
43862  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
43863  goto __pyx_L56_exception_handled;
43864  }
43865  __pyx_L57_except_error:;
43866 
43867  /* "WaveTools.py":2318
43868  * logEvent("INFO WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.7 (70% of the window length)")
43869  *
43870  * try: # <<<<<<<<<<<<<<
43871  * self.cutoff = window_params["Cutoff"]
43872  * except:
43873  */
43874  __Pyx_XGIVEREF(__pyx_t_20);
43875  __Pyx_XGIVEREF(__pyx_t_21);
43876  __Pyx_XGIVEREF(__pyx_t_22);
43877  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
43878  goto __pyx_L1_error;
43879  __pyx_L56_exception_handled:;
43880  __Pyx_XGIVEREF(__pyx_t_20);
43881  __Pyx_XGIVEREF(__pyx_t_21);
43882  __Pyx_XGIVEREF(__pyx_t_22);
43883  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
43884  __pyx_L60_try_end:;
43885  }
43886 
43887  /* "WaveTools.py":2328
43888  * # Portion of window filtered with the Costap filter
43889  * # Setting the handover time, either at the middle of the overlap or just after the filter
43890  * self.handover = max(1.1 *self.cutoff, old_div(self.overlap, 2.)) # <<<<<<<<<<<<<<
43891  * if (self.handover > 0.9 * self.overlap):
43892  * logEvent("ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
43893  */
43894  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2328, __pyx_L1_error)
43895  __Pyx_GOTREF(__pyx_t_5);
43896  __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->overlap); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2328, __pyx_L1_error)
43897  __Pyx_GOTREF(__pyx_t_11);
43898  __pyx_t_7 = NULL;
43899  __pyx_t_3 = 0;
43900  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
43901  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
43902  if (likely(__pyx_t_7)) {
43903  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
43904  __Pyx_INCREF(__pyx_t_7);
43905  __Pyx_INCREF(function);
43906  __Pyx_DECREF_SET(__pyx_t_5, function);
43907  __pyx_t_3 = 1;
43908  }
43909  }
43910  #if CYTHON_FAST_PYCALL
43911  if (PyFunction_Check(__pyx_t_5)) {
43912  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_11, __pyx_float_2_};
43913  __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2328, __pyx_L1_error)
43914  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43915  __Pyx_GOTREF(__pyx_t_12);
43916  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43917  } else
43918  #endif
43919  #if CYTHON_FAST_PYCCALL
43920  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
43921  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_11, __pyx_float_2_};
43922  __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2328, __pyx_L1_error)
43923  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
43924  __Pyx_GOTREF(__pyx_t_12);
43925  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43926  } else
43927  #endif
43928  {
43929  __pyx_t_6 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2328, __pyx_L1_error)
43930  __Pyx_GOTREF(__pyx_t_6);
43931  if (__pyx_t_7) {
43932  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
43933  }
43934  __Pyx_GIVEREF(__pyx_t_11);
43935  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_3, __pyx_t_11);
43936  __Pyx_INCREF(__pyx_float_2_);
43937  __Pyx_GIVEREF(__pyx_float_2_);
43938  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_3, __pyx_float_2_);
43939  __pyx_t_11 = 0;
43940  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2328, __pyx_L1_error)
43941  __Pyx_GOTREF(__pyx_t_12);
43942  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43943  }
43944  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43945  __pyx_t_2 = (1.1 * __pyx_v_self->cutoff);
43946  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2328, __pyx_L1_error)
43947  __Pyx_GOTREF(__pyx_t_6);
43948  __pyx_t_11 = PyObject_RichCompare(__pyx_t_12, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2328, __pyx_L1_error)
43949  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
43950  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2328, __pyx_L1_error)
43951  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
43952  if (__pyx_t_10) {
43953  __Pyx_INCREF(__pyx_t_12);
43954  __pyx_t_5 = __pyx_t_12;
43955  } else {
43956  __pyx_t_11 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2328, __pyx_L1_error)
43957  __Pyx_GOTREF(__pyx_t_11);
43958  __pyx_t_5 = __pyx_t_11;
43959  __pyx_t_11 = 0;
43960  }
43961  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
43962  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2328, __pyx_L1_error)
43963  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
43964  __pyx_v_self->handover = __pyx_t_2;
43965 
43966  /* "WaveTools.py":2329
43967  * # Setting the handover time, either at the middle of the overlap or just after the filter
43968  * self.handover = max(1.1 *self.cutoff, old_div(self.overlap, 2.))
43969  * if (self.handover > 0.9 * self.overlap): # <<<<<<<<<<<<<<
43970  * logEvent("ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
43971  * sys.exit(1)
43972  */
43973  __pyx_t_10 = ((__pyx_v_self->handover > (0.9 * __pyx_v_self->overlap)) != 0);
43974  if (__pyx_t_10) {
43975 
43976  /* "WaveTools.py":2330
43977  * self.handover = max(1.1 *self.cutoff, old_div(self.overlap, 2.))
43978  * if (self.handover > 0.9 * self.overlap):
43979  * logEvent("ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap") # <<<<<<<<<<<<<<
43980  * sys.exit(1)
43981  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
43982  */
43983  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2330, __pyx_L1_error)
43984  __Pyx_GOTREF(__pyx_t_12);
43985  __pyx_t_11 = NULL;
43986  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
43987  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
43988  if (likely(__pyx_t_11)) {
43989  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
43990  __Pyx_INCREF(__pyx_t_11);
43991  __Pyx_INCREF(function);
43992  __Pyx_DECREF_SET(__pyx_t_12, function);
43993  }
43994  }
43995  __pyx_t_5 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_11, __pyx_kp_s_ERROR_Wavetools_py_Window_handov) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_kp_s_ERROR_Wavetools_py_Window_handov);
43996  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
43997  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2330, __pyx_L1_error)
43998  __Pyx_GOTREF(__pyx_t_5);
43999  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44000  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44001 
44002  /* "WaveTools.py":2331
44003  * if (self.handover > 0.9 * self.overlap):
44004  * logEvent("ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
44005  * sys.exit(1) # <<<<<<<<<<<<<<
44006  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
44007  * self.Toverlap = self.overlap * self.Twindow
44008  */
44009  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_sys); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2331, __pyx_L1_error)
44010  __Pyx_GOTREF(__pyx_t_12);
44011  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exit); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2331, __pyx_L1_error)
44012  __Pyx_GOTREF(__pyx_t_11);
44013  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44014  __pyx_t_12 = NULL;
44015  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44016  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
44017  if (likely(__pyx_t_12)) {
44018  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44019  __Pyx_INCREF(__pyx_t_12);
44020  __Pyx_INCREF(function);
44021  __Pyx_DECREF_SET(__pyx_t_11, function);
44022  }
44023  }
44024  __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_int_1);
44025  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
44026  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2331, __pyx_L1_error)
44027  __Pyx_GOTREF(__pyx_t_5);
44028  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44029  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44030 
44031  /* "WaveTools.py":2329
44032  * # Setting the handover time, either at the middle of the overlap or just after the filter
44033  * self.handover = max(1.1 *self.cutoff, old_div(self.overlap, 2.))
44034  * if (self.handover > 0.9 * self.overlap): # <<<<<<<<<<<<<<
44035  * logEvent("ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
44036  * sys.exit(1)
44037  */
44038  }
44039 
44040  /* "WaveTools.py":2332
44041  * logEvent("ERROR! Wavetools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
44042  * sys.exit(1)
44043  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves # <<<<<<<<<<<<<<
44044  * self.Toverlap = self.overlap * self.Twindow
44045  * self.Nwindows = int( old_div((self.tlength - self.Twindow ), (self.Twindow - self.Toverlap)) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
44046  */
44047  __pyx_v_self->Twindow = (__pyx_v_self->Tm * __pyx_v_self->Nwaves);
44048 
44049  /* "WaveTools.py":2333
44050  * sys.exit(1)
44051  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
44052  * self.Toverlap = self.overlap * self.Twindow # <<<<<<<<<<<<<<
44053  * self.Nwindows = int( old_div((self.tlength - self.Twindow ), (self.Twindow - self.Toverlap)) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
44054  * self.Twindow = old_div(self.tlength,(1. + (1. - self.overlap)*(self.Nwindows-1))) # Correct Twindow and Toverlap for duration and integer number of windows
44055  */
44056  __pyx_v_self->Toverlap = (__pyx_v_self->overlap * __pyx_v_self->Twindow);
44057 
44058  /* "WaveTools.py":2334
44059  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
44060  * self.Toverlap = self.overlap * self.Twindow
44061  * self.Nwindows = int( old_div((self.tlength - self.Twindow ), (self.Twindow - self.Toverlap)) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time # <<<<<<<<<<<<<<
44062  * self.Twindow = old_div(self.tlength,(1. + (1. - self.overlap)*(self.Nwindows-1))) # Correct Twindow and Toverlap for duration and integer number of windows
44063  * self.Toverlap = self.overlap*self.Twindow
44064  */
44065  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_old_div); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2334, __pyx_L1_error)
44066  __Pyx_GOTREF(__pyx_t_11);
44067  __pyx_t_12 = PyFloat_FromDouble((__pyx_v_self->tlength - __pyx_v_self->Twindow)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2334, __pyx_L1_error)
44068  __Pyx_GOTREF(__pyx_t_12);
44069  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_self->Twindow - __pyx_v_self->Toverlap)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2334, __pyx_L1_error)
44070  __Pyx_GOTREF(__pyx_t_6);
44071  __pyx_t_7 = NULL;
44072  __pyx_t_3 = 0;
44073  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44074  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
44075  if (likely(__pyx_t_7)) {
44076  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44077  __Pyx_INCREF(__pyx_t_7);
44078  __Pyx_INCREF(function);
44079  __Pyx_DECREF_SET(__pyx_t_11, function);
44080  __pyx_t_3 = 1;
44081  }
44082  }
44083  #if CYTHON_FAST_PYCALL
44084  if (PyFunction_Check(__pyx_t_11)) {
44085  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_12, __pyx_t_6};
44086  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2334, __pyx_L1_error)
44087  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
44088  __Pyx_GOTREF(__pyx_t_5);
44089  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44090  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44091  } else
44092  #endif
44093  #if CYTHON_FAST_PYCCALL
44094  if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
44095  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_12, __pyx_t_6};
44096  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2334, __pyx_L1_error)
44097  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
44098  __Pyx_GOTREF(__pyx_t_5);
44099  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44100  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44101  } else
44102  #endif
44103  {
44104  __pyx_t_14 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2334, __pyx_L1_error)
44105  __Pyx_GOTREF(__pyx_t_14);
44106  if (__pyx_t_7) {
44107  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __pyx_t_7 = NULL;
44108  }
44109  __Pyx_GIVEREF(__pyx_t_12);
44110  PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_3, __pyx_t_12);
44111  __Pyx_GIVEREF(__pyx_t_6);
44112  PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_3, __pyx_t_6);
44113  __pyx_t_12 = 0;
44114  __pyx_t_6 = 0;
44115  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2334, __pyx_L1_error)
44116  __Pyx_GOTREF(__pyx_t_5);
44117  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44118  }
44119  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44120  __pyx_t_11 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2334, __pyx_L1_error)
44121  __Pyx_GOTREF(__pyx_t_11);
44122  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44123  __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_11, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2334, __pyx_L1_error)
44124  __Pyx_GOTREF(__pyx_t_5);
44125  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44126  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2334, __pyx_L1_error)
44127  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44128  __pyx_v_self->Nwindows = __pyx_t_3;
44129 
44130  /* "WaveTools.py":2335
44131  * self.Toverlap = self.overlap * self.Twindow
44132  * self.Nwindows = int( old_div((self.tlength - self.Twindow ), (self.Twindow - self.Toverlap)) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
44133  * self.Twindow = old_div(self.tlength,(1. + (1. - self.overlap)*(self.Nwindows-1))) # Correct Twindow and Toverlap for duration and integer number of windows # <<<<<<<<<<<<<<
44134  * self.Toverlap = self.overlap*self.Twindow
44135  * logEvent("INFO: Wavetools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(old_div(self.Twindow, self.Tm)) )
44136  */
44137  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_old_div); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2335, __pyx_L1_error)
44138  __Pyx_GOTREF(__pyx_t_11);
44139  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->tlength); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2335, __pyx_L1_error)
44140  __Pyx_GOTREF(__pyx_t_14);
44141  __pyx_t_6 = PyFloat_FromDouble((1. + ((1. - __pyx_v_self->overlap) * (__pyx_v_self->Nwindows - 1)))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2335, __pyx_L1_error)
44142  __Pyx_GOTREF(__pyx_t_6);
44143  __pyx_t_12 = NULL;
44144  __pyx_t_3 = 0;
44145  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44146  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
44147  if (likely(__pyx_t_12)) {
44148  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44149  __Pyx_INCREF(__pyx_t_12);
44150  __Pyx_INCREF(function);
44151  __Pyx_DECREF_SET(__pyx_t_11, function);
44152  __pyx_t_3 = 1;
44153  }
44154  }
44155  #if CYTHON_FAST_PYCALL
44156  if (PyFunction_Check(__pyx_t_11)) {
44157  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_14, __pyx_t_6};
44158  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2335, __pyx_L1_error)
44159  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
44160  __Pyx_GOTREF(__pyx_t_5);
44161  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44162  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44163  } else
44164  #endif
44165  #if CYTHON_FAST_PYCCALL
44166  if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
44167  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_14, __pyx_t_6};
44168  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2335, __pyx_L1_error)
44169  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
44170  __Pyx_GOTREF(__pyx_t_5);
44171  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44172  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44173  } else
44174  #endif
44175  {
44176  __pyx_t_7 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2335, __pyx_L1_error)
44177  __Pyx_GOTREF(__pyx_t_7);
44178  if (__pyx_t_12) {
44179  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL;
44180  }
44181  __Pyx_GIVEREF(__pyx_t_14);
44182  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_t_14);
44183  __Pyx_GIVEREF(__pyx_t_6);
44184  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_t_6);
44185  __pyx_t_14 = 0;
44186  __pyx_t_6 = 0;
44187  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2335, __pyx_L1_error)
44188  __Pyx_GOTREF(__pyx_t_5);
44189  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
44190  }
44191  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44192  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2335, __pyx_L1_error)
44193  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44194  __pyx_v_self->Twindow = __pyx_t_2;
44195 
44196  /* "WaveTools.py":2336
44197  * self.Nwindows = int( old_div((self.tlength - self.Twindow ), (self.Twindow - self.Toverlap)) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
44198  * self.Twindow = old_div(self.tlength,(1. + (1. - self.overlap)*(self.Nwindows-1))) # Correct Twindow and Toverlap for duration and integer number of windows
44199  * self.Toverlap = self.overlap*self.Twindow # <<<<<<<<<<<<<<
44200  * logEvent("INFO: Wavetools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(old_div(self.Twindow, self.Tm)) )
44201  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
44202  */
44203  __pyx_v_self->Toverlap = (__pyx_v_self->overlap * __pyx_v_self->Twindow);
44204 
44205  /* "WaveTools.py":2337
44206  * self.Twindow = old_div(self.tlength,(1. + (1. - self.overlap)*(self.Nwindows-1))) # Correct Twindow and Toverlap for duration and integer number of windows
44207  * self.Toverlap = self.overlap*self.Twindow
44208  * logEvent("INFO: Wavetools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(old_div(self.Twindow, self.Tm)) ) # <<<<<<<<<<<<<<
44209  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
44210  * logEvent("INFO: Wavetools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
44211  */
44212  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2337, __pyx_L1_error)
44213  __Pyx_GOTREF(__pyx_t_11);
44214  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2337, __pyx_L1_error)
44215  __Pyx_GOTREF(__pyx_t_6);
44216  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->Twindow); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2337, __pyx_L1_error)
44217  __Pyx_GOTREF(__pyx_t_14);
44218  __pyx_t_12 = PyFloat_FromDouble(__pyx_v_self->Tm); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2337, __pyx_L1_error)
44219  __Pyx_GOTREF(__pyx_t_12);
44220  __pyx_t_4 = NULL;
44221  __pyx_t_3 = 0;
44222  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
44223  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
44224  if (likely(__pyx_t_4)) {
44225  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
44226  __Pyx_INCREF(__pyx_t_4);
44227  __Pyx_INCREF(function);
44228  __Pyx_DECREF_SET(__pyx_t_6, function);
44229  __pyx_t_3 = 1;
44230  }
44231  }
44232  #if CYTHON_FAST_PYCALL
44233  if (PyFunction_Check(__pyx_t_6)) {
44234  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_14, __pyx_t_12};
44235  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2337, __pyx_L1_error)
44236  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
44237  __Pyx_GOTREF(__pyx_t_7);
44238  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44239  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44240  } else
44241  #endif
44242  #if CYTHON_FAST_PYCCALL
44243  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
44244  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_14, __pyx_t_12};
44245  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2337, __pyx_L1_error)
44246  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
44247  __Pyx_GOTREF(__pyx_t_7);
44248  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44249  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44250  } else
44251  #endif
44252  {
44253  __pyx_t_23 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2337, __pyx_L1_error)
44254  __Pyx_GOTREF(__pyx_t_23);
44255  if (__pyx_t_4) {
44256  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_4); __pyx_t_4 = NULL;
44257  }
44258  __Pyx_GIVEREF(__pyx_t_14);
44259  PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_3, __pyx_t_14);
44260  __Pyx_GIVEREF(__pyx_t_12);
44261  PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_3, __pyx_t_12);
44262  __pyx_t_14 = 0;
44263  __pyx_t_12 = 0;
44264  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2337, __pyx_L1_error)
44265  __Pyx_GOTREF(__pyx_t_7);
44266  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44267  }
44268  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44269  __pyx_t_6 = __Pyx_PyString_FormatSafe(__pyx_kp_s_INFO_Wavetools_py_Correcting_win, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2337, __pyx_L1_error)
44270  __Pyx_GOTREF(__pyx_t_6);
44271  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
44272  __pyx_t_7 = NULL;
44273  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44274  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
44275  if (likely(__pyx_t_7)) {
44276  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44277  __Pyx_INCREF(__pyx_t_7);
44278  __Pyx_INCREF(function);
44279  __Pyx_DECREF_SET(__pyx_t_11, function);
44280  }
44281  }
44282  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6);
44283  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
44284  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44285  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2337, __pyx_L1_error)
44286  __Pyx_GOTREF(__pyx_t_5);
44287  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44288  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44289 
44290  /* "WaveTools.py":2338
44291  * self.Toverlap = self.overlap*self.Twindow
44292  * logEvent("INFO: Wavetools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(old_div(self.Twindow, self.Tm)) )
44293  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength # <<<<<<<<<<<<<<
44294  * logEvent("INFO: Wavetools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
44295  * logEvent("INFO: Wavetools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
44296  */
44297  __pyx_v_diff = ((((__pyx_v_self->Nwindows - 1.) * (__pyx_v_self->Twindow - __pyx_v_self->Toverlap)) + __pyx_v_self->Twindow) - __pyx_v_self->tlength);
44298 
44299  /* "WaveTools.py":2339
44300  * logEvent("INFO: Wavetools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(old_div(self.Twindow, self.Tm)) )
44301  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
44302  * logEvent("INFO: Wavetools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) ) # <<<<<<<<<<<<<<
44303  * logEvent("INFO: Wavetools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
44304  * # Setting where each window starts and ends
44305  */
44306  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2339, __pyx_L1_error)
44307  __Pyx_GOTREF(__pyx_t_11);
44308  __pyx_t_6 = PyFloat_FromDouble((100.0 * __pyx_v_diff)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2339, __pyx_L1_error)
44309  __Pyx_GOTREF(__pyx_t_6);
44310  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_INFO_Wavetools_py_Checking_durat, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2339, __pyx_L1_error)
44311  __Pyx_GOTREF(__pyx_t_7);
44312  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44313  __pyx_t_6 = NULL;
44314  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44315  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
44316  if (likely(__pyx_t_6)) {
44317  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44318  __Pyx_INCREF(__pyx_t_6);
44319  __Pyx_INCREF(function);
44320  __Pyx_DECREF_SET(__pyx_t_11, function);
44321  }
44322  }
44323  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7);
44324  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
44325  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
44326  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2339, __pyx_L1_error)
44327  __Pyx_GOTREF(__pyx_t_5);
44328  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44329  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44330 
44331  /* "WaveTools.py":2340
44332  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
44333  * logEvent("INFO: Wavetools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
44334  * logEvent("INFO: Wavetools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap )) # <<<<<<<<<<<<<<
44335  * # Setting where each window starts and ends
44336  * for jj in range(self.Nwindows):
44337  */
44338  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2340, __pyx_L1_error)
44339  __Pyx_GOTREF(__pyx_t_11);
44340  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->Nwindows); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2340, __pyx_L1_error)
44341  __Pyx_GOTREF(__pyx_t_7);
44342  __pyx_t_6 = PyFloat_FromDouble(__pyx_v_self->Twindow); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2340, __pyx_L1_error)
44343  __Pyx_GOTREF(__pyx_t_6);
44344  __pyx_t_23 = PyFloat_FromDouble((100.0 * __pyx_v_self->overlap)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2340, __pyx_L1_error)
44345  __Pyx_GOTREF(__pyx_t_23);
44346  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2340, __pyx_L1_error)
44347  __Pyx_GOTREF(__pyx_t_12);
44348  __Pyx_GIVEREF(__pyx_t_7);
44349  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7);
44350  __Pyx_GIVEREF(__pyx_t_6);
44351  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_6);
44352  __Pyx_GIVEREF(__pyx_t_23);
44353  PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_23);
44354  __pyx_t_7 = 0;
44355  __pyx_t_6 = 0;
44356  __pyx_t_23 = 0;
44357  __pyx_t_23 = __Pyx_PyString_Format(__pyx_kp_s_INFO_Wavetools_py_Using_s_window, __pyx_t_12); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2340, __pyx_L1_error)
44358  __Pyx_GOTREF(__pyx_t_23);
44359  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44360  __pyx_t_12 = NULL;
44361  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44362  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
44363  if (likely(__pyx_t_12)) {
44364  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44365  __Pyx_INCREF(__pyx_t_12);
44366  __Pyx_INCREF(function);
44367  __Pyx_DECREF_SET(__pyx_t_11, function);
44368  }
44369  }
44370  __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_t_23) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_23);
44371  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
44372  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44373  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2340, __pyx_L1_error)
44374  __Pyx_GOTREF(__pyx_t_5);
44375  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44376  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44377 
44378  /* "WaveTools.py":2342
44379  * logEvent("INFO: Wavetools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
44380  * # Setting where each window starts and ends
44381  * for jj in range(self.Nwindows): # <<<<<<<<<<<<<<
44382  * span = np.zeros(2,"d")
44383  * tfirst = self.time[0] + self.Twindow
44384  */
44385  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2342, __pyx_L1_error)
44386  __Pyx_GOTREF(__pyx_t_11);
44387  __pyx_t_23 = __Pyx_PyInt_From_int(__pyx_v_self->Nwindows); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2342, __pyx_L1_error)
44388  __Pyx_GOTREF(__pyx_t_23);
44389  __pyx_t_12 = NULL;
44390  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
44391  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
44392  if (likely(__pyx_t_12)) {
44393  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
44394  __Pyx_INCREF(__pyx_t_12);
44395  __Pyx_INCREF(function);
44396  __Pyx_DECREF_SET(__pyx_t_11, function);
44397  }
44398  }
44399  __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_t_23) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_23);
44400  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
44401  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44402  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2342, __pyx_L1_error)
44403  __Pyx_GOTREF(__pyx_t_5);
44404  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44405  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
44406  __pyx_t_11 = __pyx_t_5; __Pyx_INCREF(__pyx_t_11); __pyx_t_8 = 0;
44407  __pyx_t_13 = NULL;
44408  } else {
44409  __pyx_t_8 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2342, __pyx_L1_error)
44410  __Pyx_GOTREF(__pyx_t_11);
44411  __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2342, __pyx_L1_error)
44412  }
44413  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44414  for (;;) {
44415  if (likely(!__pyx_t_13)) {
44416  if (likely(PyList_CheckExact(__pyx_t_11))) {
44417  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_11)) break;
44418  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
44419  __pyx_t_5 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2342, __pyx_L1_error)
44420  #else
44421  __pyx_t_5 = PySequence_ITEM(__pyx_t_11, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2342, __pyx_L1_error)
44422  __Pyx_GOTREF(__pyx_t_5);
44423  #endif
44424  } else {
44425  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
44426  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
44427  __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2342, __pyx_L1_error)
44428  #else
44429  __pyx_t_5 = PySequence_ITEM(__pyx_t_11, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2342, __pyx_L1_error)
44430  __Pyx_GOTREF(__pyx_t_5);
44431  #endif
44432  }
44433  } else {
44434  __pyx_t_5 = __pyx_t_13(__pyx_t_11);
44435  if (unlikely(!__pyx_t_5)) {
44436  PyObject* exc_type = PyErr_Occurred();
44437  if (exc_type) {
44438  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
44439  else __PYX_ERR(0, 2342, __pyx_L1_error)
44440  }
44441  break;
44442  }
44443  __Pyx_GOTREF(__pyx_t_5);
44444  }
44445  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_5);
44446  __pyx_t_5 = 0;
44447 
44448  /* "WaveTools.py":2343
44449  * # Setting where each window starts and ends
44450  * for jj in range(self.Nwindows):
44451  * span = np.zeros(2,"d") # <<<<<<<<<<<<<<
44452  * tfirst = self.time[0] + self.Twindow
44453  * tlast = self.time[-1] - self.Twindow
44454  */
44455  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2343, __pyx_L1_error)
44456  __Pyx_GOTREF(__pyx_t_5);
44457  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2343, __pyx_L1_error)
44458  __Pyx_GOTREF(__pyx_t_23);
44459  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44460  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2343, __pyx_L1_error)
44461  __Pyx_GOTREF(__pyx_t_5);
44462  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44463  __Pyx_XDECREF_SET(__pyx_v_span, __pyx_t_5);
44464  __pyx_t_5 = 0;
44465 
44466  /* "WaveTools.py":2344
44467  * for jj in range(self.Nwindows):
44468  * span = np.zeros(2,"d")
44469  * tfirst = self.time[0] + self.Twindow # <<<<<<<<<<<<<<
44470  * tlast = self.time[-1] - self.Twindow
44471  * if jj == 0:
44472  */
44473  __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->time), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2344, __pyx_L1_error)
44474  __Pyx_GOTREF(__pyx_t_5);
44475  __pyx_t_23 = PyFloat_FromDouble(__pyx_v_self->Twindow); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2344, __pyx_L1_error)
44476  __Pyx_GOTREF(__pyx_t_23);
44477  __pyx_t_12 = PyNumber_Add(__pyx_t_5, __pyx_t_23); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2344, __pyx_L1_error)
44478  __Pyx_GOTREF(__pyx_t_12);
44479  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44480  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44481  __Pyx_XDECREF_SET(__pyx_v_tfirst, __pyx_t_12);
44482  __pyx_t_12 = 0;
44483 
44484  /* "WaveTools.py":2345
44485  * span = np.zeros(2,"d")
44486  * tfirst = self.time[0] + self.Twindow
44487  * tlast = self.time[-1] - self.Twindow # <<<<<<<<<<<<<<
44488  * if jj == 0:
44489  * ispan1 = 0
44490  */
44491  __pyx_t_12 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->time), -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2345, __pyx_L1_error)
44492  __Pyx_GOTREF(__pyx_t_12);
44493  __pyx_t_23 = PyFloat_FromDouble(__pyx_v_self->Twindow); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2345, __pyx_L1_error)
44494  __Pyx_GOTREF(__pyx_t_23);
44495  __pyx_t_5 = PyNumber_Subtract(__pyx_t_12, __pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2345, __pyx_L1_error)
44496  __Pyx_GOTREF(__pyx_t_5);
44497  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44498  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44499  __Pyx_XDECREF_SET(__pyx_v_tlast, __pyx_t_5);
44500  __pyx_t_5 = 0;
44501 
44502  /* "WaveTools.py":2346
44503  * tfirst = self.time[0] + self.Twindow
44504  * tlast = self.time[-1] - self.Twindow
44505  * if jj == 0: # <<<<<<<<<<<<<<
44506  * ispan1 = 0
44507  * ispan2 = np.where(self.time> tfirst)[0][0]
44508  */
44509  __pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_v_jj, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2346, __pyx_L1_error)
44510  __Pyx_GOTREF(__pyx_t_5);
44511  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2346, __pyx_L1_error)
44512  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44513  if (__pyx_t_10) {
44514 
44515  /* "WaveTools.py":2347
44516  * tlast = self.time[-1] - self.Twindow
44517  * if jj == 0:
44518  * ispan1 = 0 # <<<<<<<<<<<<<<
44519  * ispan2 = np.where(self.time> tfirst)[0][0]
44520  * elif jj == self.Nwindows-1:
44521  */
44522  __Pyx_INCREF(__pyx_int_0);
44523  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_int_0);
44524 
44525  /* "WaveTools.py":2348
44526  * if jj == 0:
44527  * ispan1 = 0
44528  * ispan2 = np.where(self.time> tfirst)[0][0] # <<<<<<<<<<<<<<
44529  * elif jj == self.Nwindows-1:
44530  * ispan1 = np.where(self.time > tlast)[0][0]
44531  */
44532  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2348, __pyx_L1_error)
44533  __Pyx_GOTREF(__pyx_t_23);
44534  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_where); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2348, __pyx_L1_error)
44535  __Pyx_GOTREF(__pyx_t_12);
44536  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44537  __pyx_t_23 = PyObject_RichCompare(((PyObject *)__pyx_v_self->time), __pyx_v_tfirst, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2348, __pyx_L1_error)
44538  __pyx_t_6 = NULL;
44539  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
44540  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_12);
44541  if (likely(__pyx_t_6)) {
44542  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
44543  __Pyx_INCREF(__pyx_t_6);
44544  __Pyx_INCREF(function);
44545  __Pyx_DECREF_SET(__pyx_t_12, function);
44546  }
44547  }
44548  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_6, __pyx_t_23) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_23);
44549  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
44550  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44551  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2348, __pyx_L1_error)
44552  __Pyx_GOTREF(__pyx_t_5);
44553  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44554  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2348, __pyx_L1_error)
44555  __Pyx_GOTREF(__pyx_t_12);
44556  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44557  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2348, __pyx_L1_error)
44558  __Pyx_GOTREF(__pyx_t_5);
44559  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44560  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_5);
44561  __pyx_t_5 = 0;
44562 
44563  /* "WaveTools.py":2346
44564  * tfirst = self.time[0] + self.Twindow
44565  * tlast = self.time[-1] - self.Twindow
44566  * if jj == 0: # <<<<<<<<<<<<<<
44567  * ispan1 = 0
44568  * ispan2 = np.where(self.time> tfirst)[0][0]
44569  */
44570  goto __pyx_L66;
44571  }
44572 
44573  /* "WaveTools.py":2349
44574  * ispan1 = 0
44575  * ispan2 = np.where(self.time> tfirst)[0][0]
44576  * elif jj == self.Nwindows-1: # <<<<<<<<<<<<<<
44577  * ispan1 = np.where(self.time > tlast)[0][0]
44578  * ispan2 = len(self.time)-1
44579  */
44580  __pyx_t_5 = __Pyx_PyInt_From_long((__pyx_v_self->Nwindows - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2349, __pyx_L1_error)
44581  __Pyx_GOTREF(__pyx_t_5);
44582  __pyx_t_12 = PyObject_RichCompare(__pyx_v_jj, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2349, __pyx_L1_error)
44583  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44584  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2349, __pyx_L1_error)
44585  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44586  if (__pyx_t_10) {
44587 
44588  /* "WaveTools.py":2350
44589  * ispan2 = np.where(self.time> tfirst)[0][0]
44590  * elif jj == self.Nwindows-1:
44591  * ispan1 = np.where(self.time > tlast)[0][0] # <<<<<<<<<<<<<<
44592  * ispan2 = len(self.time)-1
44593  * else:
44594  */
44595  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2350, __pyx_L1_error)
44596  __Pyx_GOTREF(__pyx_t_5);
44597  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_where); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2350, __pyx_L1_error)
44598  __Pyx_GOTREF(__pyx_t_23);
44599  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44600  __pyx_t_5 = PyObject_RichCompare(((PyObject *)__pyx_v_self->time), __pyx_v_tlast, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2350, __pyx_L1_error)
44601  __pyx_t_6 = NULL;
44602  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
44603  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
44604  if (likely(__pyx_t_6)) {
44605  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
44606  __Pyx_INCREF(__pyx_t_6);
44607  __Pyx_INCREF(function);
44608  __Pyx_DECREF_SET(__pyx_t_23, function);
44609  }
44610  }
44611  __pyx_t_12 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_23, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_5);
44612  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
44613  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44614  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2350, __pyx_L1_error)
44615  __Pyx_GOTREF(__pyx_t_12);
44616  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44617  __pyx_t_23 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2350, __pyx_L1_error)
44618  __Pyx_GOTREF(__pyx_t_23);
44619  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44620  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_23, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2350, __pyx_L1_error)
44621  __Pyx_GOTREF(__pyx_t_12);
44622  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44623  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_t_12);
44624  __pyx_t_12 = 0;
44625 
44626  /* "WaveTools.py":2351
44627  * elif jj == self.Nwindows-1:
44628  * ispan1 = np.where(self.time > tlast)[0][0]
44629  * ispan2 = len(self.time)-1 # <<<<<<<<<<<<<<
44630  * else:
44631  * tstart = self.time[ispan2] - self.Toverlap
44632  */
44633  __pyx_t_12 = ((PyObject *)__pyx_v_self->time);
44634  __Pyx_INCREF(__pyx_t_12);
44635  __pyx_t_16 = PyObject_Length(__pyx_t_12); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2351, __pyx_L1_error)
44636  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44637  __pyx_t_12 = PyInt_FromSsize_t((__pyx_t_16 - 1)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2351, __pyx_L1_error)
44638  __Pyx_GOTREF(__pyx_t_12);
44639  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_12);
44640  __pyx_t_12 = 0;
44641 
44642  /* "WaveTools.py":2349
44643  * ispan1 = 0
44644  * ispan2 = np.where(self.time> tfirst)[0][0]
44645  * elif jj == self.Nwindows-1: # <<<<<<<<<<<<<<
44646  * ispan1 = np.where(self.time > tlast)[0][0]
44647  * ispan2 = len(self.time)-1
44648  */
44649  goto __pyx_L66;
44650  }
44651 
44652  /* "WaveTools.py":2353
44653  * ispan2 = len(self.time)-1
44654  * else:
44655  * tstart = self.time[ispan2] - self.Toverlap # <<<<<<<<<<<<<<
44656  * ispan1 = np.where(self.time > tstart)[0][0]
44657  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
44658  */
44659  /*else*/ {
44660  if (unlikely(!__pyx_v_ispan2)) { __Pyx_RaiseUnboundLocalError("ispan2"); __PYX_ERR(0, 2353, __pyx_L1_error) }
44661  __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->time), __pyx_v_ispan2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2353, __pyx_L1_error)
44662  __Pyx_GOTREF(__pyx_t_12);
44663  __pyx_t_23 = PyFloat_FromDouble(__pyx_v_self->Toverlap); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2353, __pyx_L1_error)
44664  __Pyx_GOTREF(__pyx_t_23);
44665  __pyx_t_5 = PyNumber_Subtract(__pyx_t_12, __pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2353, __pyx_L1_error)
44666  __Pyx_GOTREF(__pyx_t_5);
44667  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44668  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44669  __Pyx_XDECREF_SET(__pyx_v_tstart, __pyx_t_5);
44670  __pyx_t_5 = 0;
44671 
44672  /* "WaveTools.py":2354
44673  * else:
44674  * tstart = self.time[ispan2] - self.Toverlap
44675  * ispan1 = np.where(self.time > tstart)[0][0] # <<<<<<<<<<<<<<
44676  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
44677  * span[0] = ispan1
44678  */
44679  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2354, __pyx_L1_error)
44680  __Pyx_GOTREF(__pyx_t_23);
44681  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_where); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2354, __pyx_L1_error)
44682  __Pyx_GOTREF(__pyx_t_12);
44683  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44684  __pyx_t_23 = PyObject_RichCompare(((PyObject *)__pyx_v_self->time), __pyx_v_tstart, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2354, __pyx_L1_error)
44685  __pyx_t_6 = NULL;
44686  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
44687  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_12);
44688  if (likely(__pyx_t_6)) {
44689  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
44690  __Pyx_INCREF(__pyx_t_6);
44691  __Pyx_INCREF(function);
44692  __Pyx_DECREF_SET(__pyx_t_12, function);
44693  }
44694  }
44695  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_6, __pyx_t_23) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_23);
44696  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
44697  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44698  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2354, __pyx_L1_error)
44699  __Pyx_GOTREF(__pyx_t_5);
44700  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44701  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2354, __pyx_L1_error)
44702  __Pyx_GOTREF(__pyx_t_12);
44703  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44704  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2354, __pyx_L1_error)
44705  __Pyx_GOTREF(__pyx_t_5);
44706  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44707  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_t_5);
44708  __pyx_t_5 = 0;
44709 
44710  /* "WaveTools.py":2355
44711  * tstart = self.time[ispan2] - self.Toverlap
44712  * ispan1 = np.where(self.time > tstart)[0][0]
44713  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0] # <<<<<<<<<<<<<<
44714  * span[0] = ispan1
44715  * span[1] = ispan2
44716  */
44717  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2355, __pyx_L1_error)
44718  __Pyx_GOTREF(__pyx_t_12);
44719  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_where); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2355, __pyx_L1_error)
44720  __Pyx_GOTREF(__pyx_t_23);
44721  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44722  __pyx_t_12 = PyFloat_FromDouble(__pyx_v_self->Twindow); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2355, __pyx_L1_error)
44723  __Pyx_GOTREF(__pyx_t_12);
44724  __pyx_t_6 = PyNumber_Add(__pyx_v_tstart, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2355, __pyx_L1_error)
44725  __Pyx_GOTREF(__pyx_t_6);
44726  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44727  __pyx_t_12 = PyObject_RichCompare(((PyObject *)__pyx_v_self->time), __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2355, __pyx_L1_error)
44728  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44729  __pyx_t_6 = NULL;
44730  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
44731  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
44732  if (likely(__pyx_t_6)) {
44733  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
44734  __Pyx_INCREF(__pyx_t_6);
44735  __Pyx_INCREF(function);
44736  __Pyx_DECREF_SET(__pyx_t_23, function);
44737  }
44738  }
44739  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_23, __pyx_t_6, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_12);
44740  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
44741  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44742  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2355, __pyx_L1_error)
44743  __Pyx_GOTREF(__pyx_t_5);
44744  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44745  __pyx_t_23 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2355, __pyx_L1_error)
44746  __Pyx_GOTREF(__pyx_t_23);
44747  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44748  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_23, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2355, __pyx_L1_error)
44749  __Pyx_GOTREF(__pyx_t_5);
44750  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44751  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_5);
44752  __pyx_t_5 = 0;
44753  }
44754  __pyx_L66:;
44755 
44756  /* "WaveTools.py":2356
44757  * ispan1 = np.where(self.time > tstart)[0][0]
44758  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
44759  * span[0] = ispan1 # <<<<<<<<<<<<<<
44760  * span[1] = ispan2
44761  * # Storing time series in windows and handover times
44762  */
44763  if (unlikely(__Pyx_SetItemInt(__pyx_v_span, 0, __pyx_v_ispan1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2356, __pyx_L1_error)
44764 
44765  /* "WaveTools.py":2357
44766  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
44767  * span[0] = ispan1
44768  * span[1] = ispan2 # <<<<<<<<<<<<<<
44769  * # Storing time series in windows and handover times
44770  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow )
44771  */
44772  if (unlikely(__Pyx_SetItemInt(__pyx_v_span, 1, __pyx_v_ispan2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2357, __pyx_L1_error)
44773 
44774  /* "WaveTools.py":2359
44775  * span[1] = ispan2
44776  * # Storing time series in windows and handover times
44777  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow ) # <<<<<<<<<<<<<<
44778  * self.windows_rec.append(np.array(list(zip(self.time[ispan1:ispan2],self.etaS[ispan1:ispan2]))))
44779  * # Decomposing windows to frequency domain
44780  */
44781  if (unlikely(__pyx_v_self->windows_handover == Py_None)) {
44782  PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
44783  __PYX_ERR(0, 2359, __pyx_L1_error)
44784  }
44785  __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->time), __pyx_v_ispan2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2359, __pyx_L1_error)
44786  __Pyx_GOTREF(__pyx_t_5);
44787  __pyx_t_23 = PyFloat_FromDouble((__pyx_v_self->handover * __pyx_v_self->Twindow)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2359, __pyx_L1_error)
44788  __Pyx_GOTREF(__pyx_t_23);
44789  __pyx_t_12 = PyNumber_Subtract(__pyx_t_5, __pyx_t_23); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2359, __pyx_L1_error)
44790  __Pyx_GOTREF(__pyx_t_12);
44791  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44792  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44793  __pyx_t_24 = __Pyx_PyList_Append(__pyx_v_self->windows_handover, __pyx_t_12); if (unlikely(__pyx_t_24 == ((int)-1))) __PYX_ERR(0, 2359, __pyx_L1_error)
44794  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44795 
44796  /* "WaveTools.py":2360
44797  * # Storing time series in windows and handover times
44798  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow )
44799  * self.windows_rec.append(np.array(list(zip(self.time[ispan1:ispan2],self.etaS[ispan1:ispan2])))) # <<<<<<<<<<<<<<
44800  * # Decomposing windows to frequency domain
44801  * self.decompose_window = []
44802  */
44803  if (unlikely(__pyx_v_self->windows_rec == Py_None)) {
44804  PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
44805  __PYX_ERR(0, 2360, __pyx_L1_error)
44806  }
44807  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2360, __pyx_L1_error)
44808  __Pyx_GOTREF(__pyx_t_23);
44809  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2360, __pyx_L1_error)
44810  __Pyx_GOTREF(__pyx_t_5);
44811  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44812  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_zip); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2360, __pyx_L1_error)
44813  __Pyx_GOTREF(__pyx_t_6);
44814  __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->time), 0, 0, &__pyx_v_ispan1, &__pyx_v_ispan2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2360, __pyx_L1_error)
44815  __Pyx_GOTREF(__pyx_t_7);
44816  __pyx_t_14 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->etaS), 0, 0, &__pyx_v_ispan1, &__pyx_v_ispan2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2360, __pyx_L1_error)
44817  __Pyx_GOTREF(__pyx_t_14);
44818  __pyx_t_4 = NULL;
44819  __pyx_t_3 = 0;
44820  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
44821  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
44822  if (likely(__pyx_t_4)) {
44823  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
44824  __Pyx_INCREF(__pyx_t_4);
44825  __Pyx_INCREF(function);
44826  __Pyx_DECREF_SET(__pyx_t_6, function);
44827  __pyx_t_3 = 1;
44828  }
44829  }
44830  #if CYTHON_FAST_PYCALL
44831  if (PyFunction_Check(__pyx_t_6)) {
44832  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_14};
44833  __pyx_t_23 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2360, __pyx_L1_error)
44834  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
44835  __Pyx_GOTREF(__pyx_t_23);
44836  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
44837  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44838  } else
44839  #endif
44840  #if CYTHON_FAST_PYCCALL
44841  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
44842  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_14};
44843  __pyx_t_23 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2360, __pyx_L1_error)
44844  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
44845  __Pyx_GOTREF(__pyx_t_23);
44846  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
44847  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
44848  } else
44849  #endif
44850  {
44851  __pyx_t_25 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2360, __pyx_L1_error)
44852  __Pyx_GOTREF(__pyx_t_25);
44853  if (__pyx_t_4) {
44854  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_4); __pyx_t_4 = NULL;
44855  }
44856  __Pyx_GIVEREF(__pyx_t_7);
44857  PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_3, __pyx_t_7);
44858  __Pyx_GIVEREF(__pyx_t_14);
44859  PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_3, __pyx_t_14);
44860  __pyx_t_7 = 0;
44861  __pyx_t_14 = 0;
44862  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_25, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2360, __pyx_L1_error)
44863  __Pyx_GOTREF(__pyx_t_23);
44864  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
44865  }
44866  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44867  __pyx_t_6 = PySequence_List(__pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2360, __pyx_L1_error)
44868  __Pyx_GOTREF(__pyx_t_6);
44869  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44870  __pyx_t_23 = NULL;
44871  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
44872  __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_5);
44873  if (likely(__pyx_t_23)) {
44874  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
44875  __Pyx_INCREF(__pyx_t_23);
44876  __Pyx_INCREF(function);
44877  __Pyx_DECREF_SET(__pyx_t_5, function);
44878  }
44879  }
44880  __pyx_t_12 = (__pyx_t_23) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_23, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
44881  __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
44882  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44883  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2360, __pyx_L1_error)
44884  __Pyx_GOTREF(__pyx_t_12);
44885  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44886  __pyx_t_24 = __Pyx_PyList_Append(__pyx_v_self->windows_rec, __pyx_t_12); if (unlikely(__pyx_t_24 == ((int)-1))) __PYX_ERR(0, 2360, __pyx_L1_error)
44887  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44888 
44889  /* "WaveTools.py":2342
44890  * logEvent("INFO: Wavetools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
44891  * # Setting where each window starts and ends
44892  * for jj in range(self.Nwindows): # <<<<<<<<<<<<<<
44893  * span = np.zeros(2,"d")
44894  * tfirst = self.time[0] + self.Twindow
44895  */
44896  }
44897  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
44898 
44899  /* "WaveTools.py":2362
44900  * self.windows_rec.append(np.array(list(zip(self.time[ispan1:ispan2],self.etaS[ispan1:ispan2]))))
44901  * # Decomposing windows to frequency domain
44902  * self.decompose_window = [] # <<<<<<<<<<<<<<
44903  * # style = "k-"
44904  * # ii = 0
44905  */
44906  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2362, __pyx_L1_error)
44907  __Pyx_GOTREF(__pyx_t_11);
44908  __Pyx_GIVEREF(__pyx_t_11);
44909  __Pyx_GOTREF(__pyx_v_self->decompose_window);
44910  __Pyx_DECREF(__pyx_v_self->decompose_window);
44911  __pyx_v_self->decompose_window = ((PyObject*)__pyx_t_11);
44912  __pyx_t_11 = 0;
44913 
44914  /* "WaveTools.py":2366
44915  * # ii = 0
44916  *
44917  * for wind in self.windows_rec: # <<<<<<<<<<<<<<
44918  * nfft=len(wind[:,0])
44919  * wind[:,1] *=wind_filt(nfft,cutoff = self.cutoff)
44920  */
44921  if (unlikely(__pyx_v_self->windows_rec == Py_None)) {
44922  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
44923  __PYX_ERR(0, 2366, __pyx_L1_error)
44924  }
44925  __pyx_t_11 = __pyx_v_self->windows_rec; __Pyx_INCREF(__pyx_t_11); __pyx_t_8 = 0;
44926  for (;;) {
44927  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_11)) break;
44928  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
44929  __pyx_t_12 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_8); __Pyx_INCREF(__pyx_t_12); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2366, __pyx_L1_error)
44930  #else
44931  __pyx_t_12 = PySequence_ITEM(__pyx_t_11, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2366, __pyx_L1_error)
44932  __Pyx_GOTREF(__pyx_t_12);
44933  #endif
44934  __Pyx_XDECREF_SET(__pyx_v_wind, __pyx_t_12);
44935  __pyx_t_12 = 0;
44936 
44937  /* "WaveTools.py":2367
44938  *
44939  * for wind in self.windows_rec:
44940  * nfft=len(wind[:,0]) # <<<<<<<<<<<<<<
44941  * wind[:,1] *=wind_filt(nfft,cutoff = self.cutoff)
44942  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
44943  */
44944  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_wind, __pyx_tuple__25); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2367, __pyx_L1_error)
44945  __Pyx_GOTREF(__pyx_t_12);
44946  __pyx_t_16 = PyObject_Length(__pyx_t_12); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2367, __pyx_L1_error)
44947  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44948  __pyx_v_nfft = __pyx_t_16;
44949 
44950  /* "WaveTools.py":2368
44951  * for wind in self.windows_rec:
44952  * nfft=len(wind[:,0])
44953  * wind[:,1] *=wind_filt(nfft,cutoff = self.cutoff) # <<<<<<<<<<<<<<
44954  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
44955  * self.N = min(self.N, len(decomp[0]))
44956  */
44957  __Pyx_INCREF(__pyx_tuple__26);
44958  __pyx_t_26 = __pyx_tuple__26;
44959  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_wind, __pyx_t_26); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2368, __pyx_L1_error)
44960  __Pyx_GOTREF(__pyx_t_12);
44961  __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nfft); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2368, __pyx_L1_error)
44962  __Pyx_GOTREF(__pyx_t_5);
44963  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2368, __pyx_L1_error)
44964  __Pyx_GOTREF(__pyx_t_6);
44965  __Pyx_GIVEREF(__pyx_t_5);
44966  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
44967  __pyx_t_5 = 0;
44968  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2368, __pyx_L1_error)
44969  __Pyx_GOTREF(__pyx_t_5);
44970  __pyx_t_23 = PyFloat_FromDouble(__pyx_v_self->cutoff); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2368, __pyx_L1_error)
44971  __Pyx_GOTREF(__pyx_t_23);
44972  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cutoff, __pyx_t_23) < 0) __PYX_ERR(0, 2368, __pyx_L1_error)
44973  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44974  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_v_wind_filt, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2368, __pyx_L1_error)
44975  __Pyx_GOTREF(__pyx_t_23);
44976  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
44977  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44978  __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_t_12, __pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2368, __pyx_L1_error)
44979  __Pyx_GOTREF(__pyx_t_5);
44980  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
44981  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
44982  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_t_26, __pyx_t_5) < 0)) __PYX_ERR(0, 2368, __pyx_L1_error)
44983  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
44984  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
44985 
44986  /* "WaveTools.py":2369
44987  * nfft=len(wind[:,0])
44988  * wind[:,1] *=wind_filt(nfft,cutoff = self.cutoff)
44989  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt) # <<<<<<<<<<<<<<
44990  * self.N = min(self.N, len(decomp[0]))
44991  * Nftemp = self.N
44992  */
44993  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_decompose_tseries); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2369, __pyx_L1_error)
44994  __Pyx_GOTREF(__pyx_t_23);
44995  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_wind, __pyx_tuple__25); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2369, __pyx_L1_error)
44996  __Pyx_GOTREF(__pyx_t_12);
44997  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_wind, __pyx_tuple__26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2369, __pyx_L1_error)
44998  __Pyx_GOTREF(__pyx_t_6);
44999  __pyx_t_25 = PyFloat_FromDouble(__pyx_v_self->dt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2369, __pyx_L1_error)
45000  __Pyx_GOTREF(__pyx_t_25);
45001  __pyx_t_14 = NULL;
45002  __pyx_t_3 = 0;
45003  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
45004  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_23);
45005  if (likely(__pyx_t_14)) {
45006  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
45007  __Pyx_INCREF(__pyx_t_14);
45008  __Pyx_INCREF(function);
45009  __Pyx_DECREF_SET(__pyx_t_23, function);
45010  __pyx_t_3 = 1;
45011  }
45012  }
45013  #if CYTHON_FAST_PYCALL
45014  if (PyFunction_Check(__pyx_t_23)) {
45015  PyObject *__pyx_temp[4] = {__pyx_t_14, __pyx_t_12, __pyx_t_6, __pyx_t_25};
45016  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_23, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2369, __pyx_L1_error)
45017  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
45018  __Pyx_GOTREF(__pyx_t_5);
45019  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45020  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45021  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45022  } else
45023  #endif
45024  #if CYTHON_FAST_PYCCALL
45025  if (__Pyx_PyFastCFunction_Check(__pyx_t_23)) {
45026  PyObject *__pyx_temp[4] = {__pyx_t_14, __pyx_t_12, __pyx_t_6, __pyx_t_25};
45027  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_23, __pyx_temp+1-__pyx_t_3, 3+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2369, __pyx_L1_error)
45028  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
45029  __Pyx_GOTREF(__pyx_t_5);
45030  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45031  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45032  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45033  } else
45034  #endif
45035  {
45036  __pyx_t_7 = PyTuple_New(3+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2369, __pyx_L1_error)
45037  __Pyx_GOTREF(__pyx_t_7);
45038  if (__pyx_t_14) {
45039  __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_14); __pyx_t_14 = NULL;
45040  }
45041  __Pyx_GIVEREF(__pyx_t_12);
45042  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_3, __pyx_t_12);
45043  __Pyx_GIVEREF(__pyx_t_6);
45044  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_3, __pyx_t_6);
45045  __Pyx_GIVEREF(__pyx_t_25);
45046  PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_3, __pyx_t_25);
45047  __pyx_t_12 = 0;
45048  __pyx_t_6 = 0;
45049  __pyx_t_25 = 0;
45050  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2369, __pyx_L1_error)
45051  __Pyx_GOTREF(__pyx_t_5);
45052  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45053  }
45054  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45055  __Pyx_XDECREF_SET(__pyx_v_decomp, __pyx_t_5);
45056  __pyx_t_5 = 0;
45057 
45058  /* "WaveTools.py":2370
45059  * wind[:,1] *=wind_filt(nfft,cutoff = self.cutoff)
45060  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
45061  * self.N = min(self.N, len(decomp[0])) # <<<<<<<<<<<<<<
45062  * Nftemp = self.N
45063  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
45064  */
45065  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2370, __pyx_L1_error)
45066  __Pyx_GOTREF(__pyx_t_5);
45067  __pyx_t_16 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2370, __pyx_L1_error)
45068  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45069  __pyx_t_3 = __pyx_v_self->N;
45070  if (((__pyx_t_16 < __pyx_t_3) != 0)) {
45071  __pyx_t_18 = __pyx_t_16;
45072  } else {
45073  __pyx_t_18 = __pyx_t_3;
45074  }
45075  __pyx_v_self->N = __pyx_t_18;
45076 
45077  /* "WaveTools.py":2371
45078  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
45079  * self.N = min(self.N, len(decomp[0]))
45080  * Nftemp = self.N # <<<<<<<<<<<<<<
45081  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
45082  * imax = min(ipeak + old_div(Nftemp,2),len(decomp[1]))
45083  */
45084  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2371, __pyx_L1_error)
45085  __Pyx_GOTREF(__pyx_t_5);
45086  __Pyx_XDECREF_SET(__pyx_v_Nftemp, __pyx_t_5);
45087  __pyx_t_5 = 0;
45088 
45089  /* "WaveTools.py":2372
45090  * self.N = min(self.N, len(decomp[0]))
45091  * Nftemp = self.N
45092  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0] # <<<<<<<<<<<<<<
45093  * imax = min(ipeak + old_div(Nftemp,2),len(decomp[1]))
45094  * imin = max(0,ipeak - old_div(Nftemp,2))
45095  */
45096  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2372, __pyx_L1_error)
45097  __Pyx_GOTREF(__pyx_t_23);
45098  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_where); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2372, __pyx_L1_error)
45099  __Pyx_GOTREF(__pyx_t_7);
45100  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45101  __pyx_t_23 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2372, __pyx_L1_error)
45102  __Pyx_GOTREF(__pyx_t_23);
45103  __pyx_t_25 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2372, __pyx_L1_error)
45104  __Pyx_GOTREF(__pyx_t_25);
45105  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_25); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2372, __pyx_L1_error)
45106  __Pyx_GOTREF(__pyx_t_6);
45107  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45108  __pyx_t_25 = PyObject_RichCompare(__pyx_t_23, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_25); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2372, __pyx_L1_error)
45109  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45110  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45111  __pyx_t_6 = NULL;
45112  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
45113  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
45114  if (likely(__pyx_t_6)) {
45115  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
45116  __Pyx_INCREF(__pyx_t_6);
45117  __Pyx_INCREF(function);
45118  __Pyx_DECREF_SET(__pyx_t_7, function);
45119  }
45120  }
45121  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_t_25) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_25);
45122  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
45123  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45124  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2372, __pyx_L1_error)
45125  __Pyx_GOTREF(__pyx_t_5);
45126  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45127  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2372, __pyx_L1_error)
45128  __Pyx_GOTREF(__pyx_t_7);
45129  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45130  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2372, __pyx_L1_error)
45131  __Pyx_GOTREF(__pyx_t_5);
45132  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45133  __Pyx_XDECREF_SET(__pyx_v_ipeak, __pyx_t_5);
45134  __pyx_t_5 = 0;
45135 
45136  /* "WaveTools.py":2373
45137  * Nftemp = self.N
45138  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
45139  * imax = min(ipeak + old_div(Nftemp,2),len(decomp[1])) # <<<<<<<<<<<<<<
45140  * imin = max(0,ipeak - old_div(Nftemp,2))
45141  * self.Nf = imax-imin
45142  */
45143  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2373, __pyx_L1_error)
45144  __Pyx_GOTREF(__pyx_t_5);
45145  __pyx_t_18 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2373, __pyx_L1_error)
45146  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45147  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_old_div); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2373, __pyx_L1_error)
45148  __Pyx_GOTREF(__pyx_t_7);
45149  __pyx_t_25 = NULL;
45150  __pyx_t_3 = 0;
45151  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
45152  __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_7);
45153  if (likely(__pyx_t_25)) {
45154  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
45155  __Pyx_INCREF(__pyx_t_25);
45156  __Pyx_INCREF(function);
45157  __Pyx_DECREF_SET(__pyx_t_7, function);
45158  __pyx_t_3 = 1;
45159  }
45160  }
45161  #if CYTHON_FAST_PYCALL
45162  if (PyFunction_Check(__pyx_t_7)) {
45163  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_v_Nftemp, __pyx_int_2};
45164  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2373, __pyx_L1_error)
45165  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45166  __Pyx_GOTREF(__pyx_t_5);
45167  } else
45168  #endif
45169  #if CYTHON_FAST_PYCCALL
45170  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
45171  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_v_Nftemp, __pyx_int_2};
45172  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2373, __pyx_L1_error)
45173  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45174  __Pyx_GOTREF(__pyx_t_5);
45175  } else
45176  #endif
45177  {
45178  __pyx_t_6 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2373, __pyx_L1_error)
45179  __Pyx_GOTREF(__pyx_t_6);
45180  if (__pyx_t_25) {
45181  __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_25); __pyx_t_25 = NULL;
45182  }
45183  __Pyx_INCREF(__pyx_v_Nftemp);
45184  __Pyx_GIVEREF(__pyx_v_Nftemp);
45185  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_3, __pyx_v_Nftemp);
45186  __Pyx_INCREF(__pyx_int_2);
45187  __Pyx_GIVEREF(__pyx_int_2);
45188  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_3, __pyx_int_2);
45189  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2373, __pyx_L1_error)
45190  __Pyx_GOTREF(__pyx_t_5);
45191  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45192  }
45193  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45194  __pyx_t_7 = PyNumber_Add(__pyx_v_ipeak, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2373, __pyx_L1_error)
45195  __Pyx_GOTREF(__pyx_t_7);
45196  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45197  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2373, __pyx_L1_error)
45198  __Pyx_GOTREF(__pyx_t_6);
45199  __pyx_t_25 = PyObject_RichCompare(__pyx_t_6, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_25); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2373, __pyx_L1_error)
45200  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45201  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_25); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2373, __pyx_L1_error)
45202  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45203  if (__pyx_t_10) {
45204  __pyx_t_25 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2373, __pyx_L1_error)
45205  __Pyx_GOTREF(__pyx_t_25);
45206  __pyx_t_5 = __pyx_t_25;
45207  __pyx_t_25 = 0;
45208  } else {
45209  __Pyx_INCREF(__pyx_t_7);
45210  __pyx_t_5 = __pyx_t_7;
45211  }
45212  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45213  __pyx_t_7 = __pyx_t_5;
45214  __Pyx_INCREF(__pyx_t_7);
45215  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45216  __Pyx_XDECREF_SET(__pyx_v_imax, __pyx_t_7);
45217  __pyx_t_7 = 0;
45218 
45219  /* "WaveTools.py":2374
45220  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
45221  * imax = min(ipeak + old_div(Nftemp,2),len(decomp[1]))
45222  * imin = max(0,ipeak - old_div(Nftemp,2)) # <<<<<<<<<<<<<<
45223  * self.Nf = imax-imin
45224  * if (self.Nf < self.N):
45225  */
45226  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2374, __pyx_L1_error)
45227  __Pyx_GOTREF(__pyx_t_5);
45228  __pyx_t_25 = NULL;
45229  __pyx_t_3 = 0;
45230  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
45231  __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
45232  if (likely(__pyx_t_25)) {
45233  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
45234  __Pyx_INCREF(__pyx_t_25);
45235  __Pyx_INCREF(function);
45236  __Pyx_DECREF_SET(__pyx_t_5, function);
45237  __pyx_t_3 = 1;
45238  }
45239  }
45240  #if CYTHON_FAST_PYCALL
45241  if (PyFunction_Check(__pyx_t_5)) {
45242  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_v_Nftemp, __pyx_int_2};
45243  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2374, __pyx_L1_error)
45244  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45245  __Pyx_GOTREF(__pyx_t_7);
45246  } else
45247  #endif
45248  #if CYTHON_FAST_PYCCALL
45249  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
45250  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_v_Nftemp, __pyx_int_2};
45251  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2374, __pyx_L1_error)
45252  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45253  __Pyx_GOTREF(__pyx_t_7);
45254  } else
45255  #endif
45256  {
45257  __pyx_t_6 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2374, __pyx_L1_error)
45258  __Pyx_GOTREF(__pyx_t_6);
45259  if (__pyx_t_25) {
45260  __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_25); __pyx_t_25 = NULL;
45261  }
45262  __Pyx_INCREF(__pyx_v_Nftemp);
45263  __Pyx_GIVEREF(__pyx_v_Nftemp);
45264  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_3, __pyx_v_Nftemp);
45265  __Pyx_INCREF(__pyx_int_2);
45266  __Pyx_GIVEREF(__pyx_int_2);
45267  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_3, __pyx_int_2);
45268  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2374, __pyx_L1_error)
45269  __Pyx_GOTREF(__pyx_t_7);
45270  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45271  }
45272  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45273  __pyx_t_5 = PyNumber_Subtract(__pyx_v_ipeak, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2374, __pyx_L1_error)
45274  __Pyx_GOTREF(__pyx_t_5);
45275  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45276  __pyx_t_15 = 0;
45277  __pyx_t_6 = __Pyx_PyInt_From_long(__pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2374, __pyx_L1_error)
45278  __Pyx_GOTREF(__pyx_t_6);
45279  __pyx_t_25 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_25); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2374, __pyx_L1_error)
45280  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45281  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_25); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2374, __pyx_L1_error)
45282  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45283  if (__pyx_t_10) {
45284  __Pyx_INCREF(__pyx_t_5);
45285  __pyx_t_7 = __pyx_t_5;
45286  } else {
45287  __pyx_t_25 = __Pyx_PyInt_From_long(__pyx_t_15); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2374, __pyx_L1_error)
45288  __Pyx_GOTREF(__pyx_t_25);
45289  __pyx_t_7 = __pyx_t_25;
45290  __pyx_t_25 = 0;
45291  }
45292  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45293  __pyx_t_5 = __pyx_t_7;
45294  __Pyx_INCREF(__pyx_t_5);
45295  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45296  __Pyx_XDECREF_SET(__pyx_v_imin, __pyx_t_5);
45297  __pyx_t_5 = 0;
45298 
45299  /* "WaveTools.py":2375
45300  * imax = min(ipeak + old_div(Nftemp,2),len(decomp[1]))
45301  * imin = max(0,ipeak - old_div(Nftemp,2))
45302  * self.Nf = imax-imin # <<<<<<<<<<<<<<
45303  * if (self.Nf < self.N):
45304  * if imin == 0:
45305  */
45306  __pyx_t_5 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2375, __pyx_L1_error)
45307  __Pyx_GOTREF(__pyx_t_5);
45308  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2375, __pyx_L1_error)
45309  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45310  __pyx_v_self->Nf = __pyx_t_3;
45311 
45312  /* "WaveTools.py":2376
45313  * imin = max(0,ipeak - old_div(Nftemp,2))
45314  * self.Nf = imax-imin
45315  * if (self.Nf < self.N): # <<<<<<<<<<<<<<
45316  * if imin == 0:
45317  * imax = imax + (self.N - self.Nf)
45318  */
45319  __pyx_t_10 = ((__pyx_v_self->Nf < __pyx_v_self->N) != 0);
45320  if (__pyx_t_10) {
45321 
45322  /* "WaveTools.py":2377
45323  * self.Nf = imax-imin
45324  * if (self.Nf < self.N):
45325  * if imin == 0: # <<<<<<<<<<<<<<
45326  * imax = imax + (self.N - self.Nf)
45327  * else:
45328  */
45329  __pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_v_imin, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2377, __pyx_L1_error)
45330  __Pyx_GOTREF(__pyx_t_5);
45331  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2377, __pyx_L1_error)
45332  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45333  if (__pyx_t_10) {
45334 
45335  /* "WaveTools.py":2378
45336  * if (self.Nf < self.N):
45337  * if imin == 0:
45338  * imax = imax + (self.N - self.Nf) # <<<<<<<<<<<<<<
45339  * else:
45340  * imin = imin - (self.N - self.Nf)
45341  */
45342  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_self->N - __pyx_v_self->Nf)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2378, __pyx_L1_error)
45343  __Pyx_GOTREF(__pyx_t_5);
45344  __pyx_t_7 = PyNumber_Add(__pyx_v_imax, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2378, __pyx_L1_error)
45345  __Pyx_GOTREF(__pyx_t_7);
45346  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45347  __Pyx_DECREF_SET(__pyx_v_imax, __pyx_t_7);
45348  __pyx_t_7 = 0;
45349 
45350  /* "WaveTools.py":2377
45351  * self.Nf = imax-imin
45352  * if (self.Nf < self.N):
45353  * if imin == 0: # <<<<<<<<<<<<<<
45354  * imax = imax + (self.N - self.Nf)
45355  * else:
45356  */
45357  goto __pyx_L70;
45358  }
45359 
45360  /* "WaveTools.py":2380
45361  * imax = imax + (self.N - self.Nf)
45362  * else:
45363  * imin = imin - (self.N - self.Nf) # <<<<<<<<<<<<<<
45364  * self.Nf = self.N
45365  *
45366  */
45367  /*else*/ {
45368  __pyx_t_7 = __Pyx_PyInt_From_int((__pyx_v_self->N - __pyx_v_self->Nf)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2380, __pyx_L1_error)
45369  __Pyx_GOTREF(__pyx_t_7);
45370  __pyx_t_5 = PyNumber_Subtract(__pyx_v_imin, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2380, __pyx_L1_error)
45371  __Pyx_GOTREF(__pyx_t_5);
45372  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45373  __Pyx_DECREF_SET(__pyx_v_imin, __pyx_t_5);
45374  __pyx_t_5 = 0;
45375  }
45376  __pyx_L70:;
45377 
45378  /* "WaveTools.py":2381
45379  * else:
45380  * imin = imin - (self.N - self.Nf)
45381  * self.Nf = self.N # <<<<<<<<<<<<<<
45382  *
45383  * decomp[1] = decomp[1][imin:imax]
45384  */
45385  __pyx_t_3 = __pyx_v_self->N;
45386  __pyx_v_self->Nf = __pyx_t_3;
45387 
45388  /* "WaveTools.py":2376
45389  * imin = max(0,ipeak - old_div(Nftemp,2))
45390  * self.Nf = imax-imin
45391  * if (self.Nf < self.N): # <<<<<<<<<<<<<<
45392  * if imin == 0:
45393  * imax = imax + (self.N - self.Nf)
45394  */
45395  }
45396 
45397  /* "WaveTools.py":2383
45398  * self.Nf = self.N
45399  *
45400  * decomp[1] = decomp[1][imin:imax] # <<<<<<<<<<<<<<
45401  * decomp[0] = decomp[0][imin:imax]
45402  * decomp[2] = -decomp[2][imin:imax]
45403  */
45404  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2383, __pyx_L1_error)
45405  __Pyx_GOTREF(__pyx_t_5);
45406  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_5, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2383, __pyx_L1_error)
45407  __Pyx_GOTREF(__pyx_t_7);
45408  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45409  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 1, __pyx_t_7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2383, __pyx_L1_error)
45410  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45411 
45412  /* "WaveTools.py":2384
45413  *
45414  * decomp[1] = decomp[1][imin:imax]
45415  * decomp[0] = decomp[0][imin:imax] # <<<<<<<<<<<<<<
45416  * decomp[2] = -decomp[2][imin:imax]
45417  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
45418  */
45419  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2384, __pyx_L1_error)
45420  __Pyx_GOTREF(__pyx_t_7);
45421  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_7, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2384, __pyx_L1_error)
45422  __Pyx_GOTREF(__pyx_t_5);
45423  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45424  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 0, __pyx_t_5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2384, __pyx_L1_error)
45425  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45426 
45427  /* "WaveTools.py":2385
45428  * decomp[1] = decomp[1][imin:imax]
45429  * decomp[0] = decomp[0][imin:imax]
45430  * decomp[2] = -decomp[2][imin:imax] # <<<<<<<<<<<<<<
45431  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
45432  * kDir = np.zeros((len(ki),3),"d")
45433  */
45434  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_decomp, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2385, __pyx_L1_error)
45435  __Pyx_GOTREF(__pyx_t_5);
45436  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_5, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2385, __pyx_L1_error)
45437  __Pyx_GOTREF(__pyx_t_7);
45438  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45439  __pyx_t_5 = PyNumber_Negative(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2385, __pyx_L1_error)
45440  __Pyx_GOTREF(__pyx_t_5);
45441  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45442  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 2, __pyx_t_5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2385, __pyx_L1_error)
45443  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45444 
45445  /* "WaveTools.py":2386
45446  * decomp[0] = decomp[0][imin:imax]
45447  * decomp[2] = -decomp[2][imin:imax]
45448  * ki = dispersion(decomp[0],self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
45449  * kDir = np.zeros((len(ki),3),"d")
45450  * Tlag = np.zeros(ki.shape,)
45451  */
45452  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_dispersion); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2386, __pyx_L1_error)
45453  __Pyx_GOTREF(__pyx_t_5);
45454  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2386, __pyx_L1_error)
45455  __Pyx_GOTREF(__pyx_t_7);
45456  __pyx_t_25 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2386, __pyx_L1_error)
45457  __Pyx_GOTREF(__pyx_t_25);
45458  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2386, __pyx_L1_error)
45459  __Pyx_GOTREF(__pyx_t_6);
45460  __Pyx_GIVEREF(__pyx_t_7);
45461  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
45462  __Pyx_GIVEREF(__pyx_t_25);
45463  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_25);
45464  __pyx_t_7 = 0;
45465  __pyx_t_25 = 0;
45466  __pyx_t_25 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2386, __pyx_L1_error)
45467  __Pyx_GOTREF(__pyx_t_25);
45468  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->gAbs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2386, __pyx_L1_error)
45469  __Pyx_GOTREF(__pyx_t_7);
45470  if (PyDict_SetItem(__pyx_t_25, __pyx_n_s_g, __pyx_t_7) < 0) __PYX_ERR(0, 2386, __pyx_L1_error)
45471  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45472  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_25); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2386, __pyx_L1_error)
45473  __Pyx_GOTREF(__pyx_t_7);
45474  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45475  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45476  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45477  __Pyx_XDECREF_SET(__pyx_v_ki, __pyx_t_7);
45478  __pyx_t_7 = 0;
45479 
45480  /* "WaveTools.py":2387
45481  * decomp[2] = -decomp[2][imin:imax]
45482  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
45483  * kDir = np.zeros((len(ki),3),"d") # <<<<<<<<<<<<<<
45484  * Tlag = np.zeros(ki.shape,)
45485  * for ii in range(len(ki)):
45486  */
45487  __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2387, __pyx_L1_error)
45488  __Pyx_GOTREF(__pyx_t_25);
45489  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2387, __pyx_L1_error)
45490  __Pyx_GOTREF(__pyx_t_6);
45491  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45492  __pyx_t_18 = PyObject_Length(__pyx_v_ki); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2387, __pyx_L1_error)
45493  __pyx_t_25 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2387, __pyx_L1_error)
45494  __Pyx_GOTREF(__pyx_t_25);
45495  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2387, __pyx_L1_error)
45496  __Pyx_GOTREF(__pyx_t_5);
45497  __Pyx_GIVEREF(__pyx_t_25);
45498  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25);
45499  __Pyx_INCREF(__pyx_int_3);
45500  __Pyx_GIVEREF(__pyx_int_3);
45501  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
45502  __pyx_t_25 = 0;
45503  __pyx_t_25 = NULL;
45504  __pyx_t_3 = 0;
45505  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
45506  __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
45507  if (likely(__pyx_t_25)) {
45508  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
45509  __Pyx_INCREF(__pyx_t_25);
45510  __Pyx_INCREF(function);
45511  __Pyx_DECREF_SET(__pyx_t_6, function);
45512  __pyx_t_3 = 1;
45513  }
45514  }
45515  #if CYTHON_FAST_PYCALL
45516  if (PyFunction_Check(__pyx_t_6)) {
45517  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_t_5, __pyx_n_s_d};
45518  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2387, __pyx_L1_error)
45519  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45520  __Pyx_GOTREF(__pyx_t_7);
45521  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45522  } else
45523  #endif
45524  #if CYTHON_FAST_PYCCALL
45525  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
45526  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_t_5, __pyx_n_s_d};
45527  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2387, __pyx_L1_error)
45528  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45529  __Pyx_GOTREF(__pyx_t_7);
45530  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45531  } else
45532  #endif
45533  {
45534  __pyx_t_23 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2387, __pyx_L1_error)
45535  __Pyx_GOTREF(__pyx_t_23);
45536  if (__pyx_t_25) {
45537  __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_25); __pyx_t_25 = NULL;
45538  }
45539  __Pyx_GIVEREF(__pyx_t_5);
45540  PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_3, __pyx_t_5);
45541  __Pyx_INCREF(__pyx_n_s_d);
45542  __Pyx_GIVEREF(__pyx_n_s_d);
45543  PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_3, __pyx_n_s_d);
45544  __pyx_t_5 = 0;
45545  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2387, __pyx_L1_error)
45546  __Pyx_GOTREF(__pyx_t_7);
45547  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45548  }
45549  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45550  __Pyx_XDECREF_SET(__pyx_v_kDir, __pyx_t_7);
45551  __pyx_t_7 = 0;
45552 
45553  /* "WaveTools.py":2388
45554  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
45555  * kDir = np.zeros((len(ki),3),"d")
45556  * Tlag = np.zeros(ki.shape,) # <<<<<<<<<<<<<<
45557  * for ii in range(len(ki)):
45558  * kDir[ii,:] = ki[ii]*self.waveDir[:]
45559  */
45560  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2388, __pyx_L1_error)
45561  __Pyx_GOTREF(__pyx_t_6);
45562  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2388, __pyx_L1_error)
45563  __Pyx_GOTREF(__pyx_t_23);
45564  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45565  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ki, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2388, __pyx_L1_error)
45566  __Pyx_GOTREF(__pyx_t_6);
45567  __pyx_t_5 = NULL;
45568  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
45569  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
45570  if (likely(__pyx_t_5)) {
45571  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
45572  __Pyx_INCREF(__pyx_t_5);
45573  __Pyx_INCREF(function);
45574  __Pyx_DECREF_SET(__pyx_t_23, function);
45575  }
45576  }
45577  __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_23, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_6);
45578  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
45579  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45580  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2388, __pyx_L1_error)
45581  __Pyx_GOTREF(__pyx_t_7);
45582  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45583  __Pyx_XDECREF_SET(__pyx_v_Tlag, __pyx_t_7);
45584  __pyx_t_7 = 0;
45585 
45586  /* "WaveTools.py":2389
45587  * kDir = np.zeros((len(ki),3),"d")
45588  * Tlag = np.zeros(ki.shape,)
45589  * for ii in range(len(ki)): # <<<<<<<<<<<<<<
45590  * kDir[ii,:] = ki[ii]*self.waveDir[:]
45591  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii])
45592  */
45593  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_range); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2389, __pyx_L1_error)
45594  __Pyx_GOTREF(__pyx_t_23);
45595  __pyx_t_18 = PyObject_Length(__pyx_v_ki); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2389, __pyx_L1_error)
45596  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2389, __pyx_L1_error)
45597  __Pyx_GOTREF(__pyx_t_6);
45598  __pyx_t_5 = NULL;
45599  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
45600  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
45601  if (likely(__pyx_t_5)) {
45602  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
45603  __Pyx_INCREF(__pyx_t_5);
45604  __Pyx_INCREF(function);
45605  __Pyx_DECREF_SET(__pyx_t_23, function);
45606  }
45607  }
45608  __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_23, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_6);
45609  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
45610  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45611  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2389, __pyx_L1_error)
45612  __Pyx_GOTREF(__pyx_t_7);
45613  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45614  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
45615  __pyx_t_23 = __pyx_t_7; __Pyx_INCREF(__pyx_t_23); __pyx_t_18 = 0;
45616  __pyx_t_13 = NULL;
45617  } else {
45618  __pyx_t_18 = -1; __pyx_t_23 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2389, __pyx_L1_error)
45619  __Pyx_GOTREF(__pyx_t_23);
45620  __pyx_t_13 = Py_TYPE(__pyx_t_23)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2389, __pyx_L1_error)
45621  }
45622  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45623  for (;;) {
45624  if (likely(!__pyx_t_13)) {
45625  if (likely(PyList_CheckExact(__pyx_t_23))) {
45626  if (__pyx_t_18 >= PyList_GET_SIZE(__pyx_t_23)) break;
45627  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
45628  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_23, __pyx_t_18); __Pyx_INCREF(__pyx_t_7); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 2389, __pyx_L1_error)
45629  #else
45630  __pyx_t_7 = PySequence_ITEM(__pyx_t_23, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2389, __pyx_L1_error)
45631  __Pyx_GOTREF(__pyx_t_7);
45632  #endif
45633  } else {
45634  if (__pyx_t_18 >= PyTuple_GET_SIZE(__pyx_t_23)) break;
45635  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
45636  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_23, __pyx_t_18); __Pyx_INCREF(__pyx_t_7); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 2389, __pyx_L1_error)
45637  #else
45638  __pyx_t_7 = PySequence_ITEM(__pyx_t_23, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2389, __pyx_L1_error)
45639  __Pyx_GOTREF(__pyx_t_7);
45640  #endif
45641  }
45642  } else {
45643  __pyx_t_7 = __pyx_t_13(__pyx_t_23);
45644  if (unlikely(!__pyx_t_7)) {
45645  PyObject* exc_type = PyErr_Occurred();
45646  if (exc_type) {
45647  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
45648  else __PYX_ERR(0, 2389, __pyx_L1_error)
45649  }
45650  break;
45651  }
45652  __Pyx_GOTREF(__pyx_t_7);
45653  }
45654  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_7);
45655  __pyx_t_7 = 0;
45656 
45657  /* "WaveTools.py":2390
45658  * Tlag = np.zeros(ki.shape,)
45659  * for ii in range(len(ki)):
45660  * kDir[ii,:] = ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
45661  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii])
45662  * self.Tlag = max(Tlag)
45663  */
45664  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_ki, __pyx_v_ii); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2390, __pyx_L1_error)
45665  __Pyx_GOTREF(__pyx_t_7);
45666  __pyx_t_6 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2390, __pyx_L1_error)
45667  __Pyx_GOTREF(__pyx_t_6);
45668  __pyx_t_5 = PyNumber_Multiply(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2390, __pyx_L1_error)
45669  __Pyx_GOTREF(__pyx_t_5);
45670  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45671  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45672  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2390, __pyx_L1_error)
45673  __Pyx_GOTREF(__pyx_t_6);
45674  __Pyx_INCREF(__pyx_v_ii);
45675  __Pyx_GIVEREF(__pyx_v_ii);
45676  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ii);
45677  __Pyx_INCREF(__pyx_slice__4);
45678  __Pyx_GIVEREF(__pyx_slice__4);
45679  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__4);
45680  if (unlikely(PyObject_SetItem(__pyx_v_kDir, __pyx_t_6, __pyx_t_5) < 0)) __PYX_ERR(0, 2390, __pyx_L1_error)
45681  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45682  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45683 
45684  /* "WaveTools.py":2391
45685  * for ii in range(len(ki)):
45686  * kDir[ii,:] = ki[ii]*self.waveDir[:]
45687  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii]) # <<<<<<<<<<<<<<
45688  * self.Tlag = max(Tlag)
45689  * if self.Tlag > (old_div(self.Toverlap,2.) - self.cutoff*self.Twindow):
45690  */
45691  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2391, __pyx_L1_error)
45692  __Pyx_GOTREF(__pyx_t_6);
45693  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2391, __pyx_L1_error)
45694  __Pyx_GOTREF(__pyx_t_7);
45695  __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2391, __pyx_L1_error)
45696  __Pyx_GOTREF(__pyx_t_25);
45697  __Pyx_INCREF(__pyx_v_ii);
45698  __Pyx_GIVEREF(__pyx_v_ii);
45699  PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_v_ii);
45700  __Pyx_INCREF(__pyx_slice__4);
45701  __Pyx_GIVEREF(__pyx_slice__4);
45702  PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_slice__4);
45703  __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_kDir, __pyx_t_25); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2391, __pyx_L1_error)
45704  __Pyx_GOTREF(__pyx_t_12);
45705  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45706  __pyx_t_25 = PyNumber_Multiply(__pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2391, __pyx_L1_error)
45707  __Pyx_GOTREF(__pyx_t_25);
45708  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45709  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45710  __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_25); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2391, __pyx_L1_error)
45711  __Pyx_GOTREF(__pyx_t_12);
45712  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45713  __pyx_t_25 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2391, __pyx_L1_error)
45714  __Pyx_GOTREF(__pyx_t_25);
45715  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_25, __pyx_v_ii); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2391, __pyx_L1_error)
45716  __Pyx_GOTREF(__pyx_t_7);
45717  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
45718  __pyx_t_25 = NULL;
45719  __pyx_t_3 = 0;
45720  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
45721  __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
45722  if (likely(__pyx_t_25)) {
45723  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
45724  __Pyx_INCREF(__pyx_t_25);
45725  __Pyx_INCREF(function);
45726  __Pyx_DECREF_SET(__pyx_t_6, function);
45727  __pyx_t_3 = 1;
45728  }
45729  }
45730  #if CYTHON_FAST_PYCALL
45731  if (PyFunction_Check(__pyx_t_6)) {
45732  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_t_12, __pyx_t_7};
45733  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2391, __pyx_L1_error)
45734  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45735  __Pyx_GOTREF(__pyx_t_5);
45736  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45737  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45738  } else
45739  #endif
45740  #if CYTHON_FAST_PYCCALL
45741  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
45742  PyObject *__pyx_temp[3] = {__pyx_t_25, __pyx_t_12, __pyx_t_7};
45743  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2391, __pyx_L1_error)
45744  __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
45745  __Pyx_GOTREF(__pyx_t_5);
45746  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45747  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
45748  } else
45749  #endif
45750  {
45751  __pyx_t_14 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2391, __pyx_L1_error)
45752  __Pyx_GOTREF(__pyx_t_14);
45753  if (__pyx_t_25) {
45754  __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_25); __pyx_t_25 = NULL;
45755  }
45756  __Pyx_GIVEREF(__pyx_t_12);
45757  PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_3, __pyx_t_12);
45758  __Pyx_GIVEREF(__pyx_t_7);
45759  PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_3, __pyx_t_7);
45760  __pyx_t_12 = 0;
45761  __pyx_t_7 = 0;
45762  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2391, __pyx_L1_error)
45763  __Pyx_GOTREF(__pyx_t_5);
45764  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
45765  }
45766  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45767  if (unlikely(PyObject_SetItem(__pyx_v_Tlag, __pyx_v_ii, __pyx_t_5) < 0)) __PYX_ERR(0, 2391, __pyx_L1_error)
45768  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45769 
45770  /* "WaveTools.py":2389
45771  * kDir = np.zeros((len(ki),3),"d")
45772  * Tlag = np.zeros(ki.shape,)
45773  * for ii in range(len(ki)): # <<<<<<<<<<<<<<
45774  * kDir[ii,:] = ki[ii]*self.waveDir[:]
45775  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii])
45776  */
45777  }
45778  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45779 
45780  /* "WaveTools.py":2392
45781  * kDir[ii,:] = ki[ii]*self.waveDir[:]
45782  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii])
45783  * self.Tlag = max(Tlag) # <<<<<<<<<<<<<<
45784  * if self.Tlag > (old_div(self.Toverlap,2.) - self.cutoff*self.Twindow):
45785  * logEvent("ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone")
45786  */
45787  __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_Tlag); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2392, __pyx_L1_error)
45788  __Pyx_GOTREF(__pyx_t_23);
45789  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2392, __pyx_L1_error)
45790  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45791  __pyx_v_self->Tlag = __pyx_t_2;
45792 
45793  /* "WaveTools.py":2393
45794  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii])
45795  * self.Tlag = max(Tlag)
45796  * if self.Tlag > (old_div(self.Toverlap,2.) - self.cutoff*self.Twindow): # <<<<<<<<<<<<<<
45797  * logEvent("ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone")
45798  * sys.exit(1)
45799  */
45800  __pyx_t_23 = PyFloat_FromDouble(__pyx_v_self->Tlag); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2393, __pyx_L1_error)
45801  __Pyx_GOTREF(__pyx_t_23);
45802  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2393, __pyx_L1_error)
45803  __Pyx_GOTREF(__pyx_t_6);
45804  __pyx_t_14 = PyFloat_FromDouble(__pyx_v_self->Toverlap); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2393, __pyx_L1_error)
45805  __Pyx_GOTREF(__pyx_t_14);
45806  __pyx_t_7 = NULL;
45807  __pyx_t_3 = 0;
45808  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
45809  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
45810  if (likely(__pyx_t_7)) {
45811  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
45812  __Pyx_INCREF(__pyx_t_7);
45813  __Pyx_INCREF(function);
45814  __Pyx_DECREF_SET(__pyx_t_6, function);
45815  __pyx_t_3 = 1;
45816  }
45817  }
45818  #if CYTHON_FAST_PYCALL
45819  if (PyFunction_Check(__pyx_t_6)) {
45820  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_14, __pyx_float_2_};
45821  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2393, __pyx_L1_error)
45822  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
45823  __Pyx_GOTREF(__pyx_t_5);
45824  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
45825  } else
45826  #endif
45827  #if CYTHON_FAST_PYCCALL
45828  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
45829  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_14, __pyx_float_2_};
45830  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_3, 2+__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2393, __pyx_L1_error)
45831  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
45832  __Pyx_GOTREF(__pyx_t_5);
45833  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
45834  } else
45835  #endif
45836  {
45837  __pyx_t_12 = PyTuple_New(2+__pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2393, __pyx_L1_error)
45838  __Pyx_GOTREF(__pyx_t_12);
45839  if (__pyx_t_7) {
45840  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL;
45841  }
45842  __Pyx_GIVEREF(__pyx_t_14);
45843  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_3, __pyx_t_14);
45844  __Pyx_INCREF(__pyx_float_2_);
45845  __Pyx_GIVEREF(__pyx_float_2_);
45846  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_3, __pyx_float_2_);
45847  __pyx_t_14 = 0;
45848  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2393, __pyx_L1_error)
45849  __Pyx_GOTREF(__pyx_t_5);
45850  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45851  }
45852  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45853  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_self->cutoff * __pyx_v_self->Twindow)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2393, __pyx_L1_error)
45854  __Pyx_GOTREF(__pyx_t_6);
45855  __pyx_t_12 = PyNumber_Subtract(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2393, __pyx_L1_error)
45856  __Pyx_GOTREF(__pyx_t_12);
45857  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
45858  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45859  __pyx_t_6 = PyObject_RichCompare(__pyx_t_23, __pyx_t_12, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2393, __pyx_L1_error)
45860  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45861  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45862  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2393, __pyx_L1_error)
45863  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45864  if (__pyx_t_10) {
45865 
45866  /* "WaveTools.py":2394
45867  * self.Tlag = max(Tlag)
45868  * if self.Tlag > (old_div(self.Toverlap,2.) - self.cutoff*self.Twindow):
45869  * logEvent("ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone") # <<<<<<<<<<<<<<
45870  * sys.exit(1)
45871  * decomp.append(kDir)
45872  */
45873  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2394, __pyx_L1_error)
45874  __Pyx_GOTREF(__pyx_t_12);
45875  __pyx_t_23 = NULL;
45876  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
45877  __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_12);
45878  if (likely(__pyx_t_23)) {
45879  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
45880  __Pyx_INCREF(__pyx_t_23);
45881  __Pyx_INCREF(function);
45882  __Pyx_DECREF_SET(__pyx_t_12, function);
45883  }
45884  }
45885  __pyx_t_6 = (__pyx_t_23) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_23, __pyx_kp_s_ERROR_WaveTools_py_Relaxation_zo) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_kp_s_ERROR_WaveTools_py_Relaxation_zo);
45886  __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
45887  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2394, __pyx_L1_error)
45888  __Pyx_GOTREF(__pyx_t_6);
45889  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45890  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45891 
45892  /* "WaveTools.py":2395
45893  * if self.Tlag > (old_div(self.Toverlap,2.) - self.cutoff*self.Twindow):
45894  * logEvent("ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone")
45895  * sys.exit(1) # <<<<<<<<<<<<<<
45896  * decomp.append(kDir)
45897  * decomp.append(ki)
45898  */
45899  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_sys); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2395, __pyx_L1_error)
45900  __Pyx_GOTREF(__pyx_t_12);
45901  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exit); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2395, __pyx_L1_error)
45902  __Pyx_GOTREF(__pyx_t_23);
45903  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
45904  __pyx_t_12 = NULL;
45905  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
45906  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_23);
45907  if (likely(__pyx_t_12)) {
45908  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
45909  __Pyx_INCREF(__pyx_t_12);
45910  __Pyx_INCREF(function);
45911  __Pyx_DECREF_SET(__pyx_t_23, function);
45912  }
45913  }
45914  __pyx_t_6 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_23, __pyx_t_12, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_int_1);
45915  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
45916  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2395, __pyx_L1_error)
45917  __Pyx_GOTREF(__pyx_t_6);
45918  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45919  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
45920 
45921  /* "WaveTools.py":2393
45922  * Tlag[ii] = old_div(sum(Lgen[:]*kDir[ii,:]),decomp[0][ii])
45923  * self.Tlag = max(Tlag)
45924  * if self.Tlag > (old_div(self.Toverlap,2.) - self.cutoff*self.Twindow): # <<<<<<<<<<<<<<
45925  * logEvent("ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone")
45926  * sys.exit(1)
45927  */
45928  }
45929 
45930  /* "WaveTools.py":2396
45931  * logEvent("ERROR!: WaveTools.py: Relaxation zone lenght does not allow for spatial coherency in the windows method.Please a) increase number of waves per window or b) increase overlap or c) decrease lenght of the relaxation zone")
45932  * sys.exit(1)
45933  * decomp.append(kDir) # <<<<<<<<<<<<<<
45934  * decomp.append(ki)
45935  *
45936  */
45937  __pyx_t_24 = __Pyx_PyObject_Append(__pyx_v_decomp, __pyx_v_kDir); if (unlikely(__pyx_t_24 == ((int)-1))) __PYX_ERR(0, 2396, __pyx_L1_error)
45938 
45939  /* "WaveTools.py":2397
45940  * sys.exit(1)
45941  * decomp.append(kDir)
45942  * decomp.append(ki) # <<<<<<<<<<<<<<
45943  *
45944  * self.decompose_window.append(decomp)
45945  */
45946  __pyx_t_24 = __Pyx_PyObject_Append(__pyx_v_decomp, __pyx_v_ki); if (unlikely(__pyx_t_24 == ((int)-1))) __PYX_ERR(0, 2397, __pyx_L1_error)
45947 
45948  /* "WaveTools.py":2399
45949  * decomp.append(ki)
45950  *
45951  * self.decompose_window.append(decomp) # <<<<<<<<<<<<<<
45952  *
45953  *
45954  */
45955  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
45956  PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
45957  __PYX_ERR(0, 2399, __pyx_L1_error)
45958  }
45959  __pyx_t_24 = __Pyx_PyList_Append(__pyx_v_self->decompose_window, __pyx_v_decomp); if (unlikely(__pyx_t_24 == ((int)-1))) __PYX_ERR(0, 2399, __pyx_L1_error)
45960 
45961  /* "WaveTools.py":2366
45962  * # ii = 0
45963  *
45964  * for wind in self.windows_rec: # <<<<<<<<<<<<<<
45965  * nfft=len(wind[:,0])
45966  * wind[:,1] *=wind_filt(nfft,cutoff = self.cutoff)
45967  */
45968  }
45969  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
45970 
45971  /* "WaveTools.py":2404
45972  * #c++ declarations
45973  *
45974  * for ii in range(len(self.windows_handover)): # <<<<<<<<<<<<<<
45975  * self.whand_c[ii] = self.windows_handover[ii]
45976  * self.T0[ii] = self.windows_rec[ii][0,0]
45977  */
45978  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2404, __pyx_L1_error)
45979  __Pyx_GOTREF(__pyx_t_6);
45980  __pyx_t_23 = __pyx_v_self->windows_handover;
45981  __Pyx_INCREF(__pyx_t_23);
45982  if (unlikely(__pyx_t_23 == Py_None)) {
45983  PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
45984  __PYX_ERR(0, 2404, __pyx_L1_error)
45985  }
45986  __pyx_t_8 = PyList_GET_SIZE(__pyx_t_23); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2404, __pyx_L1_error)
45987  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
45988  __pyx_t_23 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2404, __pyx_L1_error)
45989  __Pyx_GOTREF(__pyx_t_23);
45990  __pyx_t_12 = NULL;
45991  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
45992  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
45993  if (likely(__pyx_t_12)) {
45994  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
45995  __Pyx_INCREF(__pyx_t_12);
45996  __Pyx_INCREF(function);
45997  __Pyx_DECREF_SET(__pyx_t_6, function);
45998  }
45999  }
46000  __pyx_t_11 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_12, __pyx_t_23) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_23);
46001  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
46002  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46003  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2404, __pyx_L1_error)
46004  __Pyx_GOTREF(__pyx_t_11);
46005  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46006  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
46007  __pyx_t_6 = __pyx_t_11; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
46008  __pyx_t_13 = NULL;
46009  } else {
46010  __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2404, __pyx_L1_error)
46011  __Pyx_GOTREF(__pyx_t_6);
46012  __pyx_t_13 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2404, __pyx_L1_error)
46013  }
46014  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46015  for (;;) {
46016  if (likely(!__pyx_t_13)) {
46017  if (likely(PyList_CheckExact(__pyx_t_6))) {
46018  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
46019  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46020  __pyx_t_11 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2404, __pyx_L1_error)
46021  #else
46022  __pyx_t_11 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2404, __pyx_L1_error)
46023  __Pyx_GOTREF(__pyx_t_11);
46024  #endif
46025  } else {
46026  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
46027  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46028  __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2404, __pyx_L1_error)
46029  #else
46030  __pyx_t_11 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2404, __pyx_L1_error)
46031  __Pyx_GOTREF(__pyx_t_11);
46032  #endif
46033  }
46034  } else {
46035  __pyx_t_11 = __pyx_t_13(__pyx_t_6);
46036  if (unlikely(!__pyx_t_11)) {
46037  PyObject* exc_type = PyErr_Occurred();
46038  if (exc_type) {
46039  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
46040  else __PYX_ERR(0, 2404, __pyx_L1_error)
46041  }
46042  break;
46043  }
46044  __Pyx_GOTREF(__pyx_t_11);
46045  }
46046  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_11);
46047  __pyx_t_11 = 0;
46048 
46049  /* "WaveTools.py":2405
46050  *
46051  * for ii in range(len(self.windows_handover)):
46052  * self.whand_c[ii] = self.windows_handover[ii] # <<<<<<<<<<<<<<
46053  * self.T0[ii] = self.windows_rec[ii][0,0]
46054  * self.whand_ = self.whand_c
46055  */
46056  if (unlikely(__pyx_v_self->windows_handover == Py_None)) {
46057  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46058  __PYX_ERR(0, 2405, __pyx_L1_error)
46059  }
46060  __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_self->windows_handover, __pyx_v_ii); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2405, __pyx_L1_error)
46061  __Pyx_GOTREF(__pyx_t_11);
46062  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2405, __pyx_L1_error)
46063  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46064  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2405, __pyx_L1_error)
46065  (__pyx_v_self->whand_c[__pyx_t_18]) = __pyx_t_2;
46066 
46067  /* "WaveTools.py":2406
46068  * for ii in range(len(self.windows_handover)):
46069  * self.whand_c[ii] = self.windows_handover[ii]
46070  * self.T0[ii] = self.windows_rec[ii][0,0] # <<<<<<<<<<<<<<
46071  * self.whand_ = self.whand_c
46072  * self.T0_ = self.T0
46073  */
46074  if (unlikely(__pyx_v_self->windows_rec == Py_None)) {
46075  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46076  __PYX_ERR(0, 2406, __pyx_L1_error)
46077  }
46078  __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_self->windows_rec, __pyx_v_ii); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2406, __pyx_L1_error)
46079  __Pyx_GOTREF(__pyx_t_11);
46080  __pyx_t_23 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_tuple__46); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2406, __pyx_L1_error)
46081  __Pyx_GOTREF(__pyx_t_23);
46082  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46083  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2406, __pyx_L1_error)
46084  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46085  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2406, __pyx_L1_error)
46086  (__pyx_v_self->T0[__pyx_t_18]) = __pyx_t_2;
46087 
46088  /* "WaveTools.py":2404
46089  * #c++ declarations
46090  *
46091  * for ii in range(len(self.windows_handover)): # <<<<<<<<<<<<<<
46092  * self.whand_c[ii] = self.windows_handover[ii]
46093  * self.T0[ii] = self.windows_rec[ii][0,0]
46094  */
46095  }
46096  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46097 
46098  /* "WaveTools.py":2407
46099  * self.whand_c[ii] = self.windows_handover[ii]
46100  * self.T0[ii] = self.windows_rec[ii][0,0]
46101  * self.whand_ = self.whand_c # <<<<<<<<<<<<<<
46102  * self.T0_ = self.T0
46103  * for ii in range(self.Nwindows):
46104  */
46105  __pyx_t_19 = __pyx_v_self->whand_c;
46106  __pyx_v_self->whand_ = __pyx_t_19;
46107 
46108  /* "WaveTools.py":2408
46109  * self.T0[ii] = self.windows_rec[ii][0,0]
46110  * self.whand_ = self.whand_c
46111  * self.T0_ = self.T0 # <<<<<<<<<<<<<<
46112  * for ii in range(self.Nwindows):
46113  * for jj in range(self.N):
46114  */
46115  __pyx_t_19 = __pyx_v_self->T0;
46116  __pyx_v_self->T0_ = __pyx_t_19;
46117 
46118  /* "WaveTools.py":2409
46119  * self.whand_ = self.whand_c
46120  * self.T0_ = self.T0
46121  * for ii in range(self.Nwindows): # <<<<<<<<<<<<<<
46122  * for jj in range(self.N):
46123  * ij = ii*self.N + jj
46124  */
46125  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_n_s_range); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2409, __pyx_L1_error)
46126  __Pyx_GOTREF(__pyx_t_23);
46127  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_self->Nwindows); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2409, __pyx_L1_error)
46128  __Pyx_GOTREF(__pyx_t_11);
46129  __pyx_t_12 = NULL;
46130  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) {
46131  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_23);
46132  if (likely(__pyx_t_12)) {
46133  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
46134  __Pyx_INCREF(__pyx_t_12);
46135  __Pyx_INCREF(function);
46136  __Pyx_DECREF_SET(__pyx_t_23, function);
46137  }
46138  }
46139  __pyx_t_6 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_23, __pyx_t_12, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_11);
46140  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
46141  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46142  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2409, __pyx_L1_error)
46143  __Pyx_GOTREF(__pyx_t_6);
46144  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46145  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
46146  __pyx_t_23 = __pyx_t_6; __Pyx_INCREF(__pyx_t_23); __pyx_t_8 = 0;
46147  __pyx_t_13 = NULL;
46148  } else {
46149  __pyx_t_8 = -1; __pyx_t_23 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2409, __pyx_L1_error)
46150  __Pyx_GOTREF(__pyx_t_23);
46151  __pyx_t_13 = Py_TYPE(__pyx_t_23)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2409, __pyx_L1_error)
46152  }
46153  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46154  for (;;) {
46155  if (likely(!__pyx_t_13)) {
46156  if (likely(PyList_CheckExact(__pyx_t_23))) {
46157  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_23)) break;
46158  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46159  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_23, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2409, __pyx_L1_error)
46160  #else
46161  __pyx_t_6 = PySequence_ITEM(__pyx_t_23, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2409, __pyx_L1_error)
46162  __Pyx_GOTREF(__pyx_t_6);
46163  #endif
46164  } else {
46165  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_23)) break;
46166  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46167  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_23, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2409, __pyx_L1_error)
46168  #else
46169  __pyx_t_6 = PySequence_ITEM(__pyx_t_23, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2409, __pyx_L1_error)
46170  __Pyx_GOTREF(__pyx_t_6);
46171  #endif
46172  }
46173  } else {
46174  __pyx_t_6 = __pyx_t_13(__pyx_t_23);
46175  if (unlikely(!__pyx_t_6)) {
46176  PyObject* exc_type = PyErr_Occurred();
46177  if (exc_type) {
46178  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
46179  else __PYX_ERR(0, 2409, __pyx_L1_error)
46180  }
46181  break;
46182  }
46183  __Pyx_GOTREF(__pyx_t_6);
46184  }
46185  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_6);
46186  __pyx_t_6 = 0;
46187 
46188  /* "WaveTools.py":2410
46189  * self.T0_ = self.T0
46190  * for ii in range(self.Nwindows):
46191  * for jj in range(self.N): # <<<<<<<<<<<<<<
46192  * ij = ii*self.N + jj
46193  * if(jj <len(self.decompose_window[ii][0])):
46194  */
46195  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2410, __pyx_L1_error)
46196  __Pyx_GOTREF(__pyx_t_11);
46197  __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2410, __pyx_L1_error)
46198  __Pyx_GOTREF(__pyx_t_12);
46199  __pyx_t_5 = NULL;
46200  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
46201  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
46202  if (likely(__pyx_t_5)) {
46203  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
46204  __Pyx_INCREF(__pyx_t_5);
46205  __Pyx_INCREF(function);
46206  __Pyx_DECREF_SET(__pyx_t_11, function);
46207  }
46208  }
46209  __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_5, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12);
46210  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
46211  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46212  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2410, __pyx_L1_error)
46213  __Pyx_GOTREF(__pyx_t_6);
46214  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46215  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
46216  __pyx_t_11 = __pyx_t_6; __Pyx_INCREF(__pyx_t_11); __pyx_t_18 = 0;
46217  __pyx_t_17 = NULL;
46218  } else {
46219  __pyx_t_18 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2410, __pyx_L1_error)
46220  __Pyx_GOTREF(__pyx_t_11);
46221  __pyx_t_17 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2410, __pyx_L1_error)
46222  }
46223  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46224  for (;;) {
46225  if (likely(!__pyx_t_17)) {
46226  if (likely(PyList_CheckExact(__pyx_t_11))) {
46227  if (__pyx_t_18 >= PyList_GET_SIZE(__pyx_t_11)) break;
46228  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46229  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_18); __Pyx_INCREF(__pyx_t_6); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 2410, __pyx_L1_error)
46230  #else
46231  __pyx_t_6 = PySequence_ITEM(__pyx_t_11, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2410, __pyx_L1_error)
46232  __Pyx_GOTREF(__pyx_t_6);
46233  #endif
46234  } else {
46235  if (__pyx_t_18 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
46236  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46237  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_18); __Pyx_INCREF(__pyx_t_6); __pyx_t_18++; if (unlikely(0 < 0)) __PYX_ERR(0, 2410, __pyx_L1_error)
46238  #else
46239  __pyx_t_6 = PySequence_ITEM(__pyx_t_11, __pyx_t_18); __pyx_t_18++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2410, __pyx_L1_error)
46240  __Pyx_GOTREF(__pyx_t_6);
46241  #endif
46242  }
46243  } else {
46244  __pyx_t_6 = __pyx_t_17(__pyx_t_11);
46245  if (unlikely(!__pyx_t_6)) {
46246  PyObject* exc_type = PyErr_Occurred();
46247  if (exc_type) {
46248  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
46249  else __PYX_ERR(0, 2410, __pyx_L1_error)
46250  }
46251  break;
46252  }
46253  __Pyx_GOTREF(__pyx_t_6);
46254  }
46255  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_6);
46256  __pyx_t_6 = 0;
46257 
46258  /* "WaveTools.py":2411
46259  * for ii in range(self.Nwindows):
46260  * for jj in range(self.N):
46261  * ij = ii*self.N + jj # <<<<<<<<<<<<<<
46262  * if(jj <len(self.decompose_window[ii][0])):
46263  * self.omega_c[ij] = self.decompose_window[ii][0][jj]
46264  */
46265  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2411, __pyx_L1_error)
46266  __Pyx_GOTREF(__pyx_t_6);
46267  __pyx_t_12 = PyNumber_Multiply(__pyx_v_ii, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2411, __pyx_L1_error)
46268  __Pyx_GOTREF(__pyx_t_12);
46269  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46270  __pyx_t_6 = PyNumber_Add(__pyx_t_12, __pyx_v_jj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2411, __pyx_L1_error)
46271  __Pyx_GOTREF(__pyx_t_6);
46272  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46273  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_6);
46274  __pyx_t_6 = 0;
46275 
46276  /* "WaveTools.py":2412
46277  * for jj in range(self.N):
46278  * ij = ii*self.N + jj
46279  * if(jj <len(self.decompose_window[ii][0])): # <<<<<<<<<<<<<<
46280  * self.omega_c[ij] = self.decompose_window[ii][0][jj]
46281  * self.ki_c[ij] = self.decompose_window[ii][5][jj]
46282  */
46283  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
46284  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46285  __PYX_ERR(0, 2412, __pyx_L1_error)
46286  }
46287  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->decompose_window, __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2412, __pyx_L1_error)
46288  __Pyx_GOTREF(__pyx_t_6);
46289  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2412, __pyx_L1_error)
46290  __Pyx_GOTREF(__pyx_t_12);
46291  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46292  __pyx_t_16 = PyObject_Length(__pyx_t_12); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2412, __pyx_L1_error)
46293  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46294  __pyx_t_12 = PyInt_FromSsize_t(__pyx_t_16); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2412, __pyx_L1_error)
46295  __Pyx_GOTREF(__pyx_t_12);
46296  __pyx_t_6 = PyObject_RichCompare(__pyx_v_jj, __pyx_t_12, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2412, __pyx_L1_error)
46297  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46298  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2412, __pyx_L1_error)
46299  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46300  if (__pyx_t_10) {
46301 
46302  /* "WaveTools.py":2413
46303  * ij = ii*self.N + jj
46304  * if(jj <len(self.decompose_window[ii][0])):
46305  * self.omega_c[ij] = self.decompose_window[ii][0][jj] # <<<<<<<<<<<<<<
46306  * self.ki_c[ij] = self.decompose_window[ii][5][jj]
46307  * self.tanh_c[ij] = np.tanh(self.ki_c[ij]*self.depth)
46308  */
46309  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
46310  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46311  __PYX_ERR(0, 2413, __pyx_L1_error)
46312  }
46313  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->decompose_window, __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2413, __pyx_L1_error)
46314  __Pyx_GOTREF(__pyx_t_6);
46315  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2413, __pyx_L1_error)
46316  __Pyx_GOTREF(__pyx_t_12);
46317  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46318  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_v_jj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2413, __pyx_L1_error)
46319  __Pyx_GOTREF(__pyx_t_6);
46320  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46321  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2413, __pyx_L1_error)
46322  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46323  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2413, __pyx_L1_error)
46324  (__pyx_v_self->omega_c[__pyx_t_16]) = __pyx_t_2;
46325 
46326  /* "WaveTools.py":2414
46327  * if(jj <len(self.decompose_window[ii][0])):
46328  * self.omega_c[ij] = self.decompose_window[ii][0][jj]
46329  * self.ki_c[ij] = self.decompose_window[ii][5][jj] # <<<<<<<<<<<<<<
46330  * self.tanh_c[ij] = np.tanh(self.ki_c[ij]*self.depth)
46331  * self.ai_c[ij] = self.decompose_window[ii][1][jj]
46332  */
46333  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
46334  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46335  __PYX_ERR(0, 2414, __pyx_L1_error)
46336  }
46337  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->decompose_window, __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2414, __pyx_L1_error)
46338  __Pyx_GOTREF(__pyx_t_6);
46339  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_6, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2414, __pyx_L1_error)
46340  __Pyx_GOTREF(__pyx_t_12);
46341  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46342  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_v_jj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2414, __pyx_L1_error)
46343  __Pyx_GOTREF(__pyx_t_6);
46344  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46345  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2414, __pyx_L1_error)
46346  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46347  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2414, __pyx_L1_error)
46348  (__pyx_v_self->ki_c[__pyx_t_16]) = __pyx_t_2;
46349 
46350  /* "WaveTools.py":2415
46351  * self.omega_c[ij] = self.decompose_window[ii][0][jj]
46352  * self.ki_c[ij] = self.decompose_window[ii][5][jj]
46353  * self.tanh_c[ij] = np.tanh(self.ki_c[ij]*self.depth) # <<<<<<<<<<<<<<
46354  * self.ai_c[ij] = self.decompose_window[ii][1][jj]
46355  * self.phi_c[ij] =self.decompose_window[ii][2][jj]
46356  */
46357  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2415, __pyx_L1_error)
46358  __Pyx_GOTREF(__pyx_t_12);
46359  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_tanh); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2415, __pyx_L1_error)
46360  __Pyx_GOTREF(__pyx_t_5);
46361  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46362  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2415, __pyx_L1_error)
46363  __pyx_t_12 = PyFloat_FromDouble(((__pyx_v_self->ki_c[__pyx_t_16]) * __pyx_v_self->depth)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2415, __pyx_L1_error)
46364  __Pyx_GOTREF(__pyx_t_12);
46365  __pyx_t_14 = NULL;
46366  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
46367  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
46368  if (likely(__pyx_t_14)) {
46369  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
46370  __Pyx_INCREF(__pyx_t_14);
46371  __Pyx_INCREF(function);
46372  __Pyx_DECREF_SET(__pyx_t_5, function);
46373  }
46374  }
46375  __pyx_t_6 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_14, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_12);
46376  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
46377  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46378  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2415, __pyx_L1_error)
46379  __Pyx_GOTREF(__pyx_t_6);
46380  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46381  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2415, __pyx_L1_error)
46382  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46383  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2415, __pyx_L1_error)
46384  (__pyx_v_self->tanh_c[__pyx_t_16]) = __pyx_t_2;
46385 
46386  /* "WaveTools.py":2416
46387  * self.ki_c[ij] = self.decompose_window[ii][5][jj]
46388  * self.tanh_c[ij] = np.tanh(self.ki_c[ij]*self.depth)
46389  * self.ai_c[ij] = self.decompose_window[ii][1][jj] # <<<<<<<<<<<<<<
46390  * self.phi_c[ij] =self.decompose_window[ii][2][jj]
46391  * for kk in range(3):
46392  */
46393  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
46394  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46395  __PYX_ERR(0, 2416, __pyx_L1_error)
46396  }
46397  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->decompose_window, __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2416, __pyx_L1_error)
46398  __Pyx_GOTREF(__pyx_t_6);
46399  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2416, __pyx_L1_error)
46400  __Pyx_GOTREF(__pyx_t_5);
46401  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46402  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_jj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2416, __pyx_L1_error)
46403  __Pyx_GOTREF(__pyx_t_6);
46404  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46405  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2416, __pyx_L1_error)
46406  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46407  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2416, __pyx_L1_error)
46408  (__pyx_v_self->ai_c[__pyx_t_16]) = __pyx_t_2;
46409 
46410  /* "WaveTools.py":2417
46411  * self.tanh_c[ij] = np.tanh(self.ki_c[ij]*self.depth)
46412  * self.ai_c[ij] = self.decompose_window[ii][1][jj]
46413  * self.phi_c[ij] =self.decompose_window[ii][2][jj] # <<<<<<<<<<<<<<
46414  * for kk in range(3):
46415  * self.kDir_c[3*ij+kk] = self.decompose_window[ii][4][jj,kk]
46416  */
46417  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
46418  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46419  __PYX_ERR(0, 2417, __pyx_L1_error)
46420  }
46421  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->decompose_window, __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2417, __pyx_L1_error)
46422  __Pyx_GOTREF(__pyx_t_6);
46423  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2417, __pyx_L1_error)
46424  __Pyx_GOTREF(__pyx_t_5);
46425  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46426  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_jj); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2417, __pyx_L1_error)
46427  __Pyx_GOTREF(__pyx_t_6);
46428  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46429  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L1_error)
46430  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46431  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2417, __pyx_L1_error)
46432  (__pyx_v_self->phi_c[__pyx_t_16]) = __pyx_t_2;
46433 
46434  /* "WaveTools.py":2418
46435  * self.ai_c[ij] = self.decompose_window[ii][1][jj]
46436  * self.phi_c[ij] =self.decompose_window[ii][2][jj]
46437  * for kk in range(3): # <<<<<<<<<<<<<<
46438  * self.kDir_c[3*ij+kk] = self.decompose_window[ii][4][jj,kk]
46439  * else:
46440  */
46441  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_range); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2418, __pyx_L1_error)
46442  __Pyx_GOTREF(__pyx_t_5);
46443  __pyx_t_12 = NULL;
46444  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
46445  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
46446  if (likely(__pyx_t_12)) {
46447  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
46448  __Pyx_INCREF(__pyx_t_12);
46449  __Pyx_INCREF(function);
46450  __Pyx_DECREF_SET(__pyx_t_5, function);
46451  }
46452  }
46453  __pyx_t_6 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_12, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_3);
46454  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
46455  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2418, __pyx_L1_error)
46456  __Pyx_GOTREF(__pyx_t_6);
46457  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46458  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
46459  __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_16 = 0;
46460  __pyx_t_27 = NULL;
46461  } else {
46462  __pyx_t_16 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2418, __pyx_L1_error)
46463  __Pyx_GOTREF(__pyx_t_5);
46464  __pyx_t_27 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2418, __pyx_L1_error)
46465  }
46466  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46467  for (;;) {
46468  if (likely(!__pyx_t_27)) {
46469  if (likely(PyList_CheckExact(__pyx_t_5))) {
46470  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_5)) break;
46471  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46472  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_16); __Pyx_INCREF(__pyx_t_6); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 2418, __pyx_L1_error)
46473  #else
46474  __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2418, __pyx_L1_error)
46475  __Pyx_GOTREF(__pyx_t_6);
46476  #endif
46477  } else {
46478  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
46479  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46480  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_16); __Pyx_INCREF(__pyx_t_6); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 2418, __pyx_L1_error)
46481  #else
46482  __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2418, __pyx_L1_error)
46483  __Pyx_GOTREF(__pyx_t_6);
46484  #endif
46485  }
46486  } else {
46487  __pyx_t_6 = __pyx_t_27(__pyx_t_5);
46488  if (unlikely(!__pyx_t_6)) {
46489  PyObject* exc_type = PyErr_Occurred();
46490  if (exc_type) {
46491  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
46492  else __PYX_ERR(0, 2418, __pyx_L1_error)
46493  }
46494  break;
46495  }
46496  __Pyx_GOTREF(__pyx_t_6);
46497  }
46498  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_6);
46499  __pyx_t_6 = 0;
46500 
46501  /* "WaveTools.py":2419
46502  * self.phi_c[ij] =self.decompose_window[ii][2][jj]
46503  * for kk in range(3):
46504  * self.kDir_c[3*ij+kk] = self.decompose_window[ii][4][jj,kk] # <<<<<<<<<<<<<<
46505  * else:
46506  * self.omega_c[ij] =1.
46507  */
46508  if (unlikely(__pyx_v_self->decompose_window == Py_None)) {
46509  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
46510  __PYX_ERR(0, 2419, __pyx_L1_error)
46511  }
46512  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->decompose_window, __pyx_v_ii); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2419, __pyx_L1_error)
46513  __Pyx_GOTREF(__pyx_t_6);
46514  __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_6, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2419, __pyx_L1_error)
46515  __Pyx_GOTREF(__pyx_t_12);
46516  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46517  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2419, __pyx_L1_error)
46518  __Pyx_GOTREF(__pyx_t_6);
46519  __Pyx_INCREF(__pyx_v_jj);
46520  __Pyx_GIVEREF(__pyx_v_jj);
46521  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_jj);
46522  __Pyx_INCREF(__pyx_v_kk);
46523  __Pyx_GIVEREF(__pyx_v_kk);
46524  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_kk);
46525  __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2419, __pyx_L1_error)
46526  __Pyx_GOTREF(__pyx_t_14);
46527  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
46528  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46529  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2419, __pyx_L1_error)
46530  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
46531  __pyx_t_14 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2419, __pyx_L1_error)
46532  __Pyx_GOTREF(__pyx_t_14);
46533  __pyx_t_6 = PyNumber_Add(__pyx_t_14, __pyx_v_kk); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2419, __pyx_L1_error)
46534  __Pyx_GOTREF(__pyx_t_6);
46535  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
46536  __pyx_t_28 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_28 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2419, __pyx_L1_error)
46537  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46538  (__pyx_v_self->kDir_c[__pyx_t_28]) = __pyx_t_2;
46539 
46540  /* "WaveTools.py":2418
46541  * self.ai_c[ij] = self.decompose_window[ii][1][jj]
46542  * self.phi_c[ij] =self.decompose_window[ii][2][jj]
46543  * for kk in range(3): # <<<<<<<<<<<<<<
46544  * self.kDir_c[3*ij+kk] = self.decompose_window[ii][4][jj,kk]
46545  * else:
46546  */
46547  }
46548  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46549 
46550  /* "WaveTools.py":2412
46551  * for jj in range(self.N):
46552  * ij = ii*self.N + jj
46553  * if(jj <len(self.decompose_window[ii][0])): # <<<<<<<<<<<<<<
46554  * self.omega_c[ij] = self.decompose_window[ii][0][jj]
46555  * self.ki_c[ij] = self.decompose_window[ii][5][jj]
46556  */
46557  goto __pyx_L80;
46558  }
46559 
46560  /* "WaveTools.py":2421
46561  * self.kDir_c[3*ij+kk] = self.decompose_window[ii][4][jj,kk]
46562  * else:
46563  * self.omega_c[ij] =1. # <<<<<<<<<<<<<<
46564  * self.ki_c[ij] = 1.
46565  * self.tanh_c[ij] = 1.
46566  */
46567  /*else*/ {
46568  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2421, __pyx_L1_error)
46569  (__pyx_v_self->omega_c[__pyx_t_16]) = 1.;
46570 
46571  /* "WaveTools.py":2422
46572  * else:
46573  * self.omega_c[ij] =1.
46574  * self.ki_c[ij] = 1. # <<<<<<<<<<<<<<
46575  * self.tanh_c[ij] = 1.
46576  * self.ai_c[ij] = 0.
46577  */
46578  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2422, __pyx_L1_error)
46579  (__pyx_v_self->ki_c[__pyx_t_16]) = 1.;
46580 
46581  /* "WaveTools.py":2423
46582  * self.omega_c[ij] =1.
46583  * self.ki_c[ij] = 1.
46584  * self.tanh_c[ij] = 1. # <<<<<<<<<<<<<<
46585  * self.ai_c[ij] = 0.
46586  * self.phi_c[ij] =0.
46587  */
46588  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2423, __pyx_L1_error)
46589  (__pyx_v_self->tanh_c[__pyx_t_16]) = 1.;
46590 
46591  /* "WaveTools.py":2424
46592  * self.ki_c[ij] = 1.
46593  * self.tanh_c[ij] = 1.
46594  * self.ai_c[ij] = 0. # <<<<<<<<<<<<<<
46595  * self.phi_c[ij] =0.
46596  * for kk in range(3):
46597  */
46598  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2424, __pyx_L1_error)
46599  (__pyx_v_self->ai_c[__pyx_t_16]) = 0.;
46600 
46601  /* "WaveTools.py":2425
46602  * self.tanh_c[ij] = 1.
46603  * self.ai_c[ij] = 0.
46604  * self.phi_c[ij] =0. # <<<<<<<<<<<<<<
46605  * for kk in range(3):
46606  * self.kDir_c[3*ij+kk] = 1.
46607  */
46608  __pyx_t_16 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_16 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2425, __pyx_L1_error)
46609  (__pyx_v_self->phi_c[__pyx_t_16]) = 0.;
46610 
46611  /* "WaveTools.py":2426
46612  * self.ai_c[ij] = 0.
46613  * self.phi_c[ij] =0.
46614  * for kk in range(3): # <<<<<<<<<<<<<<
46615  * self.kDir_c[3*ij+kk] = 1.
46616  *
46617  */
46618  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2426, __pyx_L1_error)
46619  __Pyx_GOTREF(__pyx_t_6);
46620  __pyx_t_14 = NULL;
46621  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
46622  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6);
46623  if (likely(__pyx_t_14)) {
46624  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
46625  __Pyx_INCREF(__pyx_t_14);
46626  __Pyx_INCREF(function);
46627  __Pyx_DECREF_SET(__pyx_t_6, function);
46628  }
46629  }
46630  __pyx_t_5 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_14, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_3);
46631  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
46632  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2426, __pyx_L1_error)
46633  __Pyx_GOTREF(__pyx_t_5);
46634  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46635  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
46636  __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_16 = 0;
46637  __pyx_t_27 = NULL;
46638  } else {
46639  __pyx_t_16 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2426, __pyx_L1_error)
46640  __Pyx_GOTREF(__pyx_t_6);
46641  __pyx_t_27 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2426, __pyx_L1_error)
46642  }
46643  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46644  for (;;) {
46645  if (likely(!__pyx_t_27)) {
46646  if (likely(PyList_CheckExact(__pyx_t_6))) {
46647  if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_6)) break;
46648  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46649  __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_16); __Pyx_INCREF(__pyx_t_5); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 2426, __pyx_L1_error)
46650  #else
46651  __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2426, __pyx_L1_error)
46652  __Pyx_GOTREF(__pyx_t_5);
46653  #endif
46654  } else {
46655  if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
46656  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46657  __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_16); __Pyx_INCREF(__pyx_t_5); __pyx_t_16++; if (unlikely(0 < 0)) __PYX_ERR(0, 2426, __pyx_L1_error)
46658  #else
46659  __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2426, __pyx_L1_error)
46660  __Pyx_GOTREF(__pyx_t_5);
46661  #endif
46662  }
46663  } else {
46664  __pyx_t_5 = __pyx_t_27(__pyx_t_6);
46665  if (unlikely(!__pyx_t_5)) {
46666  PyObject* exc_type = PyErr_Occurred();
46667  if (exc_type) {
46668  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
46669  else __PYX_ERR(0, 2426, __pyx_L1_error)
46670  }
46671  break;
46672  }
46673  __Pyx_GOTREF(__pyx_t_5);
46674  }
46675  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_5);
46676  __pyx_t_5 = 0;
46677 
46678  /* "WaveTools.py":2427
46679  * self.phi_c[ij] =0.
46680  * for kk in range(3):
46681  * self.kDir_c[3*ij+kk] = 1. # <<<<<<<<<<<<<<
46682  *
46683  * self.kDir_ = self.kDir_c
46684  */
46685  __pyx_t_5 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2427, __pyx_L1_error)
46686  __Pyx_GOTREF(__pyx_t_5);
46687  __pyx_t_14 = PyNumber_Add(__pyx_t_5, __pyx_v_kk); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2427, __pyx_L1_error)
46688  __Pyx_GOTREF(__pyx_t_14);
46689  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
46690  __pyx_t_28 = __Pyx_PyIndex_AsSsize_t(__pyx_t_14); if (unlikely((__pyx_t_28 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2427, __pyx_L1_error)
46691  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
46692  (__pyx_v_self->kDir_c[__pyx_t_28]) = 1.;
46693 
46694  /* "WaveTools.py":2426
46695  * self.ai_c[ij] = 0.
46696  * self.phi_c[ij] =0.
46697  * for kk in range(3): # <<<<<<<<<<<<<<
46698  * self.kDir_c[3*ij+kk] = 1.
46699  *
46700  */
46701  }
46702  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
46703  }
46704  __pyx_L80:;
46705 
46706  /* "WaveTools.py":2410
46707  * self.T0_ = self.T0
46708  * for ii in range(self.Nwindows):
46709  * for jj in range(self.N): # <<<<<<<<<<<<<<
46710  * ij = ii*self.N + jj
46711  * if(jj <len(self.decompose_window[ii][0])):
46712  */
46713  }
46714  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46715 
46716  /* "WaveTools.py":2409
46717  * self.whand_ = self.whand_c
46718  * self.T0_ = self.T0
46719  * for ii in range(self.Nwindows): # <<<<<<<<<<<<<<
46720  * for jj in range(self.N):
46721  * ij = ii*self.N + jj
46722  */
46723  }
46724  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46725 
46726  /* "WaveTools.py":2429
46727  * self.kDir_c[3*ij+kk] = 1.
46728  *
46729  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
46730  * self.omega_ = self.omega_c
46731  * self.ki_ =self.ki_c
46732  */
46733  __pyx_t_19 = __pyx_v_self->kDir_c;
46734  __pyx_v_self->kDir_ = __pyx_t_19;
46735 
46736  /* "WaveTools.py":2430
46737  *
46738  * self.kDir_ = self.kDir_c
46739  * self.omega_ = self.omega_c # <<<<<<<<<<<<<<
46740  * self.ki_ =self.ki_c
46741  * self.ai_ = self.ai_c
46742  */
46743  __pyx_t_19 = __pyx_v_self->omega_c;
46744  __pyx_v_self->omega_ = __pyx_t_19;
46745 
46746  /* "WaveTools.py":2431
46747  * self.kDir_ = self.kDir_c
46748  * self.omega_ = self.omega_c
46749  * self.ki_ =self.ki_c # <<<<<<<<<<<<<<
46750  * self.ai_ = self.ai_c
46751  * self.tanh_ = self.tanh_c
46752  */
46753  __pyx_t_19 = __pyx_v_self->ki_c;
46754  __pyx_v_self->ki_ = __pyx_t_19;
46755 
46756  /* "WaveTools.py":2432
46757  * self.omega_ = self.omega_c
46758  * self.ki_ =self.ki_c
46759  * self.ai_ = self.ai_c # <<<<<<<<<<<<<<
46760  * self.tanh_ = self.tanh_c
46761  * self.phi_ = self.phi_c
46762  */
46763  __pyx_t_19 = __pyx_v_self->ai_c;
46764  __pyx_v_self->ai_ = __pyx_t_19;
46765 
46766  /* "WaveTools.py":2433
46767  * self.ki_ =self.ki_c
46768  * self.ai_ = self.ai_c
46769  * self.tanh_ = self.tanh_c # <<<<<<<<<<<<<<
46770  * self.phi_ = self.phi_c
46771  *
46772  */
46773  __pyx_t_19 = __pyx_v_self->tanh_c;
46774  __pyx_v_self->tanh_ = __pyx_t_19;
46775 
46776  /* "WaveTools.py":2434
46777  * self.ai_ = self.ai_c
46778  * self.tanh_ = self.tanh_c
46779  * self.phi_ = self.phi_c # <<<<<<<<<<<<<<
46780  *
46781  *
46782  */
46783  __pyx_t_19 = __pyx_v_self->phi_c;
46784  __pyx_v_self->phi_ = __pyx_t_19;
46785 
46786  /* "WaveTools.py":2437
46787  *
46788  *
46789  * self.Nall = self.Nf*self.Nwindows # <<<<<<<<<<<<<<
46790  *
46791  *
46792  */
46793  __pyx_v_self->Nall = (__pyx_v_self->Nf * __pyx_v_self->Nwindows);
46794  }
46795  __pyx_L14:;
46796 
46797  /* "WaveTools.py":2441
46798  *
46799  *
46800  * for ii in range(3): # <<<<<<<<<<<<<<
46801  * self.x0_c[ii] = self.x0[ii]
46802  * self.waveDir_c[ii] = self.waveDir[ii]
46803  */
46804  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2441, __pyx_L1_error)
46805  __Pyx_GOTREF(__pyx_t_11);
46806  __pyx_t_6 = NULL;
46807  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
46808  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
46809  if (likely(__pyx_t_6)) {
46810  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
46811  __Pyx_INCREF(__pyx_t_6);
46812  __Pyx_INCREF(function);
46813  __Pyx_DECREF_SET(__pyx_t_11, function);
46814  }
46815  }
46816  __pyx_t_23 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_int_3);
46817  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
46818  if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2441, __pyx_L1_error)
46819  __Pyx_GOTREF(__pyx_t_23);
46820  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46821  if (likely(PyList_CheckExact(__pyx_t_23)) || PyTuple_CheckExact(__pyx_t_23)) {
46822  __pyx_t_11 = __pyx_t_23; __Pyx_INCREF(__pyx_t_11); __pyx_t_8 = 0;
46823  __pyx_t_13 = NULL;
46824  } else {
46825  __pyx_t_8 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_23); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2441, __pyx_L1_error)
46826  __Pyx_GOTREF(__pyx_t_11);
46827  __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2441, __pyx_L1_error)
46828  }
46829  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46830  for (;;) {
46831  if (likely(!__pyx_t_13)) {
46832  if (likely(PyList_CheckExact(__pyx_t_11))) {
46833  if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_11)) break;
46834  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46835  __pyx_t_23 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_8); __Pyx_INCREF(__pyx_t_23); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2441, __pyx_L1_error)
46836  #else
46837  __pyx_t_23 = PySequence_ITEM(__pyx_t_11, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2441, __pyx_L1_error)
46838  __Pyx_GOTREF(__pyx_t_23);
46839  #endif
46840  } else {
46841  if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
46842  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
46843  __pyx_t_23 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_8); __Pyx_INCREF(__pyx_t_23); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2441, __pyx_L1_error)
46844  #else
46845  __pyx_t_23 = PySequence_ITEM(__pyx_t_11, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2441, __pyx_L1_error)
46846  __Pyx_GOTREF(__pyx_t_23);
46847  #endif
46848  }
46849  } else {
46850  __pyx_t_23 = __pyx_t_13(__pyx_t_11);
46851  if (unlikely(!__pyx_t_23)) {
46852  PyObject* exc_type = PyErr_Occurred();
46853  if (exc_type) {
46854  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
46855  else __PYX_ERR(0, 2441, __pyx_L1_error)
46856  }
46857  break;
46858  }
46859  __Pyx_GOTREF(__pyx_t_23);
46860  }
46861  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_23);
46862  __pyx_t_23 = 0;
46863 
46864  /* "WaveTools.py":2442
46865  *
46866  * for ii in range(3):
46867  * self.x0_c[ii] = self.x0[ii] # <<<<<<<<<<<<<<
46868  * self.waveDir_c[ii] = self.waveDir[ii]
46869  * self.vDir_c[ii] = self.vDir[ii]
46870  */
46871  __pyx_t_23 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->x0), __pyx_v_ii); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2442, __pyx_L1_error)
46872  __Pyx_GOTREF(__pyx_t_23);
46873  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2442, __pyx_L1_error)
46874  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46875  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2442, __pyx_L1_error)
46876  (__pyx_v_self->x0_c[__pyx_t_18]) = __pyx_t_2;
46877 
46878  /* "WaveTools.py":2443
46879  * for ii in range(3):
46880  * self.x0_c[ii] = self.x0[ii]
46881  * self.waveDir_c[ii] = self.waveDir[ii] # <<<<<<<<<<<<<<
46882  * self.vDir_c[ii] = self.vDir[ii]
46883  * self.x0_ = self.x0_c
46884  */
46885  __pyx_t_23 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->waveDir), __pyx_v_ii); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2443, __pyx_L1_error)
46886  __Pyx_GOTREF(__pyx_t_23);
46887  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L1_error)
46888  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46889  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2443, __pyx_L1_error)
46890  (__pyx_v_self->waveDir_c[__pyx_t_18]) = __pyx_t_2;
46891 
46892  /* "WaveTools.py":2444
46893  * self.x0_c[ii] = self.x0[ii]
46894  * self.waveDir_c[ii] = self.waveDir[ii]
46895  * self.vDir_c[ii] = self.vDir[ii] # <<<<<<<<<<<<<<
46896  * self.x0_ = self.x0_c
46897  * self.waveDir_ = self.waveDir_c
46898  */
46899  __pyx_t_23 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->vDir), __pyx_v_ii); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2444, __pyx_L1_error)
46900  __Pyx_GOTREF(__pyx_t_23);
46901  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2444, __pyx_L1_error)
46902  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
46903  __pyx_t_18 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_18 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2444, __pyx_L1_error)
46904  (__pyx_v_self->vDir_c[__pyx_t_18]) = __pyx_t_2;
46905 
46906  /* "WaveTools.py":2441
46907  *
46908  *
46909  * for ii in range(3): # <<<<<<<<<<<<<<
46910  * self.x0_c[ii] = self.x0[ii]
46911  * self.waveDir_c[ii] = self.waveDir[ii]
46912  */
46913  }
46914  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
46915 
46916  /* "WaveTools.py":2445
46917  * self.waveDir_c[ii] = self.waveDir[ii]
46918  * self.vDir_c[ii] = self.vDir[ii]
46919  * self.x0_ = self.x0_c # <<<<<<<<<<<<<<
46920  * self.waveDir_ = self.waveDir_c
46921  * self.vDir_ = self.vDir_c
46922  */
46923  __pyx_t_19 = __pyx_v_self->x0_c;
46924  memcpy(&(__pyx_v_self->x0_[0]), __pyx_t_19, sizeof(__pyx_v_self->x0_[0]) * (3 - 0));
46925 
46926  /* "WaveTools.py":2446
46927  * self.vDir_c[ii] = self.vDir[ii]
46928  * self.x0_ = self.x0_c
46929  * self.waveDir_ = self.waveDir_c # <<<<<<<<<<<<<<
46930  * self.vDir_ = self.vDir_c
46931  * if(self.rec_direct):
46932  */
46933  __pyx_t_19 = __pyx_v_self->waveDir_c;
46934  __pyx_v_self->waveDir_ = __pyx_t_19;
46935 
46936  /* "WaveTools.py":2447
46937  * self.x0_ = self.x0_c
46938  * self.waveDir_ = self.waveDir_c
46939  * self.vDir_ = self.vDir_c # <<<<<<<<<<<<<<
46940  * if(self.rec_direct):
46941  * self.eta = self.etaDirect
46942  */
46943  __pyx_t_19 = __pyx_v_self->vDir_c;
46944  __pyx_v_self->vDir_ = __pyx_t_19;
46945 
46946  /* "WaveTools.py":2448
46947  * self.waveDir_ = self.waveDir_c
46948  * self.vDir_ = self.vDir_c
46949  * if(self.rec_direct): # <<<<<<<<<<<<<<
46950  * self.eta = self.etaDirect
46951  * self.u = self.uDirect
46952  */
46953  __pyx_t_10 = (__pyx_v_self->rec_direct != 0);
46954  if (__pyx_t_10) {
46955 
46956  /* "WaveTools.py":2449
46957  * self.vDir_ = self.vDir_c
46958  * if(self.rec_direct):
46959  * self.eta = self.etaDirect # <<<<<<<<<<<<<<
46960  * self.u = self.uDirect
46961  * self._cpp_eta = self._cpp_etaDirect
46962  */
46963  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_etaDirect); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2449, __pyx_L1_error)
46964  __Pyx_GOTREF(__pyx_t_11);
46965  __Pyx_GIVEREF(__pyx_t_11);
46966  __Pyx_GOTREF(__pyx_v_self->eta);
46967  __Pyx_DECREF(__pyx_v_self->eta);
46968  __pyx_v_self->eta = __pyx_t_11;
46969  __pyx_t_11 = 0;
46970 
46971  /* "WaveTools.py":2450
46972  * if(self.rec_direct):
46973  * self.eta = self.etaDirect
46974  * self.u = self.uDirect # <<<<<<<<<<<<<<
46975  * self._cpp_eta = self._cpp_etaDirect
46976  * self._cpp_u = self._cpp_uDirect
46977  */
46978  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_uDirect); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2450, __pyx_L1_error)
46979  __Pyx_GOTREF(__pyx_t_11);
46980  __Pyx_GIVEREF(__pyx_t_11);
46981  __Pyx_GOTREF(__pyx_v_self->u);
46982  __Pyx_DECREF(__pyx_v_self->u);
46983  __pyx_v_self->u = __pyx_t_11;
46984  __pyx_t_11 = 0;
46985 
46986  /* "WaveTools.py":2451
46987  * self.eta = self.etaDirect
46988  * self.u = self.uDirect
46989  * self._cpp_eta = self._cpp_etaDirect # <<<<<<<<<<<<<<
46990  * self._cpp_u = self._cpp_uDirect
46991  * else:
46992  */
46993  __pyx_t_29 = ((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_etaDirect;
46994  __pyx_v_self->_cpp_eta = __pyx_t_29;
46995 
46996  /* "WaveTools.py":2452
46997  * self.u = self.uDirect
46998  * self._cpp_eta = self._cpp_etaDirect
46999  * self._cpp_u = self._cpp_uDirect # <<<<<<<<<<<<<<
47000  * else:
47001  * self.eta = self.etaWindow
47002  */
47003  __pyx_t_30 = ((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_uDirect;
47004  __pyx_v_self->_cpp_u = __pyx_t_30;
47005 
47006  /* "WaveTools.py":2448
47007  * self.waveDir_ = self.waveDir_c
47008  * self.vDir_ = self.vDir_c
47009  * if(self.rec_direct): # <<<<<<<<<<<<<<
47010  * self.eta = self.etaDirect
47011  * self.u = self.uDirect
47012  */
47013  goto __pyx_L87;
47014  }
47015 
47016  /* "WaveTools.py":2454
47017  * self._cpp_u = self._cpp_uDirect
47018  * else:
47019  * self.eta = self.etaWindow # <<<<<<<<<<<<<<
47020  * self.u = self.uWindow
47021  * self._cpp_eta = self._cpp_etaWindow
47022  */
47023  /*else*/ {
47024  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_etaWindow); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2454, __pyx_L1_error)
47025  __Pyx_GOTREF(__pyx_t_11);
47026  __Pyx_GIVEREF(__pyx_t_11);
47027  __Pyx_GOTREF(__pyx_v_self->eta);
47028  __Pyx_DECREF(__pyx_v_self->eta);
47029  __pyx_v_self->eta = __pyx_t_11;
47030  __pyx_t_11 = 0;
47031 
47032  /* "WaveTools.py":2455
47033  * else:
47034  * self.eta = self.etaWindow
47035  * self.u = self.uWindow # <<<<<<<<<<<<<<
47036  * self._cpp_eta = self._cpp_etaWindow
47037  * self._cpp_u = self._cpp_uWindow
47038  */
47039  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_uWindow); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2455, __pyx_L1_error)
47040  __Pyx_GOTREF(__pyx_t_11);
47041  __Pyx_GIVEREF(__pyx_t_11);
47042  __Pyx_GOTREF(__pyx_v_self->u);
47043  __Pyx_DECREF(__pyx_v_self->u);
47044  __pyx_v_self->u = __pyx_t_11;
47045  __pyx_t_11 = 0;
47046 
47047  /* "WaveTools.py":2456
47048  * self.eta = self.etaWindow
47049  * self.u = self.uWindow
47050  * self._cpp_eta = self._cpp_etaWindow # <<<<<<<<<<<<<<
47051  * self._cpp_u = self._cpp_uWindow
47052  *
47053  */
47054  __pyx_t_31 = ((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_etaWindow;
47055  __pyx_v_self->_cpp_eta = __pyx_t_31;
47056 
47057  /* "WaveTools.py":2457
47058  * self.u = self.uWindow
47059  * self._cpp_eta = self._cpp_etaWindow
47060  * self._cpp_u = self._cpp_uWindow # <<<<<<<<<<<<<<
47061  *
47062  * def windOut(self):
47063  */
47064  __pyx_t_32 = ((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_uWindow;
47065  __pyx_v_self->_cpp_u = __pyx_t_32;
47066  }
47067  __pyx_L87:;
47068 
47069  /* "WaveTools.py":2134
47070  *
47071  * """
47072  * def __init__(self, # <<<<<<<<<<<<<<
47073  * timeSeriesFile, # e.g.= "Timeseries.txt",
47074  * skiprows,
47075  */
47076 
47077  /* function exit code */
47078  __pyx_r = 0;
47079  goto __pyx_L0;
47080  __pyx_L1_error:;
47081  __Pyx_XDECREF(__pyx_t_4);
47082  __Pyx_XDECREF(__pyx_t_5);
47083  __Pyx_XDECREF(__pyx_t_6);
47084  __Pyx_XDECREF(__pyx_t_7);
47085  __Pyx_XDECREF(__pyx_t_11);
47086  __Pyx_XDECREF(__pyx_t_12);
47087  __Pyx_XDECREF(__pyx_t_14);
47088  __Pyx_XDECREF(__pyx_t_23);
47089  __Pyx_XDECREF(__pyx_t_25);
47090  __Pyx_XDECREF(__pyx_t_26);
47091  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
47092  __pyx_r = -1;
47093  __pyx_L0:;
47094  __Pyx_XDECREF(__pyx_v_Nwaves);
47095  __Pyx_XDECREF(__pyx_v_tdata);
47096  __Pyx_XDECREF(__pyx_v_filetype);
47097  __Pyx_XDECREF(__pyx_v_fid);
47098  __Pyx_XDECREF(__pyx_v_time_temp);
47099  __Pyx_XDECREF(__pyx_v_i);
47100  __Pyx_XDECREF(__pyx_v_dt_temp);
47101  __Pyx_XDECREF(__pyx_v_Nf);
47102  __Pyx_XDECREF(__pyx_v_decomp);
47103  __Pyx_XDECREF(__pyx_v_ipeak);
47104  __Pyx_XDECREF(__pyx_v_imax);
47105  __Pyx_XDECREF(__pyx_v_imin);
47106  __Pyx_XDECREF(__pyx_v_ii);
47107  __Pyx_XDECREF(__pyx_v_ij);
47108  __Pyx_XDECREF(__pyx_v_kk);
47109  __Pyx_XDECREF(__pyx_v_windowName);
47110  __Pyx_XDECREF(__pyx_v_validWindows);
47111  __Pyx_XDECREF(__pyx_v_wind_filt);
47112  __Pyx_XDECREF(__pyx_v_jj);
47113  __Pyx_XDECREF(__pyx_v_span);
47114  __Pyx_XDECREF(__pyx_v_tfirst);
47115  __Pyx_XDECREF(__pyx_v_tlast);
47116  __Pyx_XDECREF(__pyx_v_ispan1);
47117  __Pyx_XDECREF(__pyx_v_ispan2);
47118  __Pyx_XDECREF(__pyx_v_tstart);
47119  __Pyx_XDECREF(__pyx_v_wind);
47120  __Pyx_XDECREF(__pyx_v_Nftemp);
47121  __Pyx_XDECREF(__pyx_v_ki);
47122  __Pyx_XDECREF(__pyx_v_kDir);
47123  __Pyx_XDECREF(__pyx_v_Tlag);
47124  __Pyx_RefNannyFinishContext();
47125  return __pyx_r;
47126 }
47127 
47128 /* "WaveTools.py":2459
47129  * self._cpp_u = self._cpp_uWindow
47130  *
47131  * def windOut(self): # <<<<<<<<<<<<<<
47132  * return {"TWindow":self.Twindow,"TOverlap":self.Toverlap,"Tlag":self.Tlag, "rec_direct":self.rec_direct}
47133  *
47134  */
47135 
47136 /* Python wrapper */
47137 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3windOut(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
47138 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_3windOut = {"windOut", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_3windOut, METH_NOARGS, 0};
47139 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3windOut(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
47140  PyObject *__pyx_r = 0;
47141  __Pyx_RefNannyDeclarations
47142  __Pyx_RefNannySetupContext("windOut (wrapper)", 0);
47143  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_2windOut(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
47144 
47145  /* function exit code */
47146  __Pyx_RefNannyFinishContext();
47147  return __pyx_r;
47148 }
47149 
47150 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_2windOut(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
47151  PyObject *__pyx_r = NULL;
47152  __Pyx_RefNannyDeclarations
47153  PyObject *__pyx_t_1 = NULL;
47154  PyObject *__pyx_t_2 = NULL;
47155  int __pyx_lineno = 0;
47156  const char *__pyx_filename = NULL;
47157  int __pyx_clineno = 0;
47158  __Pyx_RefNannySetupContext("windOut", 0);
47159 
47160  /* "WaveTools.py":2460
47161  *
47162  * def windOut(self):
47163  * return {"TWindow":self.Twindow,"TOverlap":self.Toverlap,"Tlag":self.Tlag, "rec_direct":self.rec_direct} # <<<<<<<<<<<<<<
47164  *
47165  *
47166  */
47167  __Pyx_XDECREF(__pyx_r);
47168  __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2460, __pyx_L1_error)
47169  __Pyx_GOTREF(__pyx_t_1);
47170  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Twindow); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2460, __pyx_L1_error)
47171  __Pyx_GOTREF(__pyx_t_2);
47172  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_TWindow, __pyx_t_2) < 0) __PYX_ERR(0, 2460, __pyx_L1_error)
47173  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47174  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Toverlap); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2460, __pyx_L1_error)
47175  __Pyx_GOTREF(__pyx_t_2);
47176  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_TOverlap, __pyx_t_2) < 0) __PYX_ERR(0, 2460, __pyx_L1_error)
47177  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47178  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->Tlag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2460, __pyx_L1_error)
47179  __Pyx_GOTREF(__pyx_t_2);
47180  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_Tlag, __pyx_t_2) < 0) __PYX_ERR(0, 2460, __pyx_L1_error)
47181  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47182  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->rec_direct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2460, __pyx_L1_error)
47183  __Pyx_GOTREF(__pyx_t_2);
47184  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_rec_direct, __pyx_t_2) < 0) __PYX_ERR(0, 2460, __pyx_L1_error)
47185  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47186  __pyx_r = __pyx_t_1;
47187  __pyx_t_1 = 0;
47188  goto __pyx_L0;
47189 
47190  /* "WaveTools.py":2459
47191  * self._cpp_u = self._cpp_uWindow
47192  *
47193  * def windOut(self): # <<<<<<<<<<<<<<
47194  * return {"TWindow":self.Twindow,"TOverlap":self.Toverlap,"Tlag":self.Tlag, "rec_direct":self.rec_direct}
47195  *
47196  */
47197 
47198  /* function exit code */
47199  __pyx_L1_error:;
47200  __Pyx_XDECREF(__pyx_t_1);
47201  __Pyx_XDECREF(__pyx_t_2);
47202  __Pyx_AddTraceback("WaveTools.TimeSeries.windOut", __pyx_clineno, __pyx_lineno, __pyx_filename);
47203  __pyx_r = NULL;
47204  __pyx_L0:;
47205  __Pyx_XGIVEREF(__pyx_r);
47206  __Pyx_RefNannyFinishContext();
47207  return __pyx_r;
47208 }
47209 
47210 /* "WaveTools.py":2463
47211  *
47212  *
47213  * def _cpp_etaDirect(self,x,t): # <<<<<<<<<<<<<<
47214  * return __cpp_etaDirect(x,self.x0_,t,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf, self.fast)
47215  * def _cpp_uDirect(self,U,x,t):
47216  */
47217 
47218 static double __pyx_f_9WaveTools_10TimeSeries__cpp_etaDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
47219  double __pyx_r;
47220  __Pyx_RefNannyDeclarations
47221  __Pyx_RefNannySetupContext("_cpp_etaDirect", 0);
47222 
47223  /* "WaveTools.py":2464
47224  *
47225  * def _cpp_etaDirect(self,x,t):
47226  * return __cpp_etaDirect(x,self.x0_,t,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf, self.fast) # <<<<<<<<<<<<<<
47227  * def _cpp_uDirect(self,U,x,t):
47228  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47229  */
47230  __pyx_r = proteus::__cpp_etaDirect(__pyx_v_x, __pyx_v_self->x0_, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->Nf, __pyx_v_self->fast);
47231  goto __pyx_L0;
47232 
47233  /* "WaveTools.py":2463
47234  *
47235  *
47236  * def _cpp_etaDirect(self,x,t): # <<<<<<<<<<<<<<
47237  * return __cpp_etaDirect(x,self.x0_,t,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf, self.fast)
47238  * def _cpp_uDirect(self,U,x,t):
47239  */
47240 
47241  /* function exit code */
47242  __pyx_L0:;
47243  __Pyx_RefNannyFinishContext();
47244  return __pyx_r;
47245 }
47246 
47247 /* "WaveTools.py":2465
47248  * def _cpp_etaDirect(self,x,t):
47249  * return __cpp_etaDirect(x,self.x0_,t,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf, self.fast)
47250  * def _cpp_uDirect(self,U,x,t): # <<<<<<<<<<<<<<
47251  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47252  *
47253  */
47254 
47255 static void __pyx_f_9WaveTools_10TimeSeries__cpp_uDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
47256  __Pyx_RefNannyDeclarations
47257  __Pyx_RefNannySetupContext("_cpp_uDirect", 0);
47258 
47259  /* "WaveTools.py":2466
47260  * return __cpp_etaDirect(x,self.x0_,t,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf, self.fast)
47261  * def _cpp_uDirect(self,U,x,t):
47262  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast) # <<<<<<<<<<<<<<
47263  *
47264  * def etaDirect(self, x, t):
47265  */
47266  proteus::__cpp_uDirect(__pyx_v_U, __pyx_v_x, __pyx_v_self->x0_, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->Nf, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanh_, __pyx_v_self->gAbs, __pyx_v_self->fast);
47267 
47268  /* "WaveTools.py":2465
47269  * def _cpp_etaDirect(self,x,t):
47270  * return __cpp_etaDirect(x,self.x0_,t,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf, self.fast)
47271  * def _cpp_uDirect(self,U,x,t): # <<<<<<<<<<<<<<
47272  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47273  *
47274  */
47275 
47276  /* function exit code */
47277  __Pyx_RefNannyFinishContext();
47278 }
47279 
47280 /* "WaveTools.py":2468
47281  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47282  *
47283  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
47284  *
47285  * """Calculates free surface elevation(Timeseries class-direct method
47286  */
47287 
47288 /* Python wrapper */
47289 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_5etaDirect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
47290 static char __pyx_doc_9WaveTools_10TimeSeries_4etaDirect[] = "Calculates free surface elevation(Timeseries class-direct method\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
47291 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_5etaDirect = {"etaDirect", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_5etaDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_4etaDirect};
47292 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_5etaDirect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
47293  PyObject *__pyx_v_x = 0;
47294  PyObject *__pyx_v_t = 0;
47295  int __pyx_lineno = 0;
47296  const char *__pyx_filename = NULL;
47297  int __pyx_clineno = 0;
47298  PyObject *__pyx_r = 0;
47299  __Pyx_RefNannyDeclarations
47300  __Pyx_RefNannySetupContext("etaDirect (wrapper)", 0);
47301  {
47302  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
47303  PyObject* values[2] = {0,0};
47304  if (unlikely(__pyx_kwds)) {
47305  Py_ssize_t kw_args;
47306  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
47307  switch (pos_args) {
47308  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
47309  CYTHON_FALLTHROUGH;
47310  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
47311  CYTHON_FALLTHROUGH;
47312  case 0: break;
47313  default: goto __pyx_L5_argtuple_error;
47314  }
47315  kw_args = PyDict_Size(__pyx_kwds);
47316  switch (pos_args) {
47317  case 0:
47318  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
47319  else goto __pyx_L5_argtuple_error;
47320  CYTHON_FALLTHROUGH;
47321  case 1:
47322  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
47323  else {
47324  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 2, 2, 1); __PYX_ERR(0, 2468, __pyx_L3_error)
47325  }
47326  }
47327  if (unlikely(kw_args > 0)) {
47328  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "etaDirect") < 0)) __PYX_ERR(0, 2468, __pyx_L3_error)
47329  }
47330  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
47331  goto __pyx_L5_argtuple_error;
47332  } else {
47333  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
47334  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
47335  }
47336  __pyx_v_x = values[0];
47337  __pyx_v_t = values[1];
47338  }
47339  goto __pyx_L4_argument_unpacking_done;
47340  __pyx_L5_argtuple_error:;
47341  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2468, __pyx_L3_error)
47342  __pyx_L3_error:;
47343  __Pyx_AddTraceback("WaveTools.TimeSeries.etaDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
47344  __Pyx_RefNannyFinishContext();
47345  return NULL;
47346  __pyx_L4_argument_unpacking_done:;
47347  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_4etaDirect(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
47348 
47349  /* function exit code */
47350  __Pyx_RefNannyFinishContext();
47351  return __pyx_r;
47352 }
47353 
47354 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_4etaDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
47355  double __pyx_v_xx[3];
47356  PyObject *__pyx_r = NULL;
47357  __Pyx_RefNannyDeclarations
47358  PyObject *__pyx_t_1 = NULL;
47359  double __pyx_t_2;
47360  int __pyx_lineno = 0;
47361  const char *__pyx_filename = NULL;
47362  int __pyx_clineno = 0;
47363  __Pyx_RefNannySetupContext("etaDirect", 0);
47364 
47365  /* "WaveTools.py":2485
47366  * """
47367  * cython.declare(xx=cython.double[3])
47368  * xx[0] = x[0] # <<<<<<<<<<<<<<
47369  * xx[1] = x[1]
47370  * xx[2] = x[2]
47371  */
47372  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error)
47373  __Pyx_GOTREF(__pyx_t_1);
47374  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2485, __pyx_L1_error)
47375  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47376  (__pyx_v_xx[0]) = __pyx_t_2;
47377 
47378  /* "WaveTools.py":2486
47379  * cython.declare(xx=cython.double[3])
47380  * xx[0] = x[0]
47381  * xx[1] = x[1] # <<<<<<<<<<<<<<
47382  * xx[2] = x[2]
47383  * return self._cpp_etaDirect(xx,t)
47384  */
47385  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2486, __pyx_L1_error)
47386  __Pyx_GOTREF(__pyx_t_1);
47387  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2486, __pyx_L1_error)
47388  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47389  (__pyx_v_xx[1]) = __pyx_t_2;
47390 
47391  /* "WaveTools.py":2487
47392  * xx[0] = x[0]
47393  * xx[1] = x[1]
47394  * xx[2] = x[2] # <<<<<<<<<<<<<<
47395  * return self._cpp_etaDirect(xx,t)
47396  *
47397  */
47398  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2487, __pyx_L1_error)
47399  __Pyx_GOTREF(__pyx_t_1);
47400  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2487, __pyx_L1_error)
47401  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47402  (__pyx_v_xx[2]) = __pyx_t_2;
47403 
47404  /* "WaveTools.py":2488
47405  * xx[1] = x[1]
47406  * xx[2] = x[2]
47407  * return self._cpp_etaDirect(xx,t) # <<<<<<<<<<<<<<
47408  *
47409  * def uDirect(self, x, t):
47410  */
47411  __Pyx_XDECREF(__pyx_r);
47412  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2488, __pyx_L1_error)
47413  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_etaDirect(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2488, __pyx_L1_error)
47414  __Pyx_GOTREF(__pyx_t_1);
47415  __pyx_r = __pyx_t_1;
47416  __pyx_t_1 = 0;
47417  goto __pyx_L0;
47418 
47419  /* "WaveTools.py":2468
47420  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47421  *
47422  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
47423  *
47424  * """Calculates free surface elevation(Timeseries class-direct method
47425  */
47426 
47427  /* function exit code */
47428  __pyx_L1_error:;
47429  __Pyx_XDECREF(__pyx_t_1);
47430  __Pyx_AddTraceback("WaveTools.TimeSeries.etaDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
47431  __pyx_r = NULL;
47432  __pyx_L0:;
47433  __Pyx_XGIVEREF(__pyx_r);
47434  __Pyx_RefNannyFinishContext();
47435  return __pyx_r;
47436 }
47437 
47438 /* "WaveTools.py":2490
47439  * return self._cpp_etaDirect(xx,t)
47440  *
47441  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
47442  * """Calculates wave velocity vector (Timeseries class-direct method)
47443  * Parameters
47444  */
47445 
47446 /* Python wrapper */
47447 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_7uDirect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
47448 static char __pyx_doc_9WaveTools_10TimeSeries_6uDirect[] = "Calculates wave velocity vector (Timeseries class-direct method)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
47449 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_7uDirect = {"uDirect", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_7uDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_6uDirect};
47450 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_7uDirect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
47451  PyObject *__pyx_v_x = 0;
47452  PyObject *__pyx_v_t = 0;
47453  int __pyx_lineno = 0;
47454  const char *__pyx_filename = NULL;
47455  int __pyx_clineno = 0;
47456  PyObject *__pyx_r = 0;
47457  __Pyx_RefNannyDeclarations
47458  __Pyx_RefNannySetupContext("uDirect (wrapper)", 0);
47459  {
47460  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
47461  PyObject* values[2] = {0,0};
47462  if (unlikely(__pyx_kwds)) {
47463  Py_ssize_t kw_args;
47464  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
47465  switch (pos_args) {
47466  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
47467  CYTHON_FALLTHROUGH;
47468  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
47469  CYTHON_FALLTHROUGH;
47470  case 0: break;
47471  default: goto __pyx_L5_argtuple_error;
47472  }
47473  kw_args = PyDict_Size(__pyx_kwds);
47474  switch (pos_args) {
47475  case 0:
47476  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
47477  else goto __pyx_L5_argtuple_error;
47478  CYTHON_FALLTHROUGH;
47479  case 1:
47480  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
47481  else {
47482  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 2, 2, 1); __PYX_ERR(0, 2490, __pyx_L3_error)
47483  }
47484  }
47485  if (unlikely(kw_args > 0)) {
47486  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uDirect") < 0)) __PYX_ERR(0, 2490, __pyx_L3_error)
47487  }
47488  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
47489  goto __pyx_L5_argtuple_error;
47490  } else {
47491  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
47492  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
47493  }
47494  __pyx_v_x = values[0];
47495  __pyx_v_t = values[1];
47496  }
47497  goto __pyx_L4_argument_unpacking_done;
47498  __pyx_L5_argtuple_error:;
47499  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2490, __pyx_L3_error)
47500  __pyx_L3_error:;
47501  __Pyx_AddTraceback("WaveTools.TimeSeries.uDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
47502  __Pyx_RefNannyFinishContext();
47503  return NULL;
47504  __pyx_L4_argument_unpacking_done:;
47505  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_6uDirect(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
47506 
47507  /* function exit code */
47508  __Pyx_RefNannyFinishContext();
47509  return __pyx_r;
47510 }
47511 
47512 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_6uDirect(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
47513  double __pyx_v_xx[3];
47514  double __pyx_v_cppU[3];
47515  PyObject *__pyx_v_ii = NULL;
47516  PyObject *__pyx_v_U = NULL;
47517  PyObject *__pyx_r = NULL;
47518  __Pyx_RefNannyDeclarations
47519  PyObject *__pyx_t_1 = NULL;
47520  PyObject *__pyx_t_2 = NULL;
47521  PyObject *__pyx_t_3 = NULL;
47522  Py_ssize_t __pyx_t_4;
47523  PyObject *(*__pyx_t_5)(PyObject *);
47524  double __pyx_t_6;
47525  Py_ssize_t __pyx_t_7;
47526  int __pyx_lineno = 0;
47527  const char *__pyx_filename = NULL;
47528  int __pyx_clineno = 0;
47529  __Pyx_RefNannySetupContext("uDirect", 0);
47530 
47531  /* "WaveTools.py":2508
47532  * cython.declare(xx=cython.double[3])
47533  * cython.declare(cppU=cython.double[3])
47534  * for ii in range(3): # <<<<<<<<<<<<<<
47535  * xx[ii] = x[ii]
47536  * cppU[ii] = 0.
47537  */
47538  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2508, __pyx_L1_error)
47539  __Pyx_GOTREF(__pyx_t_2);
47540  __pyx_t_3 = NULL;
47541  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
47542  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
47543  if (likely(__pyx_t_3)) {
47544  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
47545  __Pyx_INCREF(__pyx_t_3);
47546  __Pyx_INCREF(function);
47547  __Pyx_DECREF_SET(__pyx_t_2, function);
47548  }
47549  }
47550  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
47551  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
47552  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __pyx_L1_error)
47553  __Pyx_GOTREF(__pyx_t_1);
47554  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47555  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
47556  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
47557  __pyx_t_5 = NULL;
47558  } else {
47559  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2508, __pyx_L1_error)
47560  __Pyx_GOTREF(__pyx_t_2);
47561  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2508, __pyx_L1_error)
47562  }
47563  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47564  for (;;) {
47565  if (likely(!__pyx_t_5)) {
47566  if (likely(PyList_CheckExact(__pyx_t_2))) {
47567  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
47568  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
47569  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2508, __pyx_L1_error)
47570  #else
47571  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __pyx_L1_error)
47572  __Pyx_GOTREF(__pyx_t_1);
47573  #endif
47574  } else {
47575  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
47576  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
47577  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2508, __pyx_L1_error)
47578  #else
47579  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __pyx_L1_error)
47580  __Pyx_GOTREF(__pyx_t_1);
47581  #endif
47582  }
47583  } else {
47584  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
47585  if (unlikely(!__pyx_t_1)) {
47586  PyObject* exc_type = PyErr_Occurred();
47587  if (exc_type) {
47588  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
47589  else __PYX_ERR(0, 2508, __pyx_L1_error)
47590  }
47591  break;
47592  }
47593  __Pyx_GOTREF(__pyx_t_1);
47594  }
47595  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
47596  __pyx_t_1 = 0;
47597 
47598  /* "WaveTools.py":2509
47599  * cython.declare(cppU=cython.double[3])
47600  * for ii in range(3):
47601  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
47602  * cppU[ii] = 0.
47603  * U = np.zeros(3,)
47604  */
47605  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2509, __pyx_L1_error)
47606  __Pyx_GOTREF(__pyx_t_1);
47607  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L1_error)
47608  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47609  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L1_error)
47610  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
47611 
47612  /* "WaveTools.py":2510
47613  * for ii in range(3):
47614  * xx[ii] = x[ii]
47615  * cppU[ii] = 0. # <<<<<<<<<<<<<<
47616  * U = np.zeros(3,)
47617  * self._cpp_uDirect(cppU,xx,t)
47618  */
47619  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2510, __pyx_L1_error)
47620  (__pyx_v_cppU[__pyx_t_7]) = 0.;
47621 
47622  /* "WaveTools.py":2508
47623  * cython.declare(xx=cython.double[3])
47624  * cython.declare(cppU=cython.double[3])
47625  * for ii in range(3): # <<<<<<<<<<<<<<
47626  * xx[ii] = x[ii]
47627  * cppU[ii] = 0.
47628  */
47629  }
47630  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47631 
47632  /* "WaveTools.py":2511
47633  * xx[ii] = x[ii]
47634  * cppU[ii] = 0.
47635  * U = np.zeros(3,) # <<<<<<<<<<<<<<
47636  * self._cpp_uDirect(cppU,xx,t)
47637  * U[0] = cppU[0]
47638  */
47639  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L1_error)
47640  __Pyx_GOTREF(__pyx_t_1);
47641  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2511, __pyx_L1_error)
47642  __Pyx_GOTREF(__pyx_t_3);
47643  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47644  __pyx_t_1 = NULL;
47645  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
47646  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
47647  if (likely(__pyx_t_1)) {
47648  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
47649  __Pyx_INCREF(__pyx_t_1);
47650  __Pyx_INCREF(function);
47651  __Pyx_DECREF_SET(__pyx_t_3, function);
47652  }
47653  }
47654  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
47655  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
47656  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2511, __pyx_L1_error)
47657  __Pyx_GOTREF(__pyx_t_2);
47658  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
47659  __pyx_v_U = __pyx_t_2;
47660  __pyx_t_2 = 0;
47661 
47662  /* "WaveTools.py":2512
47663  * cppU[ii] = 0.
47664  * U = np.zeros(3,)
47665  * self._cpp_uDirect(cppU,xx,t) # <<<<<<<<<<<<<<
47666  * U[0] = cppU[0]
47667  * U[1] = cppU[1]
47668  */
47669  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2512, __pyx_L1_error)
47670  ((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_uDirect(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
47671 
47672  /* "WaveTools.py":2513
47673  * U = np.zeros(3,)
47674  * self._cpp_uDirect(cppU,xx,t)
47675  * U[0] = cppU[0] # <<<<<<<<<<<<<<
47676  * U[1] = cppU[1]
47677  * U[2] = cppU[2]
47678  */
47679  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2513, __pyx_L1_error)
47680  __Pyx_GOTREF(__pyx_t_2);
47681  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2513, __pyx_L1_error)
47682  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47683 
47684  /* "WaveTools.py":2514
47685  * self._cpp_uDirect(cppU,xx,t)
47686  * U[0] = cppU[0]
47687  * U[1] = cppU[1] # <<<<<<<<<<<<<<
47688  * U[2] = cppU[2]
47689  *
47690  */
47691  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2514, __pyx_L1_error)
47692  __Pyx_GOTREF(__pyx_t_2);
47693  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2514, __pyx_L1_error)
47694  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47695 
47696  /* "WaveTools.py":2515
47697  * U[0] = cppU[0]
47698  * U[1] = cppU[1]
47699  * U[2] = cppU[2] # <<<<<<<<<<<<<<
47700  *
47701  * return U
47702  */
47703  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2515, __pyx_L1_error)
47704  __Pyx_GOTREF(__pyx_t_2);
47705  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2515, __pyx_L1_error)
47706  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
47707 
47708  /* "WaveTools.py":2517
47709  * U[2] = cppU[2]
47710  *
47711  * return U # <<<<<<<<<<<<<<
47712  *
47713  * def findWindow(self,t):
47714  */
47715  __Pyx_XDECREF(__pyx_r);
47716  __Pyx_INCREF(__pyx_v_U);
47717  __pyx_r = __pyx_v_U;
47718  goto __pyx_L0;
47719 
47720  /* "WaveTools.py":2490
47721  * return self._cpp_etaDirect(xx,t)
47722  *
47723  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
47724  * """Calculates wave velocity vector (Timeseries class-direct method)
47725  * Parameters
47726  */
47727 
47728  /* function exit code */
47729  __pyx_L1_error:;
47730  __Pyx_XDECREF(__pyx_t_1);
47731  __Pyx_XDECREF(__pyx_t_2);
47732  __Pyx_XDECREF(__pyx_t_3);
47733  __Pyx_AddTraceback("WaveTools.TimeSeries.uDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
47734  __pyx_r = NULL;
47735  __pyx_L0:;
47736  __Pyx_XDECREF(__pyx_v_ii);
47737  __Pyx_XDECREF(__pyx_v_U);
47738  __Pyx_XGIVEREF(__pyx_r);
47739  __Pyx_RefNannyFinishContext();
47740  return __pyx_r;
47741 }
47742 
47743 /* "WaveTools.py":2519
47744  * return U
47745  *
47746  * def findWindow(self,t): # <<<<<<<<<<<<<<
47747  * """Returns the current spectral window in TimeSeries class."
47748  *
47749  */
47750 
47751 /* Python wrapper */
47752 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_9findWindow(PyObject *__pyx_v_self, PyObject *__pyx_v_t); /*proto*/
47753 static char __pyx_doc_9WaveTools_10TimeSeries_8findWindow[] = "Returns the current spectral window in TimeSeries class.\"\n\n Parameters\n ----------\n\n t : float\n Time variable\n\n Returns\n -------\n int\n Index of window as an integer\n\n ";
47754 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_9findWindow = {"findWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_9findWindow, METH_O, __pyx_doc_9WaveTools_10TimeSeries_8findWindow};
47755 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_9findWindow(PyObject *__pyx_v_self, PyObject *__pyx_v_t) {
47756  PyObject *__pyx_r = 0;
47757  __Pyx_RefNannyDeclarations
47758  __Pyx_RefNannySetupContext("findWindow (wrapper)", 0);
47759  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_8findWindow(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), ((PyObject *)__pyx_v_t));
47760 
47761  /* function exit code */
47762  __Pyx_RefNannyFinishContext();
47763  return __pyx_r;
47764 }
47765 
47766 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_8findWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_t) {
47767  PyObject *__pyx_r = NULL;
47768  __Pyx_RefNannyDeclarations
47769  double __pyx_t_1;
47770  PyObject *__pyx_t_2 = NULL;
47771  int __pyx_lineno = 0;
47772  const char *__pyx_filename = NULL;
47773  int __pyx_clineno = 0;
47774  __Pyx_RefNannySetupContext("findWindow", 0);
47775 
47776  /* "WaveTools.py":2534
47777  *
47778  * """
47779  * return __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw # <<<<<<<<<<<<<<
47780  *
47781  * def _cpp_etaWindow(self,x,t):
47782  */
47783  __Pyx_XDECREF(__pyx_r);
47784  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2534, __pyx_L1_error)
47785  __pyx_t_2 = __Pyx_PyInt_From_int(proteus::__cpp_findWindow(__pyx_t_1, __pyx_v_self->handover, __pyx_v_self->t0, __pyx_v_self->Twindow, __pyx_v_self->Nwindows, __pyx_v_self->whand_)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2534, __pyx_L1_error)
47786  __Pyx_GOTREF(__pyx_t_2);
47787  __pyx_r = __pyx_t_2;
47788  __pyx_t_2 = 0;
47789  goto __pyx_L0;
47790 
47791  /* "WaveTools.py":2519
47792  * return U
47793  *
47794  * def findWindow(self,t): # <<<<<<<<<<<<<<
47795  * """Returns the current spectral window in TimeSeries class."
47796  *
47797  */
47798 
47799  /* function exit code */
47800  __pyx_L1_error:;
47801  __Pyx_XDECREF(__pyx_t_2);
47802  __Pyx_AddTraceback("WaveTools.TimeSeries.findWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
47803  __pyx_r = NULL;
47804  __pyx_L0:;
47805  __Pyx_XGIVEREF(__pyx_r);
47806  __Pyx_RefNannyFinishContext();
47807  return __pyx_r;
47808 }
47809 
47810 /* "WaveTools.py":2536
47811  * return __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47812  *
47813  * def _cpp_etaWindow(self,x,t): # <<<<<<<<<<<<<<
47814  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47815  *
47816  */
47817 
47818 static double __pyx_f_9WaveTools_10TimeSeries__cpp_etaWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
47819  int __pyx_v_Nw;
47820  double __pyx_r;
47821  __Pyx_RefNannyDeclarations
47822  __Pyx_RefNannySetupContext("_cpp_etaWindow", 0);
47823 
47824  /* "WaveTools.py":2537
47825  *
47826  * def _cpp_etaWindow(self,x,t):
47827  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw # <<<<<<<<<<<<<<
47828  *
47829  * return __cpp_etaWindow(x,self.x0_,t,self.T0_,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf,Nw, self.fast)
47830  */
47831  __pyx_v_Nw = proteus::__cpp_findWindow(__pyx_v_t, __pyx_v_self->handover, __pyx_v_self->t0, __pyx_v_self->Twindow, __pyx_v_self->Nwindows, __pyx_v_self->whand_);
47832 
47833  /* "WaveTools.py":2539
47834  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47835  *
47836  * return __cpp_etaWindow(x,self.x0_,t,self.T0_,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf,Nw, self.fast) # <<<<<<<<<<<<<<
47837  * def _cpp_uWindow(self,U, x,t):
47838  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47839  */
47840  __pyx_r = proteus::__cpp_etaWindow(__pyx_v_x, __pyx_v_self->x0_, __pyx_v_t, __pyx_v_self->T0_, __pyx_v_self->kDir_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->Nf, __pyx_v_Nw, __pyx_v_self->fast);
47841  goto __pyx_L0;
47842 
47843  /* "WaveTools.py":2536
47844  * return __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47845  *
47846  * def _cpp_etaWindow(self,x,t): # <<<<<<<<<<<<<<
47847  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47848  *
47849  */
47850 
47851  /* function exit code */
47852  __pyx_L0:;
47853  __Pyx_RefNannyFinishContext();
47854  return __pyx_r;
47855 }
47856 
47857 /* "WaveTools.py":2540
47858  *
47859  * return __cpp_etaWindow(x,self.x0_,t,self.T0_,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf,Nw, self.fast)
47860  * def _cpp_uWindow(self,U, x,t): # <<<<<<<<<<<<<<
47861  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47862  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47863  */
47864 
47865 static void __pyx_f_9WaveTools_10TimeSeries__cpp_uWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, double *__pyx_v_U, double *__pyx_v_x, double __pyx_v_t) {
47866  int __pyx_v_Nw;
47867  __Pyx_RefNannyDeclarations
47868  __Pyx_RefNannySetupContext("_cpp_uWindow", 0);
47869 
47870  /* "WaveTools.py":2541
47871  * return __cpp_etaWindow(x,self.x0_,t,self.T0_,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf,Nw, self.fast)
47872  * def _cpp_uWindow(self,U, x,t):
47873  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw # <<<<<<<<<<<<<<
47874  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47875  *
47876  */
47877  __pyx_v_Nw = proteus::__cpp_findWindow(__pyx_v_t, __pyx_v_self->handover, __pyx_v_self->t0, __pyx_v_self->Twindow, __pyx_v_self->Nwindows, __pyx_v_self->whand_);
47878 
47879  /* "WaveTools.py":2542
47880  * def _cpp_uWindow(self,U, x,t):
47881  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47882  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast) # <<<<<<<<<<<<<<
47883  *
47884  * def etaWindow(self, x, t):
47885  */
47886  proteus::__cpp_uWindow(__pyx_v_U, __pyx_v_x, __pyx_v_self->x0_, __pyx_v_t, __pyx_v_self->T0_, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->mwl, __pyx_v_self->depth, __pyx_v_self->Nf, __pyx_v_Nw, __pyx_v_self->waveDir_, __pyx_v_self->vDir_, __pyx_v_self->tanh_, __pyx_v_self->gAbs, __pyx_v_self->fast);
47887 
47888  /* "WaveTools.py":2540
47889  *
47890  * return __cpp_etaWindow(x,self.x0_,t,self.T0_,self.kDir_,self.omega_,self.phi_,self.ai_,self.Nf,Nw, self.fast)
47891  * def _cpp_uWindow(self,U, x,t): # <<<<<<<<<<<<<<
47892  * Nw = __cpp_findWindow(t,self.handover, self.t0,self.Twindow,self.Nwindows, self.whand_) #Nw
47893  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47894  */
47895 
47896  /* function exit code */
47897  __Pyx_RefNannyFinishContext();
47898 }
47899 
47900 /* "WaveTools.py":2544
47901  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
47902  *
47903  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
47904  * """Calculates free surface elevation(Timeseries class-window method
47905  * Parameters
47906  */
47907 
47908 /* Python wrapper */
47909 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_11etaWindow(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
47910 static char __pyx_doc_9WaveTools_10TimeSeries_10etaWindow[] = "Calculates free surface elevation(Timeseries class-window method\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
47911 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_11etaWindow = {"etaWindow", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_11etaWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_10etaWindow};
47912 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_11etaWindow(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
47913  PyObject *__pyx_v_x = 0;
47914  PyObject *__pyx_v_t = 0;
47915  int __pyx_lineno = 0;
47916  const char *__pyx_filename = NULL;
47917  int __pyx_clineno = 0;
47918  PyObject *__pyx_r = 0;
47919  __Pyx_RefNannyDeclarations
47920  __Pyx_RefNannySetupContext("etaWindow (wrapper)", 0);
47921  {
47922  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
47923  PyObject* values[2] = {0,0};
47924  if (unlikely(__pyx_kwds)) {
47925  Py_ssize_t kw_args;
47926  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
47927  switch (pos_args) {
47928  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
47929  CYTHON_FALLTHROUGH;
47930  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
47931  CYTHON_FALLTHROUGH;
47932  case 0: break;
47933  default: goto __pyx_L5_argtuple_error;
47934  }
47935  kw_args = PyDict_Size(__pyx_kwds);
47936  switch (pos_args) {
47937  case 0:
47938  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
47939  else goto __pyx_L5_argtuple_error;
47940  CYTHON_FALLTHROUGH;
47941  case 1:
47942  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
47943  else {
47944  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 2, 2, 1); __PYX_ERR(0, 2544, __pyx_L3_error)
47945  }
47946  }
47947  if (unlikely(kw_args > 0)) {
47948  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "etaWindow") < 0)) __PYX_ERR(0, 2544, __pyx_L3_error)
47949  }
47950  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
47951  goto __pyx_L5_argtuple_error;
47952  } else {
47953  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
47954  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
47955  }
47956  __pyx_v_x = values[0];
47957  __pyx_v_t = values[1];
47958  }
47959  goto __pyx_L4_argument_unpacking_done;
47960  __pyx_L5_argtuple_error:;
47961  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2544, __pyx_L3_error)
47962  __pyx_L3_error:;
47963  __Pyx_AddTraceback("WaveTools.TimeSeries.etaWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
47964  __Pyx_RefNannyFinishContext();
47965  return NULL;
47966  __pyx_L4_argument_unpacking_done:;
47967  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_10etaWindow(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
47968 
47969  /* function exit code */
47970  __Pyx_RefNannyFinishContext();
47971  return __pyx_r;
47972 }
47973 
47974 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10etaWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
47975  double __pyx_v_xx[3];
47976  PyObject *__pyx_r = NULL;
47977  __Pyx_RefNannyDeclarations
47978  PyObject *__pyx_t_1 = NULL;
47979  double __pyx_t_2;
47980  int __pyx_lineno = 0;
47981  const char *__pyx_filename = NULL;
47982  int __pyx_clineno = 0;
47983  __Pyx_RefNannySetupContext("etaWindow", 0);
47984 
47985  /* "WaveTools.py":2560
47986  * """
47987  * cython.declare(xx=cython.double[3])
47988  * xx[0] = x[0] # <<<<<<<<<<<<<<
47989  * xx[1] = x[1]
47990  * xx[2] = x[2]
47991  */
47992  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2560, __pyx_L1_error)
47993  __Pyx_GOTREF(__pyx_t_1);
47994  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2560, __pyx_L1_error)
47995  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
47996  (__pyx_v_xx[0]) = __pyx_t_2;
47997 
47998  /* "WaveTools.py":2561
47999  * cython.declare(xx=cython.double[3])
48000  * xx[0] = x[0]
48001  * xx[1] = x[1] # <<<<<<<<<<<<<<
48002  * xx[2] = x[2]
48003  * return self._cpp_etaWindow(xx,t)
48004  */
48005  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2561, __pyx_L1_error)
48006  __Pyx_GOTREF(__pyx_t_1);
48007  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2561, __pyx_L1_error)
48008  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48009  (__pyx_v_xx[1]) = __pyx_t_2;
48010 
48011  /* "WaveTools.py":2562
48012  * xx[0] = x[0]
48013  * xx[1] = x[1]
48014  * xx[2] = x[2] # <<<<<<<<<<<<<<
48015  * return self._cpp_etaWindow(xx,t)
48016  *
48017  */
48018  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2562, __pyx_L1_error)
48019  __Pyx_GOTREF(__pyx_t_1);
48020  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2562, __pyx_L1_error)
48021  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48022  (__pyx_v_xx[2]) = __pyx_t_2;
48023 
48024  /* "WaveTools.py":2563
48025  * xx[1] = x[1]
48026  * xx[2] = x[2]
48027  * return self._cpp_etaWindow(xx,t) # <<<<<<<<<<<<<<
48028  *
48029  *
48030  */
48031  __Pyx_XDECREF(__pyx_r);
48032  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2563, __pyx_L1_error)
48033  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_etaWindow(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2563, __pyx_L1_error)
48034  __Pyx_GOTREF(__pyx_t_1);
48035  __pyx_r = __pyx_t_1;
48036  __pyx_t_1 = 0;
48037  goto __pyx_L0;
48038 
48039  /* "WaveTools.py":2544
48040  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
48041  *
48042  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
48043  * """Calculates free surface elevation(Timeseries class-window method
48044  * Parameters
48045  */
48046 
48047  /* function exit code */
48048  __pyx_L1_error:;
48049  __Pyx_XDECREF(__pyx_t_1);
48050  __Pyx_AddTraceback("WaveTools.TimeSeries.etaWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
48051  __pyx_r = NULL;
48052  __pyx_L0:;
48053  __Pyx_XGIVEREF(__pyx_r);
48054  __Pyx_RefNannyFinishContext();
48055  return __pyx_r;
48056 }
48057 
48058 /* "WaveTools.py":2566
48059  *
48060  *
48061  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
48062  * """Calculates wave velocity vector (Timeseries class-window method)
48063  * Parameters
48064  */
48065 
48066 /* Python wrapper */
48067 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_13uWindow(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
48068 static char __pyx_doc_9WaveTools_10TimeSeries_12uWindow[] = "Calculates wave velocity vector (Timeseries class-window method)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
48069 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_13uWindow = {"uWindow", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_13uWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_12uWindow};
48070 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_13uWindow(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
48071  PyObject *__pyx_v_x = 0;
48072  PyObject *__pyx_v_t = 0;
48073  int __pyx_lineno = 0;
48074  const char *__pyx_filename = NULL;
48075  int __pyx_clineno = 0;
48076  PyObject *__pyx_r = 0;
48077  __Pyx_RefNannyDeclarations
48078  __Pyx_RefNannySetupContext("uWindow (wrapper)", 0);
48079  {
48080  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
48081  PyObject* values[2] = {0,0};
48082  if (unlikely(__pyx_kwds)) {
48083  Py_ssize_t kw_args;
48084  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
48085  switch (pos_args) {
48086  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
48087  CYTHON_FALLTHROUGH;
48088  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
48089  CYTHON_FALLTHROUGH;
48090  case 0: break;
48091  default: goto __pyx_L5_argtuple_error;
48092  }
48093  kw_args = PyDict_Size(__pyx_kwds);
48094  switch (pos_args) {
48095  case 0:
48096  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
48097  else goto __pyx_L5_argtuple_error;
48098  CYTHON_FALLTHROUGH;
48099  case 1:
48100  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
48101  else {
48102  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 2, 2, 1); __PYX_ERR(0, 2566, __pyx_L3_error)
48103  }
48104  }
48105  if (unlikely(kw_args > 0)) {
48106  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uWindow") < 0)) __PYX_ERR(0, 2566, __pyx_L3_error)
48107  }
48108  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
48109  goto __pyx_L5_argtuple_error;
48110  } else {
48111  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
48112  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
48113  }
48114  __pyx_v_x = values[0];
48115  __pyx_v_t = values[1];
48116  }
48117  goto __pyx_L4_argument_unpacking_done;
48118  __pyx_L5_argtuple_error:;
48119  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2566, __pyx_L3_error)
48120  __pyx_L3_error:;
48121  __Pyx_AddTraceback("WaveTools.TimeSeries.uWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
48122  __Pyx_RefNannyFinishContext();
48123  return NULL;
48124  __pyx_L4_argument_unpacking_done:;
48125  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_12uWindow(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
48126 
48127  /* function exit code */
48128  __Pyx_RefNannyFinishContext();
48129  return __pyx_r;
48130 }
48131 
48132 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_12uWindow(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
48133  double __pyx_v_xx[3];
48134  double __pyx_v_cppU[3];
48135  PyObject *__pyx_v_ii = NULL;
48136  PyObject *__pyx_v_U = NULL;
48137  PyObject *__pyx_r = NULL;
48138  __Pyx_RefNannyDeclarations
48139  PyObject *__pyx_t_1 = NULL;
48140  PyObject *__pyx_t_2 = NULL;
48141  PyObject *__pyx_t_3 = NULL;
48142  Py_ssize_t __pyx_t_4;
48143  PyObject *(*__pyx_t_5)(PyObject *);
48144  double __pyx_t_6;
48145  Py_ssize_t __pyx_t_7;
48146  int __pyx_lineno = 0;
48147  const char *__pyx_filename = NULL;
48148  int __pyx_clineno = 0;
48149  __Pyx_RefNannySetupContext("uWindow", 0);
48150 
48151  /* "WaveTools.py":2583
48152  * cython.declare(xx=cython.double[3])
48153  * cython.declare(cppU=cython.double[3])
48154  * for ii in range(3): # <<<<<<<<<<<<<<
48155  * xx[ii] = x[ii]
48156  * cppU[ii] = 0.
48157  */
48158  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2583, __pyx_L1_error)
48159  __Pyx_GOTREF(__pyx_t_2);
48160  __pyx_t_3 = NULL;
48161  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
48162  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
48163  if (likely(__pyx_t_3)) {
48164  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
48165  __Pyx_INCREF(__pyx_t_3);
48166  __Pyx_INCREF(function);
48167  __Pyx_DECREF_SET(__pyx_t_2, function);
48168  }
48169  }
48170  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_3);
48171  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
48172  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2583, __pyx_L1_error)
48173  __Pyx_GOTREF(__pyx_t_1);
48174  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
48175  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
48176  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
48177  __pyx_t_5 = NULL;
48178  } else {
48179  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2583, __pyx_L1_error)
48180  __Pyx_GOTREF(__pyx_t_2);
48181  __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2583, __pyx_L1_error)
48182  }
48183  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48184  for (;;) {
48185  if (likely(!__pyx_t_5)) {
48186  if (likely(PyList_CheckExact(__pyx_t_2))) {
48187  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
48188  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
48189  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2583, __pyx_L1_error)
48190  #else
48191  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2583, __pyx_L1_error)
48192  __Pyx_GOTREF(__pyx_t_1);
48193  #endif
48194  } else {
48195  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
48196  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
48197  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2583, __pyx_L1_error)
48198  #else
48199  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2583, __pyx_L1_error)
48200  __Pyx_GOTREF(__pyx_t_1);
48201  #endif
48202  }
48203  } else {
48204  __pyx_t_1 = __pyx_t_5(__pyx_t_2);
48205  if (unlikely(!__pyx_t_1)) {
48206  PyObject* exc_type = PyErr_Occurred();
48207  if (exc_type) {
48208  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
48209  else __PYX_ERR(0, 2583, __pyx_L1_error)
48210  }
48211  break;
48212  }
48213  __Pyx_GOTREF(__pyx_t_1);
48214  }
48215  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
48216  __pyx_t_1 = 0;
48217 
48218  /* "WaveTools.py":2584
48219  * cython.declare(cppU=cython.double[3])
48220  * for ii in range(3):
48221  * xx[ii] = x[ii] # <<<<<<<<<<<<<<
48222  * cppU[ii] = 0.
48223  * U = np.zeros(3,)
48224  */
48225  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2584, __pyx_L1_error)
48226  __Pyx_GOTREF(__pyx_t_1);
48227  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L1_error)
48228  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48229  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2584, __pyx_L1_error)
48230  (__pyx_v_xx[__pyx_t_7]) = __pyx_t_6;
48231 
48232  /* "WaveTools.py":2585
48233  * for ii in range(3):
48234  * xx[ii] = x[ii]
48235  * cppU[ii] = 0. # <<<<<<<<<<<<<<
48236  * U = np.zeros(3,)
48237  * self._cpp_uWindow(cppU,xx,t)
48238  */
48239  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ii); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2585, __pyx_L1_error)
48240  (__pyx_v_cppU[__pyx_t_7]) = 0.;
48241 
48242  /* "WaveTools.py":2583
48243  * cython.declare(xx=cython.double[3])
48244  * cython.declare(cppU=cython.double[3])
48245  * for ii in range(3): # <<<<<<<<<<<<<<
48246  * xx[ii] = x[ii]
48247  * cppU[ii] = 0.
48248  */
48249  }
48250  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
48251 
48252  /* "WaveTools.py":2586
48253  * xx[ii] = x[ii]
48254  * cppU[ii] = 0.
48255  * U = np.zeros(3,) # <<<<<<<<<<<<<<
48256  * self._cpp_uWindow(cppU,xx,t)
48257  * U[0] = cppU[0]
48258  */
48259  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2586, __pyx_L1_error)
48260  __Pyx_GOTREF(__pyx_t_1);
48261  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2586, __pyx_L1_error)
48262  __Pyx_GOTREF(__pyx_t_3);
48263  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48264  __pyx_t_1 = NULL;
48265  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
48266  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
48267  if (likely(__pyx_t_1)) {
48268  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
48269  __Pyx_INCREF(__pyx_t_1);
48270  __Pyx_INCREF(function);
48271  __Pyx_DECREF_SET(__pyx_t_3, function);
48272  }
48273  }
48274  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
48275  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
48276  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2586, __pyx_L1_error)
48277  __Pyx_GOTREF(__pyx_t_2);
48278  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
48279  __pyx_v_U = __pyx_t_2;
48280  __pyx_t_2 = 0;
48281 
48282  /* "WaveTools.py":2587
48283  * cppU[ii] = 0.
48284  * U = np.zeros(3,)
48285  * self._cpp_uWindow(cppU,xx,t) # <<<<<<<<<<<<<<
48286  * U[0] = cppU[0]
48287  * U[1] = cppU[1]
48288  */
48289  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2587, __pyx_L1_error)
48290  ((struct __pyx_vtabstruct_9WaveTools_TimeSeries *)__pyx_v_self->__pyx_vtab)->_cpp_uWindow(__pyx_v_self, __pyx_v_cppU, __pyx_v_xx, __pyx_t_6);
48291 
48292  /* "WaveTools.py":2588
48293  * U = np.zeros(3,)
48294  * self._cpp_uWindow(cppU,xx,t)
48295  * U[0] = cppU[0] # <<<<<<<<<<<<<<
48296  * U[1] = cppU[1]
48297  * U[2] = cppU[2]
48298  */
48299  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2588, __pyx_L1_error)
48300  __Pyx_GOTREF(__pyx_t_2);
48301  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 0, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2588, __pyx_L1_error)
48302  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
48303 
48304  /* "WaveTools.py":2589
48305  * self._cpp_uWindow(cppU,xx,t)
48306  * U[0] = cppU[0]
48307  * U[1] = cppU[1] # <<<<<<<<<<<<<<
48308  * U[2] = cppU[2]
48309  *
48310  */
48311  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2589, __pyx_L1_error)
48312  __Pyx_GOTREF(__pyx_t_2);
48313  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 1, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2589, __pyx_L1_error)
48314  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
48315 
48316  /* "WaveTools.py":2590
48317  * U[0] = cppU[0]
48318  * U[1] = cppU[1]
48319  * U[2] = cppU[2] # <<<<<<<<<<<<<<
48320  *
48321  * return U
48322  */
48323  __pyx_t_2 = PyFloat_FromDouble((__pyx_v_cppU[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2590, __pyx_L1_error)
48324  __Pyx_GOTREF(__pyx_t_2);
48325  if (unlikely(__Pyx_SetItemInt(__pyx_v_U, 2, __pyx_t_2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(0, 2590, __pyx_L1_error)
48326  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
48327 
48328  /* "WaveTools.py":2592
48329  * U[2] = cppU[2]
48330  *
48331  * return U # <<<<<<<<<<<<<<
48332  *
48333  *
48334  */
48335  __Pyx_XDECREF(__pyx_r);
48336  __Pyx_INCREF(__pyx_v_U);
48337  __pyx_r = __pyx_v_U;
48338  goto __pyx_L0;
48339 
48340  /* "WaveTools.py":2566
48341  *
48342  *
48343  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
48344  * """Calculates wave velocity vector (Timeseries class-window method)
48345  * Parameters
48346  */
48347 
48348  /* function exit code */
48349  __pyx_L1_error:;
48350  __Pyx_XDECREF(__pyx_t_1);
48351  __Pyx_XDECREF(__pyx_t_2);
48352  __Pyx_XDECREF(__pyx_t_3);
48353  __Pyx_AddTraceback("WaveTools.TimeSeries.uWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
48354  __pyx_r = NULL;
48355  __pyx_L0:;
48356  __Pyx_XDECREF(__pyx_v_ii);
48357  __Pyx_XDECREF(__pyx_v_U);
48358  __Pyx_XGIVEREF(__pyx_r);
48359  __Pyx_RefNannyFinishContext();
48360  return __pyx_r;
48361 }
48362 
48363 /* "WaveTools.pxd":220
48364  * cdef double[1000000] T0
48365  * cdef public:
48366  * double wavelength,mwl # <<<<<<<<<<<<<<
48367  * object eta,u
48368  * cdef cfeta2 _cpp_eta
48369  */
48370 
48371 /* Python wrapper */
48372 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_10wavelength_1__get__(PyObject *__pyx_v_self); /*proto*/
48373 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_10wavelength_1__get__(PyObject *__pyx_v_self) {
48374  PyObject *__pyx_r = 0;
48375  __Pyx_RefNannyDeclarations
48376  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
48377  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_10wavelength___get__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48378 
48379  /* function exit code */
48380  __Pyx_RefNannyFinishContext();
48381  return __pyx_r;
48382 }
48383 
48384 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10wavelength___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48385  PyObject *__pyx_r = NULL;
48386  __Pyx_RefNannyDeclarations
48387  PyObject *__pyx_t_1 = NULL;
48388  int __pyx_lineno = 0;
48389  const char *__pyx_filename = NULL;
48390  int __pyx_clineno = 0;
48391  __Pyx_RefNannySetupContext("__get__", 0);
48392  __Pyx_XDECREF(__pyx_r);
48393  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->wavelength); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 220, __pyx_L1_error)
48394  __Pyx_GOTREF(__pyx_t_1);
48395  __pyx_r = __pyx_t_1;
48396  __pyx_t_1 = 0;
48397  goto __pyx_L0;
48398 
48399  /* function exit code */
48400  __pyx_L1_error:;
48401  __Pyx_XDECREF(__pyx_t_1);
48402  __Pyx_AddTraceback("WaveTools.TimeSeries.wavelength.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
48403  __pyx_r = NULL;
48404  __pyx_L0:;
48405  __Pyx_XGIVEREF(__pyx_r);
48406  __Pyx_RefNannyFinishContext();
48407  return __pyx_r;
48408 }
48409 
48410 /* Python wrapper */
48411 static int __pyx_pw_9WaveTools_10TimeSeries_10wavelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
48412 static int __pyx_pw_9WaveTools_10TimeSeries_10wavelength_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
48413  int __pyx_r;
48414  __Pyx_RefNannyDeclarations
48415  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
48416  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_10wavelength_2__set__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), ((PyObject *)__pyx_v_value));
48417 
48418  /* function exit code */
48419  __Pyx_RefNannyFinishContext();
48420  return __pyx_r;
48421 }
48422 
48423 static int __pyx_pf_9WaveTools_10TimeSeries_10wavelength_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value) {
48424  int __pyx_r;
48425  __Pyx_RefNannyDeclarations
48426  double __pyx_t_1;
48427  int __pyx_lineno = 0;
48428  const char *__pyx_filename = NULL;
48429  int __pyx_clineno = 0;
48430  __Pyx_RefNannySetupContext("__set__", 0);
48431  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 220, __pyx_L1_error)
48432  __pyx_v_self->wavelength = __pyx_t_1;
48433 
48434  /* function exit code */
48435  __pyx_r = 0;
48436  goto __pyx_L0;
48437  __pyx_L1_error:;
48438  __Pyx_AddTraceback("WaveTools.TimeSeries.wavelength.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
48439  __pyx_r = -1;
48440  __pyx_L0:;
48441  __Pyx_RefNannyFinishContext();
48442  return __pyx_r;
48443 }
48444 
48445 /* Python wrapper */
48446 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3mwl_1__get__(PyObject *__pyx_v_self); /*proto*/
48447 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3mwl_1__get__(PyObject *__pyx_v_self) {
48448  PyObject *__pyx_r = 0;
48449  __Pyx_RefNannyDeclarations
48450  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
48451  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_3mwl___get__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48452 
48453  /* function exit code */
48454  __Pyx_RefNannyFinishContext();
48455  return __pyx_r;
48456 }
48457 
48458 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_3mwl___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48459  PyObject *__pyx_r = NULL;
48460  __Pyx_RefNannyDeclarations
48461  PyObject *__pyx_t_1 = NULL;
48462  int __pyx_lineno = 0;
48463  const char *__pyx_filename = NULL;
48464  int __pyx_clineno = 0;
48465  __Pyx_RefNannySetupContext("__get__", 0);
48466  __Pyx_XDECREF(__pyx_r);
48467  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->mwl); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 220, __pyx_L1_error)
48468  __Pyx_GOTREF(__pyx_t_1);
48469  __pyx_r = __pyx_t_1;
48470  __pyx_t_1 = 0;
48471  goto __pyx_L0;
48472 
48473  /* function exit code */
48474  __pyx_L1_error:;
48475  __Pyx_XDECREF(__pyx_t_1);
48476  __Pyx_AddTraceback("WaveTools.TimeSeries.mwl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
48477  __pyx_r = NULL;
48478  __pyx_L0:;
48479  __Pyx_XGIVEREF(__pyx_r);
48480  __Pyx_RefNannyFinishContext();
48481  return __pyx_r;
48482 }
48483 
48484 /* Python wrapper */
48485 static int __pyx_pw_9WaveTools_10TimeSeries_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
48486 static int __pyx_pw_9WaveTools_10TimeSeries_3mwl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
48487  int __pyx_r;
48488  __Pyx_RefNannyDeclarations
48489  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
48490  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_3mwl_2__set__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), ((PyObject *)__pyx_v_value));
48491 
48492  /* function exit code */
48493  __Pyx_RefNannyFinishContext();
48494  return __pyx_r;
48495 }
48496 
48497 static int __pyx_pf_9WaveTools_10TimeSeries_3mwl_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value) {
48498  int __pyx_r;
48499  __Pyx_RefNannyDeclarations
48500  double __pyx_t_1;
48501  int __pyx_lineno = 0;
48502  const char *__pyx_filename = NULL;
48503  int __pyx_clineno = 0;
48504  __Pyx_RefNannySetupContext("__set__", 0);
48505  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 220, __pyx_L1_error)
48506  __pyx_v_self->mwl = __pyx_t_1;
48507 
48508  /* function exit code */
48509  __pyx_r = 0;
48510  goto __pyx_L0;
48511  __pyx_L1_error:;
48512  __Pyx_AddTraceback("WaveTools.TimeSeries.mwl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
48513  __pyx_r = -1;
48514  __pyx_L0:;
48515  __Pyx_RefNannyFinishContext();
48516  return __pyx_r;
48517 }
48518 
48519 /* "WaveTools.pxd":221
48520  * cdef public:
48521  * double wavelength,mwl
48522  * object eta,u # <<<<<<<<<<<<<<
48523  * cdef cfeta2 _cpp_eta
48524  * cdef cfvel2 _cpp_u
48525  */
48526 
48527 /* Python wrapper */
48528 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3eta_1__get__(PyObject *__pyx_v_self); /*proto*/
48529 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3eta_1__get__(PyObject *__pyx_v_self) {
48530  PyObject *__pyx_r = 0;
48531  __Pyx_RefNannyDeclarations
48532  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
48533  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_3eta___get__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48534 
48535  /* function exit code */
48536  __Pyx_RefNannyFinishContext();
48537  return __pyx_r;
48538 }
48539 
48540 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_3eta___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48541  PyObject *__pyx_r = NULL;
48542  __Pyx_RefNannyDeclarations
48543  __Pyx_RefNannySetupContext("__get__", 0);
48544  __Pyx_XDECREF(__pyx_r);
48545  __Pyx_INCREF(__pyx_v_self->eta);
48546  __pyx_r = __pyx_v_self->eta;
48547  goto __pyx_L0;
48548 
48549  /* function exit code */
48550  __pyx_L0:;
48551  __Pyx_XGIVEREF(__pyx_r);
48552  __Pyx_RefNannyFinishContext();
48553  return __pyx_r;
48554 }
48555 
48556 /* Python wrapper */
48557 static int __pyx_pw_9WaveTools_10TimeSeries_3eta_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
48558 static int __pyx_pw_9WaveTools_10TimeSeries_3eta_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
48559  int __pyx_r;
48560  __Pyx_RefNannyDeclarations
48561  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
48562  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_3eta_2__set__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), ((PyObject *)__pyx_v_value));
48563 
48564  /* function exit code */
48565  __Pyx_RefNannyFinishContext();
48566  return __pyx_r;
48567 }
48568 
48569 static int __pyx_pf_9WaveTools_10TimeSeries_3eta_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value) {
48570  int __pyx_r;
48571  __Pyx_RefNannyDeclarations
48572  __Pyx_RefNannySetupContext("__set__", 0);
48573  __Pyx_INCREF(__pyx_v_value);
48574  __Pyx_GIVEREF(__pyx_v_value);
48575  __Pyx_GOTREF(__pyx_v_self->eta);
48576  __Pyx_DECREF(__pyx_v_self->eta);
48577  __pyx_v_self->eta = __pyx_v_value;
48578 
48579  /* function exit code */
48580  __pyx_r = 0;
48581  __Pyx_RefNannyFinishContext();
48582  return __pyx_r;
48583 }
48584 
48585 /* Python wrapper */
48586 static int __pyx_pw_9WaveTools_10TimeSeries_3eta_5__del__(PyObject *__pyx_v_self); /*proto*/
48587 static int __pyx_pw_9WaveTools_10TimeSeries_3eta_5__del__(PyObject *__pyx_v_self) {
48588  int __pyx_r;
48589  __Pyx_RefNannyDeclarations
48590  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
48591  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_3eta_4__del__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48592 
48593  /* function exit code */
48594  __Pyx_RefNannyFinishContext();
48595  return __pyx_r;
48596 }
48597 
48598 static int __pyx_pf_9WaveTools_10TimeSeries_3eta_4__del__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48599  int __pyx_r;
48600  __Pyx_RefNannyDeclarations
48601  __Pyx_RefNannySetupContext("__del__", 0);
48602  __Pyx_INCREF(Py_None);
48603  __Pyx_GIVEREF(Py_None);
48604  __Pyx_GOTREF(__pyx_v_self->eta);
48605  __Pyx_DECREF(__pyx_v_self->eta);
48606  __pyx_v_self->eta = Py_None;
48607 
48608  /* function exit code */
48609  __pyx_r = 0;
48610  __Pyx_RefNannyFinishContext();
48611  return __pyx_r;
48612 }
48613 
48614 /* Python wrapper */
48615 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_1u_1__get__(PyObject *__pyx_v_self); /*proto*/
48616 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_1u_1__get__(PyObject *__pyx_v_self) {
48617  PyObject *__pyx_r = 0;
48618  __Pyx_RefNannyDeclarations
48619  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
48620  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_1u___get__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48621 
48622  /* function exit code */
48623  __Pyx_RefNannyFinishContext();
48624  return __pyx_r;
48625 }
48626 
48627 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_1u___get__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48628  PyObject *__pyx_r = NULL;
48629  __Pyx_RefNannyDeclarations
48630  __Pyx_RefNannySetupContext("__get__", 0);
48631  __Pyx_XDECREF(__pyx_r);
48632  __Pyx_INCREF(__pyx_v_self->u);
48633  __pyx_r = __pyx_v_self->u;
48634  goto __pyx_L0;
48635 
48636  /* function exit code */
48637  __pyx_L0:;
48638  __Pyx_XGIVEREF(__pyx_r);
48639  __Pyx_RefNannyFinishContext();
48640  return __pyx_r;
48641 }
48642 
48643 /* Python wrapper */
48644 static int __pyx_pw_9WaveTools_10TimeSeries_1u_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
48645 static int __pyx_pw_9WaveTools_10TimeSeries_1u_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
48646  int __pyx_r;
48647  __Pyx_RefNannyDeclarations
48648  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
48649  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_1u_2__set__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), ((PyObject *)__pyx_v_value));
48650 
48651  /* function exit code */
48652  __Pyx_RefNannyFinishContext();
48653  return __pyx_r;
48654 }
48655 
48656 static int __pyx_pf_9WaveTools_10TimeSeries_1u_2__set__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, PyObject *__pyx_v_value) {
48657  int __pyx_r;
48658  __Pyx_RefNannyDeclarations
48659  __Pyx_RefNannySetupContext("__set__", 0);
48660  __Pyx_INCREF(__pyx_v_value);
48661  __Pyx_GIVEREF(__pyx_v_value);
48662  __Pyx_GOTREF(__pyx_v_self->u);
48663  __Pyx_DECREF(__pyx_v_self->u);
48664  __pyx_v_self->u = __pyx_v_value;
48665 
48666  /* function exit code */
48667  __pyx_r = 0;
48668  __Pyx_RefNannyFinishContext();
48669  return __pyx_r;
48670 }
48671 
48672 /* Python wrapper */
48673 static int __pyx_pw_9WaveTools_10TimeSeries_1u_5__del__(PyObject *__pyx_v_self); /*proto*/
48674 static int __pyx_pw_9WaveTools_10TimeSeries_1u_5__del__(PyObject *__pyx_v_self) {
48675  int __pyx_r;
48676  __Pyx_RefNannyDeclarations
48677  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
48678  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_1u_4__del__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48679 
48680  /* function exit code */
48681  __Pyx_RefNannyFinishContext();
48682  return __pyx_r;
48683 }
48684 
48685 static int __pyx_pf_9WaveTools_10TimeSeries_1u_4__del__(struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48686  int __pyx_r;
48687  __Pyx_RefNannyDeclarations
48688  __Pyx_RefNannySetupContext("__del__", 0);
48689  __Pyx_INCREF(Py_None);
48690  __Pyx_GIVEREF(Py_None);
48691  __Pyx_GOTREF(__pyx_v_self->u);
48692  __Pyx_DECREF(__pyx_v_self->u);
48693  __pyx_v_self->u = Py_None;
48694 
48695  /* function exit code */
48696  __pyx_r = 0;
48697  __Pyx_RefNannyFinishContext();
48698  return __pyx_r;
48699 }
48700 
48701 /* "(tree fragment)":1
48702  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
48703  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48704  * def __setstate_cython__(self, __pyx_state):
48705  */
48706 
48707 /* Python wrapper */
48708 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
48709 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_15__reduce_cython__, METH_NOARGS, 0};
48710 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
48711  PyObject *__pyx_r = 0;
48712  __Pyx_RefNannyDeclarations
48713  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
48714  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_14__reduce_cython__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self));
48715 
48716  /* function exit code */
48717  __Pyx_RefNannyFinishContext();
48718  return __pyx_r;
48719 }
48720 
48721 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self) {
48722  PyObject *__pyx_r = NULL;
48723  __Pyx_RefNannyDeclarations
48724  PyObject *__pyx_t_1 = NULL;
48725  int __pyx_lineno = 0;
48726  const char *__pyx_filename = NULL;
48727  int __pyx_clineno = 0;
48728  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
48729 
48730  /* "(tree fragment)":2
48731  * def __reduce_cython__(self):
48732  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
48733  * def __setstate_cython__(self, __pyx_state):
48734  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48735  */
48736  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
48737  __Pyx_GOTREF(__pyx_t_1);
48738  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
48739  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48740  __PYX_ERR(1, 2, __pyx_L1_error)
48741 
48742  /* "(tree fragment)":1
48743  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
48744  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48745  * def __setstate_cython__(self, __pyx_state):
48746  */
48747 
48748  /* function exit code */
48749  __pyx_L1_error:;
48750  __Pyx_XDECREF(__pyx_t_1);
48751  __Pyx_AddTraceback("WaveTools.TimeSeries.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
48752  __pyx_r = NULL;
48753  __Pyx_XGIVEREF(__pyx_r);
48754  __Pyx_RefNannyFinishContext();
48755  return __pyx_r;
48756 }
48757 
48758 /* "(tree fragment)":3
48759  * def __reduce_cython__(self):
48760  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48761  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
48762  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48763  */
48764 
48765 /* Python wrapper */
48766 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
48767 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_17__setstate_cython__, METH_O, 0};
48768 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
48769  PyObject *__pyx_r = 0;
48770  __Pyx_RefNannyDeclarations
48771  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
48772  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_16__setstate_cython__(((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
48773 
48774  /* function exit code */
48775  __Pyx_RefNannyFinishContext();
48776  return __pyx_r;
48777 }
48778 
48779 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
48780  PyObject *__pyx_r = NULL;
48781  __Pyx_RefNannyDeclarations
48782  PyObject *__pyx_t_1 = NULL;
48783  int __pyx_lineno = 0;
48784  const char *__pyx_filename = NULL;
48785  int __pyx_clineno = 0;
48786  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
48787 
48788  /* "(tree fragment)":4
48789  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48790  * def __setstate_cython__(self, __pyx_state):
48791  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
48792  */
48793  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
48794  __Pyx_GOTREF(__pyx_t_1);
48795  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
48796  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
48797  __PYX_ERR(1, 4, __pyx_L1_error)
48798 
48799  /* "(tree fragment)":3
48800  * def __reduce_cython__(self):
48801  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48802  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
48803  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
48804  */
48805 
48806  /* function exit code */
48807  __pyx_L1_error:;
48808  __Pyx_XDECREF(__pyx_t_1);
48809  __Pyx_AddTraceback("WaveTools.TimeSeries.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
48810  __pyx_r = NULL;
48811  __Pyx_XGIVEREF(__pyx_r);
48812  __Pyx_RefNannyFinishContext();
48813  return __pyx_r;
48814 }
48815 
48816 /* "WaveTools.py":2647
48817  * """
48818  *
48819  * def __init__(self, # <<<<<<<<<<<<<<
48820  * Tstart,
48821  * Tend,
48822  */
48823 
48824 /* Python wrapper */
48825 static PyObject *__pyx_pw_9WaveTools_15RandomWavesFast_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
48826 static PyMethodDef __pyx_mdef_9WaveTools_15RandomWavesFast_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_15RandomWavesFast_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
48827 static PyObject *__pyx_pw_9WaveTools_15RandomWavesFast_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
48828  PyObject *__pyx_v_self = 0;
48829  PyObject *__pyx_v_Tstart = 0;
48830  PyObject *__pyx_v_Tend = 0;
48831  PyObject *__pyx_v_x0 = 0;
48832  PyObject *__pyx_v_Tp = 0;
48833  PyObject *__pyx_v_Hs = 0;
48834  PyObject *__pyx_v_mwl = 0;
48835  PyObject *__pyx_v_depth = 0;
48836  PyObject *__pyx_v_waveDir = 0;
48837  PyObject *__pyx_v_g = 0;
48838  PyObject *__pyx_v_N = 0;
48839  PyObject *__pyx_v_bandFactor = 0;
48840  PyObject *__pyx_v_spectName = 0;
48841  PyObject *__pyx_v_spectral_params = 0;
48842  PyObject *__pyx_v_phi = 0;
48843  PyObject *__pyx_v_Lgen = 0;
48844  PyObject *__pyx_v_Nwaves = 0;
48845  PyObject *__pyx_v_Nfreq = 0;
48846  PyObject *__pyx_v_checkAcc = 0;
48847  PyObject *__pyx_v_fast = 0;
48848  int __pyx_lineno = 0;
48849  const char *__pyx_filename = NULL;
48850  int __pyx_clineno = 0;
48851  PyObject *__pyx_r = 0;
48852  __Pyx_RefNannyDeclarations
48853  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
48854  {
48855  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Tstart,&__pyx_n_s_Tend,&__pyx_n_s_x0,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,&__pyx_n_s_Lgen,&__pyx_n_s_Nwaves,&__pyx_n_s_Nfreq,&__pyx_n_s_checkAcc,&__pyx_n_s_fast,0};
48856  PyObject* values[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
48857 
48858  /* "WaveTools.py":2660
48859  * bandFactor, #accelerationof gravity
48860  * spectName ,# random words will result in error and return the available spectra
48861  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
48862  * phi=None,
48863  * Lgen =None,
48864  */
48865  values[13] = ((PyObject *)((PyObject *)Py_None));
48866 
48867  /* "WaveTools.py":2661
48868  * spectName ,# random words will result in error and return the available spectra
48869  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
48870  * phi=None, # <<<<<<<<<<<<<<
48871  * Lgen =None,
48872  * Nwaves = 15,
48873  */
48874  values[14] = ((PyObject *)((PyObject *)Py_None));
48875 
48876  /* "WaveTools.py":2662
48877  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
48878  * phi=None,
48879  * Lgen =None, # <<<<<<<<<<<<<<
48880  * Nwaves = 15,
48881  * Nfreq = 32,
48882  */
48883  values[15] = ((PyObject *)((PyObject *)Py_None));
48884  values[16] = ((PyObject *)((PyObject *)__pyx_int_15));
48885  values[17] = ((PyObject *)((PyObject *)__pyx_int_32));
48886 
48887  /* "WaveTools.py":2665
48888  * Nwaves = 15,
48889  * Nfreq = 32,
48890  * checkAcc = True, # <<<<<<<<<<<<<<
48891  * fast= True):
48892  * RW = RandomWaves(
48893  */
48894  values[18] = ((PyObject *)((PyObject *)Py_True));
48895 
48896  /* "WaveTools.py":2666
48897  * Nfreq = 32,
48898  * checkAcc = True,
48899  * fast= True): # <<<<<<<<<<<<<<
48900  * RW = RandomWaves(
48901  * Tp, # np array with
48902  */
48903  values[19] = ((PyObject *)((PyObject *)Py_True));
48904  if (unlikely(__pyx_kwds)) {
48905  Py_ssize_t kw_args;
48906  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
48907  switch (pos_args) {
48908  case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
48909  CYTHON_FALLTHROUGH;
48910  case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
48911  CYTHON_FALLTHROUGH;
48912  case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
48913  CYTHON_FALLTHROUGH;
48914  case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
48915  CYTHON_FALLTHROUGH;
48916  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
48917  CYTHON_FALLTHROUGH;
48918  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
48919  CYTHON_FALLTHROUGH;
48920  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
48921  CYTHON_FALLTHROUGH;
48922  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
48923  CYTHON_FALLTHROUGH;
48924  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
48925  CYTHON_FALLTHROUGH;
48926  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
48927  CYTHON_FALLTHROUGH;
48928  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
48929  CYTHON_FALLTHROUGH;
48930  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
48931  CYTHON_FALLTHROUGH;
48932  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
48933  CYTHON_FALLTHROUGH;
48934  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
48935  CYTHON_FALLTHROUGH;
48936  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
48937  CYTHON_FALLTHROUGH;
48938  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
48939  CYTHON_FALLTHROUGH;
48940  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
48941  CYTHON_FALLTHROUGH;
48942  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
48943  CYTHON_FALLTHROUGH;
48944  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
48945  CYTHON_FALLTHROUGH;
48946  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
48947  CYTHON_FALLTHROUGH;
48948  case 0: break;
48949  default: goto __pyx_L5_argtuple_error;
48950  }
48951  kw_args = PyDict_Size(__pyx_kwds);
48952  switch (pos_args) {
48953  case 0:
48954  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
48955  else goto __pyx_L5_argtuple_error;
48956  CYTHON_FALLTHROUGH;
48957  case 1:
48958  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tstart)) != 0)) kw_args--;
48959  else {
48960  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 1); __PYX_ERR(0, 2647, __pyx_L3_error)
48961  }
48962  CYTHON_FALLTHROUGH;
48963  case 2:
48964  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tend)) != 0)) kw_args--;
48965  else {
48966  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 2); __PYX_ERR(0, 2647, __pyx_L3_error)
48967  }
48968  CYTHON_FALLTHROUGH;
48969  case 3:
48970  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
48971  else {
48972  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 3); __PYX_ERR(0, 2647, __pyx_L3_error)
48973  }
48974  CYTHON_FALLTHROUGH;
48975  case 4:
48976  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
48977  else {
48978  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 4); __PYX_ERR(0, 2647, __pyx_L3_error)
48979  }
48980  CYTHON_FALLTHROUGH;
48981  case 5:
48982  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
48983  else {
48984  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 5); __PYX_ERR(0, 2647, __pyx_L3_error)
48985  }
48986  CYTHON_FALLTHROUGH;
48987  case 6:
48988  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
48989  else {
48990  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 6); __PYX_ERR(0, 2647, __pyx_L3_error)
48991  }
48992  CYTHON_FALLTHROUGH;
48993  case 7:
48994  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
48995  else {
48996  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 7); __PYX_ERR(0, 2647, __pyx_L3_error)
48997  }
48998  CYTHON_FALLTHROUGH;
48999  case 8:
49000  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
49001  else {
49002  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 8); __PYX_ERR(0, 2647, __pyx_L3_error)
49003  }
49004  CYTHON_FALLTHROUGH;
49005  case 9:
49006  if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
49007  else {
49008  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 9); __PYX_ERR(0, 2647, __pyx_L3_error)
49009  }
49010  CYTHON_FALLTHROUGH;
49011  case 10:
49012  if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
49013  else {
49014  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 10); __PYX_ERR(0, 2647, __pyx_L3_error)
49015  }
49016  CYTHON_FALLTHROUGH;
49017  case 11:
49018  if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
49019  else {
49020  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 11); __PYX_ERR(0, 2647, __pyx_L3_error)
49021  }
49022  CYTHON_FALLTHROUGH;
49023  case 12:
49024  if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
49025  else {
49026  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 12); __PYX_ERR(0, 2647, __pyx_L3_error)
49027  }
49028  CYTHON_FALLTHROUGH;
49029  case 13:
49030  if (kw_args > 0) {
49031  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params);
49032  if (value) { values[13] = value; kw_args--; }
49033  }
49034  CYTHON_FALLTHROUGH;
49035  case 14:
49036  if (kw_args > 0) {
49037  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi);
49038  if (value) { values[14] = value; kw_args--; }
49039  }
49040  CYTHON_FALLTHROUGH;
49041  case 15:
49042  if (kw_args > 0) {
49043  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Lgen);
49044  if (value) { values[15] = value; kw_args--; }
49045  }
49046  CYTHON_FALLTHROUGH;
49047  case 16:
49048  if (kw_args > 0) {
49049  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nwaves);
49050  if (value) { values[16] = value; kw_args--; }
49051  }
49052  CYTHON_FALLTHROUGH;
49053  case 17:
49054  if (kw_args > 0) {
49055  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nfreq);
49056  if (value) { values[17] = value; kw_args--; }
49057  }
49058  CYTHON_FALLTHROUGH;
49059  case 18:
49060  if (kw_args > 0) {
49061  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_checkAcc);
49062  if (value) { values[18] = value; kw_args--; }
49063  }
49064  CYTHON_FALLTHROUGH;
49065  case 19:
49066  if (kw_args > 0) {
49067  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
49068  if (value) { values[19] = value; kw_args--; }
49069  }
49070  }
49071  if (unlikely(kw_args > 0)) {
49072  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2647, __pyx_L3_error)
49073  }
49074  } else {
49075  switch (PyTuple_GET_SIZE(__pyx_args)) {
49076  case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
49077  CYTHON_FALLTHROUGH;
49078  case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
49079  CYTHON_FALLTHROUGH;
49080  case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
49081  CYTHON_FALLTHROUGH;
49082  case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
49083  CYTHON_FALLTHROUGH;
49084  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
49085  CYTHON_FALLTHROUGH;
49086  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
49087  CYTHON_FALLTHROUGH;
49088  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
49089  CYTHON_FALLTHROUGH;
49090  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
49091  values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
49092  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
49093  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
49094  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
49095  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
49096  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
49097  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
49098  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
49099  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
49100  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
49101  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
49102  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
49103  break;
49104  default: goto __pyx_L5_argtuple_error;
49105  }
49106  }
49107  __pyx_v_self = values[0];
49108  __pyx_v_Tstart = values[1];
49109  __pyx_v_Tend = values[2];
49110  __pyx_v_x0 = values[3];
49111  __pyx_v_Tp = values[4];
49112  __pyx_v_Hs = values[5];
49113  __pyx_v_mwl = values[6];
49114  __pyx_v_depth = values[7];
49115  __pyx_v_waveDir = values[8];
49116  __pyx_v_g = values[9];
49117  __pyx_v_N = values[10];
49118  __pyx_v_bandFactor = values[11];
49119  __pyx_v_spectName = values[12];
49120  __pyx_v_spectral_params = values[13];
49121  __pyx_v_phi = values[14];
49122  __pyx_v_Lgen = values[15];
49123  __pyx_v_Nwaves = values[16];
49124  __pyx_v_Nfreq = values[17];
49125  __pyx_v_checkAcc = values[18];
49126  __pyx_v_fast = values[19];
49127  }
49128  goto __pyx_L4_argument_unpacking_done;
49129  __pyx_L5_argtuple_error:;
49130  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2647, __pyx_L3_error)
49131  __pyx_L3_error:;
49132  __Pyx_AddTraceback("WaveTools.RandomWavesFast.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
49133  __Pyx_RefNannyFinishContext();
49134  return NULL;
49135  __pyx_L4_argument_unpacking_done:;
49136  __pyx_r = __pyx_pf_9WaveTools_15RandomWavesFast___init__(__pyx_self, __pyx_v_self, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_x0, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi, __pyx_v_Lgen, __pyx_v_Nwaves, __pyx_v_Nfreq, __pyx_v_checkAcc, __pyx_v_fast);
49137 
49138  /* "WaveTools.py":2647
49139  * """
49140  *
49141  * def __init__(self, # <<<<<<<<<<<<<<
49142  * Tstart,
49143  * Tend,
49144  */
49145 
49146  /* function exit code */
49147  __Pyx_RefNannyFinishContext();
49148  return __pyx_r;
49149 }
49150 
49151 static PyObject *__pyx_pf_9WaveTools_15RandomWavesFast___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_Lgen, PyObject *__pyx_v_Nwaves, PyObject *__pyx_v_Nfreq, PyObject *__pyx_v_checkAcc, PyObject *__pyx_v_fast) {
49152  struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_RW = NULL;
49153  double __pyx_v_cutoff_win;
49154  double __pyx_v_overl;
49155  PyObject *__pyx_v_fname = NULL;
49156  PyObject *__pyx_v_duration = NULL;
49157  PyObject *__pyx_v_Tm = NULL;
49158  PyObject *__pyx_v_Nwaves_tot = NULL;
49159  struct __pyx_obj_9WaveTools_TimeSeries *__pyx_v_TS = NULL;
49160  PyObject *__pyx_v_cut = NULL;
49161  PyObject *__pyx_v_ts = NULL;
49162  PyObject *__pyx_v_te = NULL;
49163  PyObject *__pyx_v_i1 = NULL;
49164  PyObject *__pyx_v_i2 = NULL;
49165  PyObject *__pyx_v_errors = NULL;
49166  PyObject *__pyx_v_ii = NULL;
49167  PyObject *__pyx_r = NULL;
49168  __Pyx_RefNannyDeclarations
49169  PyObject *__pyx_t_1 = NULL;
49170  PyObject *__pyx_t_2 = NULL;
49171  int __pyx_t_3;
49172  int __pyx_t_4;
49173  PyObject *__pyx_t_5 = NULL;
49174  PyObject *__pyx_t_6 = NULL;
49175  PyObject *__pyx_t_7 = NULL;
49176  int __pyx_t_8;
49177  Py_ssize_t __pyx_t_9;
49178  PyObject *(*__pyx_t_10)(PyObject *);
49179  PyObject *__pyx_t_11 = NULL;
49180  PyObject *__pyx_t_12 = NULL;
49181  int __pyx_lineno = 0;
49182  const char *__pyx_filename = NULL;
49183  int __pyx_clineno = 0;
49184  __Pyx_RefNannySetupContext("__init__", 0);
49185  __Pyx_INCREF(__pyx_v_Nwaves);
49186 
49187  /* "WaveTools.py":2667
49188  * checkAcc = True,
49189  * fast= True):
49190  * RW = RandomWaves( # <<<<<<<<<<<<<<
49191  * Tp, # np array with
49192  * Hs,
49193  */
49194  __pyx_t_1 = PyTuple_New(11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2667, __pyx_L1_error)
49195  __Pyx_GOTREF(__pyx_t_1);
49196  __Pyx_INCREF(__pyx_v_Tp);
49197  __Pyx_GIVEREF(__pyx_v_Tp);
49198  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_Tp);
49199  __Pyx_INCREF(__pyx_v_Hs);
49200  __Pyx_GIVEREF(__pyx_v_Hs);
49201  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_Hs);
49202  __Pyx_INCREF(__pyx_v_mwl);
49203  __Pyx_GIVEREF(__pyx_v_mwl);
49204  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_mwl);
49205  __Pyx_INCREF(__pyx_v_depth);
49206  __Pyx_GIVEREF(__pyx_v_depth);
49207  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_depth);
49208  __Pyx_INCREF(__pyx_v_waveDir);
49209  __Pyx_GIVEREF(__pyx_v_waveDir);
49210  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_waveDir);
49211  __Pyx_INCREF(__pyx_v_g);
49212  __Pyx_GIVEREF(__pyx_v_g);
49213  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_g);
49214  __Pyx_INCREF(__pyx_v_N);
49215  __Pyx_GIVEREF(__pyx_v_N);
49216  PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_v_N);
49217  __Pyx_INCREF(__pyx_v_bandFactor);
49218  __Pyx_GIVEREF(__pyx_v_bandFactor);
49219  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_v_bandFactor);
49220  __Pyx_INCREF(__pyx_v_spectName);
49221  __Pyx_GIVEREF(__pyx_v_spectName);
49222  PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_v_spectName);
49223  __Pyx_INCREF(__pyx_v_spectral_params);
49224  __Pyx_GIVEREF(__pyx_v_spectral_params);
49225  PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_v_spectral_params);
49226  __Pyx_INCREF(__pyx_v_phi);
49227  __Pyx_GIVEREF(__pyx_v_phi);
49228  PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_v_phi);
49229  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_RandomWaves), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2667, __pyx_L1_error)
49230  __Pyx_GOTREF(__pyx_t_2);
49231  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49232  __pyx_v_RW = ((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_t_2);
49233  __pyx_t_2 = 0;
49234 
49235  /* "WaveTools.py":2680
49236  * phi
49237  * )
49238  * self.Hs = Hs # <<<<<<<<<<<<<<
49239  * self.Tp = Tp
49240  * self.depth = depth
49241  */
49242  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Hs, __pyx_v_Hs) < 0) __PYX_ERR(0, 2680, __pyx_L1_error)
49243 
49244  /* "WaveTools.py":2681
49245  * )
49246  * self.Hs = Hs
49247  * self.Tp = Tp # <<<<<<<<<<<<<<
49248  * self.depth = depth
49249  * self.mwl = mwl
49250  */
49251  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Tp, __pyx_v_Tp) < 0) __PYX_ERR(0, 2681, __pyx_L1_error)
49252 
49253  /* "WaveTools.py":2682
49254  * self.Hs = Hs
49255  * self.Tp = Tp
49256  * self.depth = depth # <<<<<<<<<<<<<<
49257  * self.mwl = mwl
49258  * self.wavelength = RW.wavelength
49259  */
49260  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) __PYX_ERR(0, 2682, __pyx_L1_error)
49261 
49262  /* "WaveTools.py":2683
49263  * self.Tp = Tp
49264  * self.depth = depth
49265  * self.mwl = mwl # <<<<<<<<<<<<<<
49266  * self.wavelength = RW.wavelength
49267  * if Lgen is None:
49268  */
49269  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) __PYX_ERR(0, 2683, __pyx_L1_error)
49270 
49271  /* "WaveTools.py":2684
49272  * self.depth = depth
49273  * self.mwl = mwl
49274  * self.wavelength = RW.wavelength # <<<<<<<<<<<<<<
49275  * if Lgen is None:
49276  * self.Lgen = self.wavelength*waveDir
49277  */
49278  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_RW->wavelength); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2684, __pyx_L1_error)
49279  __Pyx_GOTREF(__pyx_t_2);
49280  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_wavelength, __pyx_t_2) < 0) __PYX_ERR(0, 2684, __pyx_L1_error)
49281  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49282 
49283  /* "WaveTools.py":2685
49284  * self.mwl = mwl
49285  * self.wavelength = RW.wavelength
49286  * if Lgen is None: # <<<<<<<<<<<<<<
49287  * self.Lgen = self.wavelength*waveDir
49288  * else:
49289  */
49290  __pyx_t_3 = (__pyx_v_Lgen == Py_None);
49291  __pyx_t_4 = (__pyx_t_3 != 0);
49292  if (__pyx_t_4) {
49293 
49294  /* "WaveTools.py":2686
49295  * self.wavelength = RW.wavelength
49296  * if Lgen is None:
49297  * self.Lgen = self.wavelength*waveDir # <<<<<<<<<<<<<<
49298  * else:
49299  * self.Lgen = Lgen
49300  */
49301  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_wavelength); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2686, __pyx_L1_error)
49302  __Pyx_GOTREF(__pyx_t_2);
49303  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_v_waveDir); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2686, __pyx_L1_error)
49304  __Pyx_GOTREF(__pyx_t_1);
49305  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49306  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Lgen, __pyx_t_1) < 0) __PYX_ERR(0, 2686, __pyx_L1_error)
49307  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49308 
49309  /* "WaveTools.py":2685
49310  * self.mwl = mwl
49311  * self.wavelength = RW.wavelength
49312  * if Lgen is None: # <<<<<<<<<<<<<<
49313  * self.Lgen = self.wavelength*waveDir
49314  * else:
49315  */
49316  goto __pyx_L3;
49317  }
49318 
49319  /* "WaveTools.py":2688
49320  * self.Lgen = self.wavelength*waveDir
49321  * else:
49322  * self.Lgen = Lgen # <<<<<<<<<<<<<<
49323  * cutoff_win = 0.1
49324  * overl = 0.7
49325  */
49326  /*else*/ {
49327  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Lgen, __pyx_v_Lgen) < 0) __PYX_ERR(0, 2688, __pyx_L1_error)
49328  }
49329  __pyx_L3:;
49330 
49331  /* "WaveTools.py":2689
49332  * else:
49333  * self.Lgen = Lgen
49334  * cutoff_win = 0.1 # <<<<<<<<<<<<<<
49335  * overl = 0.7
49336  * fname = "RandomSeries"+"_Hs_"+str(self.Hs)+"_Tp_"+str(self.Tp)+"_depth_"+str(self.depth)
49337  */
49338  __pyx_v_cutoff_win = 0.1;
49339 
49340  /* "WaveTools.py":2690
49341  * self.Lgen = Lgen
49342  * cutoff_win = 0.1
49343  * overl = 0.7 # <<<<<<<<<<<<<<
49344  * fname = "RandomSeries"+"_Hs_"+str(self.Hs)+"_Tp_"+str(self.Tp)+"_depth_"+str(self.depth)
49345  * self.series = RW.writeEtaSeries(Tstart,Tend,x0,fname,4.*self.Lgen)
49346  */
49347  __pyx_v_overl = 0.7;
49348 
49349  /* "WaveTools.py":2691
49350  * cutoff_win = 0.1
49351  * overl = 0.7
49352  * fname = "RandomSeries"+"_Hs_"+str(self.Hs)+"_Tp_"+str(self.Tp)+"_depth_"+str(self.depth) # <<<<<<<<<<<<<<
49353  * self.series = RW.writeEtaSeries(Tstart,Tend,x0,fname,4.*self.Lgen)
49354  * self.cutoff = max(0.2*self.Tp , cutoff_win*Nwaves*Tp)
49355  */
49356  __pyx_t_1 = PyNumber_Add(__pyx_n_s_RandomSeries, __pyx_n_s_Hs_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2691, __pyx_L1_error)
49357  __Pyx_GOTREF(__pyx_t_1);
49358  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2691, __pyx_L1_error)
49359  __Pyx_GOTREF(__pyx_t_5);
49360  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Hs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2691, __pyx_L1_error)
49361  __Pyx_GOTREF(__pyx_t_6);
49362  __pyx_t_7 = NULL;
49363  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
49364  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
49365  if (likely(__pyx_t_7)) {
49366  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
49367  __Pyx_INCREF(__pyx_t_7);
49368  __Pyx_INCREF(function);
49369  __Pyx_DECREF_SET(__pyx_t_5, function);
49370  }
49371  }
49372  __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
49373  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
49374  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49375  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2691, __pyx_L1_error)
49376  __Pyx_GOTREF(__pyx_t_2);
49377  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49378  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2691, __pyx_L1_error)
49379  __Pyx_GOTREF(__pyx_t_5);
49380  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49381  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49382  __pyx_t_2 = PyNumber_Add(__pyx_t_5, __pyx_n_s_Tp_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2691, __pyx_L1_error)
49383  __Pyx_GOTREF(__pyx_t_2);
49384  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49385  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2691, __pyx_L1_error)
49386  __Pyx_GOTREF(__pyx_t_1);
49387  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2691, __pyx_L1_error)
49388  __Pyx_GOTREF(__pyx_t_6);
49389  __pyx_t_7 = NULL;
49390  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
49391  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
49392  if (likely(__pyx_t_7)) {
49393  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
49394  __Pyx_INCREF(__pyx_t_7);
49395  __Pyx_INCREF(function);
49396  __Pyx_DECREF_SET(__pyx_t_1, function);
49397  }
49398  }
49399  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6);
49400  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
49401  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49402  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2691, __pyx_L1_error)
49403  __Pyx_GOTREF(__pyx_t_5);
49404  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49405  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2691, __pyx_L1_error)
49406  __Pyx_GOTREF(__pyx_t_1);
49407  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49408  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49409  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_n_s_depth_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2691, __pyx_L1_error)
49410  __Pyx_GOTREF(__pyx_t_5);
49411  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49412  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2691, __pyx_L1_error)
49413  __Pyx_GOTREF(__pyx_t_2);
49414  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2691, __pyx_L1_error)
49415  __Pyx_GOTREF(__pyx_t_6);
49416  __pyx_t_7 = NULL;
49417  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
49418  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
49419  if (likely(__pyx_t_7)) {
49420  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
49421  __Pyx_INCREF(__pyx_t_7);
49422  __Pyx_INCREF(function);
49423  __Pyx_DECREF_SET(__pyx_t_2, function);
49424  }
49425  }
49426  __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6);
49427  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
49428  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49429  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2691, __pyx_L1_error)
49430  __Pyx_GOTREF(__pyx_t_1);
49431  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49432  __pyx_t_2 = PyNumber_Add(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2691, __pyx_L1_error)
49433  __Pyx_GOTREF(__pyx_t_2);
49434  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49435  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49436  __pyx_v_fname = __pyx_t_2;
49437  __pyx_t_2 = 0;
49438 
49439  /* "WaveTools.py":2692
49440  * overl = 0.7
49441  * fname = "RandomSeries"+"_Hs_"+str(self.Hs)+"_Tp_"+str(self.Tp)+"_depth_"+str(self.depth)
49442  * self.series = RW.writeEtaSeries(Tstart,Tend,x0,fname,4.*self.Lgen) # <<<<<<<<<<<<<<
49443  * self.cutoff = max(0.2*self.Tp , cutoff_win*Nwaves*Tp)
49444  * duration = (self.series[-1,0]-self.series[0,0])
49445  */
49446  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_RW), __pyx_n_s_writeEtaSeries); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2692, __pyx_L1_error)
49447  __Pyx_GOTREF(__pyx_t_1);
49448  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Lgen); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2692, __pyx_L1_error)
49449  __Pyx_GOTREF(__pyx_t_5);
49450  __pyx_t_6 = PyNumber_Multiply(__pyx_float_4_, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2692, __pyx_L1_error)
49451  __Pyx_GOTREF(__pyx_t_6);
49452  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49453  __pyx_t_5 = NULL;
49454  __pyx_t_8 = 0;
49455  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
49456  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
49457  if (likely(__pyx_t_5)) {
49458  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
49459  __Pyx_INCREF(__pyx_t_5);
49460  __Pyx_INCREF(function);
49461  __Pyx_DECREF_SET(__pyx_t_1, function);
49462  __pyx_t_8 = 1;
49463  }
49464  }
49465  #if CYTHON_FAST_PYCALL
49466  if (PyFunction_Check(__pyx_t_1)) {
49467  PyObject *__pyx_temp[6] = {__pyx_t_5, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_x0, __pyx_v_fname, __pyx_t_6};
49468  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2692, __pyx_L1_error)
49469  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
49470  __Pyx_GOTREF(__pyx_t_2);
49471  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49472  } else
49473  #endif
49474  #if CYTHON_FAST_PYCCALL
49475  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
49476  PyObject *__pyx_temp[6] = {__pyx_t_5, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_x0, __pyx_v_fname, __pyx_t_6};
49477  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2692, __pyx_L1_error)
49478  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
49479  __Pyx_GOTREF(__pyx_t_2);
49480  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49481  } else
49482  #endif
49483  {
49484  __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2692, __pyx_L1_error)
49485  __Pyx_GOTREF(__pyx_t_7);
49486  if (__pyx_t_5) {
49487  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
49488  }
49489  __Pyx_INCREF(__pyx_v_Tstart);
49490  __Pyx_GIVEREF(__pyx_v_Tstart);
49491  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_v_Tstart);
49492  __Pyx_INCREF(__pyx_v_Tend);
49493  __Pyx_GIVEREF(__pyx_v_Tend);
49494  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_v_Tend);
49495  __Pyx_INCREF(__pyx_v_x0);
49496  __Pyx_GIVEREF(__pyx_v_x0);
49497  PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_8, __pyx_v_x0);
49498  __Pyx_INCREF(__pyx_v_fname);
49499  __Pyx_GIVEREF(__pyx_v_fname);
49500  PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_8, __pyx_v_fname);
49501  __Pyx_GIVEREF(__pyx_t_6);
49502  PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_t_6);
49503  __pyx_t_6 = 0;
49504  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2692, __pyx_L1_error)
49505  __Pyx_GOTREF(__pyx_t_2);
49506  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49507  }
49508  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49509  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_series, __pyx_t_2) < 0) __PYX_ERR(0, 2692, __pyx_L1_error)
49510  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49511 
49512  /* "WaveTools.py":2693
49513  * fname = "RandomSeries"+"_Hs_"+str(self.Hs)+"_Tp_"+str(self.Tp)+"_depth_"+str(self.depth)
49514  * self.series = RW.writeEtaSeries(Tstart,Tend,x0,fname,4.*self.Lgen)
49515  * self.cutoff = max(0.2*self.Tp , cutoff_win*Nwaves*Tp) # <<<<<<<<<<<<<<
49516  * duration = (self.series[-1,0]-self.series[0,0])
49517  * self.cutoff = old_div(self.cutoff, duration)
49518  */
49519  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_cutoff_win); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2693, __pyx_L1_error)
49520  __Pyx_GOTREF(__pyx_t_2);
49521  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_v_Nwaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2693, __pyx_L1_error)
49522  __Pyx_GOTREF(__pyx_t_1);
49523  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49524  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_v_Tp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2693, __pyx_L1_error)
49525  __Pyx_GOTREF(__pyx_t_2);
49526  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49527  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2693, __pyx_L1_error)
49528  __Pyx_GOTREF(__pyx_t_1);
49529  __pyx_t_7 = PyNumber_Multiply(__pyx_float_0_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2693, __pyx_L1_error)
49530  __Pyx_GOTREF(__pyx_t_7);
49531  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49532  __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_7, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2693, __pyx_L1_error)
49533  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2693, __pyx_L1_error)
49534  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49535  if (__pyx_t_4) {
49536  __Pyx_INCREF(__pyx_t_2);
49537  __pyx_t_1 = __pyx_t_2;
49538  } else {
49539  __Pyx_INCREF(__pyx_t_7);
49540  __pyx_t_1 = __pyx_t_7;
49541  }
49542  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49543  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49544  __pyx_t_2 = __pyx_t_1;
49545  __Pyx_INCREF(__pyx_t_2);
49546  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49547  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cutoff, __pyx_t_2) < 0) __PYX_ERR(0, 2693, __pyx_L1_error)
49548  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49549 
49550  /* "WaveTools.py":2694
49551  * self.series = RW.writeEtaSeries(Tstart,Tend,x0,fname,4.*self.Lgen)
49552  * self.cutoff = max(0.2*self.Tp , cutoff_win*Nwaves*Tp)
49553  * duration = (self.series[-1,0]-self.series[0,0]) # <<<<<<<<<<<<<<
49554  * self.cutoff = old_div(self.cutoff, duration)
49555  * Tm = old_div(self.Tp,1.1)
49556  */
49557  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2694, __pyx_L1_error)
49558  __Pyx_GOTREF(__pyx_t_2);
49559  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_tuple__49); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2694, __pyx_L1_error)
49560  __Pyx_GOTREF(__pyx_t_1);
49561  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49562  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2694, __pyx_L1_error)
49563  __Pyx_GOTREF(__pyx_t_2);
49564  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_tuple__46); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2694, __pyx_L1_error)
49565  __Pyx_GOTREF(__pyx_t_7);
49566  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49567  __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2694, __pyx_L1_error)
49568  __Pyx_GOTREF(__pyx_t_2);
49569  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49570  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49571  __pyx_v_duration = __pyx_t_2;
49572  __pyx_t_2 = 0;
49573 
49574  /* "WaveTools.py":2695
49575  * self.cutoff = max(0.2*self.Tp , cutoff_win*Nwaves*Tp)
49576  * duration = (self.series[-1,0]-self.series[0,0])
49577  * self.cutoff = old_div(self.cutoff, duration) # <<<<<<<<<<<<<<
49578  * Tm = old_div(self.Tp,1.1)
49579  *
49580  */
49581  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_old_div); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2695, __pyx_L1_error)
49582  __Pyx_GOTREF(__pyx_t_7);
49583  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2695, __pyx_L1_error)
49584  __Pyx_GOTREF(__pyx_t_1);
49585  __pyx_t_6 = NULL;
49586  __pyx_t_8 = 0;
49587  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
49588  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
49589  if (likely(__pyx_t_6)) {
49590  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
49591  __Pyx_INCREF(__pyx_t_6);
49592  __Pyx_INCREF(function);
49593  __Pyx_DECREF_SET(__pyx_t_7, function);
49594  __pyx_t_8 = 1;
49595  }
49596  }
49597  #if CYTHON_FAST_PYCALL
49598  if (PyFunction_Check(__pyx_t_7)) {
49599  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_1, __pyx_v_duration};
49600  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2695, __pyx_L1_error)
49601  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
49602  __Pyx_GOTREF(__pyx_t_2);
49603  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49604  } else
49605  #endif
49606  #if CYTHON_FAST_PYCCALL
49607  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
49608  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_1, __pyx_v_duration};
49609  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2695, __pyx_L1_error)
49610  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
49611  __Pyx_GOTREF(__pyx_t_2);
49612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49613  } else
49614  #endif
49615  {
49616  __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2695, __pyx_L1_error)
49617  __Pyx_GOTREF(__pyx_t_5);
49618  if (__pyx_t_6) {
49619  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
49620  }
49621  __Pyx_GIVEREF(__pyx_t_1);
49622  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_t_1);
49623  __Pyx_INCREF(__pyx_v_duration);
49624  __Pyx_GIVEREF(__pyx_v_duration);
49625  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_duration);
49626  __pyx_t_1 = 0;
49627  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2695, __pyx_L1_error)
49628  __Pyx_GOTREF(__pyx_t_2);
49629  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49630  }
49631  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49632  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cutoff, __pyx_t_2) < 0) __PYX_ERR(0, 2695, __pyx_L1_error)
49633  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49634 
49635  /* "WaveTools.py":2696
49636  * duration = (self.series[-1,0]-self.series[0,0])
49637  * self.cutoff = old_div(self.cutoff, duration)
49638  * Tm = old_div(self.Tp,1.1) # <<<<<<<<<<<<<<
49639  *
49640  * #Checking if there are enough windows
49641  */
49642  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_old_div); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2696, __pyx_L1_error)
49643  __Pyx_GOTREF(__pyx_t_7);
49644  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2696, __pyx_L1_error)
49645  __Pyx_GOTREF(__pyx_t_5);
49646  __pyx_t_1 = NULL;
49647  __pyx_t_8 = 0;
49648  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
49649  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
49650  if (likely(__pyx_t_1)) {
49651  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
49652  __Pyx_INCREF(__pyx_t_1);
49653  __Pyx_INCREF(function);
49654  __Pyx_DECREF_SET(__pyx_t_7, function);
49655  __pyx_t_8 = 1;
49656  }
49657  }
49658  #if CYTHON_FAST_PYCALL
49659  if (PyFunction_Check(__pyx_t_7)) {
49660  PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_5, __pyx_float_1_1};
49661  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2696, __pyx_L1_error)
49662  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
49663  __Pyx_GOTREF(__pyx_t_2);
49664  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49665  } else
49666  #endif
49667  #if CYTHON_FAST_PYCCALL
49668  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
49669  PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_5, __pyx_float_1_1};
49670  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2696, __pyx_L1_error)
49671  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
49672  __Pyx_GOTREF(__pyx_t_2);
49673  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49674  } else
49675  #endif
49676  {
49677  __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2696, __pyx_L1_error)
49678  __Pyx_GOTREF(__pyx_t_6);
49679  if (__pyx_t_1) {
49680  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
49681  }
49682  __Pyx_GIVEREF(__pyx_t_5);
49683  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_t_5);
49684  __Pyx_INCREF(__pyx_float_1_1);
49685  __Pyx_GIVEREF(__pyx_float_1_1);
49686  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_float_1_1);
49687  __pyx_t_5 = 0;
49688  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2696, __pyx_L1_error)
49689  __Pyx_GOTREF(__pyx_t_2);
49690  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49691  }
49692  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49693  __pyx_v_Tm = __pyx_t_2;
49694  __pyx_t_2 = 0;
49695 
49696  /* "WaveTools.py":2699
49697  *
49698  * #Checking if there are enough windows
49699  * Nwaves_tot = round(old_div((self.series[-1,0]-self.series[0,0]),Tm)) # <<<<<<<<<<<<<<
49700  * Nwaves = min(Nwaves,Nwaves_tot)
49701  * self.Nwind = int(old_div(Nwaves_tot,Nwaves))
49702  */
49703  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_old_div); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2699, __pyx_L1_error)
49704  __Pyx_GOTREF(__pyx_t_7);
49705  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2699, __pyx_L1_error)
49706  __Pyx_GOTREF(__pyx_t_6);
49707  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_tuple__49); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2699, __pyx_L1_error)
49708  __Pyx_GOTREF(__pyx_t_5);
49709  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49710  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2699, __pyx_L1_error)
49711  __Pyx_GOTREF(__pyx_t_6);
49712  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_tuple__46); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2699, __pyx_L1_error)
49713  __Pyx_GOTREF(__pyx_t_1);
49714  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49715  __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2699, __pyx_L1_error)
49716  __Pyx_GOTREF(__pyx_t_6);
49717  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49718  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
49719  __pyx_t_1 = NULL;
49720  __pyx_t_8 = 0;
49721  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
49722  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
49723  if (likely(__pyx_t_1)) {
49724  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
49725  __Pyx_INCREF(__pyx_t_1);
49726  __Pyx_INCREF(function);
49727  __Pyx_DECREF_SET(__pyx_t_7, function);
49728  __pyx_t_8 = 1;
49729  }
49730  }
49731  #if CYTHON_FAST_PYCALL
49732  if (PyFunction_Check(__pyx_t_7)) {
49733  PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_6, __pyx_v_Tm};
49734  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2699, __pyx_L1_error)
49735  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
49736  __Pyx_GOTREF(__pyx_t_2);
49737  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49738  } else
49739  #endif
49740  #if CYTHON_FAST_PYCCALL
49741  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
49742  PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_6, __pyx_v_Tm};
49743  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2699, __pyx_L1_error)
49744  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
49745  __Pyx_GOTREF(__pyx_t_2);
49746  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49747  } else
49748  #endif
49749  {
49750  __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2699, __pyx_L1_error)
49751  __Pyx_GOTREF(__pyx_t_5);
49752  if (__pyx_t_1) {
49753  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
49754  }
49755  __Pyx_GIVEREF(__pyx_t_6);
49756  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_t_6);
49757  __Pyx_INCREF(__pyx_v_Tm);
49758  __Pyx_GIVEREF(__pyx_v_Tm);
49759  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_Tm);
49760  __pyx_t_6 = 0;
49761  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2699, __pyx_L1_error)
49762  __Pyx_GOTREF(__pyx_t_2);
49763  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49764  }
49765  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49766  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_round, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2699, __pyx_L1_error)
49767  __Pyx_GOTREF(__pyx_t_7);
49768  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49769  __pyx_v_Nwaves_tot = __pyx_t_7;
49770  __pyx_t_7 = 0;
49771 
49772  /* "WaveTools.py":2700
49773  * #Checking if there are enough windows
49774  * Nwaves_tot = round(old_div((self.series[-1,0]-self.series[0,0]),Tm))
49775  * Nwaves = min(Nwaves,Nwaves_tot) # <<<<<<<<<<<<<<
49776  * self.Nwind = int(old_div(Nwaves_tot,Nwaves))
49777  * self.rec_d = False
49778  */
49779  __Pyx_INCREF(__pyx_v_Nwaves_tot);
49780  __pyx_t_7 = __pyx_v_Nwaves_tot;
49781  __Pyx_INCREF(__pyx_v_Nwaves);
49782  __pyx_t_2 = __pyx_v_Nwaves;
49783  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2700, __pyx_L1_error)
49784  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2700, __pyx_L1_error)
49785  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49786  if (__pyx_t_4) {
49787  __Pyx_INCREF(__pyx_t_7);
49788  __pyx_t_5 = __pyx_t_7;
49789  } else {
49790  __Pyx_INCREF(__pyx_t_2);
49791  __pyx_t_5 = __pyx_t_2;
49792  }
49793  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
49794  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49795  __pyx_t_7 = __pyx_t_5;
49796  __Pyx_INCREF(__pyx_t_7);
49797  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49798  __Pyx_DECREF_SET(__pyx_v_Nwaves, __pyx_t_7);
49799  __pyx_t_7 = 0;
49800 
49801  /* "WaveTools.py":2701
49802  * Nwaves_tot = round(old_div((self.series[-1,0]-self.series[0,0]),Tm))
49803  * Nwaves = min(Nwaves,Nwaves_tot)
49804  * self.Nwind = int(old_div(Nwaves_tot,Nwaves)) # <<<<<<<<<<<<<<
49805  * self.rec_d = False
49806  * if self.Nwind < 3:
49807  */
49808  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_old_div); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2701, __pyx_L1_error)
49809  __Pyx_GOTREF(__pyx_t_5);
49810  __pyx_t_2 = NULL;
49811  __pyx_t_8 = 0;
49812  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
49813  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
49814  if (likely(__pyx_t_2)) {
49815  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
49816  __Pyx_INCREF(__pyx_t_2);
49817  __Pyx_INCREF(function);
49818  __Pyx_DECREF_SET(__pyx_t_5, function);
49819  __pyx_t_8 = 1;
49820  }
49821  }
49822  #if CYTHON_FAST_PYCALL
49823  if (PyFunction_Check(__pyx_t_5)) {
49824  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Nwaves_tot, __pyx_v_Nwaves};
49825  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2701, __pyx_L1_error)
49826  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
49827  __Pyx_GOTREF(__pyx_t_7);
49828  } else
49829  #endif
49830  #if CYTHON_FAST_PYCCALL
49831  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
49832  PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Nwaves_tot, __pyx_v_Nwaves};
49833  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2701, __pyx_L1_error)
49834  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
49835  __Pyx_GOTREF(__pyx_t_7);
49836  } else
49837  #endif
49838  {
49839  __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2701, __pyx_L1_error)
49840  __Pyx_GOTREF(__pyx_t_6);
49841  if (__pyx_t_2) {
49842  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
49843  }
49844  __Pyx_INCREF(__pyx_v_Nwaves_tot);
49845  __Pyx_GIVEREF(__pyx_v_Nwaves_tot);
49846  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_v_Nwaves_tot);
49847  __Pyx_INCREF(__pyx_v_Nwaves);
49848  __Pyx_GIVEREF(__pyx_v_Nwaves);
49849  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_v_Nwaves);
49850  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2701, __pyx_L1_error)
49851  __Pyx_GOTREF(__pyx_t_7);
49852  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49853  }
49854  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49855  __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2701, __pyx_L1_error)
49856  __Pyx_GOTREF(__pyx_t_5);
49857  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49858  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwind, __pyx_t_5) < 0) __PYX_ERR(0, 2701, __pyx_L1_error)
49859  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49860 
49861  /* "WaveTools.py":2702
49862  * Nwaves = min(Nwaves,Nwaves_tot)
49863  * self.Nwind = int(old_div(Nwaves_tot,Nwaves))
49864  * self.rec_d = False # <<<<<<<<<<<<<<
49865  * if self.Nwind < 3:
49866  * logEvent("ERROR!: WaveTools.py: Found too few windows in RandomWavesFast. Consider increasing Tend (this is independent from the duration of the simulation)")
49867  */
49868  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_rec_d, Py_False) < 0) __PYX_ERR(0, 2702, __pyx_L1_error)
49869 
49870  /* "WaveTools.py":2703
49871  * self.Nwind = int(old_div(Nwaves_tot,Nwaves))
49872  * self.rec_d = False
49873  * if self.Nwind < 3: # <<<<<<<<<<<<<<
49874  * logEvent("ERROR!: WaveTools.py: Found too few windows in RandomWavesFast. Consider increasing Tend (this is independent from the duration of the simulation)")
49875  * sys.exit(1)
49876  */
49877  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2703, __pyx_L1_error)
49878  __Pyx_GOTREF(__pyx_t_5);
49879  __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_int_3, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2703, __pyx_L1_error)
49880  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49881  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2703, __pyx_L1_error)
49882  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49883  if (__pyx_t_4) {
49884 
49885  /* "WaveTools.py":2704
49886  * self.rec_d = False
49887  * if self.Nwind < 3:
49888  * logEvent("ERROR!: WaveTools.py: Found too few windows in RandomWavesFast. Consider increasing Tend (this is independent from the duration of the simulation)") # <<<<<<<<<<<<<<
49889  * sys.exit(1)
49890  *
49891  */
49892  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2704, __pyx_L1_error)
49893  __Pyx_GOTREF(__pyx_t_5);
49894  __pyx_t_6 = NULL;
49895  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
49896  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
49897  if (likely(__pyx_t_6)) {
49898  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
49899  __Pyx_INCREF(__pyx_t_6);
49900  __Pyx_INCREF(function);
49901  __Pyx_DECREF_SET(__pyx_t_5, function);
49902  }
49903  }
49904  __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_kp_s_ERROR_WaveTools_py_Found_too_few) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_s_ERROR_WaveTools_py_Found_too_few);
49905  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
49906  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2704, __pyx_L1_error)
49907  __Pyx_GOTREF(__pyx_t_7);
49908  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49909  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49910 
49911  /* "WaveTools.py":2705
49912  * if self.Nwind < 3:
49913  * logEvent("ERROR!: WaveTools.py: Found too few windows in RandomWavesFast. Consider increasing Tend (this is independent from the duration of the simulation)")
49914  * sys.exit(1) # <<<<<<<<<<<<<<
49915  *
49916  *
49917  */
49918  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2705, __pyx_L1_error)
49919  __Pyx_GOTREF(__pyx_t_5);
49920  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2705, __pyx_L1_error)
49921  __Pyx_GOTREF(__pyx_t_6);
49922  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
49923  __pyx_t_5 = NULL;
49924  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
49925  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
49926  if (likely(__pyx_t_5)) {
49927  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
49928  __Pyx_INCREF(__pyx_t_5);
49929  __Pyx_INCREF(function);
49930  __Pyx_DECREF_SET(__pyx_t_6, function);
49931  }
49932  }
49933  __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_1);
49934  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
49935  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2705, __pyx_L1_error)
49936  __Pyx_GOTREF(__pyx_t_7);
49937  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
49938  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
49939 
49940  /* "WaveTools.py":2703
49941  * self.Nwind = int(old_div(Nwaves_tot,Nwaves))
49942  * self.rec_d = False
49943  * if self.Nwind < 3: # <<<<<<<<<<<<<<
49944  * logEvent("ERROR!: WaveTools.py: Found too few windows in RandomWavesFast. Consider increasing Tend (this is independent from the duration of the simulation)")
49945  * sys.exit(1)
49946  */
49947  }
49948 
49949  /* "WaveTools.py":2711
49950  *
49951  *
49952  * self.fast = fast # <<<<<<<<<<<<<<
49953  * TS = TimeSeries(
49954  * fname, # e.g.= "Timeseries.txt",
49955  */
49956  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fast, __pyx_v_fast) < 0) __PYX_ERR(0, 2711, __pyx_L1_error)
49957 
49958  /* "WaveTools.py":2716
49959  * 0,
49960  * x0,
49961  * self.depth , # <<<<<<<<<<<<<<
49962  * Nfreq , #number of frequency bins
49963  * self.mwl , #mean water level
49964  */
49965  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2716, __pyx_L1_error)
49966  __Pyx_GOTREF(__pyx_t_7);
49967 
49968  /* "WaveTools.py":2718
49969  * self.depth ,
49970  * Nfreq , #number of frequency bins
49971  * self.mwl , #mean water level # <<<<<<<<<<<<<<
49972  * waveDir,
49973  * g,
49974  */
49975  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2718, __pyx_L1_error)
49976  __Pyx_GOTREF(__pyx_t_6);
49977 
49978  /* "WaveTools.py":2712
49979  *
49980  * self.fast = fast
49981  * TS = TimeSeries( # <<<<<<<<<<<<<<
49982  * fname, # e.g.= "Timeseries.txt",
49983  * 0,
49984  */
49985  __pyx_t_5 = PyTuple_New(8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2712, __pyx_L1_error)
49986  __Pyx_GOTREF(__pyx_t_5);
49987  __Pyx_INCREF(__pyx_v_fname);
49988  __Pyx_GIVEREF(__pyx_v_fname);
49989  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_fname);
49990  __Pyx_INCREF(__pyx_int_0);
49991  __Pyx_GIVEREF(__pyx_int_0);
49992  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_0);
49993  __Pyx_INCREF(__pyx_v_x0);
49994  __Pyx_GIVEREF(__pyx_v_x0);
49995  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_x0);
49996  __Pyx_GIVEREF(__pyx_t_7);
49997  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_7);
49998  __Pyx_INCREF(__pyx_v_Nfreq);
49999  __Pyx_GIVEREF(__pyx_v_Nfreq);
50000  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_Nfreq);
50001  __Pyx_GIVEREF(__pyx_t_6);
50002  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_6);
50003  __Pyx_INCREF(__pyx_v_waveDir);
50004  __Pyx_GIVEREF(__pyx_v_waveDir);
50005  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_waveDir);
50006  __Pyx_INCREF(__pyx_v_g);
50007  __Pyx_GIVEREF(__pyx_v_g);
50008  PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_v_g);
50009  __pyx_t_7 = 0;
50010  __pyx_t_6 = 0;
50011 
50012  /* "WaveTools.py":2721
50013  * waveDir,
50014  * g,
50015  * cutoffTotal = self.cutoff, # <<<<<<<<<<<<<<
50016  * rec_direct = self.rec_d,
50017  * window_params = {"Nwaves":Nwaves ,"Tm":Tm,"Window":"costap","Overlap":overl,"Cutoff":cutoff_win},
50018  */
50019  __pyx_t_6 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2721, __pyx_L1_error)
50020  __Pyx_GOTREF(__pyx_t_6);
50021  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2721, __pyx_L1_error)
50022  __Pyx_GOTREF(__pyx_t_7);
50023  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cutoffTotal, __pyx_t_7) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50024  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50025 
50026  /* "WaveTools.py":2722
50027  * g,
50028  * cutoffTotal = self.cutoff,
50029  * rec_direct = self.rec_d, # <<<<<<<<<<<<<<
50030  * window_params = {"Nwaves":Nwaves ,"Tm":Tm,"Window":"costap","Overlap":overl,"Cutoff":cutoff_win},
50031  * arrayData = True,
50032  */
50033  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_rec_d); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2722, __pyx_L1_error)
50034  __Pyx_GOTREF(__pyx_t_7);
50035  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_rec_direct, __pyx_t_7) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50036  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50037 
50038  /* "WaveTools.py":2723
50039  * cutoffTotal = self.cutoff,
50040  * rec_direct = self.rec_d,
50041  * window_params = {"Nwaves":Nwaves ,"Tm":Tm,"Window":"costap","Overlap":overl,"Cutoff":cutoff_win}, # <<<<<<<<<<<<<<
50042  * arrayData = True,
50043  * seriesArray = self.series,
50044  */
50045  __pyx_t_7 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2723, __pyx_L1_error)
50046  __Pyx_GOTREF(__pyx_t_7);
50047  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_Nwaves, __pyx_v_Nwaves) < 0) __PYX_ERR(0, 2723, __pyx_L1_error)
50048  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_Tm, __pyx_v_Tm) < 0) __PYX_ERR(0, 2723, __pyx_L1_error)
50049  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_Window, __pyx_n_s_costap) < 0) __PYX_ERR(0, 2723, __pyx_L1_error)
50050  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_overl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2723, __pyx_L1_error)
50051  __Pyx_GOTREF(__pyx_t_2);
50052  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_Overlap, __pyx_t_2) < 0) __PYX_ERR(0, 2723, __pyx_L1_error)
50053  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50054  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_cutoff_win); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2723, __pyx_L1_error)
50055  __Pyx_GOTREF(__pyx_t_2);
50056  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_Cutoff, __pyx_t_2) < 0) __PYX_ERR(0, 2723, __pyx_L1_error)
50057  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50058  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_window_params, __pyx_t_7) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50059  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50060 
50061  /* "WaveTools.py":2724
50062  * rec_direct = self.rec_d,
50063  * window_params = {"Nwaves":Nwaves ,"Tm":Tm,"Window":"costap","Overlap":overl,"Cutoff":cutoff_win},
50064  * arrayData = True, # <<<<<<<<<<<<<<
50065  * seriesArray = self.series,
50066  * Lgen = self.Lgen,
50067  */
50068  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_arrayData, Py_True) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50069 
50070  /* "WaveTools.py":2725
50071  * window_params = {"Nwaves":Nwaves ,"Tm":Tm,"Window":"costap","Overlap":overl,"Cutoff":cutoff_win},
50072  * arrayData = True,
50073  * seriesArray = self.series, # <<<<<<<<<<<<<<
50074  * Lgen = self.Lgen,
50075  * fast=self.fast
50076  */
50077  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2725, __pyx_L1_error)
50078  __Pyx_GOTREF(__pyx_t_7);
50079  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_seriesArray, __pyx_t_7) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50080  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50081 
50082  /* "WaveTools.py":2726
50083  * arrayData = True,
50084  * seriesArray = self.series,
50085  * Lgen = self.Lgen, # <<<<<<<<<<<<<<
50086  * fast=self.fast
50087  * )
50088  */
50089  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Lgen); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2726, __pyx_L1_error)
50090  __Pyx_GOTREF(__pyx_t_7);
50091  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_Lgen, __pyx_t_7) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50092  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50093 
50094  /* "WaveTools.py":2727
50095  * seriesArray = self.series,
50096  * Lgen = self.Lgen,
50097  * fast=self.fast # <<<<<<<<<<<<<<
50098  * )
50099  *
50100  */
50101  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fast); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2727, __pyx_L1_error)
50102  __Pyx_GOTREF(__pyx_t_7);
50103  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fast, __pyx_t_7) < 0) __PYX_ERR(0, 2721, __pyx_L1_error)
50104  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50105 
50106  /* "WaveTools.py":2712
50107  *
50108  * self.fast = fast
50109  * TS = TimeSeries( # <<<<<<<<<<<<<<
50110  * fname, # e.g.= "Timeseries.txt",
50111  * 0,
50112  */
50113  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_TimeSeries), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2712, __pyx_L1_error)
50114  __Pyx_GOTREF(__pyx_t_7);
50115  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50116  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50117  __pyx_v_TS = ((struct __pyx_obj_9WaveTools_TimeSeries *)__pyx_t_7);
50118  __pyx_t_7 = 0;
50119 
50120  /* "WaveTools.py":2730
50121  * )
50122  *
50123  * self.windows = TS.windows_rec # <<<<<<<<<<<<<<
50124  * self.ho = TS.windows_handover
50125  * #Checking accuracy of the approximation
50126  */
50127  __pyx_t_7 = __pyx_v_TS->windows_rec;
50128  __Pyx_INCREF(__pyx_t_7);
50129  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windows, __pyx_t_7) < 0) __PYX_ERR(0, 2730, __pyx_L1_error)
50130  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50131 
50132  /* "WaveTools.py":2731
50133  *
50134  * self.windows = TS.windows_rec
50135  * self.ho = TS.windows_handover # <<<<<<<<<<<<<<
50136  * #Checking accuracy of the approximation
50137  * cut = 2.* self.cutoff * duration
50138  */
50139  __pyx_t_7 = __pyx_v_TS->windows_handover;
50140  __Pyx_INCREF(__pyx_t_7);
50141  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ho, __pyx_t_7) < 0) __PYX_ERR(0, 2731, __pyx_L1_error)
50142  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50143 
50144  /* "WaveTools.py":2733
50145  * self.ho = TS.windows_handover
50146  * #Checking accuracy of the approximation
50147  * cut = 2.* self.cutoff * duration # <<<<<<<<<<<<<<
50148  * ts = self.series[0,0]+cut
50149  * te = self.series[-1,0]-cut
50150  */
50151  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2733, __pyx_L1_error)
50152  __Pyx_GOTREF(__pyx_t_7);
50153  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2733, __pyx_L1_error)
50154  __Pyx_GOTREF(__pyx_t_6);
50155  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50156  __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_v_duration); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2733, __pyx_L1_error)
50157  __Pyx_GOTREF(__pyx_t_7);
50158  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50159  __pyx_v_cut = __pyx_t_7;
50160  __pyx_t_7 = 0;
50161 
50162  /* "WaveTools.py":2734
50163  * #Checking accuracy of the approximation
50164  * cut = 2.* self.cutoff * duration
50165  * ts = self.series[0,0]+cut # <<<<<<<<<<<<<<
50166  * te = self.series[-1,0]-cut
50167  * i1 = np.where(self.series[:,0]>ts)[0][0]
50168  */
50169  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2734, __pyx_L1_error)
50170  __Pyx_GOTREF(__pyx_t_7);
50171  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_tuple__46); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2734, __pyx_L1_error)
50172  __Pyx_GOTREF(__pyx_t_6);
50173  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50174  __pyx_t_7 = PyNumber_Add(__pyx_t_6, __pyx_v_cut); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2734, __pyx_L1_error)
50175  __Pyx_GOTREF(__pyx_t_7);
50176  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50177  __pyx_v_ts = __pyx_t_7;
50178  __pyx_t_7 = 0;
50179 
50180  /* "WaveTools.py":2735
50181  * cut = 2.* self.cutoff * duration
50182  * ts = self.series[0,0]+cut
50183  * te = self.series[-1,0]-cut # <<<<<<<<<<<<<<
50184  * i1 = np.where(self.series[:,0]>ts)[0][0]
50185  * i2 = np.where(self.series[:,0]<te)[0][-1]
50186  */
50187  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2735, __pyx_L1_error)
50188  __Pyx_GOTREF(__pyx_t_7);
50189  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_tuple__49); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2735, __pyx_L1_error)
50190  __Pyx_GOTREF(__pyx_t_6);
50191  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50192  __pyx_t_7 = PyNumber_Subtract(__pyx_t_6, __pyx_v_cut); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2735, __pyx_L1_error)
50193  __Pyx_GOTREF(__pyx_t_7);
50194  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50195  __pyx_v_te = __pyx_t_7;
50196  __pyx_t_7 = 0;
50197 
50198  /* "WaveTools.py":2736
50199  * ts = self.series[0,0]+cut
50200  * te = self.series[-1,0]-cut
50201  * i1 = np.where(self.series[:,0]>ts)[0][0] # <<<<<<<<<<<<<<
50202  * i2 = np.where(self.series[:,0]<te)[0][-1]
50203  * errors = np.zeros(len(self.series),)
50204  */
50205  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2736, __pyx_L1_error)
50206  __Pyx_GOTREF(__pyx_t_6);
50207  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2736, __pyx_L1_error)
50208  __Pyx_GOTREF(__pyx_t_5);
50209  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50210  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2736, __pyx_L1_error)
50211  __Pyx_GOTREF(__pyx_t_6);
50212  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_tuple__25); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2736, __pyx_L1_error)
50213  __Pyx_GOTREF(__pyx_t_2);
50214  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50215  __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_v_ts, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2736, __pyx_L1_error)
50216  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50217  __pyx_t_2 = NULL;
50218  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
50219  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
50220  if (likely(__pyx_t_2)) {
50221  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
50222  __Pyx_INCREF(__pyx_t_2);
50223  __Pyx_INCREF(function);
50224  __Pyx_DECREF_SET(__pyx_t_5, function);
50225  }
50226  }
50227  __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
50228  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
50229  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50230  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2736, __pyx_L1_error)
50231  __Pyx_GOTREF(__pyx_t_7);
50232  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50233  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2736, __pyx_L1_error)
50234  __Pyx_GOTREF(__pyx_t_5);
50235  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50236  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2736, __pyx_L1_error)
50237  __Pyx_GOTREF(__pyx_t_7);
50238  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50239  __pyx_v_i1 = __pyx_t_7;
50240  __pyx_t_7 = 0;
50241 
50242  /* "WaveTools.py":2737
50243  * te = self.series[-1,0]-cut
50244  * i1 = np.where(self.series[:,0]>ts)[0][0]
50245  * i2 = np.where(self.series[:,0]<te)[0][-1] # <<<<<<<<<<<<<<
50246  * errors = np.zeros(len(self.series),)
50247  * for ii in range(i1,i2):
50248  */
50249  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2737, __pyx_L1_error)
50250  __Pyx_GOTREF(__pyx_t_5);
50251  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_where); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2737, __pyx_L1_error)
50252  __Pyx_GOTREF(__pyx_t_6);
50253  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50254  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2737, __pyx_L1_error)
50255  __Pyx_GOTREF(__pyx_t_5);
50256  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_tuple__25); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2737, __pyx_L1_error)
50257  __Pyx_GOTREF(__pyx_t_2);
50258  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50259  __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_v_te, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2737, __pyx_L1_error)
50260  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50261  __pyx_t_2 = NULL;
50262  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
50263  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
50264  if (likely(__pyx_t_2)) {
50265  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
50266  __Pyx_INCREF(__pyx_t_2);
50267  __Pyx_INCREF(function);
50268  __Pyx_DECREF_SET(__pyx_t_6, function);
50269  }
50270  }
50271  __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5);
50272  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
50273  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50274  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2737, __pyx_L1_error)
50275  __Pyx_GOTREF(__pyx_t_7);
50276  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50277  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2737, __pyx_L1_error)
50278  __Pyx_GOTREF(__pyx_t_6);
50279  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50280  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2737, __pyx_L1_error)
50281  __Pyx_GOTREF(__pyx_t_7);
50282  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50283  __pyx_v_i2 = __pyx_t_7;
50284  __pyx_t_7 = 0;
50285 
50286  /* "WaveTools.py":2738
50287  * i1 = np.where(self.series[:,0]>ts)[0][0]
50288  * i2 = np.where(self.series[:,0]<te)[0][-1]
50289  * errors = np.zeros(len(self.series),) # <<<<<<<<<<<<<<
50290  * for ii in range(i1,i2):
50291  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) )
50292  */
50293  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2738, __pyx_L1_error)
50294  __Pyx_GOTREF(__pyx_t_6);
50295  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2738, __pyx_L1_error)
50296  __Pyx_GOTREF(__pyx_t_5);
50297  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50298  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2738, __pyx_L1_error)
50299  __Pyx_GOTREF(__pyx_t_6);
50300  __pyx_t_9 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2738, __pyx_L1_error)
50301  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50302  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2738, __pyx_L1_error)
50303  __Pyx_GOTREF(__pyx_t_6);
50304  __pyx_t_2 = NULL;
50305  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
50306  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
50307  if (likely(__pyx_t_2)) {
50308  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
50309  __Pyx_INCREF(__pyx_t_2);
50310  __Pyx_INCREF(function);
50311  __Pyx_DECREF_SET(__pyx_t_5, function);
50312  }
50313  }
50314  __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
50315  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
50316  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50317  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2738, __pyx_L1_error)
50318  __Pyx_GOTREF(__pyx_t_7);
50319  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50320  __pyx_v_errors = __pyx_t_7;
50321  __pyx_t_7 = 0;
50322 
50323  /* "WaveTools.py":2739
50324  * i2 = np.where(self.series[:,0]<te)[0][-1]
50325  * errors = np.zeros(len(self.series),)
50326  * for ii in range(i1,i2): # <<<<<<<<<<<<<<
50327  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) )
50328  * self.er1 = old_div(max(errors[:]),self.Hs)
50329  */
50330  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_range); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2739, __pyx_L1_error)
50331  __Pyx_GOTREF(__pyx_t_5);
50332  __pyx_t_6 = NULL;
50333  __pyx_t_8 = 0;
50334  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
50335  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
50336  if (likely(__pyx_t_6)) {
50337  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
50338  __Pyx_INCREF(__pyx_t_6);
50339  __Pyx_INCREF(function);
50340  __Pyx_DECREF_SET(__pyx_t_5, function);
50341  __pyx_t_8 = 1;
50342  }
50343  }
50344  #if CYTHON_FAST_PYCALL
50345  if (PyFunction_Check(__pyx_t_5)) {
50346  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_i1, __pyx_v_i2};
50347  __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2739, __pyx_L1_error)
50348  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
50349  __Pyx_GOTREF(__pyx_t_7);
50350  } else
50351  #endif
50352  #if CYTHON_FAST_PYCCALL
50353  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
50354  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_i1, __pyx_v_i2};
50355  __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2739, __pyx_L1_error)
50356  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
50357  __Pyx_GOTREF(__pyx_t_7);
50358  } else
50359  #endif
50360  {
50361  __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2739, __pyx_L1_error)
50362  __Pyx_GOTREF(__pyx_t_2);
50363  if (__pyx_t_6) {
50364  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL;
50365  }
50366  __Pyx_INCREF(__pyx_v_i1);
50367  __Pyx_GIVEREF(__pyx_v_i1);
50368  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_v_i1);
50369  __Pyx_INCREF(__pyx_v_i2);
50370  __Pyx_GIVEREF(__pyx_v_i2);
50371  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, __pyx_v_i2);
50372  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2739, __pyx_L1_error)
50373  __Pyx_GOTREF(__pyx_t_7);
50374  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50375  }
50376  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50377  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
50378  __pyx_t_5 = __pyx_t_7; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0;
50379  __pyx_t_10 = NULL;
50380  } else {
50381  __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2739, __pyx_L1_error)
50382  __Pyx_GOTREF(__pyx_t_5);
50383  __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2739, __pyx_L1_error)
50384  }
50385  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50386  for (;;) {
50387  if (likely(!__pyx_t_10)) {
50388  if (likely(PyList_CheckExact(__pyx_t_5))) {
50389  if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_5)) break;
50390  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
50391  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2739, __pyx_L1_error)
50392  #else
50393  __pyx_t_7 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2739, __pyx_L1_error)
50394  __Pyx_GOTREF(__pyx_t_7);
50395  #endif
50396  } else {
50397  if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
50398  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
50399  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2739, __pyx_L1_error)
50400  #else
50401  __pyx_t_7 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2739, __pyx_L1_error)
50402  __Pyx_GOTREF(__pyx_t_7);
50403  #endif
50404  }
50405  } else {
50406  __pyx_t_7 = __pyx_t_10(__pyx_t_5);
50407  if (unlikely(!__pyx_t_7)) {
50408  PyObject* exc_type = PyErr_Occurred();
50409  if (exc_type) {
50410  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
50411  else __PYX_ERR(0, 2739, __pyx_L1_error)
50412  }
50413  break;
50414  }
50415  __Pyx_GOTREF(__pyx_t_7);
50416  }
50417  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_7);
50418  __pyx_t_7 = 0;
50419 
50420  /* "WaveTools.py":2740
50421  * errors = np.zeros(len(self.series),)
50422  * for ii in range(i1,i2):
50423  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) ) # <<<<<<<<<<<<<<
50424  * self.er1 = old_div(max(errors[:]),self.Hs)
50425  * if self.er1 > 0.01 and checkAcc:
50426  */
50427  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2740, __pyx_L1_error)
50428  __Pyx_GOTREF(__pyx_t_7);
50429  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2740, __pyx_L1_error)
50430  __Pyx_GOTREF(__pyx_t_2);
50431  __Pyx_INCREF(__pyx_v_ii);
50432  __Pyx_GIVEREF(__pyx_v_ii);
50433  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ii);
50434  __Pyx_INCREF(__pyx_int_1);
50435  __Pyx_GIVEREF(__pyx_int_1);
50436  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
50437  __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2740, __pyx_L1_error)
50438  __Pyx_GOTREF(__pyx_t_6);
50439  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50440  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50441  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2740, __pyx_L1_error)
50442  __Pyx_GOTREF(__pyx_t_7);
50443  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2740, __pyx_L1_error)
50444  __Pyx_GOTREF(__pyx_t_1);
50445  __Pyx_INCREF(__pyx_v_ii);
50446  __Pyx_GIVEREF(__pyx_v_ii);
50447  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_ii);
50448  __Pyx_INCREF(__pyx_int_0);
50449  __Pyx_GIVEREF(__pyx_int_0);
50450  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0);
50451  __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2740, __pyx_L1_error)
50452  __Pyx_GOTREF(__pyx_t_11);
50453  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
50454  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50455  __Pyx_INCREF(__pyx_v_TS->eta);
50456  __pyx_t_1 = __pyx_v_TS->eta; __pyx_t_7 = NULL;
50457  __pyx_t_8 = 0;
50458  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
50459  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
50460  if (likely(__pyx_t_7)) {
50461  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
50462  __Pyx_INCREF(__pyx_t_7);
50463  __Pyx_INCREF(function);
50464  __Pyx_DECREF_SET(__pyx_t_1, function);
50465  __pyx_t_8 = 1;
50466  }
50467  }
50468  #if CYTHON_FAST_PYCALL
50469  if (PyFunction_Check(__pyx_t_1)) {
50470  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_x0, __pyx_t_11};
50471  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2740, __pyx_L1_error)
50472  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
50473  __Pyx_GOTREF(__pyx_t_2);
50474  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50475  } else
50476  #endif
50477  #if CYTHON_FAST_PYCCALL
50478  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
50479  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_x0, __pyx_t_11};
50480  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2740, __pyx_L1_error)
50481  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
50482  __Pyx_GOTREF(__pyx_t_2);
50483  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50484  } else
50485  #endif
50486  {
50487  __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2740, __pyx_L1_error)
50488  __Pyx_GOTREF(__pyx_t_12);
50489  if (__pyx_t_7) {
50490  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL;
50491  }
50492  __Pyx_INCREF(__pyx_v_x0);
50493  __Pyx_GIVEREF(__pyx_v_x0);
50494  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_8, __pyx_v_x0);
50495  __Pyx_GIVEREF(__pyx_t_11);
50496  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_t_11);
50497  __pyx_t_11 = 0;
50498  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2740, __pyx_L1_error)
50499  __Pyx_GOTREF(__pyx_t_2);
50500  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
50501  }
50502  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50503  __pyx_t_1 = PyNumber_Subtract(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2740, __pyx_L1_error)
50504  __Pyx_GOTREF(__pyx_t_1);
50505  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50506  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50507  __pyx_t_2 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2740, __pyx_L1_error)
50508  __Pyx_GOTREF(__pyx_t_2);
50509  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50510  if (unlikely(PyObject_SetItem(__pyx_v_errors, __pyx_v_ii, __pyx_t_2) < 0)) __PYX_ERR(0, 2740, __pyx_L1_error)
50511  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50512 
50513  /* "WaveTools.py":2739
50514  * i2 = np.where(self.series[:,0]<te)[0][-1]
50515  * errors = np.zeros(len(self.series),)
50516  * for ii in range(i1,i2): # <<<<<<<<<<<<<<
50517  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) )
50518  * self.er1 = old_div(max(errors[:]),self.Hs)
50519  */
50520  }
50521  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50522 
50523  /* "WaveTools.py":2741
50524  * for ii in range(i1,i2):
50525  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) )
50526  * self.er1 = old_div(max(errors[:]),self.Hs) # <<<<<<<<<<<<<<
50527  * if self.er1 > 0.01 and checkAcc:
50528  * logEvent('ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors',level=0)
50529  */
50530  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2741, __pyx_L1_error)
50531  __Pyx_GOTREF(__pyx_t_2);
50532  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_errors, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2741, __pyx_L1_error)
50533  __Pyx_GOTREF(__pyx_t_1);
50534  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2741, __pyx_L1_error)
50535  __Pyx_GOTREF(__pyx_t_6);
50536  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50537  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Hs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2741, __pyx_L1_error)
50538  __Pyx_GOTREF(__pyx_t_1);
50539  __pyx_t_12 = NULL;
50540  __pyx_t_8 = 0;
50541  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
50542  __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
50543  if (likely(__pyx_t_12)) {
50544  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
50545  __Pyx_INCREF(__pyx_t_12);
50546  __Pyx_INCREF(function);
50547  __Pyx_DECREF_SET(__pyx_t_2, function);
50548  __pyx_t_8 = 1;
50549  }
50550  }
50551  #if CYTHON_FAST_PYCALL
50552  if (PyFunction_Check(__pyx_t_2)) {
50553  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_1};
50554  __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2741, __pyx_L1_error)
50555  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
50556  __Pyx_GOTREF(__pyx_t_5);
50557  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50558  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50559  } else
50560  #endif
50561  #if CYTHON_FAST_PYCCALL
50562  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
50563  PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_6, __pyx_t_1};
50564  __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2741, __pyx_L1_error)
50565  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
50566  __Pyx_GOTREF(__pyx_t_5);
50567  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
50568  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50569  } else
50570  #endif
50571  {
50572  __pyx_t_11 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2741, __pyx_L1_error)
50573  __Pyx_GOTREF(__pyx_t_11);
50574  if (__pyx_t_12) {
50575  __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL;
50576  }
50577  __Pyx_GIVEREF(__pyx_t_6);
50578  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_8, __pyx_t_6);
50579  __Pyx_GIVEREF(__pyx_t_1);
50580  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_8, __pyx_t_1);
50581  __pyx_t_6 = 0;
50582  __pyx_t_1 = 0;
50583  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2741, __pyx_L1_error)
50584  __Pyx_GOTREF(__pyx_t_5);
50585  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50586  }
50587  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50588  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_er1, __pyx_t_5) < 0) __PYX_ERR(0, 2741, __pyx_L1_error)
50589  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50590 
50591  /* "WaveTools.py":2742
50592  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) )
50593  * self.er1 = old_div(max(errors[:]),self.Hs)
50594  * if self.er1 > 0.01 and checkAcc: # <<<<<<<<<<<<<<
50595  * logEvent('ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors',level=0)
50596  * sys.exit(1)
50597  */
50598  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_er1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2742, __pyx_L1_error)
50599  __Pyx_GOTREF(__pyx_t_5);
50600  __pyx_t_2 = PyObject_RichCompare(__pyx_t_5, __pyx_float_0_01, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2742, __pyx_L1_error)
50601  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50602  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2742, __pyx_L1_error)
50603  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50604  if (__pyx_t_3) {
50605  } else {
50606  __pyx_t_4 = __pyx_t_3;
50607  goto __pyx_L8_bool_binop_done;
50608  }
50609  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_checkAcc); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2742, __pyx_L1_error)
50610  __pyx_t_4 = __pyx_t_3;
50611  __pyx_L8_bool_binop_done:;
50612  if (__pyx_t_4) {
50613 
50614  /* "WaveTools.py":2743
50615  * self.er1 = old_div(max(errors[:]),self.Hs)
50616  * if self.er1 > 0.01 and checkAcc:
50617  * logEvent('ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors',level=0) # <<<<<<<<<<<<<<
50618  * sys.exit(1)
50619  *
50620  */
50621  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2743, __pyx_L1_error)
50622  __Pyx_GOTREF(__pyx_t_2);
50623  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2743, __pyx_L1_error)
50624  __Pyx_GOTREF(__pyx_t_5);
50625  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) __PYX_ERR(0, 2743, __pyx_L1_error)
50626  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__50, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2743, __pyx_L1_error)
50627  __Pyx_GOTREF(__pyx_t_11);
50628  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50629  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50630  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50631 
50632  /* "WaveTools.py":2744
50633  * if self.er1 > 0.01 and checkAcc:
50634  * logEvent('ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors',level=0)
50635  * sys.exit(1) # <<<<<<<<<<<<<<
50636  *
50637  * self.eta = TS.eta
50638  */
50639  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2744, __pyx_L1_error)
50640  __Pyx_GOTREF(__pyx_t_5);
50641  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2744, __pyx_L1_error)
50642  __Pyx_GOTREF(__pyx_t_2);
50643  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
50644  __pyx_t_5 = NULL;
50645  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
50646  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
50647  if (likely(__pyx_t_5)) {
50648  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
50649  __Pyx_INCREF(__pyx_t_5);
50650  __Pyx_INCREF(function);
50651  __Pyx_DECREF_SET(__pyx_t_2, function);
50652  }
50653  }
50654  __pyx_t_11 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_1);
50655  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
50656  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2744, __pyx_L1_error)
50657  __Pyx_GOTREF(__pyx_t_11);
50658  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50659  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50660 
50661  /* "WaveTools.py":2742
50662  * errors[ii] = abs(self.series[ii,1]-TS.eta(x0,self.series[ii,0]) )
50663  * self.er1 = old_div(max(errors[:]),self.Hs)
50664  * if self.er1 > 0.01 and checkAcc: # <<<<<<<<<<<<<<
50665  * logEvent('ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors',level=0)
50666  * sys.exit(1)
50667  */
50668  }
50669 
50670  /* "WaveTools.py":2746
50671  * sys.exit(1)
50672  *
50673  * self.eta = TS.eta # <<<<<<<<<<<<<<
50674  * self.u = TS.u
50675  * self.windOut = TS.windOut
50676  */
50677  __pyx_t_11 = __pyx_v_TS->eta;
50678  __Pyx_INCREF(__pyx_t_11);
50679  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_11) < 0) __PYX_ERR(0, 2746, __pyx_L1_error)
50680  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50681 
50682  /* "WaveTools.py":2747
50683  *
50684  * self.eta = TS.eta
50685  * self.u = TS.u # <<<<<<<<<<<<<<
50686  * self.windOut = TS.windOut
50687  *
50688  */
50689  __pyx_t_11 = __pyx_v_TS->u;
50690  __Pyx_INCREF(__pyx_t_11);
50691  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_u, __pyx_t_11) < 0) __PYX_ERR(0, 2747, __pyx_L1_error)
50692  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50693 
50694  /* "WaveTools.py":2748
50695  * self.eta = TS.eta
50696  * self.u = TS.u
50697  * self.windOut = TS.windOut # <<<<<<<<<<<<<<
50698  *
50699  * def printOut(self):
50700  */
50701  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_TS), __pyx_n_s_windOut); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2748, __pyx_L1_error)
50702  __Pyx_GOTREF(__pyx_t_11);
50703  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windOut, __pyx_t_11) < 0) __PYX_ERR(0, 2748, __pyx_L1_error)
50704  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
50705 
50706  /* "WaveTools.py":2647
50707  * """
50708  *
50709  * def __init__(self, # <<<<<<<<<<<<<<
50710  * Tstart,
50711  * Tend,
50712  */
50713 
50714  /* function exit code */
50715  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
50716  goto __pyx_L0;
50717  __pyx_L1_error:;
50718  __Pyx_XDECREF(__pyx_t_1);
50719  __Pyx_XDECREF(__pyx_t_2);
50720  __Pyx_XDECREF(__pyx_t_5);
50721  __Pyx_XDECREF(__pyx_t_6);
50722  __Pyx_XDECREF(__pyx_t_7);
50723  __Pyx_XDECREF(__pyx_t_11);
50724  __Pyx_XDECREF(__pyx_t_12);
50725  __Pyx_AddTraceback("WaveTools.RandomWavesFast.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
50726  __pyx_r = NULL;
50727  __pyx_L0:;
50728  __Pyx_XDECREF((PyObject *)__pyx_v_RW);
50729  __Pyx_XDECREF(__pyx_v_fname);
50730  __Pyx_XDECREF(__pyx_v_duration);
50731  __Pyx_XDECREF(__pyx_v_Tm);
50732  __Pyx_XDECREF(__pyx_v_Nwaves_tot);
50733  __Pyx_XDECREF((PyObject *)__pyx_v_TS);
50734  __Pyx_XDECREF(__pyx_v_cut);
50735  __Pyx_XDECREF(__pyx_v_ts);
50736  __Pyx_XDECREF(__pyx_v_te);
50737  __Pyx_XDECREF(__pyx_v_i1);
50738  __Pyx_XDECREF(__pyx_v_i2);
50739  __Pyx_XDECREF(__pyx_v_errors);
50740  __Pyx_XDECREF(__pyx_v_ii);
50741  __Pyx_XDECREF(__pyx_v_Nwaves);
50742  __Pyx_XGIVEREF(__pyx_r);
50743  __Pyx_RefNannyFinishContext();
50744  return __pyx_r;
50745 }
50746 
50747 /* "WaveTools.py":2750
50748  * self.windOut = TS.windOut
50749  *
50750  * def printOut(self): # <<<<<<<<<<<<<<
50751  * """Prints some properties of the time series - ONLY FOR TESTING
50752  *
50753  */
50754 
50755 /* Python wrapper */
50756 static PyObject *__pyx_pw_9WaveTools_15RandomWavesFast_3printOut(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
50757 static char __pyx_doc_9WaveTools_15RandomWavesFast_2printOut[] = "Prints some properties of the time series - ONLY FOR TESTING\n\n\n ";
50758 static PyMethodDef __pyx_mdef_9WaveTools_15RandomWavesFast_3printOut = {"printOut", (PyCFunction)__pyx_pw_9WaveTools_15RandomWavesFast_3printOut, METH_O, __pyx_doc_9WaveTools_15RandomWavesFast_2printOut};
50759 static PyObject *__pyx_pw_9WaveTools_15RandomWavesFast_3printOut(PyObject *__pyx_self, PyObject *__pyx_v_self) {
50760  PyObject *__pyx_r = 0;
50761  __Pyx_RefNannyDeclarations
50762  __Pyx_RefNannySetupContext("printOut (wrapper)", 0);
50763  __pyx_r = __pyx_pf_9WaveTools_15RandomWavesFast_2printOut(__pyx_self, ((PyObject *)__pyx_v_self));
50764 
50765  /* function exit code */
50766  __Pyx_RefNannyFinishContext();
50767  return __pyx_r;
50768 }
50769 
50770 static PyObject *__pyx_pf_9WaveTools_15RandomWavesFast_2printOut(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
50771  PyObject *__pyx_r = NULL;
50772  __Pyx_RefNannyDeclarations
50773  PyObject *__pyx_t_1 = NULL;
50774  PyObject *__pyx_t_2 = NULL;
50775  int __pyx_lineno = 0;
50776  const char *__pyx_filename = NULL;
50777  int __pyx_clineno = 0;
50778  __Pyx_RefNannySetupContext("printOut", 0);
50779 
50780  /* "WaveTools.py":2755
50781  *
50782  * """
50783  * print("Number of windows=",self.Nwind) # <<<<<<<<<<<<<<
50784  * print("Direct reconstruction? ",self.rec_d)
50785  * print("Start Time =", self.series[0,0])
50786  */
50787  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2755, __pyx_L1_error)
50788  __Pyx_GOTREF(__pyx_t_1);
50789  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2755, __pyx_L1_error)
50790  __Pyx_GOTREF(__pyx_t_2);
50791  __Pyx_INCREF(__pyx_kp_s_Number_of_windows);
50792  __Pyx_GIVEREF(__pyx_kp_s_Number_of_windows);
50793  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_Number_of_windows);
50794  __Pyx_GIVEREF(__pyx_t_1);
50795  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
50796  __pyx_t_1 = 0;
50797  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2755, __pyx_L1_error)
50798  __Pyx_GOTREF(__pyx_t_1);
50799  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50800  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50801 
50802  /* "WaveTools.py":2756
50803  * """
50804  * print("Number of windows=",self.Nwind)
50805  * print("Direct reconstruction? ",self.rec_d) # <<<<<<<<<<<<<<
50806  * print("Start Time =", self.series[0,0])
50807  * print("End time= ",self.series[-1,0])
50808  */
50809  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_rec_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error)
50810  __Pyx_GOTREF(__pyx_t_1);
50811  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2756, __pyx_L1_error)
50812  __Pyx_GOTREF(__pyx_t_2);
50813  __Pyx_INCREF(__pyx_kp_s_Direct_reconstruction);
50814  __Pyx_GIVEREF(__pyx_kp_s_Direct_reconstruction);
50815  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_Direct_reconstruction);
50816  __Pyx_GIVEREF(__pyx_t_1);
50817  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
50818  __pyx_t_1 = 0;
50819  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error)
50820  __Pyx_GOTREF(__pyx_t_1);
50821  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50822  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50823 
50824  /* "WaveTools.py":2757
50825  * print("Number of windows=",self.Nwind)
50826  * print("Direct reconstruction? ",self.rec_d)
50827  * print("Start Time =", self.series[0,0]) # <<<<<<<<<<<<<<
50828  * print("End time= ",self.series[-1,0])
50829  * print("Cutoff=", self.cutoff)
50830  */
50831  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2757, __pyx_L1_error)
50832  __Pyx_GOTREF(__pyx_t_1);
50833  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_tuple__46); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2757, __pyx_L1_error)
50834  __Pyx_GOTREF(__pyx_t_2);
50835  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50836  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2757, __pyx_L1_error)
50837  __Pyx_GOTREF(__pyx_t_1);
50838  __Pyx_INCREF(__pyx_kp_s_Start_Time);
50839  __Pyx_GIVEREF(__pyx_kp_s_Start_Time);
50840  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_Start_Time);
50841  __Pyx_GIVEREF(__pyx_t_2);
50842  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
50843  __pyx_t_2 = 0;
50844  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2757, __pyx_L1_error)
50845  __Pyx_GOTREF(__pyx_t_2);
50846  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50847  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50848 
50849  /* "WaveTools.py":2758
50850  * print("Direct reconstruction? ",self.rec_d)
50851  * print("Start Time =", self.series[0,0])
50852  * print("End time= ",self.series[-1,0]) # <<<<<<<<<<<<<<
50853  * print("Cutoff=", self.cutoff)
50854  * print("Er1 =", self.er1)
50855  */
50856  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_series); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2758, __pyx_L1_error)
50857  __Pyx_GOTREF(__pyx_t_2);
50858  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_tuple__49); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2758, __pyx_L1_error)
50859  __Pyx_GOTREF(__pyx_t_1);
50860  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50861  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2758, __pyx_L1_error)
50862  __Pyx_GOTREF(__pyx_t_2);
50863  __Pyx_INCREF(__pyx_kp_s_End_time);
50864  __Pyx_GIVEREF(__pyx_kp_s_End_time);
50865  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_End_time);
50866  __Pyx_GIVEREF(__pyx_t_1);
50867  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
50868  __pyx_t_1 = 0;
50869  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2758, __pyx_L1_error)
50870  __Pyx_GOTREF(__pyx_t_1);
50871  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50872  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50873 
50874  /* "WaveTools.py":2759
50875  * print("Start Time =", self.series[0,0])
50876  * print("End time= ",self.series[-1,0])
50877  * print("Cutoff=", self.cutoff) # <<<<<<<<<<<<<<
50878  * print("Er1 =", self.er1)
50879  *
50880  */
50881  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2759, __pyx_L1_error)
50882  __Pyx_GOTREF(__pyx_t_1);
50883  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2759, __pyx_L1_error)
50884  __Pyx_GOTREF(__pyx_t_2);
50885  __Pyx_INCREF(__pyx_kp_s_Cutoff_2);
50886  __Pyx_GIVEREF(__pyx_kp_s_Cutoff_2);
50887  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_Cutoff_2);
50888  __Pyx_GIVEREF(__pyx_t_1);
50889  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
50890  __pyx_t_1 = 0;
50891  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2759, __pyx_L1_error)
50892  __Pyx_GOTREF(__pyx_t_1);
50893  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50894  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50895 
50896  /* "WaveTools.py":2760
50897  * print("End time= ",self.series[-1,0])
50898  * print("Cutoff=", self.cutoff)
50899  * print("Er1 =", self.er1) # <<<<<<<<<<<<<<
50900  *
50901  *
50902  */
50903  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_er1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2760, __pyx_L1_error)
50904  __Pyx_GOTREF(__pyx_t_1);
50905  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2760, __pyx_L1_error)
50906  __Pyx_GOTREF(__pyx_t_2);
50907  __Pyx_INCREF(__pyx_kp_s_Er1);
50908  __Pyx_GIVEREF(__pyx_kp_s_Er1);
50909  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_s_Er1);
50910  __Pyx_GIVEREF(__pyx_t_1);
50911  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
50912  __pyx_t_1 = 0;
50913  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2760, __pyx_L1_error)
50914  __Pyx_GOTREF(__pyx_t_1);
50915  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
50916  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
50917 
50918  /* "WaveTools.py":2750
50919  * self.windOut = TS.windOut
50920  *
50921  * def printOut(self): # <<<<<<<<<<<<<<
50922  * """Prints some properties of the time series - ONLY FOR TESTING
50923  *
50924  */
50925 
50926  /* function exit code */
50927  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
50928  goto __pyx_L0;
50929  __pyx_L1_error:;
50930  __Pyx_XDECREF(__pyx_t_1);
50931  __Pyx_XDECREF(__pyx_t_2);
50932  __Pyx_AddTraceback("WaveTools.RandomWavesFast.printOut", __pyx_clineno, __pyx_lineno, __pyx_filename);
50933  __pyx_r = NULL;
50934  __pyx_L0:;
50935  __Pyx_XGIVEREF(__pyx_r);
50936  __Pyx_RefNannyFinishContext();
50937  return __pyx_r;
50938 }
50939 
50940 /* "WaveTools.py":2801
50941  * Switch for enabling optimised functions
50942  * """
50943  * def __init__(self, # <<<<<<<<<<<<<<
50944  * Tstart,
50945  * Tend,
50946  */
50947 
50948 /* Python wrapper */
50949 static int __pyx_pw_9WaveTools_13RandomNLWaves_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
50950 static int __pyx_pw_9WaveTools_13RandomNLWaves_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
50951  CYTHON_UNUSED PyObject *__pyx_v_Tstart = 0;
50952  CYTHON_UNUSED PyObject *__pyx_v_Tend = 0;
50953  PyObject *__pyx_v_Tp = 0;
50954  PyObject *__pyx_v_Hs = 0;
50955  PyObject *__pyx_v_mwl = 0;
50956  PyObject *__pyx_v_depth = 0;
50957  PyObject *__pyx_v_waveDir = 0;
50958  PyObject *__pyx_v_g = 0;
50959  PyObject *__pyx_v_N = 0;
50960  PyObject *__pyx_v_bandFactor = 0;
50961  PyObject *__pyx_v_spectName = 0;
50962  PyObject *__pyx_v_spectral_params = 0;
50963  PyObject *__pyx_v_phi = 0;
50964  PyObject *__pyx_v_fast = 0;
50965  int __pyx_lineno = 0;
50966  const char *__pyx_filename = NULL;
50967  int __pyx_clineno = 0;
50968  int __pyx_r;
50969  __Pyx_RefNannyDeclarations
50970  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
50971  {
50972  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Tstart,&__pyx_n_s_Tend,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,&__pyx_n_s_fast,0};
50973  PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
50974 
50975  /* "WaveTools.py":2813
50976  * bandFactor, #width factor for band around peak frequency fp
50977  * spectName, #random words will result in error and return the available spectra
50978  * spectral_params=None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
50979  * phi=None, #array of component phases
50980  * fast = True ):
50981  */
50982  values[11] = ((PyObject *)Py_None);
50983 
50984  /* "WaveTools.py":2814
50985  * spectName, #random words will result in error and return the available spectra
50986  * spectral_params=None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
50987  * phi=None, #array of component phases # <<<<<<<<<<<<<<
50988  * fast = True ):
50989  * self.fast= fast
50990  */
50991  values[12] = ((PyObject *)Py_None);
50992 
50993  /* "WaveTools.py":2815
50994  * spectral_params=None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
50995  * phi=None, #array of component phases
50996  * fast = True ): # <<<<<<<<<<<<<<
50997  * self.fast= fast
50998  * RW = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast )
50999  */
51000  values[13] = ((PyObject *)Py_True);
51001  if (unlikely(__pyx_kwds)) {
51002  Py_ssize_t kw_args;
51003  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
51004  switch (pos_args) {
51005  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
51006  CYTHON_FALLTHROUGH;
51007  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
51008  CYTHON_FALLTHROUGH;
51009  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
51010  CYTHON_FALLTHROUGH;
51011  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
51012  CYTHON_FALLTHROUGH;
51013  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
51014  CYTHON_FALLTHROUGH;
51015  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
51016  CYTHON_FALLTHROUGH;
51017  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
51018  CYTHON_FALLTHROUGH;
51019  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
51020  CYTHON_FALLTHROUGH;
51021  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
51022  CYTHON_FALLTHROUGH;
51023  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
51024  CYTHON_FALLTHROUGH;
51025  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
51026  CYTHON_FALLTHROUGH;
51027  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
51028  CYTHON_FALLTHROUGH;
51029  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
51030  CYTHON_FALLTHROUGH;
51031  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
51032  CYTHON_FALLTHROUGH;
51033  case 0: break;
51034  default: goto __pyx_L5_argtuple_error;
51035  }
51036  kw_args = PyDict_Size(__pyx_kwds);
51037  switch (pos_args) {
51038  case 0:
51039  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tstart)) != 0)) kw_args--;
51040  else goto __pyx_L5_argtuple_error;
51041  CYTHON_FALLTHROUGH;
51042  case 1:
51043  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tend)) != 0)) kw_args--;
51044  else {
51045  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 1); __PYX_ERR(0, 2801, __pyx_L3_error)
51046  }
51047  CYTHON_FALLTHROUGH;
51048  case 2:
51049  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
51050  else {
51051  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 2); __PYX_ERR(0, 2801, __pyx_L3_error)
51052  }
51053  CYTHON_FALLTHROUGH;
51054  case 3:
51055  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
51056  else {
51057  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 3); __PYX_ERR(0, 2801, __pyx_L3_error)
51058  }
51059  CYTHON_FALLTHROUGH;
51060  case 4:
51061  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
51062  else {
51063  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 4); __PYX_ERR(0, 2801, __pyx_L3_error)
51064  }
51065  CYTHON_FALLTHROUGH;
51066  case 5:
51067  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
51068  else {
51069  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 5); __PYX_ERR(0, 2801, __pyx_L3_error)
51070  }
51071  CYTHON_FALLTHROUGH;
51072  case 6:
51073  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
51074  else {
51075  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 6); __PYX_ERR(0, 2801, __pyx_L3_error)
51076  }
51077  CYTHON_FALLTHROUGH;
51078  case 7:
51079  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
51080  else {
51081  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 7); __PYX_ERR(0, 2801, __pyx_L3_error)
51082  }
51083  CYTHON_FALLTHROUGH;
51084  case 8:
51085  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
51086  else {
51087  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 8); __PYX_ERR(0, 2801, __pyx_L3_error)
51088  }
51089  CYTHON_FALLTHROUGH;
51090  case 9:
51091  if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
51092  else {
51093  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 9); __PYX_ERR(0, 2801, __pyx_L3_error)
51094  }
51095  CYTHON_FALLTHROUGH;
51096  case 10:
51097  if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
51098  else {
51099  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, 10); __PYX_ERR(0, 2801, __pyx_L3_error)
51100  }
51101  CYTHON_FALLTHROUGH;
51102  case 11:
51103  if (kw_args > 0) {
51104  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params);
51105  if (value) { values[11] = value; kw_args--; }
51106  }
51107  CYTHON_FALLTHROUGH;
51108  case 12:
51109  if (kw_args > 0) {
51110  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi);
51111  if (value) { values[12] = value; kw_args--; }
51112  }
51113  CYTHON_FALLTHROUGH;
51114  case 13:
51115  if (kw_args > 0) {
51116  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
51117  if (value) { values[13] = value; kw_args--; }
51118  }
51119  }
51120  if (unlikely(kw_args > 0)) {
51121  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2801, __pyx_L3_error)
51122  }
51123  } else {
51124  switch (PyTuple_GET_SIZE(__pyx_args)) {
51125  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
51126  CYTHON_FALLTHROUGH;
51127  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
51128  CYTHON_FALLTHROUGH;
51129  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
51130  CYTHON_FALLTHROUGH;
51131  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
51132  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
51133  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
51134  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
51135  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
51136  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
51137  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
51138  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
51139  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
51140  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
51141  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
51142  break;
51143  default: goto __pyx_L5_argtuple_error;
51144  }
51145  }
51146  __pyx_v_Tstart = values[0];
51147  __pyx_v_Tend = values[1];
51148  __pyx_v_Tp = values[2];
51149  __pyx_v_Hs = values[3];
51150  __pyx_v_mwl = values[4];
51151  __pyx_v_depth = values[5];
51152  __pyx_v_waveDir = values[6];
51153  __pyx_v_g = values[7];
51154  __pyx_v_N = values[8];
51155  __pyx_v_bandFactor = values[9];
51156  __pyx_v_spectName = values[10];
51157  __pyx_v_spectral_params = values[11];
51158  __pyx_v_phi = values[12];
51159  __pyx_v_fast = values[13];
51160  }
51161  goto __pyx_L4_argument_unpacking_done;
51162  __pyx_L5_argtuple_error:;
51163  __Pyx_RaiseArgtupleInvalid("__init__", 0, 11, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2801, __pyx_L3_error)
51164  __pyx_L3_error:;
51165  __Pyx_AddTraceback("WaveTools.RandomNLWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
51166  __Pyx_RefNannyFinishContext();
51167  return -1;
51168  __pyx_L4_argument_unpacking_done:;
51169  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves___init__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi, __pyx_v_fast);
51170 
51171  /* "WaveTools.py":2801
51172  * Switch for enabling optimised functions
51173  * """
51174  * def __init__(self, # <<<<<<<<<<<<<<
51175  * Tstart,
51176  * Tend,
51177  */
51178 
51179  /* function exit code */
51180  __Pyx_RefNannyFinishContext();
51181  return __pyx_r;
51182 }
51183 
51184 static int __pyx_pf_9WaveTools_13RandomNLWaves___init__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_Tstart, CYTHON_UNUSED PyObject *__pyx_v_Tend, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_fast) {
51185  struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_RW = NULL;
51186  PyObject *__pyx_v_ii = NULL;
51187  PyObject *__pyx_v_ij = NULL;
51188  PyObject *__pyx_v_kk = NULL;
51189  int __pyx_r;
51190  __Pyx_RefNannyDeclarations
51191  bool __pyx_t_1;
51192  PyObject *__pyx_t_2 = NULL;
51193  PyObject *__pyx_t_3 = NULL;
51194  PyObject *__pyx_t_4 = NULL;
51195  int __pyx_t_5;
51196  double __pyx_t_6;
51197  PyObject *__pyx_t_7 = NULL;
51198  PyObject *__pyx_t_8 = NULL;
51199  Py_ssize_t __pyx_t_9;
51200  PyObject *(*__pyx_t_10)(PyObject *);
51201  PyObject *__pyx_t_11 = NULL;
51202  Py_ssize_t __pyx_t_12;
51203  PyObject *(*__pyx_t_13)(PyObject *);
51204  Py_ssize_t __pyx_t_14;
51205  double *__pyx_t_15;
51206  int __pyx_lineno = 0;
51207  const char *__pyx_filename = NULL;
51208  int __pyx_clineno = 0;
51209  __Pyx_RefNannySetupContext("__init__", 0);
51210 
51211  /* "WaveTools.py":2816
51212  * phi=None, #array of component phases
51213  * fast = True ):
51214  * self.fast= fast # <<<<<<<<<<<<<<
51215  * RW = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast )
51216  *
51217  */
51218  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_fast); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2816, __pyx_L1_error)
51219  __pyx_v_self->fast = __pyx_t_1;
51220 
51221  /* "WaveTools.py":2817
51222  * fast = True ):
51223  * self.fast= fast
51224  * RW = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast ) # <<<<<<<<<<<<<<
51225  *
51226  *
51227  */
51228  __pyx_t_2 = PyTuple_New(11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2817, __pyx_L1_error)
51229  __Pyx_GOTREF(__pyx_t_2);
51230  __Pyx_INCREF(__pyx_v_Tp);
51231  __Pyx_GIVEREF(__pyx_v_Tp);
51232  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Tp);
51233  __Pyx_INCREF(__pyx_v_Hs);
51234  __Pyx_GIVEREF(__pyx_v_Hs);
51235  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Hs);
51236  __Pyx_INCREF(__pyx_v_mwl);
51237  __Pyx_GIVEREF(__pyx_v_mwl);
51238  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_mwl);
51239  __Pyx_INCREF(__pyx_v_depth);
51240  __Pyx_GIVEREF(__pyx_v_depth);
51241  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_depth);
51242  __Pyx_INCREF(__pyx_v_waveDir);
51243  __Pyx_GIVEREF(__pyx_v_waveDir);
51244  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_waveDir);
51245  __Pyx_INCREF(__pyx_v_g);
51246  __Pyx_GIVEREF(__pyx_v_g);
51247  PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_g);
51248  __Pyx_INCREF(__pyx_v_N);
51249  __Pyx_GIVEREF(__pyx_v_N);
51250  PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_N);
51251  __Pyx_INCREF(__pyx_v_bandFactor);
51252  __Pyx_GIVEREF(__pyx_v_bandFactor);
51253  PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_bandFactor);
51254  __Pyx_INCREF(__pyx_v_spectName);
51255  __Pyx_GIVEREF(__pyx_v_spectName);
51256  PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_spectName);
51257  __Pyx_INCREF(__pyx_v_spectral_params);
51258  __Pyx_GIVEREF(__pyx_v_spectral_params);
51259  PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_v_spectral_params);
51260  __Pyx_INCREF(__pyx_v_phi);
51261  __Pyx_GIVEREF(__pyx_v_phi);
51262  PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_v_phi);
51263  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2817, __pyx_L1_error)
51264  __Pyx_GOTREF(__pyx_t_3);
51265  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->fast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2817, __pyx_L1_error)
51266  __Pyx_GOTREF(__pyx_t_4);
51267  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fast, __pyx_t_4) < 0) __PYX_ERR(0, 2817, __pyx_L1_error)
51268  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
51269  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_RandomWaves), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2817, __pyx_L1_error)
51270  __Pyx_GOTREF(__pyx_t_4);
51271  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51272  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
51273  __pyx_v_RW = ((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_t_4);
51274  __pyx_t_4 = 0;
51275 
51276  /* "WaveTools.py":2820
51277  *
51278  *
51279  * self.N = RW.N # <<<<<<<<<<<<<<
51280  * self.gAbs = RW.gAbs
51281  * self.eta_linear = RW.eta
51282  */
51283  __pyx_t_5 = __pyx_v_RW->N;
51284  __pyx_v_self->N = __pyx_t_5;
51285 
51286  /* "WaveTools.py":2821
51287  *
51288  * self.N = RW.N
51289  * self.gAbs = RW.gAbs # <<<<<<<<<<<<<<
51290  * self.eta_linear = RW.eta
51291  * self.eta = self.wtError
51292  */
51293  __pyx_t_6 = __pyx_v_RW->gAbs;
51294  __pyx_v_self->gAbs = __pyx_t_6;
51295 
51296  /* "WaveTools.py":2822
51297  * self.N = RW.N
51298  * self.gAbs = RW.gAbs
51299  * self.eta_linear = RW.eta # <<<<<<<<<<<<<<
51300  * self.eta = self.wtError
51301  * self.u = self.wtError
51302  */
51303  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_RW), __pyx_n_s_eta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2822, __pyx_L1_error)
51304  __Pyx_GOTREF(__pyx_t_4);
51305  __Pyx_GIVEREF(__pyx_t_4);
51306  __Pyx_GOTREF(__pyx_v_self->eta_linear);
51307  __Pyx_DECREF(__pyx_v_self->eta_linear);
51308  __pyx_v_self->eta_linear = __pyx_t_4;
51309  __pyx_t_4 = 0;
51310 
51311  /* "WaveTools.py":2823
51312  * self.gAbs = RW.gAbs
51313  * self.eta_linear = RW.eta
51314  * self.eta = self.wtError # <<<<<<<<<<<<<<
51315  * self.u = self.wtError
51316  * self.omega = RW.omega
51317  */
51318  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_wtError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2823, __pyx_L1_error)
51319  __Pyx_GOTREF(__pyx_t_4);
51320  __Pyx_GIVEREF(__pyx_t_4);
51321  __Pyx_GOTREF(__pyx_v_self->eta);
51322  __Pyx_DECREF(__pyx_v_self->eta);
51323  __pyx_v_self->eta = __pyx_t_4;
51324  __pyx_t_4 = 0;
51325 
51326  /* "WaveTools.py":2824
51327  * self.eta_linear = RW.eta
51328  * self.eta = self.wtError
51329  * self.u = self.wtError # <<<<<<<<<<<<<<
51330  * self.omega = RW.omega
51331  * self.ai = RW.ai
51332  */
51333  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_wtError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2824, __pyx_L1_error)
51334  __Pyx_GOTREF(__pyx_t_4);
51335  __Pyx_GIVEREF(__pyx_t_4);
51336  __Pyx_GOTREF(__pyx_v_self->u);
51337  __Pyx_DECREF(__pyx_v_self->u);
51338  __pyx_v_self->u = __pyx_t_4;
51339  __pyx_t_4 = 0;
51340 
51341  /* "WaveTools.py":2825
51342  * self.eta = self.wtError
51343  * self.u = self.wtError
51344  * self.omega = RW.omega # <<<<<<<<<<<<<<
51345  * self.ai = RW.ai
51346  * self.ki = RW.ki
51347  */
51348  __pyx_t_4 = ((PyObject *)__pyx_v_RW->omega);
51349  __Pyx_INCREF(__pyx_t_4);
51350  __Pyx_GIVEREF(__pyx_t_4);
51351  __Pyx_GOTREF(__pyx_v_self->omega);
51352  __Pyx_DECREF(((PyObject *)__pyx_v_self->omega));
51353  __pyx_v_self->omega = ((PyArrayObject *)__pyx_t_4);
51354  __pyx_t_4 = 0;
51355 
51356  /* "WaveTools.py":2826
51357  * self.u = self.wtError
51358  * self.omega = RW.omega
51359  * self.ai = RW.ai # <<<<<<<<<<<<<<
51360  * self.ki = RW.ki
51361  * self.kDir = RW.kDir
51362  */
51363  __pyx_t_4 = ((PyObject *)__pyx_v_RW->ai);
51364  __Pyx_INCREF(__pyx_t_4);
51365  __Pyx_GIVEREF(__pyx_t_4);
51366  __Pyx_GOTREF(__pyx_v_self->ai);
51367  __Pyx_DECREF(((PyObject *)__pyx_v_self->ai));
51368  __pyx_v_self->ai = ((PyArrayObject *)__pyx_t_4);
51369  __pyx_t_4 = 0;
51370 
51371  /* "WaveTools.py":2827
51372  * self.omega = RW.omega
51373  * self.ai = RW.ai
51374  * self.ki = RW.ki # <<<<<<<<<<<<<<
51375  * self.kDir = RW.kDir
51376  * self.phi = RW.phi
51377  */
51378  __pyx_t_4 = ((PyObject *)__pyx_v_RW->ki);
51379  __Pyx_INCREF(__pyx_t_4);
51380  __Pyx_GIVEREF(__pyx_t_4);
51381  __Pyx_GOTREF(__pyx_v_self->ki);
51382  __Pyx_DECREF(((PyObject *)__pyx_v_self->ki));
51383  __pyx_v_self->ki = ((PyArrayObject *)__pyx_t_4);
51384  __pyx_t_4 = 0;
51385 
51386  /* "WaveTools.py":2828
51387  * self.ai = RW.ai
51388  * self.ki = RW.ki
51389  * self.kDir = RW.kDir # <<<<<<<<<<<<<<
51390  * self.phi = RW.phi
51391  * self.depth = depth
51392  */
51393  __pyx_t_4 = ((PyObject *)__pyx_v_RW->kDir);
51394  __Pyx_INCREF(__pyx_t_4);
51395  __Pyx_GIVEREF(__pyx_t_4);
51396  __Pyx_GOTREF(__pyx_v_self->kDir);
51397  __Pyx_DECREF(((PyObject *)__pyx_v_self->kDir));
51398  __pyx_v_self->kDir = ((PyArrayObject *)__pyx_t_4);
51399  __pyx_t_4 = 0;
51400 
51401  /* "WaveTools.py":2829
51402  * self.ki = RW.ki
51403  * self.kDir = RW.kDir
51404  * self.phi = RW.phi # <<<<<<<<<<<<<<
51405  * self.depth = depth
51406  * self.tanhKd = np.zeros(self.N,"d")
51407  */
51408  if (!(likely(((__pyx_v_RW->phi) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_RW->phi, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2829, __pyx_L1_error)
51409  __pyx_t_4 = __pyx_v_RW->phi;
51410  __Pyx_INCREF(__pyx_t_4);
51411  __Pyx_GIVEREF(__pyx_t_4);
51412  __Pyx_GOTREF(__pyx_v_self->phi);
51413  __Pyx_DECREF(((PyObject *)__pyx_v_self->phi));
51414  __pyx_v_self->phi = ((PyArrayObject *)__pyx_t_4);
51415  __pyx_t_4 = 0;
51416 
51417  /* "WaveTools.py":2830
51418  * self.kDir = RW.kDir
51419  * self.phi = RW.phi
51420  * self.depth = depth # <<<<<<<<<<<<<<
51421  * self.tanhKd = np.zeros(self.N,"d")
51422  * self.sinhKd = np.zeros(self.N,"d")
51423  */
51424  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_depth); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2830, __pyx_L1_error)
51425  __pyx_v_self->depth = __pyx_t_6;
51426 
51427  /* "WaveTools.py":2831
51428  * self.phi = RW.phi
51429  * self.depth = depth
51430  * self.tanhKd = np.zeros(self.N,"d") # <<<<<<<<<<<<<<
51431  * self.sinhKd = np.zeros(self.N,"d")
51432  * for ii in range(self.N):
51433  */
51434  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2831, __pyx_L1_error)
51435  __Pyx_GOTREF(__pyx_t_3);
51436  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2831, __pyx_L1_error)
51437  __Pyx_GOTREF(__pyx_t_2);
51438  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
51439  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2831, __pyx_L1_error)
51440  __Pyx_GOTREF(__pyx_t_3);
51441  __pyx_t_7 = NULL;
51442  __pyx_t_5 = 0;
51443  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
51444  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
51445  if (likely(__pyx_t_7)) {
51446  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
51447  __Pyx_INCREF(__pyx_t_7);
51448  __Pyx_INCREF(function);
51449  __Pyx_DECREF_SET(__pyx_t_2, function);
51450  __pyx_t_5 = 1;
51451  }
51452  }
51453  #if CYTHON_FAST_PYCALL
51454  if (PyFunction_Check(__pyx_t_2)) {
51455  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_n_s_d};
51456  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2831, __pyx_L1_error)
51457  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
51458  __Pyx_GOTREF(__pyx_t_4);
51459  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
51460  } else
51461  #endif
51462  #if CYTHON_FAST_PYCCALL
51463  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
51464  PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_n_s_d};
51465  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2831, __pyx_L1_error)
51466  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
51467  __Pyx_GOTREF(__pyx_t_4);
51468  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
51469  } else
51470  #endif
51471  {
51472  __pyx_t_8 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2831, __pyx_L1_error)
51473  __Pyx_GOTREF(__pyx_t_8);
51474  if (__pyx_t_7) {
51475  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
51476  }
51477  __Pyx_GIVEREF(__pyx_t_3);
51478  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_3);
51479  __Pyx_INCREF(__pyx_n_s_d);
51480  __Pyx_GIVEREF(__pyx_n_s_d);
51481  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_n_s_d);
51482  __pyx_t_3 = 0;
51483  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2831, __pyx_L1_error)
51484  __Pyx_GOTREF(__pyx_t_4);
51485  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51486  }
51487  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51488  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2831, __pyx_L1_error)
51489  __Pyx_GIVEREF(__pyx_t_4);
51490  __Pyx_GOTREF(__pyx_v_self->tanhKd);
51491  __Pyx_DECREF(((PyObject *)__pyx_v_self->tanhKd));
51492  __pyx_v_self->tanhKd = ((PyArrayObject *)__pyx_t_4);
51493  __pyx_t_4 = 0;
51494 
51495  /* "WaveTools.py":2832
51496  * self.depth = depth
51497  * self.tanhKd = np.zeros(self.N,"d")
51498  * self.sinhKd = np.zeros(self.N,"d") # <<<<<<<<<<<<<<
51499  * for ii in range(self.N):
51500  * self.tanhKd[ii] = np.tanh(self.ki[ii]*self.depth)
51501  */
51502  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2832, __pyx_L1_error)
51503  __Pyx_GOTREF(__pyx_t_2);
51504  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2832, __pyx_L1_error)
51505  __Pyx_GOTREF(__pyx_t_8);
51506  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51507  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2832, __pyx_L1_error)
51508  __Pyx_GOTREF(__pyx_t_2);
51509  __pyx_t_3 = NULL;
51510  __pyx_t_5 = 0;
51511  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
51512  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
51513  if (likely(__pyx_t_3)) {
51514  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
51515  __Pyx_INCREF(__pyx_t_3);
51516  __Pyx_INCREF(function);
51517  __Pyx_DECREF_SET(__pyx_t_8, function);
51518  __pyx_t_5 = 1;
51519  }
51520  }
51521  #if CYTHON_FAST_PYCALL
51522  if (PyFunction_Check(__pyx_t_8)) {
51523  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_n_s_d};
51524  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2832, __pyx_L1_error)
51525  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
51526  __Pyx_GOTREF(__pyx_t_4);
51527  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51528  } else
51529  #endif
51530  #if CYTHON_FAST_PYCCALL
51531  if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
51532  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_n_s_d};
51533  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2832, __pyx_L1_error)
51534  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
51535  __Pyx_GOTREF(__pyx_t_4);
51536  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51537  } else
51538  #endif
51539  {
51540  __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2832, __pyx_L1_error)
51541  __Pyx_GOTREF(__pyx_t_7);
51542  if (__pyx_t_3) {
51543  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
51544  }
51545  __Pyx_GIVEREF(__pyx_t_2);
51546  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_2);
51547  __Pyx_INCREF(__pyx_n_s_d);
51548  __Pyx_GIVEREF(__pyx_n_s_d);
51549  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_n_s_d);
51550  __pyx_t_2 = 0;
51551  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2832, __pyx_L1_error)
51552  __Pyx_GOTREF(__pyx_t_4);
51553  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51554  }
51555  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51556  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2832, __pyx_L1_error)
51557  __Pyx_GIVEREF(__pyx_t_4);
51558  __Pyx_GOTREF(__pyx_v_self->sinhKd);
51559  __Pyx_DECREF(((PyObject *)__pyx_v_self->sinhKd));
51560  __pyx_v_self->sinhKd = ((PyArrayObject *)__pyx_t_4);
51561  __pyx_t_4 = 0;
51562 
51563  /* "WaveTools.py":2833
51564  * self.tanhKd = np.zeros(self.N,"d")
51565  * self.sinhKd = np.zeros(self.N,"d")
51566  * for ii in range(self.N): # <<<<<<<<<<<<<<
51567  * self.tanhKd[ii] = np.tanh(self.ki[ii]*self.depth)
51568  * self.sinhKd[ii] = np.sinh(self.ki[ii]*self.depth)
51569  */
51570  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2833, __pyx_L1_error)
51571  __Pyx_GOTREF(__pyx_t_8);
51572  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2833, __pyx_L1_error)
51573  __Pyx_GOTREF(__pyx_t_7);
51574  __pyx_t_2 = NULL;
51575  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
51576  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
51577  if (likely(__pyx_t_2)) {
51578  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
51579  __Pyx_INCREF(__pyx_t_2);
51580  __Pyx_INCREF(function);
51581  __Pyx_DECREF_SET(__pyx_t_8, function);
51582  }
51583  }
51584  __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
51585  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
51586  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51587  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2833, __pyx_L1_error)
51588  __Pyx_GOTREF(__pyx_t_4);
51589  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51590  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
51591  __pyx_t_8 = __pyx_t_4; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;
51592  __pyx_t_10 = NULL;
51593  } else {
51594  __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2833, __pyx_L1_error)
51595  __Pyx_GOTREF(__pyx_t_8);
51596  __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2833, __pyx_L1_error)
51597  }
51598  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
51599  for (;;) {
51600  if (likely(!__pyx_t_10)) {
51601  if (likely(PyList_CheckExact(__pyx_t_8))) {
51602  if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break;
51603  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
51604  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2833, __pyx_L1_error)
51605  #else
51606  __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2833, __pyx_L1_error)
51607  __Pyx_GOTREF(__pyx_t_4);
51608  #endif
51609  } else {
51610  if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
51611  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
51612  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2833, __pyx_L1_error)
51613  #else
51614  __pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2833, __pyx_L1_error)
51615  __Pyx_GOTREF(__pyx_t_4);
51616  #endif
51617  }
51618  } else {
51619  __pyx_t_4 = __pyx_t_10(__pyx_t_8);
51620  if (unlikely(!__pyx_t_4)) {
51621  PyObject* exc_type = PyErr_Occurred();
51622  if (exc_type) {
51623  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
51624  else __PYX_ERR(0, 2833, __pyx_L1_error)
51625  }
51626  break;
51627  }
51628  __Pyx_GOTREF(__pyx_t_4);
51629  }
51630  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_4);
51631  __pyx_t_4 = 0;
51632 
51633  /* "WaveTools.py":2834
51634  * self.sinhKd = np.zeros(self.N,"d")
51635  * for ii in range(self.N):
51636  * self.tanhKd[ii] = np.tanh(self.ki[ii]*self.depth) # <<<<<<<<<<<<<<
51637  * self.sinhKd[ii] = np.sinh(self.ki[ii]*self.depth)
51638  * self.waveDir = RW.waveDir
51639  */
51640  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2834, __pyx_L1_error)
51641  __Pyx_GOTREF(__pyx_t_7);
51642  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_tanh); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2834, __pyx_L1_error)
51643  __Pyx_GOTREF(__pyx_t_2);
51644  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51645  __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ii); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2834, __pyx_L1_error)
51646  __Pyx_GOTREF(__pyx_t_7);
51647  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2834, __pyx_L1_error)
51648  __Pyx_GOTREF(__pyx_t_3);
51649  __pyx_t_11 = PyNumber_Multiply(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2834, __pyx_L1_error)
51650  __Pyx_GOTREF(__pyx_t_11);
51651  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51652  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
51653  __pyx_t_3 = NULL;
51654  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
51655  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
51656  if (likely(__pyx_t_3)) {
51657  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
51658  __Pyx_INCREF(__pyx_t_3);
51659  __Pyx_INCREF(function);
51660  __Pyx_DECREF_SET(__pyx_t_2, function);
51661  }
51662  }
51663  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11);
51664  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
51665  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51666  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2834, __pyx_L1_error)
51667  __Pyx_GOTREF(__pyx_t_4);
51668  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51669  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->tanhKd), __pyx_v_ii, __pyx_t_4) < 0)) __PYX_ERR(0, 2834, __pyx_L1_error)
51670  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
51671 
51672  /* "WaveTools.py":2835
51673  * for ii in range(self.N):
51674  * self.tanhKd[ii] = np.tanh(self.ki[ii]*self.depth)
51675  * self.sinhKd[ii] = np.sinh(self.ki[ii]*self.depth) # <<<<<<<<<<<<<<
51676  * self.waveDir = RW.waveDir
51677  * # print("Test \n ai:"+str(RW.ai)+"\n ki \n"+str(RW.ki)+"\n phi \n "+str(RW.phi)+"\n om \n"+str(RW.omega))
51678  */
51679  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2835, __pyx_L1_error)
51680  __Pyx_GOTREF(__pyx_t_2);
51681  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sinh); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2835, __pyx_L1_error)
51682  __Pyx_GOTREF(__pyx_t_11);
51683  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51684  __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ii); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2835, __pyx_L1_error)
51685  __Pyx_GOTREF(__pyx_t_2);
51686  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2835, __pyx_L1_error)
51687  __Pyx_GOTREF(__pyx_t_3);
51688  __pyx_t_7 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2835, __pyx_L1_error)
51689  __Pyx_GOTREF(__pyx_t_7);
51690  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
51691  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
51692  __pyx_t_3 = NULL;
51693  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
51694  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
51695  if (likely(__pyx_t_3)) {
51696  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
51697  __Pyx_INCREF(__pyx_t_3);
51698  __Pyx_INCREF(function);
51699  __Pyx_DECREF_SET(__pyx_t_11, function);
51700  }
51701  }
51702  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7);
51703  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
51704  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51705  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2835, __pyx_L1_error)
51706  __Pyx_GOTREF(__pyx_t_4);
51707  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51708  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->sinhKd), __pyx_v_ii, __pyx_t_4) < 0)) __PYX_ERR(0, 2835, __pyx_L1_error)
51709  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
51710 
51711  /* "WaveTools.py":2836
51712  * self.tanhKd[ii] = np.tanh(self.ki[ii]*self.depth)
51713  * self.sinhKd[ii] = np.sinh(self.ki[ii]*self.depth)
51714  * self.waveDir = RW.waveDir # <<<<<<<<<<<<<<
51715  * # print("Test \n ai:"+str(RW.ai)+"\n ki \n"+str(RW.ki)+"\n phi \n "+str(RW.phi)+"\n om \n"+str(RW.omega))
51716  * # print("Test \n tanh:"+str(self.tanhKd)+"\n sinh \n"+str(self.sinhKd))
51717  */
51718  __pyx_t_4 = ((PyObject *)__pyx_v_RW->waveDir);
51719  __Pyx_INCREF(__pyx_t_4);
51720  __Pyx_GIVEREF(__pyx_t_4);
51721  __Pyx_GOTREF(__pyx_v_self->waveDir);
51722  __Pyx_DECREF(((PyObject *)__pyx_v_self->waveDir));
51723  __pyx_v_self->waveDir = ((PyArrayObject *)__pyx_t_4);
51724  __pyx_t_4 = 0;
51725 
51726  /* "WaveTools.py":2833
51727  * self.tanhKd = np.zeros(self.N,"d")
51728  * self.sinhKd = np.zeros(self.N,"d")
51729  * for ii in range(self.N): # <<<<<<<<<<<<<<
51730  * self.tanhKd[ii] = np.tanh(self.ki[ii]*self.depth)
51731  * self.sinhKd[ii] = np.sinh(self.ki[ii]*self.depth)
51732  */
51733  }
51734  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51735 
51736  /* "WaveTools.py":2839
51737  * # print("Test \n ai:"+str(RW.ai)+"\n ki \n"+str(RW.ki)+"\n phi \n "+str(RW.phi)+"\n om \n"+str(RW.omega))
51738  * # print("Test \n tanh:"+str(self.tanhKd)+"\n sinh \n"+str(self.sinhKd))
51739  * for ij in range(self.N): # <<<<<<<<<<<<<<
51740  * for kk in range(3):
51741  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
51742  */
51743  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2839, __pyx_L1_error)
51744  __Pyx_GOTREF(__pyx_t_4);
51745  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2839, __pyx_L1_error)
51746  __Pyx_GOTREF(__pyx_t_11);
51747  __pyx_t_7 = NULL;
51748  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
51749  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
51750  if (likely(__pyx_t_7)) {
51751  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
51752  __Pyx_INCREF(__pyx_t_7);
51753  __Pyx_INCREF(function);
51754  __Pyx_DECREF_SET(__pyx_t_4, function);
51755  }
51756  }
51757  __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11);
51758  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
51759  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51760  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2839, __pyx_L1_error)
51761  __Pyx_GOTREF(__pyx_t_8);
51762  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
51763  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
51764  __pyx_t_4 = __pyx_t_8; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
51765  __pyx_t_10 = NULL;
51766  } else {
51767  __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2839, __pyx_L1_error)
51768  __Pyx_GOTREF(__pyx_t_4);
51769  __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2839, __pyx_L1_error)
51770  }
51771  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51772  for (;;) {
51773  if (likely(!__pyx_t_10)) {
51774  if (likely(PyList_CheckExact(__pyx_t_4))) {
51775  if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
51776  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
51777  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2839, __pyx_L1_error)
51778  #else
51779  __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2839, __pyx_L1_error)
51780  __Pyx_GOTREF(__pyx_t_8);
51781  #endif
51782  } else {
51783  if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
51784  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
51785  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 2839, __pyx_L1_error)
51786  #else
51787  __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2839, __pyx_L1_error)
51788  __Pyx_GOTREF(__pyx_t_8);
51789  #endif
51790  }
51791  } else {
51792  __pyx_t_8 = __pyx_t_10(__pyx_t_4);
51793  if (unlikely(!__pyx_t_8)) {
51794  PyObject* exc_type = PyErr_Occurred();
51795  if (exc_type) {
51796  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
51797  else __PYX_ERR(0, 2839, __pyx_L1_error)
51798  }
51799  break;
51800  }
51801  __Pyx_GOTREF(__pyx_t_8);
51802  }
51803  __Pyx_XDECREF_SET(__pyx_v_ij, __pyx_t_8);
51804  __pyx_t_8 = 0;
51805 
51806  /* "WaveTools.py":2840
51807  * # print("Test \n tanh:"+str(self.tanhKd)+"\n sinh \n"+str(self.sinhKd))
51808  * for ij in range(self.N):
51809  * for kk in range(3): # <<<<<<<<<<<<<<
51810  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
51811  * self.omega_c[ij] = self.omega[ij]
51812  */
51813  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_range); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2840, __pyx_L1_error)
51814  __Pyx_GOTREF(__pyx_t_11);
51815  __pyx_t_7 = NULL;
51816  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
51817  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
51818  if (likely(__pyx_t_7)) {
51819  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
51820  __Pyx_INCREF(__pyx_t_7);
51821  __Pyx_INCREF(function);
51822  __Pyx_DECREF_SET(__pyx_t_11, function);
51823  }
51824  }
51825  __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_7, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_int_3);
51826  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
51827  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2840, __pyx_L1_error)
51828  __Pyx_GOTREF(__pyx_t_8);
51829  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51830  if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
51831  __pyx_t_11 = __pyx_t_8; __Pyx_INCREF(__pyx_t_11); __pyx_t_12 = 0;
51832  __pyx_t_13 = NULL;
51833  } else {
51834  __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2840, __pyx_L1_error)
51835  __Pyx_GOTREF(__pyx_t_11);
51836  __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2840, __pyx_L1_error)
51837  }
51838  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51839  for (;;) {
51840  if (likely(!__pyx_t_13)) {
51841  if (likely(PyList_CheckExact(__pyx_t_11))) {
51842  if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_11)) break;
51843  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
51844  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_8); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 2840, __pyx_L1_error)
51845  #else
51846  __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2840, __pyx_L1_error)
51847  __Pyx_GOTREF(__pyx_t_8);
51848  #endif
51849  } else {
51850  if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
51851  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
51852  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_8); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 2840, __pyx_L1_error)
51853  #else
51854  __pyx_t_8 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2840, __pyx_L1_error)
51855  __Pyx_GOTREF(__pyx_t_8);
51856  #endif
51857  }
51858  } else {
51859  __pyx_t_8 = __pyx_t_13(__pyx_t_11);
51860  if (unlikely(!__pyx_t_8)) {
51861  PyObject* exc_type = PyErr_Occurred();
51862  if (exc_type) {
51863  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
51864  else __PYX_ERR(0, 2840, __pyx_L1_error)
51865  }
51866  break;
51867  }
51868  __Pyx_GOTREF(__pyx_t_8);
51869  }
51870  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_8);
51871  __pyx_t_8 = 0;
51872 
51873  /* "WaveTools.py":2841
51874  * for ij in range(self.N):
51875  * for kk in range(3):
51876  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk] # <<<<<<<<<<<<<<
51877  * self.omega_c[ij] = self.omega[ij]
51878  * self.ki_c[ij] =self.ki[ij]
51879  */
51880  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2841, __pyx_L1_error)
51881  __Pyx_GOTREF(__pyx_t_8);
51882  __Pyx_INCREF(__pyx_v_ij);
51883  __Pyx_GIVEREF(__pyx_v_ij);
51884  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ij);
51885  __Pyx_INCREF(__pyx_v_kk);
51886  __Pyx_GIVEREF(__pyx_v_kk);
51887  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_kk);
51888  __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2841, __pyx_L1_error)
51889  __Pyx_GOTREF(__pyx_t_7);
51890  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51891  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2841, __pyx_L1_error)
51892  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51893  __pyx_t_7 = PyNumber_Multiply(__pyx_int_3, __pyx_v_ij); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2841, __pyx_L1_error)
51894  __Pyx_GOTREF(__pyx_t_7);
51895  __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_v_kk); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2841, __pyx_L1_error)
51896  __Pyx_GOTREF(__pyx_t_8);
51897  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
51898  __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2841, __pyx_L1_error)
51899  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
51900  (__pyx_v_self->kDir_c[__pyx_t_14]) = __pyx_t_6;
51901 
51902  /* "WaveTools.py":2840
51903  * # print("Test \n tanh:"+str(self.tanhKd)+"\n sinh \n"+str(self.sinhKd))
51904  * for ij in range(self.N):
51905  * for kk in range(3): # <<<<<<<<<<<<<<
51906  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
51907  * self.omega_c[ij] = self.omega[ij]
51908  */
51909  }
51910  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51911 
51912  /* "WaveTools.py":2842
51913  * for kk in range(3):
51914  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
51915  * self.omega_c[ij] = self.omega[ij] # <<<<<<<<<<<<<<
51916  * self.ki_c[ij] =self.ki[ij]
51917  * self.tanh_c[ij] = self.tanhKd[ij]
51918  */
51919  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omega), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2842, __pyx_L1_error)
51920  __Pyx_GOTREF(__pyx_t_11);
51921  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2842, __pyx_L1_error)
51922  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51923  __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2842, __pyx_L1_error)
51924  (__pyx_v_self->omega_c[__pyx_t_12]) = __pyx_t_6;
51925 
51926  /* "WaveTools.py":2843
51927  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
51928  * self.omega_c[ij] = self.omega[ij]
51929  * self.ki_c[ij] =self.ki[ij] # <<<<<<<<<<<<<<
51930  * self.tanh_c[ij] = self.tanhKd[ij]
51931  * self.sinh_c[ij] = self.sinhKd[ij]
51932  */
51933  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2843, __pyx_L1_error)
51934  __Pyx_GOTREF(__pyx_t_11);
51935  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2843, __pyx_L1_error)
51936  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51937  __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2843, __pyx_L1_error)
51938  (__pyx_v_self->ki_c[__pyx_t_12]) = __pyx_t_6;
51939 
51940  /* "WaveTools.py":2844
51941  * self.omega_c[ij] = self.omega[ij]
51942  * self.ki_c[ij] =self.ki[ij]
51943  * self.tanh_c[ij] = self.tanhKd[ij] # <<<<<<<<<<<<<<
51944  * self.sinh_c[ij] = self.sinhKd[ij]
51945  * self.ai_c[ij] = self.ai[ij]
51946  */
51947  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->tanhKd), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2844, __pyx_L1_error)
51948  __Pyx_GOTREF(__pyx_t_11);
51949  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2844, __pyx_L1_error)
51950  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51951  __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2844, __pyx_L1_error)
51952  (__pyx_v_self->tanh_c[__pyx_t_12]) = __pyx_t_6;
51953 
51954  /* "WaveTools.py":2845
51955  * self.ki_c[ij] =self.ki[ij]
51956  * self.tanh_c[ij] = self.tanhKd[ij]
51957  * self.sinh_c[ij] = self.sinhKd[ij] # <<<<<<<<<<<<<<
51958  * self.ai_c[ij] = self.ai[ij]
51959  * self.phi_c[ij] = self.phi[ij]
51960  */
51961  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->sinhKd), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2845, __pyx_L1_error)
51962  __Pyx_GOTREF(__pyx_t_11);
51963  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2845, __pyx_L1_error)
51964  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51965  __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2845, __pyx_L1_error)
51966  (__pyx_v_self->sinh_c[__pyx_t_12]) = __pyx_t_6;
51967 
51968  /* "WaveTools.py":2846
51969  * self.tanh_c[ij] = self.tanhKd[ij]
51970  * self.sinh_c[ij] = self.sinhKd[ij]
51971  * self.ai_c[ij] = self.ai[ij] # <<<<<<<<<<<<<<
51972  * self.phi_c[ij] = self.phi[ij]
51973  *
51974  */
51975  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ai), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2846, __pyx_L1_error)
51976  __Pyx_GOTREF(__pyx_t_11);
51977  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2846, __pyx_L1_error)
51978  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51979  __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2846, __pyx_L1_error)
51980  (__pyx_v_self->ai_c[__pyx_t_12]) = __pyx_t_6;
51981 
51982  /* "WaveTools.py":2847
51983  * self.sinh_c[ij] = self.sinhKd[ij]
51984  * self.ai_c[ij] = self.ai[ij]
51985  * self.phi_c[ij] = self.phi[ij] # <<<<<<<<<<<<<<
51986  *
51987  * self.kDir_ = self.kDir_c
51988  */
51989  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->phi), __pyx_v_ij); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2847, __pyx_L1_error)
51990  __Pyx_GOTREF(__pyx_t_11);
51991  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2847, __pyx_L1_error)
51992  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
51993  __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_ij); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2847, __pyx_L1_error)
51994  (__pyx_v_self->phi_c[__pyx_t_12]) = __pyx_t_6;
51995 
51996  /* "WaveTools.py":2839
51997  * # print("Test \n ai:"+str(RW.ai)+"\n ki \n"+str(RW.ki)+"\n phi \n "+str(RW.phi)+"\n om \n"+str(RW.omega))
51998  * # print("Test \n tanh:"+str(self.tanhKd)+"\n sinh \n"+str(self.sinhKd))
51999  * for ij in range(self.N): # <<<<<<<<<<<<<<
52000  * for kk in range(3):
52001  * self.kDir_c[3*ij+kk] = self.kDir[ij,kk]
52002  */
52003  }
52004  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
52005 
52006  /* "WaveTools.py":2849
52007  * self.phi_c[ij] = self.phi[ij]
52008  *
52009  * self.kDir_ = self.kDir_c # <<<<<<<<<<<<<<
52010  * self.omega_ = self.omega_c
52011  * self.ki_ =self.ki_c
52012  */
52013  __pyx_t_15 = __pyx_v_self->kDir_c;
52014  __pyx_v_self->kDir_ = __pyx_t_15;
52015 
52016  /* "WaveTools.py":2850
52017  *
52018  * self.kDir_ = self.kDir_c
52019  * self.omega_ = self.omega_c # <<<<<<<<<<<<<<
52020  * self.ki_ =self.ki_c
52021  * self.ai_ = self.ai_c
52022  */
52023  __pyx_t_15 = __pyx_v_self->omega_c;
52024  __pyx_v_self->omega_ = __pyx_t_15;
52025 
52026  /* "WaveTools.py":2851
52027  * self.kDir_ = self.kDir_c
52028  * self.omega_ = self.omega_c
52029  * self.ki_ =self.ki_c # <<<<<<<<<<<<<<
52030  * self.ai_ = self.ai_c
52031  * self.tanhKd_ = self.tanh_c
52032  */
52033  __pyx_t_15 = __pyx_v_self->ki_c;
52034  __pyx_v_self->ki_ = __pyx_t_15;
52035 
52036  /* "WaveTools.py":2852
52037  * self.omega_ = self.omega_c
52038  * self.ki_ =self.ki_c
52039  * self.ai_ = self.ai_c # <<<<<<<<<<<<<<
52040  * self.tanhKd_ = self.tanh_c
52041  * self.sinhKd_ = self.sinh_c
52042  */
52043  __pyx_t_15 = __pyx_v_self->ai_c;
52044  __pyx_v_self->ai_ = __pyx_t_15;
52045 
52046  /* "WaveTools.py":2853
52047  * self.ki_ =self.ki_c
52048  * self.ai_ = self.ai_c
52049  * self.tanhKd_ = self.tanh_c # <<<<<<<<<<<<<<
52050  * self.sinhKd_ = self.sinh_c
52051  * self.phi_ = self.phi_c
52052  */
52053  __pyx_t_15 = __pyx_v_self->tanh_c;
52054  __pyx_v_self->tanhKd_ = __pyx_t_15;
52055 
52056  /* "WaveTools.py":2854
52057  * self.ai_ = self.ai_c
52058  * self.tanhKd_ = self.tanh_c
52059  * self.sinhKd_ = self.sinh_c # <<<<<<<<<<<<<<
52060  * self.phi_ = self.phi_c
52061  *
52062  */
52063  __pyx_t_15 = __pyx_v_self->sinh_c;
52064  __pyx_v_self->sinhKd_ = __pyx_t_15;
52065 
52066  /* "WaveTools.py":2855
52067  * self.tanhKd_ = self.tanh_c
52068  * self.sinhKd_ = self.sinh_c
52069  * self.phi_ = self.phi_c # <<<<<<<<<<<<<<
52070  *
52071  * #c++ declarations
52072  */
52073  __pyx_t_15 = __pyx_v_self->phi_c;
52074  __pyx_v_self->phi_ = __pyx_t_15;
52075 
52076  /* "WaveTools.py":2801
52077  * Switch for enabling optimised functions
52078  * """
52079  * def __init__(self, # <<<<<<<<<<<<<<
52080  * Tstart,
52081  * Tend,
52082  */
52083 
52084  /* function exit code */
52085  __pyx_r = 0;
52086  goto __pyx_L0;
52087  __pyx_L1_error:;
52088  __Pyx_XDECREF(__pyx_t_2);
52089  __Pyx_XDECREF(__pyx_t_3);
52090  __Pyx_XDECREF(__pyx_t_4);
52091  __Pyx_XDECREF(__pyx_t_7);
52092  __Pyx_XDECREF(__pyx_t_8);
52093  __Pyx_XDECREF(__pyx_t_11);
52094  __Pyx_AddTraceback("WaveTools.RandomNLWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
52095  __pyx_r = -1;
52096  __pyx_L0:;
52097  __Pyx_XDECREF((PyObject *)__pyx_v_RW);
52098  __Pyx_XDECREF(__pyx_v_ii);
52099  __Pyx_XDECREF(__pyx_v_ij);
52100  __Pyx_XDECREF(__pyx_v_kk);
52101  __Pyx_RefNannyFinishContext();
52102  return __pyx_r;
52103 }
52104 
52105 /* "WaveTools.py":2859
52106  * #c++ declarations
52107  *
52108  * def _cpp_eta_2ndOrder(self,x,t): # <<<<<<<<<<<<<<
52109  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast)
52110  * def eta_2ndOrder(self,x,t):
52111  */
52112 
52113 static double __pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_2ndOrder(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
52114  double __pyx_r;
52115  __Pyx_RefNannyDeclarations
52116  __Pyx_RefNannySetupContext("_cpp_eta_2ndOrder", 0);
52117 
52118  /* "WaveTools.py":2860
52119  *
52120  * def _cpp_eta_2ndOrder(self,x,t):
52121  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast) # <<<<<<<<<<<<<<
52122  * def eta_2ndOrder(self,x,t):
52123  * """Calculates the free surface elevation for 2nd-order terms
52124  */
52125  __pyx_r = proteus::__cpp_eta2nd(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->N, __pyx_v_self->sinhKd_, __pyx_v_self->tanhKd_, __pyx_v_self->fast);
52126  goto __pyx_L0;
52127 
52128  /* "WaveTools.py":2859
52129  * #c++ declarations
52130  *
52131  * def _cpp_eta_2ndOrder(self,x,t): # <<<<<<<<<<<<<<
52132  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast)
52133  * def eta_2ndOrder(self,x,t):
52134  */
52135 
52136  /* function exit code */
52137  __pyx_L0:;
52138  __Pyx_RefNannyFinishContext();
52139  return __pyx_r;
52140 }
52141 
52142 /* "WaveTools.py":2861
52143  * def _cpp_eta_2ndOrder(self,x,t):
52144  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast)
52145  * def eta_2ndOrder(self,x,t): # <<<<<<<<<<<<<<
52146  * """Calculates the free surface elevation for 2nd-order terms
52147  *
52148  */
52149 
52150 /* Python wrapper */
52151 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_3eta_2ndOrder(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
52152 static char __pyx_doc_9WaveTools_13RandomNLWaves_2eta_2ndOrder[] = "Calculates the free surface elevation for 2nd-order terms\n\n Uses 2nd order random wave theory\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
52153 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_3eta_2ndOrder = {"eta_2ndOrder", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_3eta_2ndOrder, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_2eta_2ndOrder};
52154 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_3eta_2ndOrder(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
52155  PyObject *__pyx_v_x = 0;
52156  PyObject *__pyx_v_t = 0;
52157  int __pyx_lineno = 0;
52158  const char *__pyx_filename = NULL;
52159  int __pyx_clineno = 0;
52160  PyObject *__pyx_r = 0;
52161  __Pyx_RefNannyDeclarations
52162  __Pyx_RefNannySetupContext("eta_2ndOrder (wrapper)", 0);
52163  {
52164  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
52165  PyObject* values[2] = {0,0};
52166  if (unlikely(__pyx_kwds)) {
52167  Py_ssize_t kw_args;
52168  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
52169  switch (pos_args) {
52170  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52171  CYTHON_FALLTHROUGH;
52172  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52173  CYTHON_FALLTHROUGH;
52174  case 0: break;
52175  default: goto __pyx_L5_argtuple_error;
52176  }
52177  kw_args = PyDict_Size(__pyx_kwds);
52178  switch (pos_args) {
52179  case 0:
52180  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
52181  else goto __pyx_L5_argtuple_error;
52182  CYTHON_FALLTHROUGH;
52183  case 1:
52184  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
52185  else {
52186  __Pyx_RaiseArgtupleInvalid("eta_2ndOrder", 1, 2, 2, 1); __PYX_ERR(0, 2861, __pyx_L3_error)
52187  }
52188  }
52189  if (unlikely(kw_args > 0)) {
52190  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_2ndOrder") < 0)) __PYX_ERR(0, 2861, __pyx_L3_error)
52191  }
52192  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
52193  goto __pyx_L5_argtuple_error;
52194  } else {
52195  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52196  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52197  }
52198  __pyx_v_x = values[0];
52199  __pyx_v_t = values[1];
52200  }
52201  goto __pyx_L4_argument_unpacking_done;
52202  __pyx_L5_argtuple_error:;
52203  __Pyx_RaiseArgtupleInvalid("eta_2ndOrder", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2861, __pyx_L3_error)
52204  __pyx_L3_error:;
52205  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_2ndOrder", __pyx_clineno, __pyx_lineno, __pyx_filename);
52206  __Pyx_RefNannyFinishContext();
52207  return NULL;
52208  __pyx_L4_argument_unpacking_done:;
52209  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_2eta_2ndOrder(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
52210 
52211  /* function exit code */
52212  __Pyx_RefNannyFinishContext();
52213  return __pyx_r;
52214 }
52215 
52216 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_2eta_2ndOrder(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
52217  double __pyx_v_xx[3];
52218  PyObject *__pyx_r = NULL;
52219  __Pyx_RefNannyDeclarations
52220  PyObject *__pyx_t_1 = NULL;
52221  double __pyx_t_2;
52222  int __pyx_lineno = 0;
52223  const char *__pyx_filename = NULL;
52224  int __pyx_clineno = 0;
52225  __Pyx_RefNannySetupContext("eta_2ndOrder", 0);
52226 
52227  /* "WaveTools.py":2881
52228  *
52229  * cython.declare(xx=cython.double[3])
52230  * xx[0] = x[0] # <<<<<<<<<<<<<<
52231  * xx[1] = x[1]
52232  * xx[2] = x[2]
52233  */
52234  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2881, __pyx_L1_error)
52235  __Pyx_GOTREF(__pyx_t_1);
52236  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2881, __pyx_L1_error)
52237  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52238  (__pyx_v_xx[0]) = __pyx_t_2;
52239 
52240  /* "WaveTools.py":2882
52241  * cython.declare(xx=cython.double[3])
52242  * xx[0] = x[0]
52243  * xx[1] = x[1] # <<<<<<<<<<<<<<
52244  * xx[2] = x[2]
52245  * return self._cpp_eta_2ndOrder(xx,t)
52246  */
52247  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2882, __pyx_L1_error)
52248  __Pyx_GOTREF(__pyx_t_1);
52249  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2882, __pyx_L1_error)
52250  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52251  (__pyx_v_xx[1]) = __pyx_t_2;
52252 
52253  /* "WaveTools.py":2883
52254  * xx[0] = x[0]
52255  * xx[1] = x[1]
52256  * xx[2] = x[2] # <<<<<<<<<<<<<<
52257  * return self._cpp_eta_2ndOrder(xx,t)
52258  * '''
52259  */
52260  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2883, __pyx_L1_error)
52261  __Pyx_GOTREF(__pyx_t_1);
52262  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2883, __pyx_L1_error)
52263  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52264  (__pyx_v_xx[2]) = __pyx_t_2;
52265 
52266  /* "WaveTools.py":2884
52267  * xx[1] = x[1]
52268  * xx[2] = x[2]
52269  * return self._cpp_eta_2ndOrder(xx,t) # <<<<<<<<<<<<<<
52270  * '''
52271  * Eta2nd = 0.
52272  */
52273  __Pyx_XDECREF(__pyx_r);
52274  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2884, __pyx_L1_error)
52275  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta_2ndOrder(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2884, __pyx_L1_error)
52276  __Pyx_GOTREF(__pyx_t_1);
52277  __pyx_r = __pyx_t_1;
52278  __pyx_t_1 = 0;
52279  goto __pyx_L0;
52280 
52281  /* "WaveTools.py":2861
52282  * def _cpp_eta_2ndOrder(self,x,t):
52283  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast)
52284  * def eta_2ndOrder(self,x,t): # <<<<<<<<<<<<<<
52285  * """Calculates the free surface elevation for 2nd-order terms
52286  *
52287  */
52288 
52289  /* function exit code */
52290  __pyx_L1_error:;
52291  __Pyx_XDECREF(__pyx_t_1);
52292  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_2ndOrder", __pyx_clineno, __pyx_lineno, __pyx_filename);
52293  __pyx_r = NULL;
52294  __pyx_L0:;
52295  __Pyx_XGIVEREF(__pyx_r);
52296  __Pyx_RefNannyFinishContext();
52297  return __pyx_r;
52298 }
52299 
52300 /* "WaveTools.py":2894
52301  * '''
52302  *
52303  * def _cpp_eta_short(self,x,t): # <<<<<<<<<<<<<<
52304  * return __cpp_eta_short(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_,self.gAbs, self.fast)
52305  *
52306  */
52307 
52308 static double __pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_short(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
52309  double __pyx_r;
52310  __Pyx_RefNannyDeclarations
52311  __Pyx_RefNannySetupContext("_cpp_eta_short", 0);
52312 
52313  /* "WaveTools.py":2895
52314  *
52315  * def _cpp_eta_short(self,x,t):
52316  * return __cpp_eta_short(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_,self.gAbs, self.fast) # <<<<<<<<<<<<<<
52317  *
52318  *
52319  */
52320  __pyx_r = proteus::__cpp_eta_short(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->N, __pyx_v_self->sinhKd_, __pyx_v_self->tanhKd_, __pyx_v_self->gAbs, __pyx_v_self->fast);
52321  goto __pyx_L0;
52322 
52323  /* "WaveTools.py":2894
52324  * '''
52325  *
52326  * def _cpp_eta_short(self,x,t): # <<<<<<<<<<<<<<
52327  * return __cpp_eta_short(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_,self.gAbs, self.fast)
52328  *
52329  */
52330 
52331  /* function exit code */
52332  __pyx_L0:;
52333  __Pyx_RefNannyFinishContext();
52334  return __pyx_r;
52335 }
52336 
52337 /* "WaveTools.py":2899
52338  *
52339  * #higher harmonics
52340  * def eta_short(self,x,t): # <<<<<<<<<<<<<<
52341  * """Calculates the free surface elevation for higher-order terms
52342  *
52343  */
52344 
52345 /* Python wrapper */
52346 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_5eta_short(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
52347 static char __pyx_doc_9WaveTools_13RandomNLWaves_4eta_short[] = "Calculates the free surface elevation for higher-order terms\n\n Uses 2nd order random wave theory\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
52348 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_5eta_short = {"eta_short", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_5eta_short, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_4eta_short};
52349 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_5eta_short(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
52350  PyObject *__pyx_v_x = 0;
52351  PyObject *__pyx_v_t = 0;
52352  int __pyx_lineno = 0;
52353  const char *__pyx_filename = NULL;
52354  int __pyx_clineno = 0;
52355  PyObject *__pyx_r = 0;
52356  __Pyx_RefNannyDeclarations
52357  __Pyx_RefNannySetupContext("eta_short (wrapper)", 0);
52358  {
52359  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
52360  PyObject* values[2] = {0,0};
52361  if (unlikely(__pyx_kwds)) {
52362  Py_ssize_t kw_args;
52363  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
52364  switch (pos_args) {
52365  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52366  CYTHON_FALLTHROUGH;
52367  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52368  CYTHON_FALLTHROUGH;
52369  case 0: break;
52370  default: goto __pyx_L5_argtuple_error;
52371  }
52372  kw_args = PyDict_Size(__pyx_kwds);
52373  switch (pos_args) {
52374  case 0:
52375  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
52376  else goto __pyx_L5_argtuple_error;
52377  CYTHON_FALLTHROUGH;
52378  case 1:
52379  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
52380  else {
52381  __Pyx_RaiseArgtupleInvalid("eta_short", 1, 2, 2, 1); __PYX_ERR(0, 2899, __pyx_L3_error)
52382  }
52383  }
52384  if (unlikely(kw_args > 0)) {
52385  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_short") < 0)) __PYX_ERR(0, 2899, __pyx_L3_error)
52386  }
52387  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
52388  goto __pyx_L5_argtuple_error;
52389  } else {
52390  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52391  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52392  }
52393  __pyx_v_x = values[0];
52394  __pyx_v_t = values[1];
52395  }
52396  goto __pyx_L4_argument_unpacking_done;
52397  __pyx_L5_argtuple_error:;
52398  __Pyx_RaiseArgtupleInvalid("eta_short", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2899, __pyx_L3_error)
52399  __pyx_L3_error:;
52400  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_short", __pyx_clineno, __pyx_lineno, __pyx_filename);
52401  __Pyx_RefNannyFinishContext();
52402  return NULL;
52403  __pyx_L4_argument_unpacking_done:;
52404  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_4eta_short(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
52405 
52406  /* function exit code */
52407  __Pyx_RefNannyFinishContext();
52408  return __pyx_r;
52409 }
52410 
52411 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_4eta_short(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
52412  double __pyx_v_xx[3];
52413  PyObject *__pyx_r = NULL;
52414  __Pyx_RefNannyDeclarations
52415  PyObject *__pyx_t_1 = NULL;
52416  double __pyx_t_2;
52417  int __pyx_lineno = 0;
52418  const char *__pyx_filename = NULL;
52419  int __pyx_clineno = 0;
52420  __Pyx_RefNannySetupContext("eta_short", 0);
52421 
52422  /* "WaveTools.py":2918
52423  * """
52424  * cython.declare(xx=cython.double[3])
52425  * xx[0] = x[0] # <<<<<<<<<<<<<<
52426  * xx[1] = x[1]
52427  * xx[2] = x[2]
52428  */
52429  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2918, __pyx_L1_error)
52430  __Pyx_GOTREF(__pyx_t_1);
52431  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2918, __pyx_L1_error)
52432  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52433  (__pyx_v_xx[0]) = __pyx_t_2;
52434 
52435  /* "WaveTools.py":2919
52436  * cython.declare(xx=cython.double[3])
52437  * xx[0] = x[0]
52438  * xx[1] = x[1] # <<<<<<<<<<<<<<
52439  * xx[2] = x[2]
52440  * return self._cpp_eta_short(xx,t)
52441  */
52442  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2919, __pyx_L1_error)
52443  __Pyx_GOTREF(__pyx_t_1);
52444  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2919, __pyx_L1_error)
52445  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52446  (__pyx_v_xx[1]) = __pyx_t_2;
52447 
52448  /* "WaveTools.py":2920
52449  * xx[0] = x[0]
52450  * xx[1] = x[1]
52451  * xx[2] = x[2] # <<<<<<<<<<<<<<
52452  * return self._cpp_eta_short(xx,t)
52453  * '''
52454  */
52455  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2920, __pyx_L1_error)
52456  __Pyx_GOTREF(__pyx_t_1);
52457  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2920, __pyx_L1_error)
52458  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52459  (__pyx_v_xx[2]) = __pyx_t_2;
52460 
52461  /* "WaveTools.py":2921
52462  * xx[1] = x[1]
52463  * xx[2] = x[2]
52464  * return self._cpp_eta_short(xx,t) # <<<<<<<<<<<<<<
52465  * '''
52466  * Etashort = 0.
52467  */
52468  __Pyx_XDECREF(__pyx_r);
52469  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2921, __pyx_L1_error)
52470  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta_short(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2921, __pyx_L1_error)
52471  __Pyx_GOTREF(__pyx_t_1);
52472  __pyx_r = __pyx_t_1;
52473  __pyx_t_1 = 0;
52474  goto __pyx_L0;
52475 
52476  /* "WaveTools.py":2899
52477  *
52478  * #higher harmonics
52479  * def eta_short(self,x,t): # <<<<<<<<<<<<<<
52480  * """Calculates the free surface elevation for higher-order terms
52481  *
52482  */
52483 
52484  /* function exit code */
52485  __pyx_L1_error:;
52486  __Pyx_XDECREF(__pyx_t_1);
52487  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_short", __pyx_clineno, __pyx_lineno, __pyx_filename);
52488  __pyx_r = NULL;
52489  __pyx_L0:;
52490  __Pyx_XGIVEREF(__pyx_r);
52491  __Pyx_RefNannyFinishContext();
52492  return __pyx_r;
52493 }
52494 
52495 /* "WaveTools.py":2936
52496  * '''
52497  *
52498  * def _cpp_eta_long(self,x,t): # <<<<<<<<<<<<<<
52499  * return __cpp_eta_long(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_,self.gAbs, self.fast)
52500  *
52501  */
52502 
52503 static double __pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_long(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, double *__pyx_v_x, double __pyx_v_t) {
52504  double __pyx_r;
52505  __Pyx_RefNannyDeclarations
52506  __Pyx_RefNannySetupContext("_cpp_eta_long", 0);
52507 
52508  /* "WaveTools.py":2937
52509  *
52510  * def _cpp_eta_long(self,x,t):
52511  * return __cpp_eta_long(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_,self.gAbs, self.fast) # <<<<<<<<<<<<<<
52512  *
52513  * #lower harmonics
52514  */
52515  __pyx_r = proteus::__cpp_eta_long(__pyx_v_x, __pyx_v_t, __pyx_v_self->kDir_, __pyx_v_self->ki_, __pyx_v_self->omega_, __pyx_v_self->phi_, __pyx_v_self->ai_, __pyx_v_self->N, __pyx_v_self->sinhKd_, __pyx_v_self->tanhKd_, __pyx_v_self->gAbs, __pyx_v_self->fast);
52516  goto __pyx_L0;
52517 
52518  /* "WaveTools.py":2936
52519  * '''
52520  *
52521  * def _cpp_eta_long(self,x,t): # <<<<<<<<<<<<<<
52522  * return __cpp_eta_long(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_,self.gAbs, self.fast)
52523  *
52524  */
52525 
52526  /* function exit code */
52527  __pyx_L0:;
52528  __Pyx_RefNannyFinishContext();
52529  return __pyx_r;
52530 }
52531 
52532 /* "WaveTools.py":2940
52533  *
52534  * #lower harmonics
52535  * def eta_long(self,x,t): # <<<<<<<<<<<<<<
52536  * """Calculates the free surface elevation for lower-order terms
52537  *
52538  */
52539 
52540 /* Python wrapper */
52541 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_7eta_long(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
52542 static char __pyx_doc_9WaveTools_13RandomNLWaves_6eta_long[] = "Calculates the free surface elevation for lower-order terms\n\n Uses 2nd order random wave theory\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
52543 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_7eta_long = {"eta_long", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_7eta_long, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_6eta_long};
52544 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_7eta_long(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
52545  PyObject *__pyx_v_x = 0;
52546  PyObject *__pyx_v_t = 0;
52547  int __pyx_lineno = 0;
52548  const char *__pyx_filename = NULL;
52549  int __pyx_clineno = 0;
52550  PyObject *__pyx_r = 0;
52551  __Pyx_RefNannyDeclarations
52552  __Pyx_RefNannySetupContext("eta_long (wrapper)", 0);
52553  {
52554  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
52555  PyObject* values[2] = {0,0};
52556  if (unlikely(__pyx_kwds)) {
52557  Py_ssize_t kw_args;
52558  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
52559  switch (pos_args) {
52560  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52561  CYTHON_FALLTHROUGH;
52562  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52563  CYTHON_FALLTHROUGH;
52564  case 0: break;
52565  default: goto __pyx_L5_argtuple_error;
52566  }
52567  kw_args = PyDict_Size(__pyx_kwds);
52568  switch (pos_args) {
52569  case 0:
52570  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
52571  else goto __pyx_L5_argtuple_error;
52572  CYTHON_FALLTHROUGH;
52573  case 1:
52574  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
52575  else {
52576  __Pyx_RaiseArgtupleInvalid("eta_long", 1, 2, 2, 1); __PYX_ERR(0, 2940, __pyx_L3_error)
52577  }
52578  }
52579  if (unlikely(kw_args > 0)) {
52580  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_long") < 0)) __PYX_ERR(0, 2940, __pyx_L3_error)
52581  }
52582  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
52583  goto __pyx_L5_argtuple_error;
52584  } else {
52585  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52586  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52587  }
52588  __pyx_v_x = values[0];
52589  __pyx_v_t = values[1];
52590  }
52591  goto __pyx_L4_argument_unpacking_done;
52592  __pyx_L5_argtuple_error:;
52593  __Pyx_RaiseArgtupleInvalid("eta_long", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2940, __pyx_L3_error)
52594  __pyx_L3_error:;
52595  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
52596  __Pyx_RefNannyFinishContext();
52597  return NULL;
52598  __pyx_L4_argument_unpacking_done:;
52599  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_6eta_long(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
52600 
52601  /* function exit code */
52602  __Pyx_RefNannyFinishContext();
52603  return __pyx_r;
52604 }
52605 
52606 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_6eta_long(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
52607  double __pyx_v_xx[3];
52608  PyObject *__pyx_r = NULL;
52609  __Pyx_RefNannyDeclarations
52610  PyObject *__pyx_t_1 = NULL;
52611  double __pyx_t_2;
52612  int __pyx_lineno = 0;
52613  const char *__pyx_filename = NULL;
52614  int __pyx_clineno = 0;
52615  __Pyx_RefNannySetupContext("eta_long", 0);
52616 
52617  /* "WaveTools.py":2960
52618  *
52619  * cython.declare(xx=cython.double[3])
52620  * xx[0] = x[0] # <<<<<<<<<<<<<<
52621  * xx[1] = x[1]
52622  * xx[2] = x[2]
52623  */
52624  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2960, __pyx_L1_error)
52625  __Pyx_GOTREF(__pyx_t_1);
52626  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2960, __pyx_L1_error)
52627  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52628  (__pyx_v_xx[0]) = __pyx_t_2;
52629 
52630  /* "WaveTools.py":2961
52631  * cython.declare(xx=cython.double[3])
52632  * xx[0] = x[0]
52633  * xx[1] = x[1] # <<<<<<<<<<<<<<
52634  * xx[2] = x[2]
52635  * return self._cpp_eta_long(xx,t)
52636  */
52637  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2961, __pyx_L1_error)
52638  __Pyx_GOTREF(__pyx_t_1);
52639  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2961, __pyx_L1_error)
52640  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52641  (__pyx_v_xx[1]) = __pyx_t_2;
52642 
52643  /* "WaveTools.py":2962
52644  * xx[0] = x[0]
52645  * xx[1] = x[1]
52646  * xx[2] = x[2] # <<<<<<<<<<<<<<
52647  * return self._cpp_eta_long(xx,t)
52648  *
52649  */
52650  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2962, __pyx_L1_error)
52651  __Pyx_GOTREF(__pyx_t_1);
52652  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2962, __pyx_L1_error)
52653  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52654  (__pyx_v_xx[2]) = __pyx_t_2;
52655 
52656  /* "WaveTools.py":2963
52657  * xx[1] = x[1]
52658  * xx[2] = x[2]
52659  * return self._cpp_eta_long(xx,t) # <<<<<<<<<<<<<<
52660  *
52661  *
52662  */
52663  __Pyx_XDECREF(__pyx_r);
52664  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2963, __pyx_L1_error)
52665  __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta_long(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2963, __pyx_L1_error)
52666  __Pyx_GOTREF(__pyx_t_1);
52667  __pyx_r = __pyx_t_1;
52668  __pyx_t_1 = 0;
52669  goto __pyx_L0;
52670 
52671  /* "WaveTools.py":2940
52672  *
52673  * #lower harmonics
52674  * def eta_long(self,x,t): # <<<<<<<<<<<<<<
52675  * """Calculates the free surface elevation for lower-order terms
52676  *
52677  */
52678 
52679  /* function exit code */
52680  __pyx_L1_error:;
52681  __Pyx_XDECREF(__pyx_t_1);
52682  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
52683  __pyx_r = NULL;
52684  __pyx_L0:;
52685  __Pyx_XGIVEREF(__pyx_r);
52686  __Pyx_RefNannyFinishContext();
52687  return __pyx_r;
52688 }
52689 
52690 /* "WaveTools.py":2979
52691  *
52692  * #set-up calculation
52693  * def eta_setUp(self,x,t): # <<<<<<<<<<<<<<
52694  * """Calculates the free surface elevation set up
52695  *
52696  */
52697 
52698 /* Python wrapper */
52699 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_9eta_setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
52700 static char __pyx_doc_9WaveTools_13RandomNLWaves_8eta_setUp[] = "Calculates the free surface elevation set up\n\n Uses 2nd order random wave theory\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
52701 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_9eta_setUp = {"eta_setUp", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_9eta_setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_8eta_setUp};
52702 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_9eta_setUp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
52703  CYTHON_UNUSED PyObject *__pyx_v_x = 0;
52704  CYTHON_UNUSED PyObject *__pyx_v_t = 0;
52705  int __pyx_lineno = 0;
52706  const char *__pyx_filename = NULL;
52707  int __pyx_clineno = 0;
52708  PyObject *__pyx_r = 0;
52709  __Pyx_RefNannyDeclarations
52710  __Pyx_RefNannySetupContext("eta_setUp (wrapper)", 0);
52711  {
52712  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
52713  PyObject* values[2] = {0,0};
52714  if (unlikely(__pyx_kwds)) {
52715  Py_ssize_t kw_args;
52716  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
52717  switch (pos_args) {
52718  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52719  CYTHON_FALLTHROUGH;
52720  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52721  CYTHON_FALLTHROUGH;
52722  case 0: break;
52723  default: goto __pyx_L5_argtuple_error;
52724  }
52725  kw_args = PyDict_Size(__pyx_kwds);
52726  switch (pos_args) {
52727  case 0:
52728  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
52729  else goto __pyx_L5_argtuple_error;
52730  CYTHON_FALLTHROUGH;
52731  case 1:
52732  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
52733  else {
52734  __Pyx_RaiseArgtupleInvalid("eta_setUp", 1, 2, 2, 1); __PYX_ERR(0, 2979, __pyx_L3_error)
52735  }
52736  }
52737  if (unlikely(kw_args > 0)) {
52738  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_setUp") < 0)) __PYX_ERR(0, 2979, __pyx_L3_error)
52739  }
52740  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
52741  goto __pyx_L5_argtuple_error;
52742  } else {
52743  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
52744  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
52745  }
52746  __pyx_v_x = values[0];
52747  __pyx_v_t = values[1];
52748  }
52749  goto __pyx_L4_argument_unpacking_done;
52750  __pyx_L5_argtuple_error:;
52751  __Pyx_RaiseArgtupleInvalid("eta_setUp", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2979, __pyx_L3_error)
52752  __pyx_L3_error:;
52753  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_setUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
52754  __Pyx_RefNannyFinishContext();
52755  return NULL;
52756  __pyx_L4_argument_unpacking_done:;
52757  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_8eta_setUp(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
52758 
52759  /* function exit code */
52760  __Pyx_RefNannyFinishContext();
52761  return __pyx_r;
52762 }
52763 
52764 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_8eta_setUp(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, CYTHON_UNUSED PyObject *__pyx_v_t) {
52765  PyObject *__pyx_v_EtasetUp = NULL;
52766  PyObject *__pyx_v_i = NULL;
52767  PyObject *__pyx_v_wwi_setUp = NULL;
52768  PyObject *__pyx_r = NULL;
52769  __Pyx_RefNannyDeclarations
52770  PyObject *__pyx_t_1 = NULL;
52771  PyObject *__pyx_t_2 = NULL;
52772  PyObject *__pyx_t_3 = NULL;
52773  PyObject *__pyx_t_4 = NULL;
52774  int __pyx_t_5;
52775  PyObject *__pyx_t_6 = NULL;
52776  Py_ssize_t __pyx_t_7;
52777  PyObject *(*__pyx_t_8)(PyObject *);
52778  PyObject *__pyx_t_9 = NULL;
52779  PyObject *__pyx_t_10 = NULL;
52780  double __pyx_t_11;
52781  int __pyx_lineno = 0;
52782  const char *__pyx_filename = NULL;
52783  int __pyx_clineno = 0;
52784  __Pyx_RefNannySetupContext("eta_setUp", 0);
52785 
52786  /* "WaveTools.py":2999
52787  *
52788  *
52789  * EtasetUp = 0. # <<<<<<<<<<<<<<
52790  * for i in range(0,self.N):
52791  * wwi_setUp = old_div((self.ai[i]**2*self.ki[i]),(2*sinh(2*self.ki[i]*self.depth)))
52792  */
52793  __Pyx_INCREF(__pyx_float_0_);
52794  __pyx_v_EtasetUp = __pyx_float_0_;
52795 
52796  /* "WaveTools.py":3000
52797  *
52798  * EtasetUp = 0.
52799  * for i in range(0,self.N): # <<<<<<<<<<<<<<
52800  * wwi_setUp = old_div((self.ai[i]**2*self.ki[i]),(2*sinh(2*self.ki[i]*self.depth)))
52801  * EtasetUp += wwi_setUp
52802  */
52803  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3000, __pyx_L1_error)
52804  __Pyx_GOTREF(__pyx_t_2);
52805  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3000, __pyx_L1_error)
52806  __Pyx_GOTREF(__pyx_t_3);
52807  __pyx_t_4 = NULL;
52808  __pyx_t_5 = 0;
52809  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
52810  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
52811  if (likely(__pyx_t_4)) {
52812  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
52813  __Pyx_INCREF(__pyx_t_4);
52814  __Pyx_INCREF(function);
52815  __Pyx_DECREF_SET(__pyx_t_2, function);
52816  __pyx_t_5 = 1;
52817  }
52818  }
52819  #if CYTHON_FAST_PYCALL
52820  if (PyFunction_Check(__pyx_t_2)) {
52821  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_int_0, __pyx_t_3};
52822  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
52823  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
52824  __Pyx_GOTREF(__pyx_t_1);
52825  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
52826  } else
52827  #endif
52828  #if CYTHON_FAST_PYCCALL
52829  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
52830  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_int_0, __pyx_t_3};
52831  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
52832  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
52833  __Pyx_GOTREF(__pyx_t_1);
52834  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
52835  } else
52836  #endif
52837  {
52838  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3000, __pyx_L1_error)
52839  __Pyx_GOTREF(__pyx_t_6);
52840  if (__pyx_t_4) {
52841  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
52842  }
52843  __Pyx_INCREF(__pyx_int_0);
52844  __Pyx_GIVEREF(__pyx_int_0);
52845  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_int_0);
52846  __Pyx_GIVEREF(__pyx_t_3);
52847  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
52848  __pyx_t_3 = 0;
52849  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
52850  __Pyx_GOTREF(__pyx_t_1);
52851  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
52852  }
52853  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
52854  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
52855  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
52856  __pyx_t_8 = NULL;
52857  } else {
52858  __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3000, __pyx_L1_error)
52859  __Pyx_GOTREF(__pyx_t_2);
52860  __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3000, __pyx_L1_error)
52861  }
52862  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
52863  for (;;) {
52864  if (likely(!__pyx_t_8)) {
52865  if (likely(PyList_CheckExact(__pyx_t_2))) {
52866  if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
52867  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
52868  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3000, __pyx_L1_error)
52869  #else
52870  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
52871  __Pyx_GOTREF(__pyx_t_1);
52872  #endif
52873  } else {
52874  if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
52875  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
52876  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3000, __pyx_L1_error)
52877  #else
52878  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
52879  __Pyx_GOTREF(__pyx_t_1);
52880  #endif
52881  }
52882  } else {
52883  __pyx_t_1 = __pyx_t_8(__pyx_t_2);
52884  if (unlikely(!__pyx_t_1)) {
52885  PyObject* exc_type = PyErr_Occurred();
52886  if (exc_type) {
52887  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
52888  else __PYX_ERR(0, 3000, __pyx_L1_error)
52889  }
52890  break;
52891  }
52892  __Pyx_GOTREF(__pyx_t_1);
52893  }
52894  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
52895  __pyx_t_1 = 0;
52896 
52897  /* "WaveTools.py":3001
52898  * EtasetUp = 0.
52899  * for i in range(0,self.N):
52900  * wwi_setUp = old_div((self.ai[i]**2*self.ki[i]),(2*sinh(2*self.ki[i]*self.depth))) # <<<<<<<<<<<<<<
52901  * EtasetUp += wwi_setUp
52902  * return EtasetUp
52903  */
52904  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_old_div); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3001, __pyx_L1_error)
52905  __Pyx_GOTREF(__pyx_t_6);
52906  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ai), __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
52907  __Pyx_GOTREF(__pyx_t_3);
52908  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3001, __pyx_L1_error)
52909  __Pyx_GOTREF(__pyx_t_4);
52910  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
52911  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
52912  __Pyx_GOTREF(__pyx_t_3);
52913  __pyx_t_9 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3001, __pyx_L1_error)
52914  __Pyx_GOTREF(__pyx_t_9);
52915  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
52916  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
52917  __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->ki), __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
52918  __Pyx_GOTREF(__pyx_t_3);
52919  __pyx_t_4 = PyNumber_Multiply(__pyx_int_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3001, __pyx_L1_error)
52920  __Pyx_GOTREF(__pyx_t_4);
52921  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
52922  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->depth); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
52923  __Pyx_GOTREF(__pyx_t_3);
52924  __pyx_t_10 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3001, __pyx_L1_error)
52925  __Pyx_GOTREF(__pyx_t_10);
52926  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
52927  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
52928  __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3001, __pyx_L1_error)
52929  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
52930  __pyx_t_10 = PyFloat_FromDouble((2.0 * sinh(__pyx_t_11))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3001, __pyx_L1_error)
52931  __Pyx_GOTREF(__pyx_t_10);
52932  __pyx_t_3 = NULL;
52933  __pyx_t_5 = 0;
52934  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
52935  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
52936  if (likely(__pyx_t_3)) {
52937  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
52938  __Pyx_INCREF(__pyx_t_3);
52939  __Pyx_INCREF(function);
52940  __Pyx_DECREF_SET(__pyx_t_6, function);
52941  __pyx_t_5 = 1;
52942  }
52943  }
52944  #if CYTHON_FAST_PYCALL
52945  if (PyFunction_Check(__pyx_t_6)) {
52946  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_9, __pyx_t_10};
52947  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3001, __pyx_L1_error)
52948  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
52949  __Pyx_GOTREF(__pyx_t_1);
52950  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
52951  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
52952  } else
52953  #endif
52954  #if CYTHON_FAST_PYCCALL
52955  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
52956  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_9, __pyx_t_10};
52957  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3001, __pyx_L1_error)
52958  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
52959  __Pyx_GOTREF(__pyx_t_1);
52960  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
52961  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
52962  } else
52963  #endif
52964  {
52965  __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3001, __pyx_L1_error)
52966  __Pyx_GOTREF(__pyx_t_4);
52967  if (__pyx_t_3) {
52968  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
52969  }
52970  __Pyx_GIVEREF(__pyx_t_9);
52971  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_t_9);
52972  __Pyx_GIVEREF(__pyx_t_10);
52973  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_t_10);
52974  __pyx_t_9 = 0;
52975  __pyx_t_10 = 0;
52976  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3001, __pyx_L1_error)
52977  __Pyx_GOTREF(__pyx_t_1);
52978  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
52979  }
52980  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
52981  __Pyx_XDECREF_SET(__pyx_v_wwi_setUp, __pyx_t_1);
52982  __pyx_t_1 = 0;
52983 
52984  /* "WaveTools.py":3002
52985  * for i in range(0,self.N):
52986  * wwi_setUp = old_div((self.ai[i]**2*self.ki[i]),(2*sinh(2*self.ki[i]*self.depth)))
52987  * EtasetUp += wwi_setUp # <<<<<<<<<<<<<<
52988  * return EtasetUp
52989  *
52990  */
52991  __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_EtasetUp, __pyx_v_wwi_setUp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3002, __pyx_L1_error)
52992  __Pyx_GOTREF(__pyx_t_1);
52993  __Pyx_DECREF_SET(__pyx_v_EtasetUp, __pyx_t_1);
52994  __pyx_t_1 = 0;
52995 
52996  /* "WaveTools.py":3000
52997  *
52998  * EtasetUp = 0.
52999  * for i in range(0,self.N): # <<<<<<<<<<<<<<
53000  * wwi_setUp = old_div((self.ai[i]**2*self.ki[i]),(2*sinh(2*self.ki[i]*self.depth)))
53001  * EtasetUp += wwi_setUp
53002  */
53003  }
53004  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53005 
53006  /* "WaveTools.py":3003
53007  * wwi_setUp = old_div((self.ai[i]**2*self.ki[i]),(2*sinh(2*self.ki[i]*self.depth)))
53008  * EtasetUp += wwi_setUp
53009  * return EtasetUp # <<<<<<<<<<<<<<
53010  *
53011  *
53012  */
53013  __Pyx_XDECREF(__pyx_r);
53014  __Pyx_INCREF(__pyx_v_EtasetUp);
53015  __pyx_r = __pyx_v_EtasetUp;
53016  goto __pyx_L0;
53017 
53018  /* "WaveTools.py":2979
53019  *
53020  * #set-up calculation
53021  * def eta_setUp(self,x,t): # <<<<<<<<<<<<<<
53022  * """Calculates the free surface elevation set up
53023  *
53024  */
53025 
53026  /* function exit code */
53027  __pyx_L1_error:;
53028  __Pyx_XDECREF(__pyx_t_1);
53029  __Pyx_XDECREF(__pyx_t_2);
53030  __Pyx_XDECREF(__pyx_t_3);
53031  __Pyx_XDECREF(__pyx_t_4);
53032  __Pyx_XDECREF(__pyx_t_6);
53033  __Pyx_XDECREF(__pyx_t_9);
53034  __Pyx_XDECREF(__pyx_t_10);
53035  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_setUp", __pyx_clineno, __pyx_lineno, __pyx_filename);
53036  __pyx_r = NULL;
53037  __pyx_L0:;
53038  __Pyx_XDECREF(__pyx_v_EtasetUp);
53039  __Pyx_XDECREF(__pyx_v_i);
53040  __Pyx_XDECREF(__pyx_v_wwi_setUp);
53041  __Pyx_XGIVEREF(__pyx_r);
53042  __Pyx_RefNannyFinishContext();
53043  return __pyx_r;
53044 }
53045 
53046 /* "WaveTools.py":3008
53047  *
53048  * #overall free surface elevation
53049  * def eta_overall(self,x,t,setUp=False): # <<<<<<<<<<<<<<
53050  * """Calculates the free surface elevation with 2nd order corrections
53051  *
53052  */
53053 
53054 /* Python wrapper */
53055 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_11eta_overall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
53056 static char __pyx_doc_9WaveTools_13RandomNLWaves_10eta_overall[] = "Calculates the free surface elevation with 2nd order corrections\n\n Uses 2nd order random wave theory\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
53057 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_11eta_overall = {"eta_overall", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_11eta_overall, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_10eta_overall};
53058 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_11eta_overall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
53059  PyObject *__pyx_v_x = 0;
53060  PyObject *__pyx_v_t = 0;
53061  PyObject *__pyx_v_setUp = 0;
53062  int __pyx_lineno = 0;
53063  const char *__pyx_filename = NULL;
53064  int __pyx_clineno = 0;
53065  PyObject *__pyx_r = 0;
53066  __Pyx_RefNannyDeclarations
53067  __Pyx_RefNannySetupContext("eta_overall (wrapper)", 0);
53068  {
53069  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_setUp,0};
53070  PyObject* values[3] = {0,0,0};
53071  values[2] = ((PyObject *)Py_False);
53072  if (unlikely(__pyx_kwds)) {
53073  Py_ssize_t kw_args;
53074  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
53075  switch (pos_args) {
53076  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
53077  CYTHON_FALLTHROUGH;
53078  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
53079  CYTHON_FALLTHROUGH;
53080  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
53081  CYTHON_FALLTHROUGH;
53082  case 0: break;
53083  default: goto __pyx_L5_argtuple_error;
53084  }
53085  kw_args = PyDict_Size(__pyx_kwds);
53086  switch (pos_args) {
53087  case 0:
53088  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
53089  else goto __pyx_L5_argtuple_error;
53090  CYTHON_FALLTHROUGH;
53091  case 1:
53092  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
53093  else {
53094  __Pyx_RaiseArgtupleInvalid("eta_overall", 0, 2, 3, 1); __PYX_ERR(0, 3008, __pyx_L3_error)
53095  }
53096  CYTHON_FALLTHROUGH;
53097  case 2:
53098  if (kw_args > 0) {
53099  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_setUp);
53100  if (value) { values[2] = value; kw_args--; }
53101  }
53102  }
53103  if (unlikely(kw_args > 0)) {
53104  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_overall") < 0)) __PYX_ERR(0, 3008, __pyx_L3_error)
53105  }
53106  } else {
53107  switch (PyTuple_GET_SIZE(__pyx_args)) {
53108  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
53109  CYTHON_FALLTHROUGH;
53110  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
53111  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
53112  break;
53113  default: goto __pyx_L5_argtuple_error;
53114  }
53115  }
53116  __pyx_v_x = values[0];
53117  __pyx_v_t = values[1];
53118  __pyx_v_setUp = values[2];
53119  }
53120  goto __pyx_L4_argument_unpacking_done;
53121  __pyx_L5_argtuple_error:;
53122  __Pyx_RaiseArgtupleInvalid("eta_overall", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3008, __pyx_L3_error)
53123  __pyx_L3_error:;
53124  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_overall", __pyx_clineno, __pyx_lineno, __pyx_filename);
53125  __Pyx_RefNannyFinishContext();
53126  return NULL;
53127  __pyx_L4_argument_unpacking_done:;
53128  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_10eta_overall(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t, __pyx_v_setUp);
53129 
53130  /* function exit code */
53131  __Pyx_RefNannyFinishContext();
53132  return __pyx_r;
53133 }
53134 
53135 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_10eta_overall(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_setUp) {
53136  double __pyx_v_xx[3];
53137  PyObject *__pyx_v_Etaoverall = NULL;
53138  PyObject *__pyx_r = NULL;
53139  __Pyx_RefNannyDeclarations
53140  PyObject *__pyx_t_1 = NULL;
53141  double __pyx_t_2;
53142  PyObject *__pyx_t_3 = NULL;
53143  PyObject *__pyx_t_4 = NULL;
53144  int __pyx_t_5;
53145  PyObject *__pyx_t_6 = NULL;
53146  int __pyx_t_7;
53147  PyObject *__pyx_t_8 = NULL;
53148  int __pyx_lineno = 0;
53149  const char *__pyx_filename = NULL;
53150  int __pyx_clineno = 0;
53151  __Pyx_RefNannySetupContext("eta_overall", 0);
53152 
53153  /* "WaveTools.py":3027
53154  * """
53155  * cython.declare(xx=cython.double[3])
53156  * xx[0] = x[0] # <<<<<<<<<<<<<<
53157  * xx[1] = x[1]
53158  * xx[2] = x[2]
53159  */
53160  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3027, __pyx_L1_error)
53161  __Pyx_GOTREF(__pyx_t_1);
53162  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3027, __pyx_L1_error)
53163  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53164  (__pyx_v_xx[0]) = __pyx_t_2;
53165 
53166  /* "WaveTools.py":3028
53167  * cython.declare(xx=cython.double[3])
53168  * xx[0] = x[0]
53169  * xx[1] = x[1] # <<<<<<<<<<<<<<
53170  * xx[2] = x[2]
53171  * Etaoverall = self.eta_linear(x,t) + self._cpp_eta_2ndOrder(xx,t) + self._cpp_eta_short(xx,t) + self._cpp_eta_long(xx,t)
53172  */
53173  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3028, __pyx_L1_error)
53174  __Pyx_GOTREF(__pyx_t_1);
53175  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3028, __pyx_L1_error)
53176  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53177  (__pyx_v_xx[1]) = __pyx_t_2;
53178 
53179  /* "WaveTools.py":3029
53180  * xx[0] = x[0]
53181  * xx[1] = x[1]
53182  * xx[2] = x[2] # <<<<<<<<<<<<<<
53183  * Etaoverall = self.eta_linear(x,t) + self._cpp_eta_2ndOrder(xx,t) + self._cpp_eta_short(xx,t) + self._cpp_eta_long(xx,t)
53184  * if setUp:
53185  */
53186  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3029, __pyx_L1_error)
53187  __Pyx_GOTREF(__pyx_t_1);
53188  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3029, __pyx_L1_error)
53189  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53190  (__pyx_v_xx[2]) = __pyx_t_2;
53191 
53192  /* "WaveTools.py":3030
53193  * xx[1] = x[1]
53194  * xx[2] = x[2]
53195  * Etaoverall = self.eta_linear(x,t) + self._cpp_eta_2ndOrder(xx,t) + self._cpp_eta_short(xx,t) + self._cpp_eta_long(xx,t) # <<<<<<<<<<<<<<
53196  * if setUp:
53197  * Etaoverall -= self.eta_setUp(xx,t)
53198  */
53199  __Pyx_INCREF(__pyx_v_self->eta_linear);
53200  __pyx_t_3 = __pyx_v_self->eta_linear; __pyx_t_4 = NULL;
53201  __pyx_t_5 = 0;
53202  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
53203  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
53204  if (likely(__pyx_t_4)) {
53205  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
53206  __Pyx_INCREF(__pyx_t_4);
53207  __Pyx_INCREF(function);
53208  __Pyx_DECREF_SET(__pyx_t_3, function);
53209  __pyx_t_5 = 1;
53210  }
53211  }
53212  #if CYTHON_FAST_PYCALL
53213  if (PyFunction_Check(__pyx_t_3)) {
53214  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_x, __pyx_v_t};
53215  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3030, __pyx_L1_error)
53216  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
53217  __Pyx_GOTREF(__pyx_t_1);
53218  } else
53219  #endif
53220  #if CYTHON_FAST_PYCCALL
53221  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
53222  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_x, __pyx_v_t};
53223  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3030, __pyx_L1_error)
53224  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
53225  __Pyx_GOTREF(__pyx_t_1);
53226  } else
53227  #endif
53228  {
53229  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3030, __pyx_L1_error)
53230  __Pyx_GOTREF(__pyx_t_6);
53231  if (__pyx_t_4) {
53232  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
53233  }
53234  __Pyx_INCREF(__pyx_v_x);
53235  __Pyx_GIVEREF(__pyx_v_x);
53236  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_x);
53237  __Pyx_INCREF(__pyx_v_t);
53238  __Pyx_GIVEREF(__pyx_v_t);
53239  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_t);
53240  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3030, __pyx_L1_error)
53241  __Pyx_GOTREF(__pyx_t_1);
53242  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53243  }
53244  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53245  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3030, __pyx_L1_error)
53246  __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta_2ndOrder(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3030, __pyx_L1_error)
53247  __Pyx_GOTREF(__pyx_t_3);
53248  __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3030, __pyx_L1_error)
53249  __Pyx_GOTREF(__pyx_t_6);
53250  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53251  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53252  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3030, __pyx_L1_error)
53253  __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta_short(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3030, __pyx_L1_error)
53254  __Pyx_GOTREF(__pyx_t_3);
53255  __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3030, __pyx_L1_error)
53256  __Pyx_GOTREF(__pyx_t_1);
53257  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53258  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53259  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3030, __pyx_L1_error)
53260  __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_vtabstruct_9WaveTools_RandomNLWaves *)__pyx_v_self->__pyx_vtab)->_cpp_eta_long(__pyx_v_self, __pyx_v_xx, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3030, __pyx_L1_error)
53261  __Pyx_GOTREF(__pyx_t_3);
53262  __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3030, __pyx_L1_error)
53263  __Pyx_GOTREF(__pyx_t_6);
53264  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53265  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53266  __pyx_v_Etaoverall = __pyx_t_6;
53267  __pyx_t_6 = 0;
53268 
53269  /* "WaveTools.py":3031
53270  * xx[2] = x[2]
53271  * Etaoverall = self.eta_linear(x,t) + self._cpp_eta_2ndOrder(xx,t) + self._cpp_eta_short(xx,t) + self._cpp_eta_long(xx,t)
53272  * if setUp: # <<<<<<<<<<<<<<
53273  * Etaoverall -= self.eta_setUp(xx,t)
53274  * return Etaoverall
53275  */
53276  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_setUp); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 3031, __pyx_L1_error)
53277  if (__pyx_t_7) {
53278 
53279  /* "WaveTools.py":3032
53280  * Etaoverall = self.eta_linear(x,t) + self._cpp_eta_2ndOrder(xx,t) + self._cpp_eta_short(xx,t) + self._cpp_eta_long(xx,t)
53281  * if setUp:
53282  * Etaoverall -= self.eta_setUp(xx,t) # <<<<<<<<<<<<<<
53283  * return Etaoverall
53284  *
53285  */
53286  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta_setUp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3032, __pyx_L1_error)
53287  __Pyx_GOTREF(__pyx_t_3);
53288  __pyx_t_1 = __Pyx_carray_to_py_double(__pyx_v_xx, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3032, __pyx_L1_error)
53289  __Pyx_GOTREF(__pyx_t_1);
53290  __pyx_t_4 = NULL;
53291  __pyx_t_5 = 0;
53292  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
53293  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
53294  if (likely(__pyx_t_4)) {
53295  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
53296  __Pyx_INCREF(__pyx_t_4);
53297  __Pyx_INCREF(function);
53298  __Pyx_DECREF_SET(__pyx_t_3, function);
53299  __pyx_t_5 = 1;
53300  }
53301  }
53302  #if CYTHON_FAST_PYCALL
53303  if (PyFunction_Check(__pyx_t_3)) {
53304  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_v_t};
53305  __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3032, __pyx_L1_error)
53306  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
53307  __Pyx_GOTREF(__pyx_t_6);
53308  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53309  } else
53310  #endif
53311  #if CYTHON_FAST_PYCCALL
53312  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
53313  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_v_t};
53314  __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3032, __pyx_L1_error)
53315  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
53316  __Pyx_GOTREF(__pyx_t_6);
53317  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53318  } else
53319  #endif
53320  {
53321  __pyx_t_8 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3032, __pyx_L1_error)
53322  __Pyx_GOTREF(__pyx_t_8);
53323  if (__pyx_t_4) {
53324  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
53325  }
53326  __Pyx_GIVEREF(__pyx_t_1);
53327  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_1);
53328  __Pyx_INCREF(__pyx_v_t);
53329  __Pyx_GIVEREF(__pyx_v_t);
53330  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_v_t);
53331  __pyx_t_1 = 0;
53332  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3032, __pyx_L1_error)
53333  __Pyx_GOTREF(__pyx_t_6);
53334  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
53335  }
53336  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53337  __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_v_Etaoverall, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3032, __pyx_L1_error)
53338  __Pyx_GOTREF(__pyx_t_3);
53339  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53340  __Pyx_DECREF_SET(__pyx_v_Etaoverall, __pyx_t_3);
53341  __pyx_t_3 = 0;
53342 
53343  /* "WaveTools.py":3031
53344  * xx[2] = x[2]
53345  * Etaoverall = self.eta_linear(x,t) + self._cpp_eta_2ndOrder(xx,t) + self._cpp_eta_short(xx,t) + self._cpp_eta_long(xx,t)
53346  * if setUp: # <<<<<<<<<<<<<<
53347  * Etaoverall -= self.eta_setUp(xx,t)
53348  * return Etaoverall
53349  */
53350  }
53351 
53352  /* "WaveTools.py":3033
53353  * if setUp:
53354  * Etaoverall -= self.eta_setUp(xx,t)
53355  * return Etaoverall # <<<<<<<<<<<<<<
53356  *
53357  *
53358  */
53359  __Pyx_XDECREF(__pyx_r);
53360  __Pyx_INCREF(__pyx_v_Etaoverall);
53361  __pyx_r = __pyx_v_Etaoverall;
53362  goto __pyx_L0;
53363 
53364  /* "WaveTools.py":3008
53365  *
53366  * #overall free surface elevation
53367  * def eta_overall(self,x,t,setUp=False): # <<<<<<<<<<<<<<
53368  * """Calculates the free surface elevation with 2nd order corrections
53369  *
53370  */
53371 
53372  /* function exit code */
53373  __pyx_L1_error:;
53374  __Pyx_XDECREF(__pyx_t_1);
53375  __Pyx_XDECREF(__pyx_t_3);
53376  __Pyx_XDECREF(__pyx_t_4);
53377  __Pyx_XDECREF(__pyx_t_6);
53378  __Pyx_XDECREF(__pyx_t_8);
53379  __Pyx_AddTraceback("WaveTools.RandomNLWaves.eta_overall", __pyx_clineno, __pyx_lineno, __pyx_filename);
53380  __pyx_r = NULL;
53381  __pyx_L0:;
53382  __Pyx_XDECREF(__pyx_v_Etaoverall);
53383  __Pyx_XGIVEREF(__pyx_r);
53384  __Pyx_RefNannyFinishContext();
53385  return __pyx_r;
53386 }
53387 
53388 /* "WaveTools.py":3037
53389  *
53390  *
53391  * def writeEtaSeries(self,Tstart,Tend,dt,x0,fname, mode="all",setUp=False, Lgen=np.zeros(3,)): # <<<<<<<<<<<<<<
53392  * """Writes a timeseries of the free-surface elevation
53393  *
53394  */
53395 
53396 /* Python wrapper */
53397 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_13writeEtaSeries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
53398 static char __pyx_doc_9WaveTools_13RandomNLWaves_12writeEtaSeries[] = "Writes a timeseries of the free-surface elevation\n\n It also returns the free surface elevation as a time-eta array.\n If Lgen !=[0.,0.,0.,] then Tstart is modified to account for the\n wave transformation at the most remote point of the relaxation zone.\n\n Parameters\n ----------\n Tstart : float\n Start time\n Tend : float\n End time\n dt : float\n Sampling interval\n x0 : numpy.ndarray\n Position vector of the time series\n fname : string\n Filename for timeseries file\n mode: Optional[string]\n Mode of set up calculations (all, long, short, setup)\n setUp: Optional[bool]\n Switch for activating setup calculation\n Lgen : Optional[numpy.ndarray]\n Length vector of relaxation zone\n\n\n Returns\n ----------\n numpy.ndarray\n 2D numpy array Nx2 containing free-surface elevation in time.\n ";
53399 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_13writeEtaSeries = {"writeEtaSeries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_13writeEtaSeries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_12writeEtaSeries};
53400 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_13writeEtaSeries(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
53401  PyObject *__pyx_v_Tstart = 0;
53402  PyObject *__pyx_v_Tend = 0;
53403  PyObject *__pyx_v_dt = 0;
53404  PyObject *__pyx_v_x0 = 0;
53405  PyObject *__pyx_v_fname = 0;
53406  PyObject *__pyx_v_mode = 0;
53407  PyObject *__pyx_v_setUp = 0;
53408  PyObject *__pyx_v_Lgen = 0;
53409  int __pyx_lineno = 0;
53410  const char *__pyx_filename = NULL;
53411  int __pyx_clineno = 0;
53412  PyObject *__pyx_r = 0;
53413  __Pyx_RefNannyDeclarations
53414  __Pyx_RefNannySetupContext("writeEtaSeries (wrapper)", 0);
53415  {
53416  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Tstart,&__pyx_n_s_Tend,&__pyx_n_s_dt,&__pyx_n_s_x0,&__pyx_n_s_fname,&__pyx_n_s_mode,&__pyx_n_s_setUp,&__pyx_n_s_Lgen,0};
53417  PyObject* values[8] = {0,0,0,0,0,0,0,0};
53418  values[5] = ((PyObject *)__pyx_n_s_all);
53419  values[6] = ((PyObject *)Py_False);
53420  values[7] = __pyx_k__51;
53421  if (unlikely(__pyx_kwds)) {
53422  Py_ssize_t kw_args;
53423  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
53424  switch (pos_args) {
53425  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
53426  CYTHON_FALLTHROUGH;
53427  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
53428  CYTHON_FALLTHROUGH;
53429  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
53430  CYTHON_FALLTHROUGH;
53431  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
53432  CYTHON_FALLTHROUGH;
53433  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
53434  CYTHON_FALLTHROUGH;
53435  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
53436  CYTHON_FALLTHROUGH;
53437  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
53438  CYTHON_FALLTHROUGH;
53439  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
53440  CYTHON_FALLTHROUGH;
53441  case 0: break;
53442  default: goto __pyx_L5_argtuple_error;
53443  }
53444  kw_args = PyDict_Size(__pyx_kwds);
53445  switch (pos_args) {
53446  case 0:
53447  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tstart)) != 0)) kw_args--;
53448  else goto __pyx_L5_argtuple_error;
53449  CYTHON_FALLTHROUGH;
53450  case 1:
53451  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tend)) != 0)) kw_args--;
53452  else {
53453  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 5, 8, 1); __PYX_ERR(0, 3037, __pyx_L3_error)
53454  }
53455  CYTHON_FALLTHROUGH;
53456  case 2:
53457  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
53458  else {
53459  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 5, 8, 2); __PYX_ERR(0, 3037, __pyx_L3_error)
53460  }
53461  CYTHON_FALLTHROUGH;
53462  case 3:
53463  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
53464  else {
53465  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 5, 8, 3); __PYX_ERR(0, 3037, __pyx_L3_error)
53466  }
53467  CYTHON_FALLTHROUGH;
53468  case 4:
53469  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
53470  else {
53471  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 5, 8, 4); __PYX_ERR(0, 3037, __pyx_L3_error)
53472  }
53473  CYTHON_FALLTHROUGH;
53474  case 5:
53475  if (kw_args > 0) {
53476  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode);
53477  if (value) { values[5] = value; kw_args--; }
53478  }
53479  CYTHON_FALLTHROUGH;
53480  case 6:
53481  if (kw_args > 0) {
53482  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_setUp);
53483  if (value) { values[6] = value; kw_args--; }
53484  }
53485  CYTHON_FALLTHROUGH;
53486  case 7:
53487  if (kw_args > 0) {
53488  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Lgen);
53489  if (value) { values[7] = value; kw_args--; }
53490  }
53491  }
53492  if (unlikely(kw_args > 0)) {
53493  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "writeEtaSeries") < 0)) __PYX_ERR(0, 3037, __pyx_L3_error)
53494  }
53495  } else {
53496  switch (PyTuple_GET_SIZE(__pyx_args)) {
53497  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
53498  CYTHON_FALLTHROUGH;
53499  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
53500  CYTHON_FALLTHROUGH;
53501  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
53502  CYTHON_FALLTHROUGH;
53503  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
53504  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
53505  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
53506  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
53507  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
53508  break;
53509  default: goto __pyx_L5_argtuple_error;
53510  }
53511  }
53512  __pyx_v_Tstart = values[0];
53513  __pyx_v_Tend = values[1];
53514  __pyx_v_dt = values[2];
53515  __pyx_v_x0 = values[3];
53516  __pyx_v_fname = values[4];
53517  __pyx_v_mode = values[5];
53518  __pyx_v_setUp = values[6];
53519  __pyx_v_Lgen = values[7];
53520  }
53521  goto __pyx_L4_argument_unpacking_done;
53522  __pyx_L5_argtuple_error:;
53523  __Pyx_RaiseArgtupleInvalid("writeEtaSeries", 0, 5, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3037, __pyx_L3_error)
53524  __pyx_L3_error:;
53525  __Pyx_AddTraceback("WaveTools.RandomNLWaves.writeEtaSeries", __pyx_clineno, __pyx_lineno, __pyx_filename);
53526  __Pyx_RefNannyFinishContext();
53527  return NULL;
53528  __pyx_L4_argument_unpacking_done:;
53529  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_12writeEtaSeries(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_dt, __pyx_v_x0, __pyx_v_fname, __pyx_v_mode, __pyx_v_setUp, __pyx_v_Lgen);
53530 
53531  /* function exit code */
53532  __Pyx_RefNannyFinishContext();
53533  return __pyx_r;
53534 }
53535 
53536 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_12writeEtaSeries(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_dt, PyObject *__pyx_v_x0, PyObject *__pyx_v_fname, PyObject *__pyx_v_mode, PyObject *__pyx_v_setUp, PyObject *__pyx_v_Lgen) {
53537  PyObject *__pyx_v_Tlag = NULL;
53538  PyObject *__pyx_v_j = NULL;
53539  PyObject *__pyx_v_Nseries = NULL;
53540  PyObject *__pyx_v_timelst = NULL;
53541  PyObject *__pyx_v_series = NULL;
53542  PyObject *__pyx_v_i = NULL;
53543  PyObject *__pyx_v_time = NULL;
53544  PyObject *__pyx_v_delimiter = NULL;
53545  PyObject *__pyx_r = NULL;
53546  __Pyx_RefNannyDeclarations
53547  PyObject *__pyx_t_1 = NULL;
53548  PyObject *__pyx_t_2 = NULL;
53549  PyObject *__pyx_t_3 = NULL;
53550  int __pyx_t_4;
53551  Py_ssize_t __pyx_t_5;
53552  PyObject *__pyx_t_6 = NULL;
53553  PyObject *(*__pyx_t_7)(PyObject *);
53554  PyObject *__pyx_t_8 = NULL;
53555  PyObject *__pyx_t_9 = NULL;
53556  int __pyx_t_10;
53557  PyObject *__pyx_t_11 = NULL;
53558  int __pyx_lineno = 0;
53559  const char *__pyx_filename = NULL;
53560  int __pyx_clineno = 0;
53561  __Pyx_RefNannySetupContext("writeEtaSeries", 0);
53562  __Pyx_INCREF(__pyx_v_Tstart);
53563 
53564  /* "WaveTools.py":3069
53565  * 2D numpy array Nx2 containing free-surface elevation in time.
53566  * """
53567  * if sum(Lgen[:]*self.waveDir[:])< 0 : # <<<<<<<<<<<<<<
53568  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
53569  * sys.exit(1)
53570  */
53571  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3069, __pyx_L1_error)
53572  __Pyx_GOTREF(__pyx_t_1);
53573  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->waveDir), 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3069, __pyx_L1_error)
53574  __Pyx_GOTREF(__pyx_t_2);
53575  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3069, __pyx_L1_error)
53576  __Pyx_GOTREF(__pyx_t_3);
53577  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53578  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53579  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3069, __pyx_L1_error)
53580  __Pyx_GOTREF(__pyx_t_2);
53581  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53582  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3069, __pyx_L1_error)
53583  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53584  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3069, __pyx_L1_error)
53585  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53586  if (__pyx_t_4) {
53587 
53588  /* "WaveTools.py":3070
53589  * """
53590  * if sum(Lgen[:]*self.waveDir[:])< 0 :
53591  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction') # <<<<<<<<<<<<<<
53592  * sys.exit(1)
53593  *
53594  */
53595  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3070, __pyx_L1_error)
53596  __Pyx_GOTREF(__pyx_t_2);
53597  __pyx_t_1 = NULL;
53598  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
53599  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
53600  if (likely(__pyx_t_1)) {
53601  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
53602  __Pyx_INCREF(__pyx_t_1);
53603  __Pyx_INCREF(function);
53604  __Pyx_DECREF_SET(__pyx_t_2, function);
53605  }
53606  }
53607  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_kp_s_ERROR_Wavetools_py_Location_vect) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_ERROR_Wavetools_py_Location_vect);
53608  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
53609  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3070, __pyx_L1_error)
53610  __Pyx_GOTREF(__pyx_t_3);
53611  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53612  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53613 
53614  /* "WaveTools.py":3071
53615  * if sum(Lgen[:]*self.waveDir[:])< 0 :
53616  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
53617  * sys.exit(1) # <<<<<<<<<<<<<<
53618  *
53619  * Tlag = np.zeros(len(self.omega),)
53620  */
53621  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3071, __pyx_L1_error)
53622  __Pyx_GOTREF(__pyx_t_2);
53623  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3071, __pyx_L1_error)
53624  __Pyx_GOTREF(__pyx_t_1);
53625  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53626  __pyx_t_2 = NULL;
53627  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
53628  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
53629  if (likely(__pyx_t_2)) {
53630  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
53631  __Pyx_INCREF(__pyx_t_2);
53632  __Pyx_INCREF(function);
53633  __Pyx_DECREF_SET(__pyx_t_1, function);
53634  }
53635  }
53636  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_1);
53637  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
53638  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3071, __pyx_L1_error)
53639  __Pyx_GOTREF(__pyx_t_3);
53640  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53641  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53642 
53643  /* "WaveTools.py":3069
53644  * 2D numpy array Nx2 containing free-surface elevation in time.
53645  * """
53646  * if sum(Lgen[:]*self.waveDir[:])< 0 : # <<<<<<<<<<<<<<
53647  * logEvent('ERROR! Wavetools.py: Location vector of generation zone should not be opposite to the wave direction')
53648  * sys.exit(1)
53649  */
53650  }
53651 
53652  /* "WaveTools.py":3073
53653  * sys.exit(1)
53654  *
53655  * Tlag = np.zeros(len(self.omega),) # <<<<<<<<<<<<<<
53656  * for j in range(len(self.omega)):
53657  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
53658  */
53659  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3073, __pyx_L1_error)
53660  __Pyx_GOTREF(__pyx_t_1);
53661  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3073, __pyx_L1_error)
53662  __Pyx_GOTREF(__pyx_t_2);
53663  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53664  __pyx_t_1 = ((PyObject *)__pyx_v_self->omega);
53665  __Pyx_INCREF(__pyx_t_1);
53666  __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3073, __pyx_L1_error)
53667  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53668  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3073, __pyx_L1_error)
53669  __Pyx_GOTREF(__pyx_t_1);
53670  __pyx_t_6 = NULL;
53671  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
53672  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
53673  if (likely(__pyx_t_6)) {
53674  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
53675  __Pyx_INCREF(__pyx_t_6);
53676  __Pyx_INCREF(function);
53677  __Pyx_DECREF_SET(__pyx_t_2, function);
53678  }
53679  }
53680  __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1);
53681  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
53682  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53683  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3073, __pyx_L1_error)
53684  __Pyx_GOTREF(__pyx_t_3);
53685  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53686  __pyx_v_Tlag = __pyx_t_3;
53687  __pyx_t_3 = 0;
53688 
53689  /* "WaveTools.py":3074
53690  *
53691  * Tlag = np.zeros(len(self.omega),)
53692  * for j in range(len(self.omega)): # <<<<<<<<<<<<<<
53693  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
53694  * Tlag = max(Tlag)
53695  */
53696  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3074, __pyx_L1_error)
53697  __Pyx_GOTREF(__pyx_t_2);
53698  __pyx_t_1 = ((PyObject *)__pyx_v_self->omega);
53699  __Pyx_INCREF(__pyx_t_1);
53700  __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3074, __pyx_L1_error)
53701  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53702  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3074, __pyx_L1_error)
53703  __Pyx_GOTREF(__pyx_t_1);
53704  __pyx_t_6 = NULL;
53705  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
53706  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
53707  if (likely(__pyx_t_6)) {
53708  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
53709  __Pyx_INCREF(__pyx_t_6);
53710  __Pyx_INCREF(function);
53711  __Pyx_DECREF_SET(__pyx_t_2, function);
53712  }
53713  }
53714  __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1);
53715  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
53716  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53717  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3074, __pyx_L1_error)
53718  __Pyx_GOTREF(__pyx_t_3);
53719  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53720  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
53721  __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
53722  __pyx_t_7 = NULL;
53723  } else {
53724  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3074, __pyx_L1_error)
53725  __Pyx_GOTREF(__pyx_t_2);
53726  __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3074, __pyx_L1_error)
53727  }
53728  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53729  for (;;) {
53730  if (likely(!__pyx_t_7)) {
53731  if (likely(PyList_CheckExact(__pyx_t_2))) {
53732  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
53733  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
53734  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3074, __pyx_L1_error)
53735  #else
53736  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3074, __pyx_L1_error)
53737  __Pyx_GOTREF(__pyx_t_3);
53738  #endif
53739  } else {
53740  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
53741  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
53742  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3074, __pyx_L1_error)
53743  #else
53744  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3074, __pyx_L1_error)
53745  __Pyx_GOTREF(__pyx_t_3);
53746  #endif
53747  }
53748  } else {
53749  __pyx_t_3 = __pyx_t_7(__pyx_t_2);
53750  if (unlikely(!__pyx_t_3)) {
53751  PyObject* exc_type = PyErr_Occurred();
53752  if (exc_type) {
53753  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
53754  else __PYX_ERR(0, 3074, __pyx_L1_error)
53755  }
53756  break;
53757  }
53758  __Pyx_GOTREF(__pyx_t_3);
53759  }
53760  __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_3);
53761  __pyx_t_3 = 0;
53762 
53763  /* "WaveTools.py":3075
53764  * Tlag = np.zeros(len(self.omega),)
53765  * for j in range(len(self.omega)):
53766  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j]) # <<<<<<<<<<<<<<
53767  * Tlag = max(Tlag)
53768  * Tstart = Tstart - Tlag
53769  */
53770  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3075, __pyx_L1_error)
53771  __Pyx_GOTREF(__pyx_t_1);
53772  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3075, __pyx_L1_error)
53773  __Pyx_GOTREF(__pyx_t_6);
53774  __Pyx_INCREF(__pyx_v_j);
53775  __Pyx_GIVEREF(__pyx_v_j);
53776  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_j);
53777  __Pyx_INCREF(__pyx_slice__4);
53778  __Pyx_GIVEREF(__pyx_slice__4);
53779  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__4);
53780  __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->kDir), __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3075, __pyx_L1_error)
53781  __Pyx_GOTREF(__pyx_t_8);
53782  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53783  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_Lgen, 0, 0, NULL, NULL, &__pyx_slice__4, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3075, __pyx_L1_error)
53784  __Pyx_GOTREF(__pyx_t_6);
53785  __pyx_t_9 = PyNumber_Multiply(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3075, __pyx_L1_error)
53786  __Pyx_GOTREF(__pyx_t_9);
53787  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
53788  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53789  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3075, __pyx_L1_error)
53790  __Pyx_GOTREF(__pyx_t_6);
53791  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
53792  __pyx_t_9 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->omega), __pyx_v_j); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3075, __pyx_L1_error)
53793  __Pyx_GOTREF(__pyx_t_9);
53794  __pyx_t_8 = NULL;
53795  __pyx_t_10 = 0;
53796  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
53797  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
53798  if (likely(__pyx_t_8)) {
53799  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
53800  __Pyx_INCREF(__pyx_t_8);
53801  __Pyx_INCREF(function);
53802  __Pyx_DECREF_SET(__pyx_t_1, function);
53803  __pyx_t_10 = 1;
53804  }
53805  }
53806  #if CYTHON_FAST_PYCALL
53807  if (PyFunction_Check(__pyx_t_1)) {
53808  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_9};
53809  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3075, __pyx_L1_error)
53810  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
53811  __Pyx_GOTREF(__pyx_t_3);
53812  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53813  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
53814  } else
53815  #endif
53816  #if CYTHON_FAST_PYCCALL
53817  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
53818  PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_9};
53819  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3075, __pyx_L1_error)
53820  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
53821  __Pyx_GOTREF(__pyx_t_3);
53822  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
53823  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
53824  } else
53825  #endif
53826  {
53827  __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3075, __pyx_L1_error)
53828  __Pyx_GOTREF(__pyx_t_11);
53829  if (__pyx_t_8) {
53830  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
53831  }
53832  __Pyx_GIVEREF(__pyx_t_6);
53833  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_6);
53834  __Pyx_GIVEREF(__pyx_t_9);
53835  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_9);
53836  __pyx_t_6 = 0;
53837  __pyx_t_9 = 0;
53838  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3075, __pyx_L1_error)
53839  __Pyx_GOTREF(__pyx_t_3);
53840  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
53841  }
53842  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53843  if (unlikely(PyObject_SetItem(__pyx_v_Tlag, __pyx_v_j, __pyx_t_3) < 0)) __PYX_ERR(0, 3075, __pyx_L1_error)
53844  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53845 
53846  /* "WaveTools.py":3074
53847  *
53848  * Tlag = np.zeros(len(self.omega),)
53849  * for j in range(len(self.omega)): # <<<<<<<<<<<<<<
53850  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
53851  * Tlag = max(Tlag)
53852  */
53853  }
53854  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53855 
53856  /* "WaveTools.py":3076
53857  * for j in range(len(self.omega)):
53858  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
53859  * Tlag = max(Tlag) # <<<<<<<<<<<<<<
53860  * Tstart = Tstart - Tlag
53861  *
53862  */
53863  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_v_Tlag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3076, __pyx_L1_error)
53864  __Pyx_GOTREF(__pyx_t_2);
53865  __Pyx_DECREF_SET(__pyx_v_Tlag, __pyx_t_2);
53866  __pyx_t_2 = 0;
53867 
53868  /* "WaveTools.py":3077
53869  * Tlag[j] = old_div(sum(self.kDir[j,:]*Lgen[:]),self.omega[j])
53870  * Tlag = max(Tlag)
53871  * Tstart = Tstart - Tlag # <<<<<<<<<<<<<<
53872  *
53873  * Nseries = int(old_div((Tend - Tstart),dt)) + 1
53874  */
53875  __pyx_t_2 = PyNumber_Subtract(__pyx_v_Tstart, __pyx_v_Tlag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3077, __pyx_L1_error)
53876  __Pyx_GOTREF(__pyx_t_2);
53877  __Pyx_DECREF_SET(__pyx_v_Tstart, __pyx_t_2);
53878  __pyx_t_2 = 0;
53879 
53880  /* "WaveTools.py":3079
53881  * Tstart = Tstart - Tlag
53882  *
53883  * Nseries = int(old_div((Tend - Tstart),dt)) + 1 # <<<<<<<<<<<<<<
53884  * timelst=np.linspace(Tstart, Tend, Nseries)
53885  * series = np.zeros((Nseries,2),)
53886  */
53887  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3079, __pyx_L1_error)
53888  __Pyx_GOTREF(__pyx_t_3);
53889  __pyx_t_1 = PyNumber_Subtract(__pyx_v_Tend, __pyx_v_Tstart); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3079, __pyx_L1_error)
53890  __Pyx_GOTREF(__pyx_t_1);
53891  __pyx_t_11 = NULL;
53892  __pyx_t_10 = 0;
53893  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
53894  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
53895  if (likely(__pyx_t_11)) {
53896  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
53897  __Pyx_INCREF(__pyx_t_11);
53898  __Pyx_INCREF(function);
53899  __Pyx_DECREF_SET(__pyx_t_3, function);
53900  __pyx_t_10 = 1;
53901  }
53902  }
53903  #if CYTHON_FAST_PYCALL
53904  if (PyFunction_Check(__pyx_t_3)) {
53905  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_v_dt};
53906  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3079, __pyx_L1_error)
53907  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
53908  __Pyx_GOTREF(__pyx_t_2);
53909  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53910  } else
53911  #endif
53912  #if CYTHON_FAST_PYCCALL
53913  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
53914  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_1, __pyx_v_dt};
53915  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3079, __pyx_L1_error)
53916  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
53917  __Pyx_GOTREF(__pyx_t_2);
53918  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
53919  } else
53920  #endif
53921  {
53922  __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3079, __pyx_L1_error)
53923  __Pyx_GOTREF(__pyx_t_9);
53924  if (__pyx_t_11) {
53925  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __pyx_t_11 = NULL;
53926  }
53927  __Pyx_GIVEREF(__pyx_t_1);
53928  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_1);
53929  __Pyx_INCREF(__pyx_v_dt);
53930  __Pyx_GIVEREF(__pyx_v_dt);
53931  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_v_dt);
53932  __pyx_t_1 = 0;
53933  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3079, __pyx_L1_error)
53934  __Pyx_GOTREF(__pyx_t_2);
53935  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
53936  }
53937  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53938  __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3079, __pyx_L1_error)
53939  __Pyx_GOTREF(__pyx_t_3);
53940  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
53941  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3079, __pyx_L1_error)
53942  __Pyx_GOTREF(__pyx_t_2);
53943  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53944  __pyx_v_Nseries = __pyx_t_2;
53945  __pyx_t_2 = 0;
53946 
53947  /* "WaveTools.py":3080
53948  *
53949  * Nseries = int(old_div((Tend - Tstart),dt)) + 1
53950  * timelst=np.linspace(Tstart, Tend, Nseries) # <<<<<<<<<<<<<<
53951  * series = np.zeros((Nseries,2),)
53952  * series[:,0] = timelst
53953  */
53954  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3080, __pyx_L1_error)
53955  __Pyx_GOTREF(__pyx_t_3);
53956  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3080, __pyx_L1_error)
53957  __Pyx_GOTREF(__pyx_t_9);
53958  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
53959  __pyx_t_3 = NULL;
53960  __pyx_t_10 = 0;
53961  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
53962  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
53963  if (likely(__pyx_t_3)) {
53964  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
53965  __Pyx_INCREF(__pyx_t_3);
53966  __Pyx_INCREF(function);
53967  __Pyx_DECREF_SET(__pyx_t_9, function);
53968  __pyx_t_10 = 1;
53969  }
53970  }
53971  #if CYTHON_FAST_PYCALL
53972  if (PyFunction_Check(__pyx_t_9)) {
53973  PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Nseries};
53974  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3080, __pyx_L1_error)
53975  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
53976  __Pyx_GOTREF(__pyx_t_2);
53977  } else
53978  #endif
53979  #if CYTHON_FAST_PYCCALL
53980  if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
53981  PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_Nseries};
53982  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3080, __pyx_L1_error)
53983  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
53984  __Pyx_GOTREF(__pyx_t_2);
53985  } else
53986  #endif
53987  {
53988  __pyx_t_1 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3080, __pyx_L1_error)
53989  __Pyx_GOTREF(__pyx_t_1);
53990  if (__pyx_t_3) {
53991  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
53992  }
53993  __Pyx_INCREF(__pyx_v_Tstart);
53994  __Pyx_GIVEREF(__pyx_v_Tstart);
53995  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_v_Tstart);
53996  __Pyx_INCREF(__pyx_v_Tend);
53997  __Pyx_GIVEREF(__pyx_v_Tend);
53998  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_v_Tend);
53999  __Pyx_INCREF(__pyx_v_Nseries);
54000  __Pyx_GIVEREF(__pyx_v_Nseries);
54001  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_10, __pyx_v_Nseries);
54002  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3080, __pyx_L1_error)
54003  __Pyx_GOTREF(__pyx_t_2);
54004  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54005  }
54006  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54007  __pyx_v_timelst = __pyx_t_2;
54008  __pyx_t_2 = 0;
54009 
54010  /* "WaveTools.py":3081
54011  * Nseries = int(old_div((Tend - Tstart),dt)) + 1
54012  * timelst=np.linspace(Tstart, Tend, Nseries)
54013  * series = np.zeros((Nseries,2),) # <<<<<<<<<<<<<<
54014  * series[:,0] = timelst
54015  * for i in range(len(timelst)):
54016  */
54017  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3081, __pyx_L1_error)
54018  __Pyx_GOTREF(__pyx_t_9);
54019  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3081, __pyx_L1_error)
54020  __Pyx_GOTREF(__pyx_t_1);
54021  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54022  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3081, __pyx_L1_error)
54023  __Pyx_GOTREF(__pyx_t_9);
54024  __Pyx_INCREF(__pyx_v_Nseries);
54025  __Pyx_GIVEREF(__pyx_v_Nseries);
54026  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_Nseries);
54027  __Pyx_INCREF(__pyx_int_2);
54028  __Pyx_GIVEREF(__pyx_int_2);
54029  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_2);
54030  __pyx_t_3 = NULL;
54031  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
54032  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
54033  if (likely(__pyx_t_3)) {
54034  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
54035  __Pyx_INCREF(__pyx_t_3);
54036  __Pyx_INCREF(function);
54037  __Pyx_DECREF_SET(__pyx_t_1, function);
54038  }
54039  }
54040  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9);
54041  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54042  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54043  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3081, __pyx_L1_error)
54044  __Pyx_GOTREF(__pyx_t_2);
54045  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54046  __pyx_v_series = __pyx_t_2;
54047  __pyx_t_2 = 0;
54048 
54049  /* "WaveTools.py":3082
54050  * timelst=np.linspace(Tstart, Tend, Nseries)
54051  * series = np.zeros((Nseries,2),)
54052  * series[:,0] = timelst # <<<<<<<<<<<<<<
54053  * for i in range(len(timelst)):
54054  * time = series[i,0]
54055  */
54056  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_tuple__25, __pyx_v_timelst) < 0)) __PYX_ERR(0, 3082, __pyx_L1_error)
54057 
54058  /* "WaveTools.py":3083
54059  * series = np.zeros((Nseries,2),)
54060  * series[:,0] = timelst
54061  * for i in range(len(timelst)): # <<<<<<<<<<<<<<
54062  * time = series[i,0]
54063  * if mode == "all":
54064  */
54065  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3083, __pyx_L1_error)
54066  __Pyx_GOTREF(__pyx_t_1);
54067  __pyx_t_5 = PyObject_Length(__pyx_v_timelst); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3083, __pyx_L1_error)
54068  __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3083, __pyx_L1_error)
54069  __Pyx_GOTREF(__pyx_t_9);
54070  __pyx_t_3 = NULL;
54071  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
54072  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
54073  if (likely(__pyx_t_3)) {
54074  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
54075  __Pyx_INCREF(__pyx_t_3);
54076  __Pyx_INCREF(function);
54077  __Pyx_DECREF_SET(__pyx_t_1, function);
54078  }
54079  }
54080  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9);
54081  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54082  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54083  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3083, __pyx_L1_error)
54084  __Pyx_GOTREF(__pyx_t_2);
54085  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54086  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
54087  __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
54088  __pyx_t_7 = NULL;
54089  } else {
54090  __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3083, __pyx_L1_error)
54091  __Pyx_GOTREF(__pyx_t_1);
54092  __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3083, __pyx_L1_error)
54093  }
54094  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54095  for (;;) {
54096  if (likely(!__pyx_t_7)) {
54097  if (likely(PyList_CheckExact(__pyx_t_1))) {
54098  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
54099  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
54100  __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3083, __pyx_L1_error)
54101  #else
54102  __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3083, __pyx_L1_error)
54103  __Pyx_GOTREF(__pyx_t_2);
54104  #endif
54105  } else {
54106  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
54107  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
54108  __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3083, __pyx_L1_error)
54109  #else
54110  __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3083, __pyx_L1_error)
54111  __Pyx_GOTREF(__pyx_t_2);
54112  #endif
54113  }
54114  } else {
54115  __pyx_t_2 = __pyx_t_7(__pyx_t_1);
54116  if (unlikely(!__pyx_t_2)) {
54117  PyObject* exc_type = PyErr_Occurred();
54118  if (exc_type) {
54119  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
54120  else __PYX_ERR(0, 3083, __pyx_L1_error)
54121  }
54122  break;
54123  }
54124  __Pyx_GOTREF(__pyx_t_2);
54125  }
54126  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
54127  __pyx_t_2 = 0;
54128 
54129  /* "WaveTools.py":3084
54130  * series[:,0] = timelst
54131  * for i in range(len(timelst)):
54132  * time = series[i,0] # <<<<<<<<<<<<<<
54133  * if mode == "all":
54134  * series[i,1] = self.eta_overall(x0,time,setUp)
54135  */
54136  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3084, __pyx_L1_error)
54137  __Pyx_GOTREF(__pyx_t_2);
54138  __Pyx_INCREF(__pyx_v_i);
54139  __Pyx_GIVEREF(__pyx_v_i);
54140  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
54141  __Pyx_INCREF(__pyx_int_0);
54142  __Pyx_GIVEREF(__pyx_int_0);
54143  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0);
54144  __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_series, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3084, __pyx_L1_error)
54145  __Pyx_GOTREF(__pyx_t_9);
54146  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54147  __Pyx_XDECREF_SET(__pyx_v_time, __pyx_t_9);
54148  __pyx_t_9 = 0;
54149 
54150  /* "WaveTools.py":3085
54151  * for i in range(len(timelst)):
54152  * time = series[i,0]
54153  * if mode == "all": # <<<<<<<<<<<<<<
54154  * series[i,1] = self.eta_overall(x0,time,setUp)
54155  * elif mode == "setup":
54156  */
54157  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_all, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3085, __pyx_L1_error)
54158  if (__pyx_t_4) {
54159 
54160  /* "WaveTools.py":3086
54161  * time = series[i,0]
54162  * if mode == "all":
54163  * series[i,1] = self.eta_overall(x0,time,setUp) # <<<<<<<<<<<<<<
54164  * elif mode == "setup":
54165  * series[i,1] = self.eta_setUp(x0,time)
54166  */
54167  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta_overall); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3086, __pyx_L1_error)
54168  __Pyx_GOTREF(__pyx_t_2);
54169  __pyx_t_3 = NULL;
54170  __pyx_t_10 = 0;
54171  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
54172  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
54173  if (likely(__pyx_t_3)) {
54174  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
54175  __Pyx_INCREF(__pyx_t_3);
54176  __Pyx_INCREF(function);
54177  __Pyx_DECREF_SET(__pyx_t_2, function);
54178  __pyx_t_10 = 1;
54179  }
54180  }
54181  #if CYTHON_FAST_PYCALL
54182  if (PyFunction_Check(__pyx_t_2)) {
54183  PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_x0, __pyx_v_time, __pyx_v_setUp};
54184  __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3086, __pyx_L1_error)
54185  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54186  __Pyx_GOTREF(__pyx_t_9);
54187  } else
54188  #endif
54189  #if CYTHON_FAST_PYCCALL
54190  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
54191  PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_x0, __pyx_v_time, __pyx_v_setUp};
54192  __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3086, __pyx_L1_error)
54193  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54194  __Pyx_GOTREF(__pyx_t_9);
54195  } else
54196  #endif
54197  {
54198  __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3086, __pyx_L1_error)
54199  __Pyx_GOTREF(__pyx_t_11);
54200  if (__pyx_t_3) {
54201  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
54202  }
54203  __Pyx_INCREF(__pyx_v_x0);
54204  __Pyx_GIVEREF(__pyx_v_x0);
54205  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_x0);
54206  __Pyx_INCREF(__pyx_v_time);
54207  __Pyx_GIVEREF(__pyx_v_time);
54208  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_v_time);
54209  __Pyx_INCREF(__pyx_v_setUp);
54210  __Pyx_GIVEREF(__pyx_v_setUp);
54211  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_v_setUp);
54212  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3086, __pyx_L1_error)
54213  __Pyx_GOTREF(__pyx_t_9);
54214  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54215  }
54216  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54217  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3086, __pyx_L1_error)
54218  __Pyx_GOTREF(__pyx_t_2);
54219  __Pyx_INCREF(__pyx_v_i);
54220  __Pyx_GIVEREF(__pyx_v_i);
54221  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
54222  __Pyx_INCREF(__pyx_int_1);
54223  __Pyx_GIVEREF(__pyx_int_1);
54224  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
54225  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_t_2, __pyx_t_9) < 0)) __PYX_ERR(0, 3086, __pyx_L1_error)
54226  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54227  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54228 
54229  /* "WaveTools.py":3085
54230  * for i in range(len(timelst)):
54231  * time = series[i,0]
54232  * if mode == "all": # <<<<<<<<<<<<<<
54233  * series[i,1] = self.eta_overall(x0,time,setUp)
54234  * elif mode == "setup":
54235  */
54236  goto __pyx_L8;
54237  }
54238 
54239  /* "WaveTools.py":3087
54240  * if mode == "all":
54241  * series[i,1] = self.eta_overall(x0,time,setUp)
54242  * elif mode == "setup": # <<<<<<<<<<<<<<
54243  * series[i,1] = self.eta_setUp(x0,time)
54244  * elif mode == "short":
54245  */
54246  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_setup, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3087, __pyx_L1_error)
54247  if (__pyx_t_4) {
54248 
54249  /* "WaveTools.py":3088
54250  * series[i,1] = self.eta_overall(x0,time,setUp)
54251  * elif mode == "setup":
54252  * series[i,1] = self.eta_setUp(x0,time) # <<<<<<<<<<<<<<
54253  * elif mode == "short":
54254  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time)
54255  */
54256  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta_setUp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3088, __pyx_L1_error)
54257  __Pyx_GOTREF(__pyx_t_2);
54258  __pyx_t_11 = NULL;
54259  __pyx_t_10 = 0;
54260  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
54261  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
54262  if (likely(__pyx_t_11)) {
54263  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
54264  __Pyx_INCREF(__pyx_t_11);
54265  __Pyx_INCREF(function);
54266  __Pyx_DECREF_SET(__pyx_t_2, function);
54267  __pyx_t_10 = 1;
54268  }
54269  }
54270  #if CYTHON_FAST_PYCALL
54271  if (PyFunction_Check(__pyx_t_2)) {
54272  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_x0, __pyx_v_time};
54273  __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3088, __pyx_L1_error)
54274  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
54275  __Pyx_GOTREF(__pyx_t_9);
54276  } else
54277  #endif
54278  #if CYTHON_FAST_PYCCALL
54279  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
54280  PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_x0, __pyx_v_time};
54281  __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3088, __pyx_L1_error)
54282  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
54283  __Pyx_GOTREF(__pyx_t_9);
54284  } else
54285  #endif
54286  {
54287  __pyx_t_3 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3088, __pyx_L1_error)
54288  __Pyx_GOTREF(__pyx_t_3);
54289  if (__pyx_t_11) {
54290  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __pyx_t_11 = NULL;
54291  }
54292  __Pyx_INCREF(__pyx_v_x0);
54293  __Pyx_GIVEREF(__pyx_v_x0);
54294  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_10, __pyx_v_x0);
54295  __Pyx_INCREF(__pyx_v_time);
54296  __Pyx_GIVEREF(__pyx_v_time);
54297  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_10, __pyx_v_time);
54298  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3088, __pyx_L1_error)
54299  __Pyx_GOTREF(__pyx_t_9);
54300  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
54301  }
54302  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54303  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3088, __pyx_L1_error)
54304  __Pyx_GOTREF(__pyx_t_2);
54305  __Pyx_INCREF(__pyx_v_i);
54306  __Pyx_GIVEREF(__pyx_v_i);
54307  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
54308  __Pyx_INCREF(__pyx_int_1);
54309  __Pyx_GIVEREF(__pyx_int_1);
54310  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
54311  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_t_2, __pyx_t_9) < 0)) __PYX_ERR(0, 3088, __pyx_L1_error)
54312  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54313  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54314 
54315  /* "WaveTools.py":3087
54316  * if mode == "all":
54317  * series[i,1] = self.eta_overall(x0,time,setUp)
54318  * elif mode == "setup": # <<<<<<<<<<<<<<
54319  * series[i,1] = self.eta_setUp(x0,time)
54320  * elif mode == "short":
54321  */
54322  goto __pyx_L8;
54323  }
54324 
54325  /* "WaveTools.py":3089
54326  * elif mode == "setup":
54327  * series[i,1] = self.eta_setUp(x0,time)
54328  * elif mode == "short": # <<<<<<<<<<<<<<
54329  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time)
54330  * elif mode == "long":
54331  */
54332  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_short, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3089, __pyx_L1_error)
54333  if (__pyx_t_4) {
54334 
54335  /* "WaveTools.py":3090
54336  * series[i,1] = self.eta_setUp(x0,time)
54337  * elif mode == "short":
54338  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time) # <<<<<<<<<<<<<<
54339  * elif mode == "long":
54340  * series[i,1] = self.eta_long(x0,time)
54341  */
54342  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta_short); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3090, __pyx_L1_error)
54343  __Pyx_GOTREF(__pyx_t_2);
54344  __pyx_t_3 = NULL;
54345  __pyx_t_10 = 0;
54346  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
54347  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
54348  if (likely(__pyx_t_3)) {
54349  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
54350  __Pyx_INCREF(__pyx_t_3);
54351  __Pyx_INCREF(function);
54352  __Pyx_DECREF_SET(__pyx_t_2, function);
54353  __pyx_t_10 = 1;
54354  }
54355  }
54356  #if CYTHON_FAST_PYCALL
54357  if (PyFunction_Check(__pyx_t_2)) {
54358  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x0, __pyx_v_time};
54359  __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3090, __pyx_L1_error)
54360  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54361  __Pyx_GOTREF(__pyx_t_9);
54362  } else
54363  #endif
54364  #if CYTHON_FAST_PYCCALL
54365  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
54366  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x0, __pyx_v_time};
54367  __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3090, __pyx_L1_error)
54368  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54369  __Pyx_GOTREF(__pyx_t_9);
54370  } else
54371  #endif
54372  {
54373  __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3090, __pyx_L1_error)
54374  __Pyx_GOTREF(__pyx_t_11);
54375  if (__pyx_t_3) {
54376  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
54377  }
54378  __Pyx_INCREF(__pyx_v_x0);
54379  __Pyx_GIVEREF(__pyx_v_x0);
54380  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_x0);
54381  __Pyx_INCREF(__pyx_v_time);
54382  __Pyx_GIVEREF(__pyx_v_time);
54383  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_v_time);
54384  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3090, __pyx_L1_error)
54385  __Pyx_GOTREF(__pyx_t_9);
54386  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54387  }
54388  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54389  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta_2ndOrder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3090, __pyx_L1_error)
54390  __Pyx_GOTREF(__pyx_t_11);
54391  __pyx_t_3 = NULL;
54392  __pyx_t_10 = 0;
54393  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
54394  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
54395  if (likely(__pyx_t_3)) {
54396  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
54397  __Pyx_INCREF(__pyx_t_3);
54398  __Pyx_INCREF(function);
54399  __Pyx_DECREF_SET(__pyx_t_11, function);
54400  __pyx_t_10 = 1;
54401  }
54402  }
54403  #if CYTHON_FAST_PYCALL
54404  if (PyFunction_Check(__pyx_t_11)) {
54405  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x0, __pyx_v_time};
54406  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3090, __pyx_L1_error)
54407  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54408  __Pyx_GOTREF(__pyx_t_2);
54409  } else
54410  #endif
54411  #if CYTHON_FAST_PYCCALL
54412  if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
54413  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x0, __pyx_v_time};
54414  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3090, __pyx_L1_error)
54415  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
54416  __Pyx_GOTREF(__pyx_t_2);
54417  } else
54418  #endif
54419  {
54420  __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3090, __pyx_L1_error)
54421  __Pyx_GOTREF(__pyx_t_6);
54422  if (__pyx_t_3) {
54423  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
54424  }
54425  __Pyx_INCREF(__pyx_v_x0);
54426  __Pyx_GIVEREF(__pyx_v_x0);
54427  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_v_x0);
54428  __Pyx_INCREF(__pyx_v_time);
54429  __Pyx_GIVEREF(__pyx_v_time);
54430  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_v_time);
54431  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3090, __pyx_L1_error)
54432  __Pyx_GOTREF(__pyx_t_2);
54433  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
54434  }
54435  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54436  __pyx_t_11 = PyNumber_Add(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3090, __pyx_L1_error)
54437  __Pyx_GOTREF(__pyx_t_11);
54438  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54439  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54440  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3090, __pyx_L1_error)
54441  __Pyx_GOTREF(__pyx_t_2);
54442  __Pyx_INCREF(__pyx_v_i);
54443  __Pyx_GIVEREF(__pyx_v_i);
54444  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
54445  __Pyx_INCREF(__pyx_int_1);
54446  __Pyx_GIVEREF(__pyx_int_1);
54447  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
54448  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_t_2, __pyx_t_11) < 0)) __PYX_ERR(0, 3090, __pyx_L1_error)
54449  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54450  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54451 
54452  /* "WaveTools.py":3089
54453  * elif mode == "setup":
54454  * series[i,1] = self.eta_setUp(x0,time)
54455  * elif mode == "short": # <<<<<<<<<<<<<<
54456  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time)
54457  * elif mode == "long":
54458  */
54459  goto __pyx_L8;
54460  }
54461 
54462  /* "WaveTools.py":3091
54463  * elif mode == "short":
54464  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time)
54465  * elif mode == "long": # <<<<<<<<<<<<<<
54466  * series[i,1] = self.eta_long(x0,time)
54467  * elif mode == "linear":
54468  */
54469  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_long, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3091, __pyx_L1_error)
54470  if (__pyx_t_4) {
54471 
54472  /* "WaveTools.py":3092
54473  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time)
54474  * elif mode == "long":
54475  * series[i,1] = self.eta_long(x0,time) # <<<<<<<<<<<<<<
54476  * elif mode == "linear":
54477  * series[i,1] = self.eta_linear(x0,time)
54478  */
54479  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_eta_long); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3092, __pyx_L1_error)
54480  __Pyx_GOTREF(__pyx_t_2);
54481  __pyx_t_9 = NULL;
54482  __pyx_t_10 = 0;
54483  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
54484  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
54485  if (likely(__pyx_t_9)) {
54486  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
54487  __Pyx_INCREF(__pyx_t_9);
54488  __Pyx_INCREF(function);
54489  __Pyx_DECREF_SET(__pyx_t_2, function);
54490  __pyx_t_10 = 1;
54491  }
54492  }
54493  #if CYTHON_FAST_PYCALL
54494  if (PyFunction_Check(__pyx_t_2)) {
54495  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_x0, __pyx_v_time};
54496  __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3092, __pyx_L1_error)
54497  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
54498  __Pyx_GOTREF(__pyx_t_11);
54499  } else
54500  #endif
54501  #if CYTHON_FAST_PYCCALL
54502  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
54503  PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_x0, __pyx_v_time};
54504  __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3092, __pyx_L1_error)
54505  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
54506  __Pyx_GOTREF(__pyx_t_11);
54507  } else
54508  #endif
54509  {
54510  __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3092, __pyx_L1_error)
54511  __Pyx_GOTREF(__pyx_t_6);
54512  if (__pyx_t_9) {
54513  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
54514  }
54515  __Pyx_INCREF(__pyx_v_x0);
54516  __Pyx_GIVEREF(__pyx_v_x0);
54517  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_v_x0);
54518  __Pyx_INCREF(__pyx_v_time);
54519  __Pyx_GIVEREF(__pyx_v_time);
54520  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_v_time);
54521  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3092, __pyx_L1_error)
54522  __Pyx_GOTREF(__pyx_t_11);
54523  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
54524  }
54525  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54526  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3092, __pyx_L1_error)
54527  __Pyx_GOTREF(__pyx_t_2);
54528  __Pyx_INCREF(__pyx_v_i);
54529  __Pyx_GIVEREF(__pyx_v_i);
54530  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
54531  __Pyx_INCREF(__pyx_int_1);
54532  __Pyx_GIVEREF(__pyx_int_1);
54533  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
54534  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_t_2, __pyx_t_11) < 0)) __PYX_ERR(0, 3092, __pyx_L1_error)
54535  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54536  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54537 
54538  /* "WaveTools.py":3091
54539  * elif mode == "short":
54540  * series[i,1] = self.eta_short(x0,time) + self.eta_2ndOrder(x0,time)
54541  * elif mode == "long": # <<<<<<<<<<<<<<
54542  * series[i,1] = self.eta_long(x0,time)
54543  * elif mode == "linear":
54544  */
54545  goto __pyx_L8;
54546  }
54547 
54548  /* "WaveTools.py":3093
54549  * elif mode == "long":
54550  * series[i,1] = self.eta_long(x0,time)
54551  * elif mode == "linear": # <<<<<<<<<<<<<<
54552  * series[i,1] = self.eta_linear(x0,time)
54553  * else:
54554  */
54555  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_linear, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3093, __pyx_L1_error)
54556  if (__pyx_t_4) {
54557 
54558  /* "WaveTools.py":3094
54559  * series[i,1] = self.eta_long(x0,time)
54560  * elif mode == "linear":
54561  * series[i,1] = self.eta_linear(x0,time) # <<<<<<<<<<<<<<
54562  * else:
54563  * logEvent('ERROR! Wavetools.pyx: Argument mode in RandomNLWaves.writeEtaSeries should be "all", "setup", "short", "long" or "linear"')
54564  */
54565  __Pyx_INCREF(__pyx_v_self->eta_linear);
54566  __pyx_t_2 = __pyx_v_self->eta_linear; __pyx_t_6 = NULL;
54567  __pyx_t_10 = 0;
54568  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
54569  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
54570  if (likely(__pyx_t_6)) {
54571  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
54572  __Pyx_INCREF(__pyx_t_6);
54573  __Pyx_INCREF(function);
54574  __Pyx_DECREF_SET(__pyx_t_2, function);
54575  __pyx_t_10 = 1;
54576  }
54577  }
54578  #if CYTHON_FAST_PYCALL
54579  if (PyFunction_Check(__pyx_t_2)) {
54580  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x0, __pyx_v_time};
54581  __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3094, __pyx_L1_error)
54582  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
54583  __Pyx_GOTREF(__pyx_t_11);
54584  } else
54585  #endif
54586  #if CYTHON_FAST_PYCCALL
54587  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
54588  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x0, __pyx_v_time};
54589  __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3094, __pyx_L1_error)
54590  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
54591  __Pyx_GOTREF(__pyx_t_11);
54592  } else
54593  #endif
54594  {
54595  __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3094, __pyx_L1_error)
54596  __Pyx_GOTREF(__pyx_t_9);
54597  if (__pyx_t_6) {
54598  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
54599  }
54600  __Pyx_INCREF(__pyx_v_x0);
54601  __Pyx_GIVEREF(__pyx_v_x0);
54602  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_v_x0);
54603  __Pyx_INCREF(__pyx_v_time);
54604  __Pyx_GIVEREF(__pyx_v_time);
54605  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_v_time);
54606  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3094, __pyx_L1_error)
54607  __Pyx_GOTREF(__pyx_t_11);
54608  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54609  }
54610  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54611  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3094, __pyx_L1_error)
54612  __Pyx_GOTREF(__pyx_t_2);
54613  __Pyx_INCREF(__pyx_v_i);
54614  __Pyx_GIVEREF(__pyx_v_i);
54615  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
54616  __Pyx_INCREF(__pyx_int_1);
54617  __Pyx_GIVEREF(__pyx_int_1);
54618  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1);
54619  if (unlikely(PyObject_SetItem(__pyx_v_series, __pyx_t_2, __pyx_t_11) < 0)) __PYX_ERR(0, 3094, __pyx_L1_error)
54620  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54621  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54622 
54623  /* "WaveTools.py":3093
54624  * elif mode == "long":
54625  * series[i,1] = self.eta_long(x0,time)
54626  * elif mode == "linear": # <<<<<<<<<<<<<<
54627  * series[i,1] = self.eta_linear(x0,time)
54628  * else:
54629  */
54630  goto __pyx_L8;
54631  }
54632 
54633  /* "WaveTools.py":3096
54634  * series[i,1] = self.eta_linear(x0,time)
54635  * else:
54636  * logEvent('ERROR! Wavetools.pyx: Argument mode in RandomNLWaves.writeEtaSeries should be "all", "setup", "short", "long" or "linear"') # <<<<<<<<<<<<<<
54637  * sys.exit(1)
54638  * delimiter =" "
54639  */
54640  /*else*/ {
54641  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3096, __pyx_L1_error)
54642  __Pyx_GOTREF(__pyx_t_2);
54643  __pyx_t_9 = NULL;
54644  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
54645  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
54646  if (likely(__pyx_t_9)) {
54647  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
54648  __Pyx_INCREF(__pyx_t_9);
54649  __Pyx_INCREF(function);
54650  __Pyx_DECREF_SET(__pyx_t_2, function);
54651  }
54652  }
54653  __pyx_t_11 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_9, __pyx_kp_s_ERROR_Wavetools_pyx_Argument_mod) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_ERROR_Wavetools_pyx_Argument_mod);
54654  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
54655  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3096, __pyx_L1_error)
54656  __Pyx_GOTREF(__pyx_t_11);
54657  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54658  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54659 
54660  /* "WaveTools.py":3097
54661  * else:
54662  * logEvent('ERROR! Wavetools.pyx: Argument mode in RandomNLWaves.writeEtaSeries should be "all", "setup", "short", "long" or "linear"')
54663  * sys.exit(1) # <<<<<<<<<<<<<<
54664  * delimiter =" "
54665  * if fname[-4:]==".csv":
54666  */
54667  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3097, __pyx_L1_error)
54668  __Pyx_GOTREF(__pyx_t_2);
54669  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3097, __pyx_L1_error)
54670  __Pyx_GOTREF(__pyx_t_9);
54671  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54672  __pyx_t_2 = NULL;
54673  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
54674  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
54675  if (likely(__pyx_t_2)) {
54676  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
54677  __Pyx_INCREF(__pyx_t_2);
54678  __Pyx_INCREF(function);
54679  __Pyx_DECREF_SET(__pyx_t_9, function);
54680  }
54681  }
54682  __pyx_t_11 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_2, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_1);
54683  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
54684  if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3097, __pyx_L1_error)
54685  __Pyx_GOTREF(__pyx_t_11);
54686  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54687  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54688  }
54689  __pyx_L8:;
54690 
54691  /* "WaveTools.py":3083
54692  * series = np.zeros((Nseries,2),)
54693  * series[:,0] = timelst
54694  * for i in range(len(timelst)): # <<<<<<<<<<<<<<
54695  * time = series[i,0]
54696  * if mode == "all":
54697  */
54698  }
54699  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54700 
54701  /* "WaveTools.py":3098
54702  * logEvent('ERROR! Wavetools.pyx: Argument mode in RandomNLWaves.writeEtaSeries should be "all", "setup", "short", "long" or "linear"')
54703  * sys.exit(1)
54704  * delimiter =" " # <<<<<<<<<<<<<<
54705  * if fname[-4:]==".csv":
54706  * delimiter = ","
54707  */
54708  __Pyx_INCREF(__pyx_kp_s__52);
54709  __pyx_v_delimiter = __pyx_kp_s__52;
54710 
54711  /* "WaveTools.py":3099
54712  * sys.exit(1)
54713  * delimiter =" "
54714  * if fname[-4:]==".csv": # <<<<<<<<<<<<<<
54715  * delimiter = ","
54716  * np.savetxt(fname,series,delimiter=delimiter)
54717  */
54718  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fname, -4L, 0, NULL, NULL, &__pyx_slice__42, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3099, __pyx_L1_error)
54719  __Pyx_GOTREF(__pyx_t_1);
54720  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s_csv, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3099, __pyx_L1_error)
54721  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54722  if (__pyx_t_4) {
54723 
54724  /* "WaveTools.py":3100
54725  * delimiter =" "
54726  * if fname[-4:]==".csv":
54727  * delimiter = "," # <<<<<<<<<<<<<<
54728  * np.savetxt(fname,series,delimiter=delimiter)
54729  * return series
54730  */
54731  __Pyx_INCREF(__pyx_kp_s__43);
54732  __Pyx_DECREF_SET(__pyx_v_delimiter, __pyx_kp_s__43);
54733 
54734  /* "WaveTools.py":3099
54735  * sys.exit(1)
54736  * delimiter =" "
54737  * if fname[-4:]==".csv": # <<<<<<<<<<<<<<
54738  * delimiter = ","
54739  * np.savetxt(fname,series,delimiter=delimiter)
54740  */
54741  }
54742 
54743  /* "WaveTools.py":3101
54744  * if fname[-4:]==".csv":
54745  * delimiter = ","
54746  * np.savetxt(fname,series,delimiter=delimiter) # <<<<<<<<<<<<<<
54747  * return series
54748  *
54749  */
54750  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3101, __pyx_L1_error)
54751  __Pyx_GOTREF(__pyx_t_1);
54752  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_savetxt); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3101, __pyx_L1_error)
54753  __Pyx_GOTREF(__pyx_t_11);
54754  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54755  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3101, __pyx_L1_error)
54756  __Pyx_GOTREF(__pyx_t_1);
54757  __Pyx_INCREF(__pyx_v_fname);
54758  __Pyx_GIVEREF(__pyx_v_fname);
54759  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
54760  __Pyx_INCREF(__pyx_v_series);
54761  __Pyx_GIVEREF(__pyx_v_series);
54762  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_series);
54763  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3101, __pyx_L1_error)
54764  __Pyx_GOTREF(__pyx_t_9);
54765  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_delimiter, __pyx_v_delimiter) < 0) __PYX_ERR(0, 3101, __pyx_L1_error)
54766  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3101, __pyx_L1_error)
54767  __Pyx_GOTREF(__pyx_t_2);
54768  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
54769  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54770  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
54771  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54772 
54773  /* "WaveTools.py":3102
54774  * delimiter = ","
54775  * np.savetxt(fname,series,delimiter=delimiter)
54776  * return series # <<<<<<<<<<<<<<
54777  *
54778  * def wtError(self,x,t):
54779  */
54780  __Pyx_XDECREF(__pyx_r);
54781  __Pyx_INCREF(__pyx_v_series);
54782  __pyx_r = __pyx_v_series;
54783  goto __pyx_L0;
54784 
54785  /* "WaveTools.py":3037
54786  *
54787  *
54788  * def writeEtaSeries(self,Tstart,Tend,dt,x0,fname, mode="all",setUp=False, Lgen=np.zeros(3,)): # <<<<<<<<<<<<<<
54789  * """Writes a timeseries of the free-surface elevation
54790  *
54791  */
54792 
54793  /* function exit code */
54794  __pyx_L1_error:;
54795  __Pyx_XDECREF(__pyx_t_1);
54796  __Pyx_XDECREF(__pyx_t_2);
54797  __Pyx_XDECREF(__pyx_t_3);
54798  __Pyx_XDECREF(__pyx_t_6);
54799  __Pyx_XDECREF(__pyx_t_8);
54800  __Pyx_XDECREF(__pyx_t_9);
54801  __Pyx_XDECREF(__pyx_t_11);
54802  __Pyx_AddTraceback("WaveTools.RandomNLWaves.writeEtaSeries", __pyx_clineno, __pyx_lineno, __pyx_filename);
54803  __pyx_r = NULL;
54804  __pyx_L0:;
54805  __Pyx_XDECREF(__pyx_v_Tlag);
54806  __Pyx_XDECREF(__pyx_v_j);
54807  __Pyx_XDECREF(__pyx_v_Nseries);
54808  __Pyx_XDECREF(__pyx_v_timelst);
54809  __Pyx_XDECREF(__pyx_v_series);
54810  __Pyx_XDECREF(__pyx_v_i);
54811  __Pyx_XDECREF(__pyx_v_time);
54812  __Pyx_XDECREF(__pyx_v_delimiter);
54813  __Pyx_XDECREF(__pyx_v_Tstart);
54814  __Pyx_XGIVEREF(__pyx_r);
54815  __Pyx_RefNannyFinishContext();
54816  return __pyx_r;
54817 }
54818 
54819 /* "WaveTools.py":3104
54820  * return series
54821  *
54822  * def wtError(self,x,t): # <<<<<<<<<<<<<<
54823  * """Raises error for using RandomNLWavesFast class instead
54824  *
54825  */
54826 
54827 /* Python wrapper */
54828 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_15wtError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
54829 static char __pyx_doc_9WaveTools_13RandomNLWaves_14wtError[] = "Raises error for using RandomNLWavesFast class instead\n\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n\n Returns\n --------\n None\n\n Raises\n --------\n SystemExit\n\n ";
54830 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_15wtError = {"wtError", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_15wtError, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_14wtError};
54831 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_15wtError(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
54832  CYTHON_UNUSED PyObject *__pyx_v_x = 0;
54833  CYTHON_UNUSED PyObject *__pyx_v_t = 0;
54834  int __pyx_lineno = 0;
54835  const char *__pyx_filename = NULL;
54836  int __pyx_clineno = 0;
54837  PyObject *__pyx_r = 0;
54838  __Pyx_RefNannyDeclarations
54839  __Pyx_RefNannySetupContext("wtError (wrapper)", 0);
54840  {
54841  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,0};
54842  PyObject* values[2] = {0,0};
54843  if (unlikely(__pyx_kwds)) {
54844  Py_ssize_t kw_args;
54845  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
54846  switch (pos_args) {
54847  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
54848  CYTHON_FALLTHROUGH;
54849  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
54850  CYTHON_FALLTHROUGH;
54851  case 0: break;
54852  default: goto __pyx_L5_argtuple_error;
54853  }
54854  kw_args = PyDict_Size(__pyx_kwds);
54855  switch (pos_args) {
54856  case 0:
54857  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
54858  else goto __pyx_L5_argtuple_error;
54859  CYTHON_FALLTHROUGH;
54860  case 1:
54861  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
54862  else {
54863  __Pyx_RaiseArgtupleInvalid("wtError", 1, 2, 2, 1); __PYX_ERR(0, 3104, __pyx_L3_error)
54864  }
54865  }
54866  if (unlikely(kw_args > 0)) {
54867  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wtError") < 0)) __PYX_ERR(0, 3104, __pyx_L3_error)
54868  }
54869  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
54870  goto __pyx_L5_argtuple_error;
54871  } else {
54872  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
54873  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
54874  }
54875  __pyx_v_x = values[0];
54876  __pyx_v_t = values[1];
54877  }
54878  goto __pyx_L4_argument_unpacking_done;
54879  __pyx_L5_argtuple_error:;
54880  __Pyx_RaiseArgtupleInvalid("wtError", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3104, __pyx_L3_error)
54881  __pyx_L3_error:;
54882  __Pyx_AddTraceback("WaveTools.RandomNLWaves.wtError", __pyx_clineno, __pyx_lineno, __pyx_filename);
54883  __Pyx_RefNannyFinishContext();
54884  return NULL;
54885  __pyx_L4_argument_unpacking_done:;
54886  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_14wtError(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), __pyx_v_x, __pyx_v_t);
54887 
54888  /* function exit code */
54889  __Pyx_RefNannyFinishContext();
54890  return __pyx_r;
54891 }
54892 
54893 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_14wtError(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_x, CYTHON_UNUSED PyObject *__pyx_v_t) {
54894  PyObject *__pyx_r = NULL;
54895  __Pyx_RefNannyDeclarations
54896  PyObject *__pyx_t_1 = NULL;
54897  PyObject *__pyx_t_2 = NULL;
54898  PyObject *__pyx_t_3 = NULL;
54899  int __pyx_lineno = 0;
54900  const char *__pyx_filename = NULL;
54901  int __pyx_clineno = 0;
54902  __Pyx_RefNannySetupContext("wtError", 0);
54903 
54904  /* "WaveTools.py":3125
54905  * """
54906  *
54907  * logEvent("ERROR! Wavetools.py: eta and u functions not available for this class. Please use RandomNLWavesFast for generating random waves with nonlinear correction",0) # <<<<<<<<<<<<<<
54908  * sys.exit(1)
54909  *
54910  */
54911  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3125, __pyx_L1_error)
54912  __Pyx_GOTREF(__pyx_t_1);
54913  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3125, __pyx_L1_error)
54914  __Pyx_GOTREF(__pyx_t_2);
54915  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54916  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54917 
54918  /* "WaveTools.py":3126
54919  *
54920  * logEvent("ERROR! Wavetools.py: eta and u functions not available for this class. Please use RandomNLWavesFast for generating random waves with nonlinear correction",0)
54921  * sys.exit(1) # <<<<<<<<<<<<<<
54922  *
54923  *
54924  */
54925  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3126, __pyx_L1_error)
54926  __Pyx_GOTREF(__pyx_t_1);
54927  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3126, __pyx_L1_error)
54928  __Pyx_GOTREF(__pyx_t_3);
54929  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
54930  __pyx_t_1 = NULL;
54931  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
54932  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
54933  if (likely(__pyx_t_1)) {
54934  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
54935  __Pyx_INCREF(__pyx_t_1);
54936  __Pyx_INCREF(function);
54937  __Pyx_DECREF_SET(__pyx_t_3, function);
54938  }
54939  }
54940  __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_1);
54941  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
54942  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3126, __pyx_L1_error)
54943  __Pyx_GOTREF(__pyx_t_2);
54944  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
54945  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
54946 
54947  /* "WaveTools.py":3104
54948  * return series
54949  *
54950  * def wtError(self,x,t): # <<<<<<<<<<<<<<
54951  * """Raises error for using RandomNLWavesFast class instead
54952  *
54953  */
54954 
54955  /* function exit code */
54956  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
54957  goto __pyx_L0;
54958  __pyx_L1_error:;
54959  __Pyx_XDECREF(__pyx_t_1);
54960  __Pyx_XDECREF(__pyx_t_2);
54961  __Pyx_XDECREF(__pyx_t_3);
54962  __Pyx_AddTraceback("WaveTools.RandomNLWaves.wtError", __pyx_clineno, __pyx_lineno, __pyx_filename);
54963  __pyx_r = NULL;
54964  __pyx_L0:;
54965  __Pyx_XGIVEREF(__pyx_r);
54966  __Pyx_RefNannyFinishContext();
54967  return __pyx_r;
54968 }
54969 
54970 /* "WaveTools.pxd":252
54971  * cdef double _cpp_eta_long(self,double* x, double t)
54972  * cdef public:
54973  * object eta # <<<<<<<<<<<<<<
54974  * object u
54975  * object eta_linear
54976  */
54977 
54978 /* Python wrapper */
54979 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_3eta_1__get__(PyObject *__pyx_v_self); /*proto*/
54980 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_3eta_1__get__(PyObject *__pyx_v_self) {
54981  PyObject *__pyx_r = 0;
54982  __Pyx_RefNannyDeclarations
54983  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
54984  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_3eta___get__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
54985 
54986  /* function exit code */
54987  __Pyx_RefNannyFinishContext();
54988  return __pyx_r;
54989 }
54990 
54991 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_3eta___get__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
54992  PyObject *__pyx_r = NULL;
54993  __Pyx_RefNannyDeclarations
54994  __Pyx_RefNannySetupContext("__get__", 0);
54995  __Pyx_XDECREF(__pyx_r);
54996  __Pyx_INCREF(__pyx_v_self->eta);
54997  __pyx_r = __pyx_v_self->eta;
54998  goto __pyx_L0;
54999 
55000  /* function exit code */
55001  __pyx_L0:;
55002  __Pyx_XGIVEREF(__pyx_r);
55003  __Pyx_RefNannyFinishContext();
55004  return __pyx_r;
55005 }
55006 
55007 /* Python wrapper */
55008 static int __pyx_pw_9WaveTools_13RandomNLWaves_3eta_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
55009 static int __pyx_pw_9WaveTools_13RandomNLWaves_3eta_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
55010  int __pyx_r;
55011  __Pyx_RefNannyDeclarations
55012  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
55013  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_3eta_2__set__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
55014 
55015  /* function exit code */
55016  __Pyx_RefNannyFinishContext();
55017  return __pyx_r;
55018 }
55019 
55020 static int __pyx_pf_9WaveTools_13RandomNLWaves_3eta_2__set__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_value) {
55021  int __pyx_r;
55022  __Pyx_RefNannyDeclarations
55023  __Pyx_RefNannySetupContext("__set__", 0);
55024  __Pyx_INCREF(__pyx_v_value);
55025  __Pyx_GIVEREF(__pyx_v_value);
55026  __Pyx_GOTREF(__pyx_v_self->eta);
55027  __Pyx_DECREF(__pyx_v_self->eta);
55028  __pyx_v_self->eta = __pyx_v_value;
55029 
55030  /* function exit code */
55031  __pyx_r = 0;
55032  __Pyx_RefNannyFinishContext();
55033  return __pyx_r;
55034 }
55035 
55036 /* Python wrapper */
55037 static int __pyx_pw_9WaveTools_13RandomNLWaves_3eta_5__del__(PyObject *__pyx_v_self); /*proto*/
55038 static int __pyx_pw_9WaveTools_13RandomNLWaves_3eta_5__del__(PyObject *__pyx_v_self) {
55039  int __pyx_r;
55040  __Pyx_RefNannyDeclarations
55041  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
55042  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_3eta_4__del__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
55043 
55044  /* function exit code */
55045  __Pyx_RefNannyFinishContext();
55046  return __pyx_r;
55047 }
55048 
55049 static int __pyx_pf_9WaveTools_13RandomNLWaves_3eta_4__del__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
55050  int __pyx_r;
55051  __Pyx_RefNannyDeclarations
55052  __Pyx_RefNannySetupContext("__del__", 0);
55053  __Pyx_INCREF(Py_None);
55054  __Pyx_GIVEREF(Py_None);
55055  __Pyx_GOTREF(__pyx_v_self->eta);
55056  __Pyx_DECREF(__pyx_v_self->eta);
55057  __pyx_v_self->eta = Py_None;
55058 
55059  /* function exit code */
55060  __pyx_r = 0;
55061  __Pyx_RefNannyFinishContext();
55062  return __pyx_r;
55063 }
55064 
55065 /* "WaveTools.pxd":253
55066  * cdef public:
55067  * object eta
55068  * object u # <<<<<<<<<<<<<<
55069  * object eta_linear
55070  *
55071  */
55072 
55073 /* Python wrapper */
55074 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_1u_1__get__(PyObject *__pyx_v_self); /*proto*/
55075 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_1u_1__get__(PyObject *__pyx_v_self) {
55076  PyObject *__pyx_r = 0;
55077  __Pyx_RefNannyDeclarations
55078  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
55079  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_1u___get__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
55080 
55081  /* function exit code */
55082  __Pyx_RefNannyFinishContext();
55083  return __pyx_r;
55084 }
55085 
55086 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_1u___get__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
55087  PyObject *__pyx_r = NULL;
55088  __Pyx_RefNannyDeclarations
55089  __Pyx_RefNannySetupContext("__get__", 0);
55090  __Pyx_XDECREF(__pyx_r);
55091  __Pyx_INCREF(__pyx_v_self->u);
55092  __pyx_r = __pyx_v_self->u;
55093  goto __pyx_L0;
55094 
55095  /* function exit code */
55096  __pyx_L0:;
55097  __Pyx_XGIVEREF(__pyx_r);
55098  __Pyx_RefNannyFinishContext();
55099  return __pyx_r;
55100 }
55101 
55102 /* Python wrapper */
55103 static int __pyx_pw_9WaveTools_13RandomNLWaves_1u_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
55104 static int __pyx_pw_9WaveTools_13RandomNLWaves_1u_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
55105  int __pyx_r;
55106  __Pyx_RefNannyDeclarations
55107  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
55108  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_1u_2__set__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
55109 
55110  /* function exit code */
55111  __Pyx_RefNannyFinishContext();
55112  return __pyx_r;
55113 }
55114 
55115 static int __pyx_pf_9WaveTools_13RandomNLWaves_1u_2__set__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_value) {
55116  int __pyx_r;
55117  __Pyx_RefNannyDeclarations
55118  __Pyx_RefNannySetupContext("__set__", 0);
55119  __Pyx_INCREF(__pyx_v_value);
55120  __Pyx_GIVEREF(__pyx_v_value);
55121  __Pyx_GOTREF(__pyx_v_self->u);
55122  __Pyx_DECREF(__pyx_v_self->u);
55123  __pyx_v_self->u = __pyx_v_value;
55124 
55125  /* function exit code */
55126  __pyx_r = 0;
55127  __Pyx_RefNannyFinishContext();
55128  return __pyx_r;
55129 }
55130 
55131 /* Python wrapper */
55132 static int __pyx_pw_9WaveTools_13RandomNLWaves_1u_5__del__(PyObject *__pyx_v_self); /*proto*/
55133 static int __pyx_pw_9WaveTools_13RandomNLWaves_1u_5__del__(PyObject *__pyx_v_self) {
55134  int __pyx_r;
55135  __Pyx_RefNannyDeclarations
55136  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
55137  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_1u_4__del__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
55138 
55139  /* function exit code */
55140  __Pyx_RefNannyFinishContext();
55141  return __pyx_r;
55142 }
55143 
55144 static int __pyx_pf_9WaveTools_13RandomNLWaves_1u_4__del__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
55145  int __pyx_r;
55146  __Pyx_RefNannyDeclarations
55147  __Pyx_RefNannySetupContext("__del__", 0);
55148  __Pyx_INCREF(Py_None);
55149  __Pyx_GIVEREF(Py_None);
55150  __Pyx_GOTREF(__pyx_v_self->u);
55151  __Pyx_DECREF(__pyx_v_self->u);
55152  __pyx_v_self->u = Py_None;
55153 
55154  /* function exit code */
55155  __pyx_r = 0;
55156  __Pyx_RefNannyFinishContext();
55157  return __pyx_r;
55158 }
55159 
55160 /* "WaveTools.pxd":254
55161  * object eta
55162  * object u
55163  * object eta_linear # <<<<<<<<<<<<<<
55164  *
55165  */
55166 
55167 /* Python wrapper */
55168 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_1__get__(PyObject *__pyx_v_self); /*proto*/
55169 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_1__get__(PyObject *__pyx_v_self) {
55170  PyObject *__pyx_r = 0;
55171  __Pyx_RefNannyDeclarations
55172  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
55173  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear___get__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
55174 
55175  /* function exit code */
55176  __Pyx_RefNannyFinishContext();
55177  return __pyx_r;
55178 }
55179 
55180 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear___get__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
55181  PyObject *__pyx_r = NULL;
55182  __Pyx_RefNannyDeclarations
55183  __Pyx_RefNannySetupContext("__get__", 0);
55184  __Pyx_XDECREF(__pyx_r);
55185  __Pyx_INCREF(__pyx_v_self->eta_linear);
55186  __pyx_r = __pyx_v_self->eta_linear;
55187  goto __pyx_L0;
55188 
55189  /* function exit code */
55190  __pyx_L0:;
55191  __Pyx_XGIVEREF(__pyx_r);
55192  __Pyx_RefNannyFinishContext();
55193  return __pyx_r;
55194 }
55195 
55196 /* Python wrapper */
55197 static int __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
55198 static int __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
55199  int __pyx_r;
55200  __Pyx_RefNannyDeclarations
55201  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
55202  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear_2__set__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), ((PyObject *)__pyx_v_value));
55203 
55204  /* function exit code */
55205  __Pyx_RefNannyFinishContext();
55206  return __pyx_r;
55207 }
55208 
55209 static int __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear_2__set__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, PyObject *__pyx_v_value) {
55210  int __pyx_r;
55211  __Pyx_RefNannyDeclarations
55212  __Pyx_RefNannySetupContext("__set__", 0);
55213  __Pyx_INCREF(__pyx_v_value);
55214  __Pyx_GIVEREF(__pyx_v_value);
55215  __Pyx_GOTREF(__pyx_v_self->eta_linear);
55216  __Pyx_DECREF(__pyx_v_self->eta_linear);
55217  __pyx_v_self->eta_linear = __pyx_v_value;
55218 
55219  /* function exit code */
55220  __pyx_r = 0;
55221  __Pyx_RefNannyFinishContext();
55222  return __pyx_r;
55223 }
55224 
55225 /* Python wrapper */
55226 static int __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_5__del__(PyObject *__pyx_v_self); /*proto*/
55227 static int __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_5__del__(PyObject *__pyx_v_self) {
55228  int __pyx_r;
55229  __Pyx_RefNannyDeclarations
55230  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
55231  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear_4__del__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
55232 
55233  /* function exit code */
55234  __Pyx_RefNannyFinishContext();
55235  return __pyx_r;
55236 }
55237 
55238 static int __pyx_pf_9WaveTools_13RandomNLWaves_10eta_linear_4__del__(struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
55239  int __pyx_r;
55240  __Pyx_RefNannyDeclarations
55241  __Pyx_RefNannySetupContext("__del__", 0);
55242  __Pyx_INCREF(Py_None);
55243  __Pyx_GIVEREF(Py_None);
55244  __Pyx_GOTREF(__pyx_v_self->eta_linear);
55245  __Pyx_DECREF(__pyx_v_self->eta_linear);
55246  __pyx_v_self->eta_linear = Py_None;
55247 
55248  /* function exit code */
55249  __pyx_r = 0;
55250  __Pyx_RefNannyFinishContext();
55251  return __pyx_r;
55252 }
55253 
55254 /* "(tree fragment)":1
55255  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
55256  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55257  * def __setstate_cython__(self, __pyx_state):
55258  */
55259 
55260 /* Python wrapper */
55261 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_17__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
55262 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_17__reduce_cython__ = {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_13RandomNLWaves_17__reduce_cython__, METH_NOARGS, 0};
55263 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_17__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
55264  PyObject *__pyx_r = 0;
55265  __Pyx_RefNannyDeclarations
55266  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
55267  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_16__reduce_cython__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self));
55268 
55269  /* function exit code */
55270  __Pyx_RefNannyFinishContext();
55271  return __pyx_r;
55272 }
55273 
55274 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_16__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self) {
55275  PyObject *__pyx_r = NULL;
55276  __Pyx_RefNannyDeclarations
55277  PyObject *__pyx_t_1 = NULL;
55278  int __pyx_lineno = 0;
55279  const char *__pyx_filename = NULL;
55280  int __pyx_clineno = 0;
55281  __Pyx_RefNannySetupContext("__reduce_cython__", 0);
55282 
55283  /* "(tree fragment)":2
55284  * def __reduce_cython__(self):
55285  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
55286  * def __setstate_cython__(self, __pyx_state):
55287  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55288  */
55289  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
55290  __Pyx_GOTREF(__pyx_t_1);
55291  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
55292  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
55293  __PYX_ERR(1, 2, __pyx_L1_error)
55294 
55295  /* "(tree fragment)":1
55296  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
55297  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55298  * def __setstate_cython__(self, __pyx_state):
55299  */
55300 
55301  /* function exit code */
55302  __pyx_L1_error:;
55303  __Pyx_XDECREF(__pyx_t_1);
55304  __Pyx_AddTraceback("WaveTools.RandomNLWaves.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
55305  __pyx_r = NULL;
55306  __Pyx_XGIVEREF(__pyx_r);
55307  __Pyx_RefNannyFinishContext();
55308  return __pyx_r;
55309 }
55310 
55311 /* "(tree fragment)":3
55312  * def __reduce_cython__(self):
55313  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55314  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
55315  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55316  */
55317 
55318 /* Python wrapper */
55319 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_19__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
55320 static PyMethodDef __pyx_mdef_9WaveTools_13RandomNLWaves_19__setstate_cython__ = {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_13RandomNLWaves_19__setstate_cython__, METH_O, 0};
55321 static PyObject *__pyx_pw_9WaveTools_13RandomNLWaves_19__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
55322  PyObject *__pyx_r = 0;
55323  __Pyx_RefNannyDeclarations
55324  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
55325  __pyx_r = __pyx_pf_9WaveTools_13RandomNLWaves_18__setstate_cython__(((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
55326 
55327  /* function exit code */
55328  __Pyx_RefNannyFinishContext();
55329  return __pyx_r;
55330 }
55331 
55332 static PyObject *__pyx_pf_9WaveTools_13RandomNLWaves_18__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
55333  PyObject *__pyx_r = NULL;
55334  __Pyx_RefNannyDeclarations
55335  PyObject *__pyx_t_1 = NULL;
55336  int __pyx_lineno = 0;
55337  const char *__pyx_filename = NULL;
55338  int __pyx_clineno = 0;
55339  __Pyx_RefNannySetupContext("__setstate_cython__", 0);
55340 
55341  /* "(tree fragment)":4
55342  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55343  * def __setstate_cython__(self, __pyx_state):
55344  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
55345  */
55346  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
55347  __Pyx_GOTREF(__pyx_t_1);
55348  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
55349  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
55350  __PYX_ERR(1, 4, __pyx_L1_error)
55351 
55352  /* "(tree fragment)":3
55353  * def __reduce_cython__(self):
55354  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55355  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
55356  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
55357  */
55358 
55359  /* function exit code */
55360  __pyx_L1_error:;
55361  __Pyx_XDECREF(__pyx_t_1);
55362  __Pyx_AddTraceback("WaveTools.RandomNLWaves.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
55363  __pyx_r = NULL;
55364  __Pyx_XGIVEREF(__pyx_r);
55365  __Pyx_RefNannyFinishContext();
55366  return __pyx_r;
55367 }
55368 
55369 /* "WaveTools.py":3180
55370  * Switch for enabling optimised functions
55371  * """
55372  * def __init__(self, # <<<<<<<<<<<<<<
55373  * Tstart,
55374  * Tend,
55375  */
55376 
55377 static PyObject *__pyx_pf_9WaveTools_56__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
55378  PyObject *__pyx_r = NULL;
55379  __Pyx_RefNannyDeclarations
55380  PyObject *__pyx_t_1 = NULL;
55381  PyObject *__pyx_t_2 = NULL;
55382  int __pyx_lineno = 0;
55383  const char *__pyx_filename = NULL;
55384  int __pyx_clineno = 0;
55385  __Pyx_RefNannySetupContext("__defaults__", 0);
55386  __Pyx_XDECREF(__pyx_r);
55387 
55388  /* "WaveTools.py":3199
55389  * Nfreq = 32,
55390  * NLongW = 10.,
55391  * fast = True # <<<<<<<<<<<<<<
55392  * ):
55393  * self.fast = fast
55394  */
55395  __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3180, __pyx_L1_error)
55396  __Pyx_GOTREF(__pyx_t_1);
55397  __Pyx_INCREF(((PyObject *)Py_None));
55398  __Pyx_GIVEREF(((PyObject *)Py_None));
55399  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_None));
55400  __Pyx_INCREF(((PyObject *)Py_None));
55401  __Pyx_GIVEREF(((PyObject *)Py_None));
55402  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)Py_None));
55403  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_Lgen);
55404  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_Lgen);
55405  PyTuple_SET_ITEM(__pyx_t_1, 2, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_Lgen);
55406  __Pyx_INCREF(((PyObject *)__pyx_int_15));
55407  __Pyx_GIVEREF(((PyObject *)__pyx_int_15));
55408  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_int_15));
55409  __Pyx_INCREF(((PyObject *)__pyx_int_32));
55410  __Pyx_GIVEREF(((PyObject *)__pyx_int_32));
55411  PyTuple_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_int_32));
55412  __Pyx_INCREF(((PyObject*)__pyx_float_10_));
55413  __Pyx_GIVEREF(((PyObject*)__pyx_float_10_));
55414  PyTuple_SET_ITEM(__pyx_t_1, 5, ((PyObject*)__pyx_float_10_));
55415  __Pyx_INCREF(((PyObject *)Py_True));
55416  __Pyx_GIVEREF(((PyObject *)Py_True));
55417  PyTuple_SET_ITEM(__pyx_t_1, 6, ((PyObject *)Py_True));
55418 
55419  /* "WaveTools.py":3180
55420  * Switch for enabling optimised functions
55421  * """
55422  * def __init__(self, # <<<<<<<<<<<<<<
55423  * Tstart,
55424  * Tend,
55425  */
55426  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3180, __pyx_L1_error)
55427  __Pyx_GOTREF(__pyx_t_2);
55428  __Pyx_GIVEREF(__pyx_t_1);
55429  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
55430  __Pyx_INCREF(Py_None);
55431  __Pyx_GIVEREF(Py_None);
55432  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
55433  __pyx_t_1 = 0;
55434  __pyx_r = __pyx_t_2;
55435  __pyx_t_2 = 0;
55436  goto __pyx_L0;
55437 
55438  /* function exit code */
55439  __pyx_L1_error:;
55440  __Pyx_XDECREF(__pyx_t_1);
55441  __Pyx_XDECREF(__pyx_t_2);
55442  __Pyx_AddTraceback("WaveTools.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
55443  __pyx_r = NULL;
55444  __pyx_L0:;
55445  __Pyx_XGIVEREF(__pyx_r);
55446  __Pyx_RefNannyFinishContext();
55447  return __pyx_r;
55448 }
55449 
55450 /* Python wrapper */
55451 static PyObject *__pyx_pw_9WaveTools_17RandomNLWavesFast_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
55452 static PyMethodDef __pyx_mdef_9WaveTools_17RandomNLWavesFast_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_17RandomNLWavesFast_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
55453 static PyObject *__pyx_pw_9WaveTools_17RandomNLWavesFast_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
55454  PyObject *__pyx_v_self = 0;
55455  PyObject *__pyx_v_Tstart = 0;
55456  PyObject *__pyx_v_Tend = 0;
55457  PyObject *__pyx_v_x0 = 0;
55458  PyObject *__pyx_v_Tp = 0;
55459  PyObject *__pyx_v_Hs = 0;
55460  PyObject *__pyx_v_mwl = 0;
55461  PyObject *__pyx_v_depth = 0;
55462  PyObject *__pyx_v_waveDir = 0;
55463  PyObject *__pyx_v_g = 0;
55464  PyObject *__pyx_v_N = 0;
55465  PyObject *__pyx_v_bandFactor = 0;
55466  PyObject *__pyx_v_spectName = 0;
55467  PyObject *__pyx_v_spectral_params = 0;
55468  PyObject *__pyx_v_phi = 0;
55469  PyObject *__pyx_v_Lgen = 0;
55470  PyObject *__pyx_v_Nwaves = 0;
55471  PyObject *__pyx_v_Nfreq = 0;
55472  PyObject *__pyx_v_NLongW = 0;
55473  PyObject *__pyx_v_fast = 0;
55474  int __pyx_lineno = 0;
55475  const char *__pyx_filename = NULL;
55476  int __pyx_clineno = 0;
55477  PyObject *__pyx_r = 0;
55478  __Pyx_RefNannyDeclarations
55479  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
55480  {
55481  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Tstart,&__pyx_n_s_Tend,&__pyx_n_s_x0,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,&__pyx_n_s_Lgen,&__pyx_n_s_Nwaves,&__pyx_n_s_Nfreq,&__pyx_n_s_NLongW,&__pyx_n_s_fast,0};
55482  PyObject* values[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
55483  __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
55484  values[13] = ((PyObject *)((PyObject *)Py_None));
55485  values[14] = ((PyObject *)((PyObject *)Py_None));
55486  values[15] = __pyx_dynamic_args->__pyx_arg_Lgen;
55487  values[16] = ((PyObject *)((PyObject *)__pyx_int_15));
55488  values[17] = ((PyObject *)((PyObject *)__pyx_int_32));
55489  values[18] = ((PyObject *)((PyObject*)__pyx_float_10_));
55490  values[19] = ((PyObject *)((PyObject *)Py_True));
55491  if (unlikely(__pyx_kwds)) {
55492  Py_ssize_t kw_args;
55493  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
55494  switch (pos_args) {
55495  case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
55496  CYTHON_FALLTHROUGH;
55497  case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
55498  CYTHON_FALLTHROUGH;
55499  case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
55500  CYTHON_FALLTHROUGH;
55501  case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
55502  CYTHON_FALLTHROUGH;
55503  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
55504  CYTHON_FALLTHROUGH;
55505  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
55506  CYTHON_FALLTHROUGH;
55507  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
55508  CYTHON_FALLTHROUGH;
55509  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
55510  CYTHON_FALLTHROUGH;
55511  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
55512  CYTHON_FALLTHROUGH;
55513  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
55514  CYTHON_FALLTHROUGH;
55515  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
55516  CYTHON_FALLTHROUGH;
55517  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
55518  CYTHON_FALLTHROUGH;
55519  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
55520  CYTHON_FALLTHROUGH;
55521  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
55522  CYTHON_FALLTHROUGH;
55523  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
55524  CYTHON_FALLTHROUGH;
55525  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
55526  CYTHON_FALLTHROUGH;
55527  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
55528  CYTHON_FALLTHROUGH;
55529  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
55530  CYTHON_FALLTHROUGH;
55531  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
55532  CYTHON_FALLTHROUGH;
55533  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
55534  CYTHON_FALLTHROUGH;
55535  case 0: break;
55536  default: goto __pyx_L5_argtuple_error;
55537  }
55538  kw_args = PyDict_Size(__pyx_kwds);
55539  switch (pos_args) {
55540  case 0:
55541  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
55542  else goto __pyx_L5_argtuple_error;
55543  CYTHON_FALLTHROUGH;
55544  case 1:
55545  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tstart)) != 0)) kw_args--;
55546  else {
55547  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 1); __PYX_ERR(0, 3180, __pyx_L3_error)
55548  }
55549  CYTHON_FALLTHROUGH;
55550  case 2:
55551  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tend)) != 0)) kw_args--;
55552  else {
55553  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 2); __PYX_ERR(0, 3180, __pyx_L3_error)
55554  }
55555  CYTHON_FALLTHROUGH;
55556  case 3:
55557  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
55558  else {
55559  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 3); __PYX_ERR(0, 3180, __pyx_L3_error)
55560  }
55561  CYTHON_FALLTHROUGH;
55562  case 4:
55563  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
55564  else {
55565  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 4); __PYX_ERR(0, 3180, __pyx_L3_error)
55566  }
55567  CYTHON_FALLTHROUGH;
55568  case 5:
55569  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
55570  else {
55571  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 5); __PYX_ERR(0, 3180, __pyx_L3_error)
55572  }
55573  CYTHON_FALLTHROUGH;
55574  case 6:
55575  if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
55576  else {
55577  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 6); __PYX_ERR(0, 3180, __pyx_L3_error)
55578  }
55579  CYTHON_FALLTHROUGH;
55580  case 7:
55581  if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
55582  else {
55583  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 7); __PYX_ERR(0, 3180, __pyx_L3_error)
55584  }
55585  CYTHON_FALLTHROUGH;
55586  case 8:
55587  if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
55588  else {
55589  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 8); __PYX_ERR(0, 3180, __pyx_L3_error)
55590  }
55591  CYTHON_FALLTHROUGH;
55592  case 9:
55593  if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
55594  else {
55595  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 9); __PYX_ERR(0, 3180, __pyx_L3_error)
55596  }
55597  CYTHON_FALLTHROUGH;
55598  case 10:
55599  if (likely((values[10] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
55600  else {
55601  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 10); __PYX_ERR(0, 3180, __pyx_L3_error)
55602  }
55603  CYTHON_FALLTHROUGH;
55604  case 11:
55605  if (likely((values[11] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
55606  else {
55607  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 11); __PYX_ERR(0, 3180, __pyx_L3_error)
55608  }
55609  CYTHON_FALLTHROUGH;
55610  case 12:
55611  if (likely((values[12] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
55612  else {
55613  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, 12); __PYX_ERR(0, 3180, __pyx_L3_error)
55614  }
55615  CYTHON_FALLTHROUGH;
55616  case 13:
55617  if (kw_args > 0) {
55618  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spectral_params);
55619  if (value) { values[13] = value; kw_args--; }
55620  }
55621  CYTHON_FALLTHROUGH;
55622  case 14:
55623  if (kw_args > 0) {
55624  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_phi);
55625  if (value) { values[14] = value; kw_args--; }
55626  }
55627  CYTHON_FALLTHROUGH;
55628  case 15:
55629  if (kw_args > 0) {
55630  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Lgen);
55631  if (value) { values[15] = value; kw_args--; }
55632  }
55633  CYTHON_FALLTHROUGH;
55634  case 16:
55635  if (kw_args > 0) {
55636  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nwaves);
55637  if (value) { values[16] = value; kw_args--; }
55638  }
55639  CYTHON_FALLTHROUGH;
55640  case 17:
55641  if (kw_args > 0) {
55642  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nfreq);
55643  if (value) { values[17] = value; kw_args--; }
55644  }
55645  CYTHON_FALLTHROUGH;
55646  case 18:
55647  if (kw_args > 0) {
55648  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_NLongW);
55649  if (value) { values[18] = value; kw_args--; }
55650  }
55651  CYTHON_FALLTHROUGH;
55652  case 19:
55653  if (kw_args > 0) {
55654  PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fast);
55655  if (value) { values[19] = value; kw_args--; }
55656  }
55657  }
55658  if (unlikely(kw_args > 0)) {
55659  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 3180, __pyx_L3_error)
55660  }
55661  } else {
55662  switch (PyTuple_GET_SIZE(__pyx_args)) {
55663  case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
55664  CYTHON_FALLTHROUGH;
55665  case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
55666  CYTHON_FALLTHROUGH;
55667  case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
55668  CYTHON_FALLTHROUGH;
55669  case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
55670  CYTHON_FALLTHROUGH;
55671  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
55672  CYTHON_FALLTHROUGH;
55673  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
55674  CYTHON_FALLTHROUGH;
55675  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
55676  CYTHON_FALLTHROUGH;
55677  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
55678  values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
55679  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
55680  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
55681  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
55682  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
55683  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
55684  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
55685  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
55686  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
55687  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
55688  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
55689  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
55690  break;
55691  default: goto __pyx_L5_argtuple_error;
55692  }
55693  }
55694  __pyx_v_self = values[0];
55695  __pyx_v_Tstart = values[1];
55696  __pyx_v_Tend = values[2];
55697  __pyx_v_x0 = values[3];
55698  __pyx_v_Tp = values[4];
55699  __pyx_v_Hs = values[5];
55700  __pyx_v_mwl = values[6];
55701  __pyx_v_depth = values[7];
55702  __pyx_v_waveDir = values[8];
55703  __pyx_v_g = values[9];
55704  __pyx_v_N = values[10];
55705  __pyx_v_bandFactor = values[11];
55706  __pyx_v_spectName = values[12];
55707  __pyx_v_spectral_params = values[13];
55708  __pyx_v_phi = values[14];
55709  __pyx_v_Lgen = values[15];
55710  __pyx_v_Nwaves = values[16];
55711  __pyx_v_Nfreq = values[17];
55712  __pyx_v_NLongW = values[18];
55713  __pyx_v_fast = values[19];
55714  }
55715  goto __pyx_L4_argument_unpacking_done;
55716  __pyx_L5_argtuple_error:;
55717  __Pyx_RaiseArgtupleInvalid("__init__", 0, 13, 20, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3180, __pyx_L3_error)
55718  __pyx_L3_error:;
55719  __Pyx_AddTraceback("WaveTools.RandomNLWavesFast.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
55720  __Pyx_RefNannyFinishContext();
55721  return NULL;
55722  __pyx_L4_argument_unpacking_done:;
55723  __pyx_r = __pyx_pf_9WaveTools_17RandomNLWavesFast___init__(__pyx_self, __pyx_v_self, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_x0, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi, __pyx_v_Lgen, __pyx_v_Nwaves, __pyx_v_Nfreq, __pyx_v_NLongW, __pyx_v_fast);
55724 
55725  /* function exit code */
55726  __Pyx_RefNannyFinishContext();
55727  return __pyx_r;
55728 }
55729 
55730 static PyObject *__pyx_pf_9WaveTools_17RandomNLWavesFast___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tstart, PyObject *__pyx_v_Tend, PyObject *__pyx_v_x0, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_Lgen, PyObject *__pyx_v_Nwaves, PyObject *__pyx_v_Nfreq, PyObject *__pyx_v_NLongW, PyObject *__pyx_v_fast) {
55731  struct __pyx_obj_9WaveTools_RandomWaves *__pyx_v_aR = NULL;
55732  struct __pyx_obj_9WaveTools_RandomNLWaves *__pyx_v_aRN = NULL;
55733  PyObject *__pyx_v_Tmax = NULL;
55734  PyObject *__pyx_v_modes = NULL;
55735  PyObject *__pyx_v_periods = NULL;
55736  PyObject *__pyx_v_ii = NULL;
55737  PyObject *__pyx_v_mode = NULL;
55738  PyObject *__pyx_v_fname = NULL;
55739  PyObject *__pyx_v_dt = NULL;
55740  PyObject *__pyx_v_series = NULL;
55741  PyObject *__pyx_v_Tstart_temp = NULL;
55742  PyObject *__pyx_v_cutoff = NULL;
55743  PyObject *__pyx_v_Nwaves_tot = NULL;
55744  PyObject *__pyx_v_Nwind = NULL;
55745  int __pyx_v_rec_d;
55746  PyObject *__pyx_r = NULL;
55747  __Pyx_RefNannyDeclarations
55748  PyObject *__pyx_t_1 = NULL;
55749  PyObject *__pyx_t_2 = NULL;
55750  PyObject *__pyx_t_3 = NULL;
55751  PyObject *__pyx_t_4 = NULL;
55752  int __pyx_t_5;
55753  PyObject *__pyx_t_6 = NULL;
55754  Py_ssize_t __pyx_t_7;
55755  PyObject *__pyx_t_8 = NULL;
55756  PyObject *__pyx_t_9 = NULL;
55757  int __pyx_t_10;
55758  int __pyx_t_11;
55759  int __pyx_lineno = 0;
55760  const char *__pyx_filename = NULL;
55761  int __pyx_clineno = 0;
55762  __Pyx_RefNannySetupContext("__init__", 0);
55763  __Pyx_INCREF(__pyx_v_Nwaves);
55764 
55765  /* "WaveTools.py":3201
55766  * fast = True
55767  * ):
55768  * self.fast = fast # <<<<<<<<<<<<<<
55769  * aR = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast)
55770  * aRN = RandomNLWaves(Tstart,Tend,Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi, fast = self.fast)
55771  */
55772  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fast, __pyx_v_fast) < 0) __PYX_ERR(0, 3201, __pyx_L1_error)
55773 
55774  /* "WaveTools.py":3202
55775  * ):
55776  * self.fast = fast
55777  * aR = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast) # <<<<<<<<<<<<<<
55778  * aRN = RandomNLWaves(Tstart,Tend,Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi, fast = self.fast)
55779  * self.omega = aR.omega
55780  */
55781  __pyx_t_1 = PyTuple_New(11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3202, __pyx_L1_error)
55782  __Pyx_GOTREF(__pyx_t_1);
55783  __Pyx_INCREF(__pyx_v_Tp);
55784  __Pyx_GIVEREF(__pyx_v_Tp);
55785  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_Tp);
55786  __Pyx_INCREF(__pyx_v_Hs);
55787  __Pyx_GIVEREF(__pyx_v_Hs);
55788  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_Hs);
55789  __Pyx_INCREF(__pyx_v_mwl);
55790  __Pyx_GIVEREF(__pyx_v_mwl);
55791  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_mwl);
55792  __Pyx_INCREF(__pyx_v_depth);
55793  __Pyx_GIVEREF(__pyx_v_depth);
55794  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_depth);
55795  __Pyx_INCREF(__pyx_v_waveDir);
55796  __Pyx_GIVEREF(__pyx_v_waveDir);
55797  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_waveDir);
55798  __Pyx_INCREF(__pyx_v_g);
55799  __Pyx_GIVEREF(__pyx_v_g);
55800  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_g);
55801  __Pyx_INCREF(__pyx_v_N);
55802  __Pyx_GIVEREF(__pyx_v_N);
55803  PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_v_N);
55804  __Pyx_INCREF(__pyx_v_bandFactor);
55805  __Pyx_GIVEREF(__pyx_v_bandFactor);
55806  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_v_bandFactor);
55807  __Pyx_INCREF(__pyx_v_spectName);
55808  __Pyx_GIVEREF(__pyx_v_spectName);
55809  PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_v_spectName);
55810  __Pyx_INCREF(__pyx_v_spectral_params);
55811  __Pyx_GIVEREF(__pyx_v_spectral_params);
55812  PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_v_spectral_params);
55813  __Pyx_INCREF(__pyx_v_phi);
55814  __Pyx_GIVEREF(__pyx_v_phi);
55815  PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_v_phi);
55816  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3202, __pyx_L1_error)
55817  __Pyx_GOTREF(__pyx_t_2);
55818  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fast); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3202, __pyx_L1_error)
55819  __Pyx_GOTREF(__pyx_t_3);
55820  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fast, __pyx_t_3) < 0) __PYX_ERR(0, 3202, __pyx_L1_error)
55821  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
55822  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_RandomWaves), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3202, __pyx_L1_error)
55823  __Pyx_GOTREF(__pyx_t_3);
55824  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
55825  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
55826  __pyx_v_aR = ((struct __pyx_obj_9WaveTools_RandomWaves *)__pyx_t_3);
55827  __pyx_t_3 = 0;
55828 
55829  /* "WaveTools.py":3203
55830  * self.fast = fast
55831  * aR = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast)
55832  * aRN = RandomNLWaves(Tstart,Tend,Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi, fast = self.fast) # <<<<<<<<<<<<<<
55833  * self.omega = aR.omega
55834  * self.mwl = mwl
55835  */
55836  __pyx_t_3 = PyTuple_New(13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3203, __pyx_L1_error)
55837  __Pyx_GOTREF(__pyx_t_3);
55838  __Pyx_INCREF(__pyx_v_Tstart);
55839  __Pyx_GIVEREF(__pyx_v_Tstart);
55840  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_Tstart);
55841  __Pyx_INCREF(__pyx_v_Tend);
55842  __Pyx_GIVEREF(__pyx_v_Tend);
55843  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_Tend);
55844  __Pyx_INCREF(__pyx_v_Tp);
55845  __Pyx_GIVEREF(__pyx_v_Tp);
55846  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_Tp);
55847  __Pyx_INCREF(__pyx_v_Hs);
55848  __Pyx_GIVEREF(__pyx_v_Hs);
55849  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_Hs);
55850  __Pyx_INCREF(__pyx_v_mwl);
55851  __Pyx_GIVEREF(__pyx_v_mwl);
55852  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_mwl);
55853  __Pyx_INCREF(__pyx_v_depth);
55854  __Pyx_GIVEREF(__pyx_v_depth);
55855  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_depth);
55856  __Pyx_INCREF(__pyx_v_waveDir);
55857  __Pyx_GIVEREF(__pyx_v_waveDir);
55858  PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_waveDir);
55859  __Pyx_INCREF(__pyx_v_g);
55860  __Pyx_GIVEREF(__pyx_v_g);
55861  PyTuple_SET_ITEM(__pyx_t_3, 7, __pyx_v_g);
55862  __Pyx_INCREF(__pyx_v_N);
55863  __Pyx_GIVEREF(__pyx_v_N);
55864  PyTuple_SET_ITEM(__pyx_t_3, 8, __pyx_v_N);
55865  __Pyx_INCREF(__pyx_v_bandFactor);
55866  __Pyx_GIVEREF(__pyx_v_bandFactor);
55867  PyTuple_SET_ITEM(__pyx_t_3, 9, __pyx_v_bandFactor);
55868  __Pyx_INCREF(__pyx_v_spectName);
55869  __Pyx_GIVEREF(__pyx_v_spectName);
55870  PyTuple_SET_ITEM(__pyx_t_3, 10, __pyx_v_spectName);
55871  __Pyx_INCREF(__pyx_v_spectral_params);
55872  __Pyx_GIVEREF(__pyx_v_spectral_params);
55873  PyTuple_SET_ITEM(__pyx_t_3, 11, __pyx_v_spectral_params);
55874  __Pyx_INCREF(__pyx_v_phi);
55875  __Pyx_GIVEREF(__pyx_v_phi);
55876  PyTuple_SET_ITEM(__pyx_t_3, 12, __pyx_v_phi);
55877  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3203, __pyx_L1_error)
55878  __Pyx_GOTREF(__pyx_t_2);
55879  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fast); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3203, __pyx_L1_error)
55880  __Pyx_GOTREF(__pyx_t_1);
55881  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fast, __pyx_t_1) < 0) __PYX_ERR(0, 3203, __pyx_L1_error)
55882  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
55883  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves), __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3203, __pyx_L1_error)
55884  __Pyx_GOTREF(__pyx_t_1);
55885  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
55886  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
55887  __pyx_v_aRN = ((struct __pyx_obj_9WaveTools_RandomNLWaves *)__pyx_t_1);
55888  __pyx_t_1 = 0;
55889 
55890  /* "WaveTools.py":3204
55891  * aR = RandomWaves(Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi,fast = self.fast)
55892  * aRN = RandomNLWaves(Tstart,Tend,Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi, fast = self.fast)
55893  * self.omega = aR.omega # <<<<<<<<<<<<<<
55894  * self.mwl = mwl
55895  *
55896  */
55897  __pyx_t_1 = ((PyObject *)__pyx_v_aR->omega);
55898  __Pyx_INCREF(__pyx_t_1);
55899  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_1) < 0) __PYX_ERR(0, 3204, __pyx_L1_error)
55900  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
55901 
55902  /* "WaveTools.py":3205
55903  * aRN = RandomNLWaves(Tstart,Tend,Tp,Hs,mwl,depth,waveDir,g,N,bandFactor,spectName,spectral_params,phi, fast = self.fast)
55904  * self.omega = aR.omega
55905  * self.mwl = mwl # <<<<<<<<<<<<<<
55906  *
55907  * Tmax = NLongW*Tp/1.1
55908  */
55909  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) __PYX_ERR(0, 3205, __pyx_L1_error)
55910 
55911  /* "WaveTools.py":3207
55912  * self.mwl = mwl
55913  *
55914  * Tmax = NLongW*Tp/1.1 # <<<<<<<<<<<<<<
55915  * modes = ["short","linear","long"]
55916  * periods = [Tp/2./1.1,old_div(Tp,1.1), Tmax]
55917  */
55918  __pyx_t_1 = PyNumber_Multiply(__pyx_v_NLongW, __pyx_v_Tp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error)
55919  __Pyx_GOTREF(__pyx_t_1);
55920  __pyx_t_2 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_1, __pyx_float_1_1, 1.1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error)
55921  __Pyx_GOTREF(__pyx_t_2);
55922  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
55923  __pyx_v_Tmax = __pyx_t_2;
55924  __pyx_t_2 = 0;
55925 
55926  /* "WaveTools.py":3208
55927  *
55928  * Tmax = NLongW*Tp/1.1
55929  * modes = ["short","linear","long"] # <<<<<<<<<<<<<<
55930  * periods = [Tp/2./1.1,old_div(Tp,1.1), Tmax]
55931  * self.TS= []
55932  */
55933  __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3208, __pyx_L1_error)
55934  __Pyx_GOTREF(__pyx_t_2);
55935  __Pyx_INCREF(__pyx_n_s_short);
55936  __Pyx_GIVEREF(__pyx_n_s_short);
55937  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_short);
55938  __Pyx_INCREF(__pyx_n_s_linear);
55939  __Pyx_GIVEREF(__pyx_n_s_linear);
55940  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_linear);
55941  __Pyx_INCREF(__pyx_n_s_long);
55942  __Pyx_GIVEREF(__pyx_n_s_long);
55943  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_long);
55944  __pyx_v_modes = ((PyObject*)__pyx_t_2);
55945  __pyx_t_2 = 0;
55946 
55947  /* "WaveTools.py":3209
55948  * Tmax = NLongW*Tp/1.1
55949  * modes = ["short","linear","long"]
55950  * periods = [Tp/2./1.1,old_div(Tp,1.1), Tmax] # <<<<<<<<<<<<<<
55951  * self.TS= []
55952  * ii = -1
55953  */
55954  __pyx_t_2 = __Pyx_PyFloat_TrueDivideObjC(__pyx_v_Tp, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error)
55955  __Pyx_GOTREF(__pyx_t_2);
55956  __pyx_t_1 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_2, __pyx_float_1_1, 1.1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3209, __pyx_L1_error)
55957  __Pyx_GOTREF(__pyx_t_1);
55958  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
55959  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_old_div); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3209, __pyx_L1_error)
55960  __Pyx_GOTREF(__pyx_t_3);
55961  __pyx_t_4 = NULL;
55962  __pyx_t_5 = 0;
55963  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
55964  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
55965  if (likely(__pyx_t_4)) {
55966  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
55967  __Pyx_INCREF(__pyx_t_4);
55968  __Pyx_INCREF(function);
55969  __Pyx_DECREF_SET(__pyx_t_3, function);
55970  __pyx_t_5 = 1;
55971  }
55972  }
55973  #if CYTHON_FAST_PYCALL
55974  if (PyFunction_Check(__pyx_t_3)) {
55975  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Tp, __pyx_float_1_1};
55976  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error)
55977  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
55978  __Pyx_GOTREF(__pyx_t_2);
55979  } else
55980  #endif
55981  #if CYTHON_FAST_PYCCALL
55982  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
55983  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Tp, __pyx_float_1_1};
55984  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error)
55985  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
55986  __Pyx_GOTREF(__pyx_t_2);
55987  } else
55988  #endif
55989  {
55990  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3209, __pyx_L1_error)
55991  __Pyx_GOTREF(__pyx_t_6);
55992  if (__pyx_t_4) {
55993  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
55994  }
55995  __Pyx_INCREF(__pyx_v_Tp);
55996  __Pyx_GIVEREF(__pyx_v_Tp);
55997  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_Tp);
55998  __Pyx_INCREF(__pyx_float_1_1);
55999  __Pyx_GIVEREF(__pyx_float_1_1);
56000  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_float_1_1);
56001  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error)
56002  __Pyx_GOTREF(__pyx_t_2);
56003  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
56004  }
56005  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
56006  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3209, __pyx_L1_error)
56007  __Pyx_GOTREF(__pyx_t_3);
56008  __Pyx_GIVEREF(__pyx_t_1);
56009  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
56010  __Pyx_GIVEREF(__pyx_t_2);
56011  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
56012  __Pyx_INCREF(__pyx_v_Tmax);
56013  __Pyx_GIVEREF(__pyx_v_Tmax);
56014  PyList_SET_ITEM(__pyx_t_3, 2, __pyx_v_Tmax);
56015  __pyx_t_1 = 0;
56016  __pyx_t_2 = 0;
56017  __pyx_v_periods = ((PyObject*)__pyx_t_3);
56018  __pyx_t_3 = 0;
56019 
56020  /* "WaveTools.py":3210
56021  * modes = ["short","linear","long"]
56022  * periods = [Tp/2./1.1,old_div(Tp,1.1), Tmax]
56023  * self.TS= [] # <<<<<<<<<<<<<<
56024  * ii = -1
56025  * for mode in modes:
56026  */
56027  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3210, __pyx_L1_error)
56028  __Pyx_GOTREF(__pyx_t_3);
56029  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_TS, __pyx_t_3) < 0) __PYX_ERR(0, 3210, __pyx_L1_error)
56030  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
56031 
56032  /* "WaveTools.py":3211
56033  * periods = [Tp/2./1.1,old_div(Tp,1.1), Tmax]
56034  * self.TS= []
56035  * ii = -1 # <<<<<<<<<<<<<<
56036  * for mode in modes:
56037  * logEvent("INFO: Calculating nonlinear corrections for "+mode+" waves. This may take a while")
56038  */
56039  __Pyx_INCREF(__pyx_int_neg_1);
56040  __pyx_v_ii = __pyx_int_neg_1;
56041 
56042  /* "WaveTools.py":3212
56043  * self.TS= []
56044  * ii = -1
56045  * for mode in modes: # <<<<<<<<<<<<<<
56046  * logEvent("INFO: Calculating nonlinear corrections for "+mode+" waves. This may take a while")
56047  * ii+=1
56048  */
56049  __pyx_t_3 = __pyx_v_modes; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
56050  for (;;) {
56051  if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
56052  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
56053  __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error)
56054  #else
56055  __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3212, __pyx_L1_error)
56056  __Pyx_GOTREF(__pyx_t_2);
56057  #endif
56058  __Pyx_XDECREF_SET(__pyx_v_mode, __pyx_t_2);
56059  __pyx_t_2 = 0;
56060 
56061  /* "WaveTools.py":3213
56062  * ii = -1
56063  * for mode in modes:
56064  * logEvent("INFO: Calculating nonlinear corrections for "+mode+" waves. This may take a while") # <<<<<<<<<<<<<<
56065  * ii+=1
56066  * fname = "randomNLWaves_"+mode+".csv"
56067  */
56068  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3213, __pyx_L1_error)
56069  __Pyx_GOTREF(__pyx_t_1);
56070  __pyx_t_6 = PyNumber_Add(__pyx_kp_s_INFO_Calculating_nonlinear_corre, __pyx_v_mode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3213, __pyx_L1_error)
56071  __Pyx_GOTREF(__pyx_t_6);
56072  __pyx_t_4 = PyNumber_Add(__pyx_t_6, __pyx_kp_s_waves_This_may_take_a_while); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3213, __pyx_L1_error)
56073  __Pyx_GOTREF(__pyx_t_4);
56074  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
56075  __pyx_t_6 = NULL;
56076  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
56077  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
56078  if (likely(__pyx_t_6)) {
56079  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
56080  __Pyx_INCREF(__pyx_t_6);
56081  __Pyx_INCREF(function);
56082  __Pyx_DECREF_SET(__pyx_t_1, function);
56083  }
56084  }
56085  __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4);
56086  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56087  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56088  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3213, __pyx_L1_error)
56089  __Pyx_GOTREF(__pyx_t_2);
56090  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56091  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56092 
56093  /* "WaveTools.py":3214
56094  * for mode in modes:
56095  * logEvent("INFO: Calculating nonlinear corrections for "+mode+" waves. This may take a while")
56096  * ii+=1 # <<<<<<<<<<<<<<
56097  * fname = "randomNLWaves_"+mode+".csv"
56098  * dt = old_div(periods[ii],50.)
56099  */
56100  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_ii, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3214, __pyx_L1_error)
56101  __Pyx_GOTREF(__pyx_t_2);
56102  __Pyx_DECREF_SET(__pyx_v_ii, __pyx_t_2);
56103  __pyx_t_2 = 0;
56104 
56105  /* "WaveTools.py":3215
56106  * logEvent("INFO: Calculating nonlinear corrections for "+mode+" waves. This may take a while")
56107  * ii+=1
56108  * fname = "randomNLWaves_"+mode+".csv" # <<<<<<<<<<<<<<
56109  * dt = old_div(periods[ii],50.)
56110  * series = aRN.writeEtaSeries(Tstart,Tend,dt,x0,fname,mode,False,Lgen)
56111  */
56112  __pyx_t_2 = PyNumber_Add(__pyx_n_s_randomNLWaves, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3215, __pyx_L1_error)
56113  __Pyx_GOTREF(__pyx_t_2);
56114  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_csv); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3215, __pyx_L1_error)
56115  __Pyx_GOTREF(__pyx_t_1);
56116  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56117  __Pyx_XDECREF_SET(__pyx_v_fname, __pyx_t_1);
56118  __pyx_t_1 = 0;
56119 
56120  /* "WaveTools.py":3216
56121  * ii+=1
56122  * fname = "randomNLWaves_"+mode+".csv"
56123  * dt = old_div(periods[ii],50.) # <<<<<<<<<<<<<<
56124  * series = aRN.writeEtaSeries(Tstart,Tend,dt,x0,fname,mode,False,Lgen)
56125  * Tstart_temp = series[0,0]
56126  */
56127  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3216, __pyx_L1_error)
56128  __Pyx_GOTREF(__pyx_t_2);
56129  __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_periods, __pyx_v_ii); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3216, __pyx_L1_error)
56130  __Pyx_GOTREF(__pyx_t_4);
56131  __pyx_t_6 = NULL;
56132  __pyx_t_5 = 0;
56133  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
56134  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
56135  if (likely(__pyx_t_6)) {
56136  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
56137  __Pyx_INCREF(__pyx_t_6);
56138  __Pyx_INCREF(function);
56139  __Pyx_DECREF_SET(__pyx_t_2, function);
56140  __pyx_t_5 = 1;
56141  }
56142  }
56143  #if CYTHON_FAST_PYCALL
56144  if (PyFunction_Check(__pyx_t_2)) {
56145  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_float_50_};
56146  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error)
56147  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56148  __Pyx_GOTREF(__pyx_t_1);
56149  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56150  } else
56151  #endif
56152  #if CYTHON_FAST_PYCCALL
56153  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
56154  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_float_50_};
56155  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error)
56156  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56157  __Pyx_GOTREF(__pyx_t_1);
56158  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56159  } else
56160  #endif
56161  {
56162  __pyx_t_8 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3216, __pyx_L1_error)
56163  __Pyx_GOTREF(__pyx_t_8);
56164  if (__pyx_t_6) {
56165  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
56166  }
56167  __Pyx_GIVEREF(__pyx_t_4);
56168  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_4);
56169  __Pyx_INCREF(__pyx_float_50_);
56170  __Pyx_GIVEREF(__pyx_float_50_);
56171  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_float_50_);
56172  __pyx_t_4 = 0;
56173  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3216, __pyx_L1_error)
56174  __Pyx_GOTREF(__pyx_t_1);
56175  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
56176  }
56177  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56178  __Pyx_XDECREF_SET(__pyx_v_dt, __pyx_t_1);
56179  __pyx_t_1 = 0;
56180 
56181  /* "WaveTools.py":3217
56182  * fname = "randomNLWaves_"+mode+".csv"
56183  * dt = old_div(periods[ii],50.)
56184  * series = aRN.writeEtaSeries(Tstart,Tend,dt,x0,fname,mode,False,Lgen) # <<<<<<<<<<<<<<
56185  * Tstart_temp = series[0,0]
56186  * cutoff = 0.2*periods[ii]/(Tend-Tstart_temp)
56187  */
56188  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_aRN), __pyx_n_s_writeEtaSeries); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3217, __pyx_L1_error)
56189  __Pyx_GOTREF(__pyx_t_2);
56190  __pyx_t_8 = NULL;
56191  __pyx_t_5 = 0;
56192  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
56193  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
56194  if (likely(__pyx_t_8)) {
56195  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
56196  __Pyx_INCREF(__pyx_t_8);
56197  __Pyx_INCREF(function);
56198  __Pyx_DECREF_SET(__pyx_t_2, function);
56199  __pyx_t_5 = 1;
56200  }
56201  }
56202  #if CYTHON_FAST_PYCALL
56203  if (PyFunction_Check(__pyx_t_2)) {
56204  PyObject *__pyx_temp[9] = {__pyx_t_8, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_dt, __pyx_v_x0, __pyx_v_fname, __pyx_v_mode, Py_False, __pyx_v_Lgen};
56205  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 8+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3217, __pyx_L1_error)
56206  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
56207  __Pyx_GOTREF(__pyx_t_1);
56208  } else
56209  #endif
56210  #if CYTHON_FAST_PYCCALL
56211  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
56212  PyObject *__pyx_temp[9] = {__pyx_t_8, __pyx_v_Tstart, __pyx_v_Tend, __pyx_v_dt, __pyx_v_x0, __pyx_v_fname, __pyx_v_mode, Py_False, __pyx_v_Lgen};
56213  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 8+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3217, __pyx_L1_error)
56214  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
56215  __Pyx_GOTREF(__pyx_t_1);
56216  } else
56217  #endif
56218  {
56219  __pyx_t_4 = PyTuple_New(8+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3217, __pyx_L1_error)
56220  __Pyx_GOTREF(__pyx_t_4);
56221  if (__pyx_t_8) {
56222  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
56223  }
56224  __Pyx_INCREF(__pyx_v_Tstart);
56225  __Pyx_GIVEREF(__pyx_v_Tstart);
56226  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_Tstart);
56227  __Pyx_INCREF(__pyx_v_Tend);
56228  __Pyx_GIVEREF(__pyx_v_Tend);
56229  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_Tend);
56230  __Pyx_INCREF(__pyx_v_dt);
56231  __Pyx_GIVEREF(__pyx_v_dt);
56232  PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_5, __pyx_v_dt);
56233  __Pyx_INCREF(__pyx_v_x0);
56234  __Pyx_GIVEREF(__pyx_v_x0);
56235  PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_5, __pyx_v_x0);
56236  __Pyx_INCREF(__pyx_v_fname);
56237  __Pyx_GIVEREF(__pyx_v_fname);
56238  PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_5, __pyx_v_fname);
56239  __Pyx_INCREF(__pyx_v_mode);
56240  __Pyx_GIVEREF(__pyx_v_mode);
56241  PyTuple_SET_ITEM(__pyx_t_4, 5+__pyx_t_5, __pyx_v_mode);
56242  __Pyx_INCREF(Py_False);
56243  __Pyx_GIVEREF(Py_False);
56244  PyTuple_SET_ITEM(__pyx_t_4, 6+__pyx_t_5, Py_False);
56245  __Pyx_INCREF(__pyx_v_Lgen);
56246  __Pyx_GIVEREF(__pyx_v_Lgen);
56247  PyTuple_SET_ITEM(__pyx_t_4, 7+__pyx_t_5, __pyx_v_Lgen);
56248  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3217, __pyx_L1_error)
56249  __Pyx_GOTREF(__pyx_t_1);
56250  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56251  }
56252  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56253  __Pyx_XDECREF_SET(__pyx_v_series, __pyx_t_1);
56254  __pyx_t_1 = 0;
56255 
56256  /* "WaveTools.py":3218
56257  * dt = old_div(periods[ii],50.)
56258  * series = aRN.writeEtaSeries(Tstart,Tend,dt,x0,fname,mode,False,Lgen)
56259  * Tstart_temp = series[0,0] # <<<<<<<<<<<<<<
56260  * cutoff = 0.2*periods[ii]/(Tend-Tstart_temp)
56261  *
56262  */
56263  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_series, __pyx_tuple__46); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3218, __pyx_L1_error)
56264  __Pyx_GOTREF(__pyx_t_1);
56265  __Pyx_XDECREF_SET(__pyx_v_Tstart_temp, __pyx_t_1);
56266  __pyx_t_1 = 0;
56267 
56268  /* "WaveTools.py":3219
56269  * series = aRN.writeEtaSeries(Tstart,Tend,dt,x0,fname,mode,False,Lgen)
56270  * Tstart_temp = series[0,0]
56271  * cutoff = 0.2*periods[ii]/(Tend-Tstart_temp) # <<<<<<<<<<<<<<
56272  *
56273  * #Checking if there are enough windows
56274  */
56275  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_periods, __pyx_v_ii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3219, __pyx_L1_error)
56276  __Pyx_GOTREF(__pyx_t_1);
56277  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3219, __pyx_L1_error)
56278  __Pyx_GOTREF(__pyx_t_2);
56279  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56280  __pyx_t_1 = PyNumber_Subtract(__pyx_v_Tend, __pyx_v_Tstart_temp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3219, __pyx_L1_error)
56281  __Pyx_GOTREF(__pyx_t_1);
56282  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3219, __pyx_L1_error)
56283  __Pyx_GOTREF(__pyx_t_4);
56284  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56285  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56286  __Pyx_XDECREF_SET(__pyx_v_cutoff, __pyx_t_4);
56287  __pyx_t_4 = 0;
56288 
56289  /* "WaveTools.py":3222
56290  *
56291  * #Checking if there are enough windows
56292  * Nwaves_tot = int(old_div((Tend-Tstart_temp),periods[ii])) # <<<<<<<<<<<<<<
56293  * Nwaves = min(Nwaves,Nwaves_tot)
56294  * Nwind = int(old_div(Nwaves_tot,Nwaves))
56295  */
56296  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3222, __pyx_L1_error)
56297  __Pyx_GOTREF(__pyx_t_1);
56298  __pyx_t_2 = PyNumber_Subtract(__pyx_v_Tend, __pyx_v_Tstart_temp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3222, __pyx_L1_error)
56299  __Pyx_GOTREF(__pyx_t_2);
56300  __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_periods, __pyx_v_ii); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3222, __pyx_L1_error)
56301  __Pyx_GOTREF(__pyx_t_8);
56302  __pyx_t_6 = NULL;
56303  __pyx_t_5 = 0;
56304  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
56305  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
56306  if (likely(__pyx_t_6)) {
56307  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
56308  __Pyx_INCREF(__pyx_t_6);
56309  __Pyx_INCREF(function);
56310  __Pyx_DECREF_SET(__pyx_t_1, function);
56311  __pyx_t_5 = 1;
56312  }
56313  }
56314  #if CYTHON_FAST_PYCALL
56315  if (PyFunction_Check(__pyx_t_1)) {
56316  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_8};
56317  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3222, __pyx_L1_error)
56318  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56319  __Pyx_GOTREF(__pyx_t_4);
56320  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56321  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
56322  } else
56323  #endif
56324  #if CYTHON_FAST_PYCCALL
56325  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
56326  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_8};
56327  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3222, __pyx_L1_error)
56328  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56329  __Pyx_GOTREF(__pyx_t_4);
56330  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56331  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
56332  } else
56333  #endif
56334  {
56335  __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3222, __pyx_L1_error)
56336  __Pyx_GOTREF(__pyx_t_9);
56337  if (__pyx_t_6) {
56338  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
56339  }
56340  __Pyx_GIVEREF(__pyx_t_2);
56341  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_2);
56342  __Pyx_GIVEREF(__pyx_t_8);
56343  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_8);
56344  __pyx_t_2 = 0;
56345  __pyx_t_8 = 0;
56346  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3222, __pyx_L1_error)
56347  __Pyx_GOTREF(__pyx_t_4);
56348  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
56349  }
56350  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56351  __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3222, __pyx_L1_error)
56352  __Pyx_GOTREF(__pyx_t_1);
56353  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56354  __Pyx_XDECREF_SET(__pyx_v_Nwaves_tot, __pyx_t_1);
56355  __pyx_t_1 = 0;
56356 
56357  /* "WaveTools.py":3223
56358  * #Checking if there are enough windows
56359  * Nwaves_tot = int(old_div((Tend-Tstart_temp),periods[ii]))
56360  * Nwaves = min(Nwaves,Nwaves_tot) # <<<<<<<<<<<<<<
56361  * Nwind = int(old_div(Nwaves_tot,Nwaves))
56362  * if Nwind < 3:
56363  */
56364  __Pyx_INCREF(__pyx_v_Nwaves_tot);
56365  __pyx_t_1 = __pyx_v_Nwaves_tot;
56366  __Pyx_INCREF(__pyx_v_Nwaves);
56367  __pyx_t_4 = __pyx_v_Nwaves;
56368  __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3223, __pyx_L1_error)
56369  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3223, __pyx_L1_error)
56370  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
56371  if (__pyx_t_10) {
56372  __Pyx_INCREF(__pyx_t_1);
56373  __pyx_t_9 = __pyx_t_1;
56374  } else {
56375  __Pyx_INCREF(__pyx_t_4);
56376  __pyx_t_9 = __pyx_t_4;
56377  }
56378  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56379  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56380  __pyx_t_1 = __pyx_t_9;
56381  __Pyx_INCREF(__pyx_t_1);
56382  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
56383  __Pyx_DECREF_SET(__pyx_v_Nwaves, __pyx_t_1);
56384  __pyx_t_1 = 0;
56385 
56386  /* "WaveTools.py":3224
56387  * Nwaves_tot = int(old_div((Tend-Tstart_temp),periods[ii]))
56388  * Nwaves = min(Nwaves,Nwaves_tot)
56389  * Nwind = int(old_div(Nwaves_tot,Nwaves)) # <<<<<<<<<<<<<<
56390  * if Nwind < 3:
56391  * rec_d = True
56392  */
56393  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_old_div); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3224, __pyx_L1_error)
56394  __Pyx_GOTREF(__pyx_t_9);
56395  __pyx_t_4 = NULL;
56396  __pyx_t_5 = 0;
56397  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
56398  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
56399  if (likely(__pyx_t_4)) {
56400  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
56401  __Pyx_INCREF(__pyx_t_4);
56402  __Pyx_INCREF(function);
56403  __Pyx_DECREF_SET(__pyx_t_9, function);
56404  __pyx_t_5 = 1;
56405  }
56406  }
56407  #if CYTHON_FAST_PYCALL
56408  if (PyFunction_Check(__pyx_t_9)) {
56409  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Nwaves_tot, __pyx_v_Nwaves};
56410  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3224, __pyx_L1_error)
56411  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
56412  __Pyx_GOTREF(__pyx_t_1);
56413  } else
56414  #endif
56415  #if CYTHON_FAST_PYCCALL
56416  if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
56417  PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Nwaves_tot, __pyx_v_Nwaves};
56418  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3224, __pyx_L1_error)
56419  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
56420  __Pyx_GOTREF(__pyx_t_1);
56421  } else
56422  #endif
56423  {
56424  __pyx_t_8 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3224, __pyx_L1_error)
56425  __Pyx_GOTREF(__pyx_t_8);
56426  if (__pyx_t_4) {
56427  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
56428  }
56429  __Pyx_INCREF(__pyx_v_Nwaves_tot);
56430  __Pyx_GIVEREF(__pyx_v_Nwaves_tot);
56431  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_v_Nwaves_tot);
56432  __Pyx_INCREF(__pyx_v_Nwaves);
56433  __Pyx_GIVEREF(__pyx_v_Nwaves);
56434  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_v_Nwaves);
56435  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3224, __pyx_L1_error)
56436  __Pyx_GOTREF(__pyx_t_1);
56437  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
56438  }
56439  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
56440  __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3224, __pyx_L1_error)
56441  __Pyx_GOTREF(__pyx_t_9);
56442  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56443  __Pyx_XDECREF_SET(__pyx_v_Nwind, __pyx_t_9);
56444  __pyx_t_9 = 0;
56445 
56446  /* "WaveTools.py":3225
56447  * Nwaves = min(Nwaves,Nwaves_tot)
56448  * Nwind = int(old_div(Nwaves_tot,Nwaves))
56449  * if Nwind < 3: # <<<<<<<<<<<<<<
56450  * rec_d = True
56451  * else:
56452  */
56453  __pyx_t_9 = PyObject_RichCompare(__pyx_v_Nwind, __pyx_int_3, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3225, __pyx_L1_error)
56454  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3225, __pyx_L1_error)
56455  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
56456  if (__pyx_t_10) {
56457 
56458  /* "WaveTools.py":3226
56459  * Nwind = int(old_div(Nwaves_tot,Nwaves))
56460  * if Nwind < 3:
56461  * rec_d = True # <<<<<<<<<<<<<<
56462  * else:
56463  * rec_d = False
56464  */
56465  __pyx_v_rec_d = 1;
56466 
56467  /* "WaveTools.py":3225
56468  * Nwaves = min(Nwaves,Nwaves_tot)
56469  * Nwind = int(old_div(Nwaves_tot,Nwaves))
56470  * if Nwind < 3: # <<<<<<<<<<<<<<
56471  * rec_d = True
56472  * else:
56473  */
56474  goto __pyx_L5;
56475  }
56476 
56477  /* "WaveTools.py":3228
56478  * rec_d = True
56479  * else:
56480  * rec_d = False # <<<<<<<<<<<<<<
56481  *
56482  *
56483  */
56484  /*else*/ {
56485  __pyx_v_rec_d = 0;
56486  }
56487  __pyx_L5:;
56488 
56489  /* "WaveTools.py":3231
56490  *
56491  *
56492  * self.TS.append(TimeSeries( # <<<<<<<<<<<<<<
56493  * fname,
56494  * 0,
56495  */
56496  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3231, __pyx_L1_error)
56497  __Pyx_GOTREF(__pyx_t_9);
56498 
56499  /* "WaveTools.py":3239
56500  * mwl,
56501  * waveDir,
56502  * g, # <<<<<<<<<<<<<<
56503  * cutoffTotal = cutoff,
56504  * rec_direct = rec_d,
56505  */
56506  __pyx_t_1 = PyTuple_New(8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3231, __pyx_L1_error)
56507  __Pyx_GOTREF(__pyx_t_1);
56508  __Pyx_INCREF(__pyx_v_fname);
56509  __Pyx_GIVEREF(__pyx_v_fname);
56510  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
56511  __Pyx_INCREF(__pyx_int_0);
56512  __Pyx_GIVEREF(__pyx_int_0);
56513  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0);
56514  __Pyx_INCREF(__pyx_v_x0);
56515  __Pyx_GIVEREF(__pyx_v_x0);
56516  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_x0);
56517  __Pyx_INCREF(__pyx_v_depth);
56518  __Pyx_GIVEREF(__pyx_v_depth);
56519  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_depth);
56520  __Pyx_INCREF(__pyx_v_Nfreq);
56521  __Pyx_GIVEREF(__pyx_v_Nfreq);
56522  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_Nfreq);
56523  __Pyx_INCREF(__pyx_v_mwl);
56524  __Pyx_GIVEREF(__pyx_v_mwl);
56525  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_mwl);
56526  __Pyx_INCREF(__pyx_v_waveDir);
56527  __Pyx_GIVEREF(__pyx_v_waveDir);
56528  PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_v_waveDir);
56529  __Pyx_INCREF(__pyx_v_g);
56530  __Pyx_GIVEREF(__pyx_v_g);
56531  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_v_g);
56532 
56533  /* "WaveTools.py":3240
56534  * waveDir,
56535  * g,
56536  * cutoffTotal = cutoff, # <<<<<<<<<<<<<<
56537  * rec_direct = rec_d,
56538  * window_params = {"Nwaves":Nwaves ,"Tm":periods[ii],"Window":"costap","Overlap":0.7,"Cutoff":0.1},
56539  */
56540  __pyx_t_8 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3240, __pyx_L1_error)
56541  __Pyx_GOTREF(__pyx_t_8);
56542  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_cutoffTotal, __pyx_v_cutoff) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
56543 
56544  /* "WaveTools.py":3241
56545  * g,
56546  * cutoffTotal = cutoff,
56547  * rec_direct = rec_d, # <<<<<<<<<<<<<<
56548  * window_params = {"Nwaves":Nwaves ,"Tm":periods[ii],"Window":"costap","Overlap":0.7,"Cutoff":0.1},
56549  * arrayData = True,
56550  */
56551  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_rec_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3241, __pyx_L1_error)
56552  __Pyx_GOTREF(__pyx_t_4);
56553  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_rec_direct, __pyx_t_4) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
56554  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56555 
56556  /* "WaveTools.py":3242
56557  * cutoffTotal = cutoff,
56558  * rec_direct = rec_d,
56559  * window_params = {"Nwaves":Nwaves ,"Tm":periods[ii],"Window":"costap","Overlap":0.7,"Cutoff":0.1}, # <<<<<<<<<<<<<<
56560  * arrayData = True,
56561  * seriesArray = series,
56562  */
56563  __pyx_t_4 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3242, __pyx_L1_error)
56564  __Pyx_GOTREF(__pyx_t_4);
56565  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Nwaves, __pyx_v_Nwaves) < 0) __PYX_ERR(0, 3242, __pyx_L1_error)
56566  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_periods, __pyx_v_ii); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3242, __pyx_L1_error)
56567  __Pyx_GOTREF(__pyx_t_2);
56568  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Tm, __pyx_t_2) < 0) __PYX_ERR(0, 3242, __pyx_L1_error)
56569  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56570  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Window, __pyx_n_s_costap) < 0) __PYX_ERR(0, 3242, __pyx_L1_error)
56571  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Overlap, __pyx_float_0_7) < 0) __PYX_ERR(0, 3242, __pyx_L1_error)
56572  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_Cutoff, __pyx_float_0_1) < 0) __PYX_ERR(0, 3242, __pyx_L1_error)
56573  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_window_params, __pyx_t_4) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
56574  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56575 
56576  /* "WaveTools.py":3243
56577  * rec_direct = rec_d,
56578  * window_params = {"Nwaves":Nwaves ,"Tm":periods[ii],"Window":"costap","Overlap":0.7,"Cutoff":0.1},
56579  * arrayData = True, # <<<<<<<<<<<<<<
56580  * seriesArray = series,
56581  * fast = self.fast)
56582  */
56583  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_arrayData, Py_True) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
56584 
56585  /* "WaveTools.py":3244
56586  * window_params = {"Nwaves":Nwaves ,"Tm":periods[ii],"Window":"costap","Overlap":0.7,"Cutoff":0.1},
56587  * arrayData = True,
56588  * seriesArray = series, # <<<<<<<<<<<<<<
56589  * fast = self.fast)
56590  * )
56591  */
56592  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_seriesArray, __pyx_v_series) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
56593 
56594  /* "WaveTools.py":3245
56595  * arrayData = True,
56596  * seriesArray = series,
56597  * fast = self.fast) # <<<<<<<<<<<<<<
56598  * )
56599  *
56600  */
56601  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3245, __pyx_L1_error)
56602  __Pyx_GOTREF(__pyx_t_4);
56603  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_fast, __pyx_t_4) < 0) __PYX_ERR(0, 3240, __pyx_L1_error)
56604  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56605 
56606  /* "WaveTools.py":3231
56607  *
56608  *
56609  * self.TS.append(TimeSeries( # <<<<<<<<<<<<<<
56610  * fname,
56611  * 0,
56612  */
56613  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9WaveTools_TimeSeries), __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3231, __pyx_L1_error)
56614  __Pyx_GOTREF(__pyx_t_4);
56615  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56616  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
56617  __pyx_t_11 = __Pyx_PyObject_Append(__pyx_t_9, __pyx_t_4); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 3231, __pyx_L1_error)
56618  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
56619  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
56620 
56621  /* "WaveTools.py":3212
56622  * self.TS= []
56623  * ii = -1
56624  * for mode in modes: # <<<<<<<<<<<<<<
56625  * logEvent("INFO: Calculating nonlinear corrections for "+mode+" waves. This may take a while")
56626  * ii+=1
56627  */
56628  }
56629  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
56630 
56631  /* "WaveTools.py":3180
56632  * Switch for enabling optimised functions
56633  * """
56634  * def __init__(self, # <<<<<<<<<<<<<<
56635  * Tstart,
56636  * Tend,
56637  */
56638 
56639  /* function exit code */
56640  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
56641  goto __pyx_L0;
56642  __pyx_L1_error:;
56643  __Pyx_XDECREF(__pyx_t_1);
56644  __Pyx_XDECREF(__pyx_t_2);
56645  __Pyx_XDECREF(__pyx_t_3);
56646  __Pyx_XDECREF(__pyx_t_4);
56647  __Pyx_XDECREF(__pyx_t_6);
56648  __Pyx_XDECREF(__pyx_t_8);
56649  __Pyx_XDECREF(__pyx_t_9);
56650  __Pyx_AddTraceback("WaveTools.RandomNLWavesFast.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
56651  __pyx_r = NULL;
56652  __pyx_L0:;
56653  __Pyx_XDECREF((PyObject *)__pyx_v_aR);
56654  __Pyx_XDECREF((PyObject *)__pyx_v_aRN);
56655  __Pyx_XDECREF(__pyx_v_Tmax);
56656  __Pyx_XDECREF(__pyx_v_modes);
56657  __Pyx_XDECREF(__pyx_v_periods);
56658  __Pyx_XDECREF(__pyx_v_ii);
56659  __Pyx_XDECREF(__pyx_v_mode);
56660  __Pyx_XDECREF(__pyx_v_fname);
56661  __Pyx_XDECREF(__pyx_v_dt);
56662  __Pyx_XDECREF(__pyx_v_series);
56663  __Pyx_XDECREF(__pyx_v_Tstart_temp);
56664  __Pyx_XDECREF(__pyx_v_cutoff);
56665  __Pyx_XDECREF(__pyx_v_Nwaves_tot);
56666  __Pyx_XDECREF(__pyx_v_Nwind);
56667  __Pyx_XDECREF(__pyx_v_Nwaves);
56668  __Pyx_XGIVEREF(__pyx_r);
56669  __Pyx_RefNannyFinishContext();
56670  return __pyx_r;
56671 }
56672 
56673 /* "WaveTools.py":3249
56674  *
56675  *
56676  * def eta(self,x,t): # <<<<<<<<<<<<<<
56677  * """Calculates free surface elevation (RandomNLWavesFast class)
56678  * Parameters
56679  */
56680 
56681 /* Python wrapper */
56682 static PyObject *__pyx_pw_9WaveTools_17RandomNLWavesFast_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
56683 static char __pyx_doc_9WaveTools_17RandomNLWavesFast_2eta[] = "Calculates free surface elevation (RandomNLWavesFast class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
56684 static PyMethodDef __pyx_mdef_9WaveTools_17RandomNLWavesFast_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_17RandomNLWavesFast_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_17RandomNLWavesFast_2eta};
56685 static PyObject *__pyx_pw_9WaveTools_17RandomNLWavesFast_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
56686  PyObject *__pyx_v_self = 0;
56687  PyObject *__pyx_v_x = 0;
56688  PyObject *__pyx_v_t = 0;
56689  int __pyx_lineno = 0;
56690  const char *__pyx_filename = NULL;
56691  int __pyx_clineno = 0;
56692  PyObject *__pyx_r = 0;
56693  __Pyx_RefNannyDeclarations
56694  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
56695  {
56696  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
56697  PyObject* values[3] = {0,0,0};
56698  if (unlikely(__pyx_kwds)) {
56699  Py_ssize_t kw_args;
56700  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
56701  switch (pos_args) {
56702  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
56703  CYTHON_FALLTHROUGH;
56704  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
56705  CYTHON_FALLTHROUGH;
56706  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
56707  CYTHON_FALLTHROUGH;
56708  case 0: break;
56709  default: goto __pyx_L5_argtuple_error;
56710  }
56711  kw_args = PyDict_Size(__pyx_kwds);
56712  switch (pos_args) {
56713  case 0:
56714  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
56715  else goto __pyx_L5_argtuple_error;
56716  CYTHON_FALLTHROUGH;
56717  case 1:
56718  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
56719  else {
56720  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); __PYX_ERR(0, 3249, __pyx_L3_error)
56721  }
56722  CYTHON_FALLTHROUGH;
56723  case 2:
56724  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
56725  else {
56726  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); __PYX_ERR(0, 3249, __pyx_L3_error)
56727  }
56728  }
56729  if (unlikely(kw_args > 0)) {
56730  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 3249, __pyx_L3_error)
56731  }
56732  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
56733  goto __pyx_L5_argtuple_error;
56734  } else {
56735  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
56736  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
56737  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
56738  }
56739  __pyx_v_self = values[0];
56740  __pyx_v_x = values[1];
56741  __pyx_v_t = values[2];
56742  }
56743  goto __pyx_L4_argument_unpacking_done;
56744  __pyx_L5_argtuple_error:;
56745  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3249, __pyx_L3_error)
56746  __pyx_L3_error:;
56747  __Pyx_AddTraceback("WaveTools.RandomNLWavesFast.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
56748  __Pyx_RefNannyFinishContext();
56749  return NULL;
56750  __pyx_L4_argument_unpacking_done:;
56751  __pyx_r = __pyx_pf_9WaveTools_17RandomNLWavesFast_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
56752 
56753  /* function exit code */
56754  __Pyx_RefNannyFinishContext();
56755  return __pyx_r;
56756 }
56757 
56758 static PyObject *__pyx_pf_9WaveTools_17RandomNLWavesFast_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
56759  PyObject *__pyx_v_etaR = NULL;
56760  PyObject *__pyx_r = NULL;
56761  __Pyx_RefNannyDeclarations
56762  PyObject *__pyx_t_1 = NULL;
56763  PyObject *__pyx_t_2 = NULL;
56764  PyObject *__pyx_t_3 = NULL;
56765  int __pyx_t_4;
56766  PyObject *__pyx_t_5 = NULL;
56767  PyObject *__pyx_t_6 = NULL;
56768  int __pyx_lineno = 0;
56769  const char *__pyx_filename = NULL;
56770  int __pyx_clineno = 0;
56771  __Pyx_RefNannySetupContext("eta", 0);
56772 
56773  /* "WaveTools.py":3264
56774  *
56775  * """
56776  * etaR = self.TS[0].eta(x,t)+ self.TS[1].eta(x,t)+self.TS[2].eta(x,t) # <<<<<<<<<<<<<<
56777  * return etaR
56778  *
56779  */
56780  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56781  __Pyx_GOTREF(__pyx_t_2);
56782  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3264, __pyx_L1_error)
56783  __Pyx_GOTREF(__pyx_t_3);
56784  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56785  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_eta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56786  __Pyx_GOTREF(__pyx_t_2);
56787  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
56788  __pyx_t_3 = NULL;
56789  __pyx_t_4 = 0;
56790  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
56791  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
56792  if (likely(__pyx_t_3)) {
56793  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
56794  __Pyx_INCREF(__pyx_t_3);
56795  __Pyx_INCREF(function);
56796  __Pyx_DECREF_SET(__pyx_t_2, function);
56797  __pyx_t_4 = 1;
56798  }
56799  }
56800  #if CYTHON_FAST_PYCALL
56801  if (PyFunction_Check(__pyx_t_2)) {
56802  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
56803  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
56804  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
56805  __Pyx_GOTREF(__pyx_t_1);
56806  } else
56807  #endif
56808  #if CYTHON_FAST_PYCCALL
56809  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
56810  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
56811  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
56812  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
56813  __Pyx_GOTREF(__pyx_t_1);
56814  } else
56815  #endif
56816  {
56817  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3264, __pyx_L1_error)
56818  __Pyx_GOTREF(__pyx_t_5);
56819  if (__pyx_t_3) {
56820  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
56821  }
56822  __Pyx_INCREF(__pyx_v_x);
56823  __Pyx_GIVEREF(__pyx_v_x);
56824  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_x);
56825  __Pyx_INCREF(__pyx_v_t);
56826  __Pyx_GIVEREF(__pyx_v_t);
56827  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_t);
56828  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
56829  __Pyx_GOTREF(__pyx_t_1);
56830  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
56831  }
56832  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56833  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3264, __pyx_L1_error)
56834  __Pyx_GOTREF(__pyx_t_5);
56835  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3264, __pyx_L1_error)
56836  __Pyx_GOTREF(__pyx_t_3);
56837  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
56838  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_eta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3264, __pyx_L1_error)
56839  __Pyx_GOTREF(__pyx_t_5);
56840  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
56841  __pyx_t_3 = NULL;
56842  __pyx_t_4 = 0;
56843  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
56844  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
56845  if (likely(__pyx_t_3)) {
56846  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
56847  __Pyx_INCREF(__pyx_t_3);
56848  __Pyx_INCREF(function);
56849  __Pyx_DECREF_SET(__pyx_t_5, function);
56850  __pyx_t_4 = 1;
56851  }
56852  }
56853  #if CYTHON_FAST_PYCALL
56854  if (PyFunction_Check(__pyx_t_5)) {
56855  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
56856  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56857  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
56858  __Pyx_GOTREF(__pyx_t_2);
56859  } else
56860  #endif
56861  #if CYTHON_FAST_PYCCALL
56862  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
56863  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
56864  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56865  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
56866  __Pyx_GOTREF(__pyx_t_2);
56867  } else
56868  #endif
56869  {
56870  __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3264, __pyx_L1_error)
56871  __Pyx_GOTREF(__pyx_t_6);
56872  if (__pyx_t_3) {
56873  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
56874  }
56875  __Pyx_INCREF(__pyx_v_x);
56876  __Pyx_GIVEREF(__pyx_v_x);
56877  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_v_x);
56878  __Pyx_INCREF(__pyx_v_t);
56879  __Pyx_GIVEREF(__pyx_v_t);
56880  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_t);
56881  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56882  __Pyx_GOTREF(__pyx_t_2);
56883  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
56884  }
56885  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
56886  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3264, __pyx_L1_error)
56887  __Pyx_GOTREF(__pyx_t_5);
56888  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56889  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56890  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
56891  __Pyx_GOTREF(__pyx_t_1);
56892  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3264, __pyx_L1_error)
56893  __Pyx_GOTREF(__pyx_t_6);
56894  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56895  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_eta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
56896  __Pyx_GOTREF(__pyx_t_1);
56897  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
56898  __pyx_t_6 = NULL;
56899  __pyx_t_4 = 0;
56900  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
56901  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
56902  if (likely(__pyx_t_6)) {
56903  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
56904  __Pyx_INCREF(__pyx_t_6);
56905  __Pyx_INCREF(function);
56906  __Pyx_DECREF_SET(__pyx_t_1, function);
56907  __pyx_t_4 = 1;
56908  }
56909  }
56910  #if CYTHON_FAST_PYCALL
56911  if (PyFunction_Check(__pyx_t_1)) {
56912  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
56913  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56914  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56915  __Pyx_GOTREF(__pyx_t_2);
56916  } else
56917  #endif
56918  #if CYTHON_FAST_PYCCALL
56919  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
56920  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
56921  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56922  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
56923  __Pyx_GOTREF(__pyx_t_2);
56924  } else
56925  #endif
56926  {
56927  __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3264, __pyx_L1_error)
56928  __Pyx_GOTREF(__pyx_t_3);
56929  if (__pyx_t_6) {
56930  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
56931  }
56932  __Pyx_INCREF(__pyx_v_x);
56933  __Pyx_GIVEREF(__pyx_v_x);
56934  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_x);
56935  __Pyx_INCREF(__pyx_v_t);
56936  __Pyx_GIVEREF(__pyx_v_t);
56937  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_t);
56938  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3264, __pyx_L1_error)
56939  __Pyx_GOTREF(__pyx_t_2);
56940  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
56941  }
56942  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
56943  __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
56944  __Pyx_GOTREF(__pyx_t_1);
56945  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
56946  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
56947  __pyx_v_etaR = __pyx_t_1;
56948  __pyx_t_1 = 0;
56949 
56950  /* "WaveTools.py":3265
56951  * """
56952  * etaR = self.TS[0].eta(x,t)+ self.TS[1].eta(x,t)+self.TS[2].eta(x,t)
56953  * return etaR # <<<<<<<<<<<<<<
56954  *
56955  *
56956  */
56957  __Pyx_XDECREF(__pyx_r);
56958  __Pyx_INCREF(__pyx_v_etaR);
56959  __pyx_r = __pyx_v_etaR;
56960  goto __pyx_L0;
56961 
56962  /* "WaveTools.py":3249
56963  *
56964  *
56965  * def eta(self,x,t): # <<<<<<<<<<<<<<
56966  * """Calculates free surface elevation (RandomNLWavesFast class)
56967  * Parameters
56968  */
56969 
56970  /* function exit code */
56971  __pyx_L1_error:;
56972  __Pyx_XDECREF(__pyx_t_1);
56973  __Pyx_XDECREF(__pyx_t_2);
56974  __Pyx_XDECREF(__pyx_t_3);
56975  __Pyx_XDECREF(__pyx_t_5);
56976  __Pyx_XDECREF(__pyx_t_6);
56977  __Pyx_AddTraceback("WaveTools.RandomNLWavesFast.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
56978  __pyx_r = NULL;
56979  __pyx_L0:;
56980  __Pyx_XDECREF(__pyx_v_etaR);
56981  __Pyx_XGIVEREF(__pyx_r);
56982  __Pyx_RefNannyFinishContext();
56983  return __pyx_r;
56984 }
56985 
56986 /* "WaveTools.py":3268
56987  *
56988  *
56989  * def u(self,x,t): # <<<<<<<<<<<<<<
56990  * """Calculates wave velocity vector (RandomNLWavesFast class)
56991  * Parameters
56992  */
56993 
56994 /* Python wrapper */
56995 static PyObject *__pyx_pw_9WaveTools_17RandomNLWavesFast_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
56996 static char __pyx_doc_9WaveTools_17RandomNLWavesFast_4u[] = "Calculates wave velocity vector (RandomNLWavesFast class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy.ndarray\n Velocity vector as 1D array\n\n ";
56997 static PyMethodDef __pyx_mdef_9WaveTools_17RandomNLWavesFast_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_17RandomNLWavesFast_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_17RandomNLWavesFast_4u};
56998 static PyObject *__pyx_pw_9WaveTools_17RandomNLWavesFast_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
56999  PyObject *__pyx_v_self = 0;
57000  PyObject *__pyx_v_x = 0;
57001  PyObject *__pyx_v_t = 0;
57002  int __pyx_lineno = 0;
57003  const char *__pyx_filename = NULL;
57004  int __pyx_clineno = 0;
57005  PyObject *__pyx_r = 0;
57006  __Pyx_RefNannyDeclarations
57007  __Pyx_RefNannySetupContext("u (wrapper)", 0);
57008  {
57009  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
57010  PyObject* values[3] = {0,0,0};
57011  if (unlikely(__pyx_kwds)) {
57012  Py_ssize_t kw_args;
57013  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
57014  switch (pos_args) {
57015  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
57016  CYTHON_FALLTHROUGH;
57017  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
57018  CYTHON_FALLTHROUGH;
57019  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
57020  CYTHON_FALLTHROUGH;
57021  case 0: break;
57022  default: goto __pyx_L5_argtuple_error;
57023  }
57024  kw_args = PyDict_Size(__pyx_kwds);
57025  switch (pos_args) {
57026  case 0:
57027  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
57028  else goto __pyx_L5_argtuple_error;
57029  CYTHON_FALLTHROUGH;
57030  case 1:
57031  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
57032  else {
57033  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); __PYX_ERR(0, 3268, __pyx_L3_error)
57034  }
57035  CYTHON_FALLTHROUGH;
57036  case 2:
57037  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
57038  else {
57039  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); __PYX_ERR(0, 3268, __pyx_L3_error)
57040  }
57041  }
57042  if (unlikely(kw_args > 0)) {
57043  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 3268, __pyx_L3_error)
57044  }
57045  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
57046  goto __pyx_L5_argtuple_error;
57047  } else {
57048  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
57049  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
57050  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
57051  }
57052  __pyx_v_self = values[0];
57053  __pyx_v_x = values[1];
57054  __pyx_v_t = values[2];
57055  }
57056  goto __pyx_L4_argument_unpacking_done;
57057  __pyx_L5_argtuple_error:;
57058  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3268, __pyx_L3_error)
57059  __pyx_L3_error:;
57060  __Pyx_AddTraceback("WaveTools.RandomNLWavesFast.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
57061  __Pyx_RefNannyFinishContext();
57062  return NULL;
57063  __pyx_L4_argument_unpacking_done:;
57064  __pyx_r = __pyx_pf_9WaveTools_17RandomNLWavesFast_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
57065 
57066  /* function exit code */
57067  __Pyx_RefNannyFinishContext();
57068  return __pyx_r;
57069 }
57070 
57071 static PyObject *__pyx_pf_9WaveTools_17RandomNLWavesFast_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
57072  PyObject *__pyx_v_uR = NULL;
57073  PyObject *__pyx_r = NULL;
57074  __Pyx_RefNannyDeclarations
57075  PyObject *__pyx_t_1 = NULL;
57076  PyObject *__pyx_t_2 = NULL;
57077  PyObject *__pyx_t_3 = NULL;
57078  int __pyx_t_4;
57079  PyObject *__pyx_t_5 = NULL;
57080  PyObject *__pyx_t_6 = NULL;
57081  int __pyx_lineno = 0;
57082  const char *__pyx_filename = NULL;
57083  int __pyx_clineno = 0;
57084  __Pyx_RefNannySetupContext("u", 0);
57085 
57086  /* "WaveTools.py":3283
57087  *
57088  * """
57089  * uR = self.TS[0].u(x,t)+ self.TS[1].u(x,t)+self.TS[2].u(x,t) # <<<<<<<<<<<<<<
57090  * return uR
57091  *
57092  */
57093  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57094  __Pyx_GOTREF(__pyx_t_2);
57095  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3283, __pyx_L1_error)
57096  __Pyx_GOTREF(__pyx_t_3);
57097  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
57098  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_u); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57099  __Pyx_GOTREF(__pyx_t_2);
57100  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
57101  __pyx_t_3 = NULL;
57102  __pyx_t_4 = 0;
57103  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
57104  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
57105  if (likely(__pyx_t_3)) {
57106  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
57107  __Pyx_INCREF(__pyx_t_3);
57108  __Pyx_INCREF(function);
57109  __Pyx_DECREF_SET(__pyx_t_2, function);
57110  __pyx_t_4 = 1;
57111  }
57112  }
57113  #if CYTHON_FAST_PYCALL
57114  if (PyFunction_Check(__pyx_t_2)) {
57115  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
57116  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
57117  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
57118  __Pyx_GOTREF(__pyx_t_1);
57119  } else
57120  #endif
57121  #if CYTHON_FAST_PYCCALL
57122  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
57123  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
57124  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
57125  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
57126  __Pyx_GOTREF(__pyx_t_1);
57127  } else
57128  #endif
57129  {
57130  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3283, __pyx_L1_error)
57131  __Pyx_GOTREF(__pyx_t_5);
57132  if (__pyx_t_3) {
57133  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
57134  }
57135  __Pyx_INCREF(__pyx_v_x);
57136  __Pyx_GIVEREF(__pyx_v_x);
57137  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_x);
57138  __Pyx_INCREF(__pyx_v_t);
57139  __Pyx_GIVEREF(__pyx_v_t);
57140  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_t);
57141  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
57142  __Pyx_GOTREF(__pyx_t_1);
57143  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
57144  }
57145  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
57146  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3283, __pyx_L1_error)
57147  __Pyx_GOTREF(__pyx_t_5);
57148  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3283, __pyx_L1_error)
57149  __Pyx_GOTREF(__pyx_t_3);
57150  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
57151  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_u); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3283, __pyx_L1_error)
57152  __Pyx_GOTREF(__pyx_t_5);
57153  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
57154  __pyx_t_3 = NULL;
57155  __pyx_t_4 = 0;
57156  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
57157  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
57158  if (likely(__pyx_t_3)) {
57159  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
57160  __Pyx_INCREF(__pyx_t_3);
57161  __Pyx_INCREF(function);
57162  __Pyx_DECREF_SET(__pyx_t_5, function);
57163  __pyx_t_4 = 1;
57164  }
57165  }
57166  #if CYTHON_FAST_PYCALL
57167  if (PyFunction_Check(__pyx_t_5)) {
57168  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
57169  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57170  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
57171  __Pyx_GOTREF(__pyx_t_2);
57172  } else
57173  #endif
57174  #if CYTHON_FAST_PYCCALL
57175  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
57176  PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_x, __pyx_v_t};
57177  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57178  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
57179  __Pyx_GOTREF(__pyx_t_2);
57180  } else
57181  #endif
57182  {
57183  __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3283, __pyx_L1_error)
57184  __Pyx_GOTREF(__pyx_t_6);
57185  if (__pyx_t_3) {
57186  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
57187  }
57188  __Pyx_INCREF(__pyx_v_x);
57189  __Pyx_GIVEREF(__pyx_v_x);
57190  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_v_x);
57191  __Pyx_INCREF(__pyx_v_t);
57192  __Pyx_GIVEREF(__pyx_v_t);
57193  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_t);
57194  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57195  __Pyx_GOTREF(__pyx_t_2);
57196  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
57197  }
57198  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
57199  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3283, __pyx_L1_error)
57200  __Pyx_GOTREF(__pyx_t_5);
57201  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
57202  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
57203  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_TS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
57204  __Pyx_GOTREF(__pyx_t_1);
57205  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3283, __pyx_L1_error)
57206  __Pyx_GOTREF(__pyx_t_6);
57207  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
57208  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_u); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
57209  __Pyx_GOTREF(__pyx_t_1);
57210  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
57211  __pyx_t_6 = NULL;
57212  __pyx_t_4 = 0;
57213  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
57214  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
57215  if (likely(__pyx_t_6)) {
57216  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
57217  __Pyx_INCREF(__pyx_t_6);
57218  __Pyx_INCREF(function);
57219  __Pyx_DECREF_SET(__pyx_t_1, function);
57220  __pyx_t_4 = 1;
57221  }
57222  }
57223  #if CYTHON_FAST_PYCALL
57224  if (PyFunction_Check(__pyx_t_1)) {
57225  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
57226  __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57227  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
57228  __Pyx_GOTREF(__pyx_t_2);
57229  } else
57230  #endif
57231  #if CYTHON_FAST_PYCCALL
57232  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
57233  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
57234  __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57235  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
57236  __Pyx_GOTREF(__pyx_t_2);
57237  } else
57238  #endif
57239  {
57240  __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3283, __pyx_L1_error)
57241  __Pyx_GOTREF(__pyx_t_3);
57242  if (__pyx_t_6) {
57243  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
57244  }
57245  __Pyx_INCREF(__pyx_v_x);
57246  __Pyx_GIVEREF(__pyx_v_x);
57247  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_x);
57248  __Pyx_INCREF(__pyx_v_t);
57249  __Pyx_GIVEREF(__pyx_v_t);
57250  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_t);
57251  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3283, __pyx_L1_error)
57252  __Pyx_GOTREF(__pyx_t_2);
57253  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
57254  }
57255  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
57256  __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error)
57257  __Pyx_GOTREF(__pyx_t_1);
57258  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
57259  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
57260  __pyx_v_uR = __pyx_t_1;
57261  __pyx_t_1 = 0;
57262 
57263  /* "WaveTools.py":3284
57264  * """
57265  * uR = self.TS[0].u(x,t)+ self.TS[1].u(x,t)+self.TS[2].u(x,t)
57266  * return uR # <<<<<<<<<<<<<<
57267  *
57268  * class CombineWaves(object):
57269  */
57270  __Pyx_XDECREF(__pyx_r);
57271  __Pyx_INCREF(__pyx_v_uR);
57272  __pyx_r = __pyx_v_uR;
57273  goto __pyx_L0;
57274 
57275  /* "WaveTools.py":3268
57276  *
57277  *
57278  * def u(self,x,t): # <<<<<<<<<<<<<<
57279  * """Calculates wave velocity vector (RandomNLWavesFast class)
57280  * Parameters
57281  */
57282 
57283  /* function exit code */
57284  __pyx_L1_error:;
57285  __Pyx_XDECREF(__pyx_t_1);
57286  __Pyx_XDECREF(__pyx_t_2);
57287  __Pyx_XDECREF(__pyx_t_3);
57288  __Pyx_XDECREF(__pyx_t_5);
57289  __Pyx_XDECREF(__pyx_t_6);
57290  __Pyx_AddTraceback("WaveTools.RandomNLWavesFast.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
57291  __pyx_r = NULL;
57292  __pyx_L0:;
57293  __Pyx_XDECREF(__pyx_v_uR);
57294  __Pyx_XGIVEREF(__pyx_r);
57295  __Pyx_RefNannyFinishContext();
57296  return __pyx_r;
57297 }
57298 
57299 /* "WaveTools.py":3295
57300  * List of wave classes
57301  * """
57302  * def __init__(self,waveList): # <<<<<<<<<<<<<<
57303  * try:
57304  * for condition in waveList:
57305  */
57306 
57307 /* Python wrapper */
57308 static PyObject *__pyx_pw_9WaveTools_12CombineWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
57309 static PyMethodDef __pyx_mdef_9WaveTools_12CombineWaves_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12CombineWaves_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
57310 static PyObject *__pyx_pw_9WaveTools_12CombineWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
57311  PyObject *__pyx_v_self = 0;
57312  PyObject *__pyx_v_waveList = 0;
57313  int __pyx_lineno = 0;
57314  const char *__pyx_filename = NULL;
57315  int __pyx_clineno = 0;
57316  PyObject *__pyx_r = 0;
57317  __Pyx_RefNannyDeclarations
57318  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
57319  {
57320  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_waveList,0};
57321  PyObject* values[2] = {0,0};
57322  if (unlikely(__pyx_kwds)) {
57323  Py_ssize_t kw_args;
57324  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
57325  switch (pos_args) {
57326  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
57327  CYTHON_FALLTHROUGH;
57328  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
57329  CYTHON_FALLTHROUGH;
57330  case 0: break;
57331  default: goto __pyx_L5_argtuple_error;
57332  }
57333  kw_args = PyDict_Size(__pyx_kwds);
57334  switch (pos_args) {
57335  case 0:
57336  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
57337  else goto __pyx_L5_argtuple_error;
57338  CYTHON_FALLTHROUGH;
57339  case 1:
57340  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_waveList)) != 0)) kw_args--;
57341  else {
57342  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 3295, __pyx_L3_error)
57343  }
57344  }
57345  if (unlikely(kw_args > 0)) {
57346  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 3295, __pyx_L3_error)
57347  }
57348  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
57349  goto __pyx_L5_argtuple_error;
57350  } else {
57351  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
57352  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
57353  }
57354  __pyx_v_self = values[0];
57355  __pyx_v_waveList = values[1];
57356  }
57357  goto __pyx_L4_argument_unpacking_done;
57358  __pyx_L5_argtuple_error:;
57359  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3295, __pyx_L3_error)
57360  __pyx_L3_error:;
57361  __Pyx_AddTraceback("WaveTools.CombineWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
57362  __Pyx_RefNannyFinishContext();
57363  return NULL;
57364  __pyx_L4_argument_unpacking_done:;
57365  __pyx_r = __pyx_pf_9WaveTools_12CombineWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_waveList);
57366 
57367  /* function exit code */
57368  __Pyx_RefNannyFinishContext();
57369  return __pyx_r;
57370 }
57371 
57372 static PyObject *__pyx_pf_9WaveTools_12CombineWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_waveList) {
57373  PyObject *__pyx_v_condition = NULL;
57374  CYTHON_UNUSED PyObject *__pyx_v_etaCheck = NULL;
57375  CYTHON_UNUSED PyObject *__pyx_v_uCheck = NULL;
57376  PyObject *__pyx_r = NULL;
57377  __Pyx_RefNannyDeclarations
57378  PyObject *__pyx_t_1 = NULL;
57379  PyObject *__pyx_t_2 = NULL;
57380  PyObject *__pyx_t_3 = NULL;
57381  PyObject *__pyx_t_4 = NULL;
57382  Py_ssize_t __pyx_t_5;
57383  PyObject *(*__pyx_t_6)(PyObject *);
57384  PyObject *__pyx_t_7 = NULL;
57385  PyObject *__pyx_t_8 = NULL;
57386  PyObject *__pyx_t_9 = NULL;
57387  PyObject *__pyx_t_10 = NULL;
57388  PyObject *__pyx_t_11 = NULL;
57389  int __pyx_lineno = 0;
57390  const char *__pyx_filename = NULL;
57391  int __pyx_clineno = 0;
57392  __Pyx_RefNannySetupContext("__init__", 0);
57393 
57394  /* "WaveTools.py":3296
57395  * """
57396  * def __init__(self,waveList):
57397  * try: # <<<<<<<<<<<<<<
57398  * for condition in waveList:
57399  * etaCheck = condition.eta
57400  */
57401  {
57402  __Pyx_PyThreadState_declare
57403  __Pyx_PyThreadState_assign
57404  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
57405  __Pyx_XGOTREF(__pyx_t_1);
57406  __Pyx_XGOTREF(__pyx_t_2);
57407  __Pyx_XGOTREF(__pyx_t_3);
57408  /*try:*/ {
57409 
57410  /* "WaveTools.py":3297
57411  * def __init__(self,waveList):
57412  * try:
57413  * for condition in waveList: # <<<<<<<<<<<<<<
57414  * etaCheck = condition.eta
57415  * except:
57416  */
57417  if (likely(PyList_CheckExact(__pyx_v_waveList)) || PyTuple_CheckExact(__pyx_v_waveList)) {
57418  __pyx_t_4 = __pyx_v_waveList; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
57419  __pyx_t_6 = NULL;
57420  } else {
57421  __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_waveList); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3297, __pyx_L3_error)
57422  __Pyx_GOTREF(__pyx_t_4);
57423  __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3297, __pyx_L3_error)
57424  }
57425  for (;;) {
57426  if (likely(!__pyx_t_6)) {
57427  if (likely(PyList_CheckExact(__pyx_t_4))) {
57428  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
57429  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
57430  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3297, __pyx_L3_error)
57431  #else
57432  __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3297, __pyx_L3_error)
57433  __Pyx_GOTREF(__pyx_t_7);
57434  #endif
57435  } else {
57436  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
57437  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
57438  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3297, __pyx_L3_error)
57439  #else
57440  __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3297, __pyx_L3_error)
57441  __Pyx_GOTREF(__pyx_t_7);
57442  #endif
57443  }
57444  } else {
57445  __pyx_t_7 = __pyx_t_6(__pyx_t_4);
57446  if (unlikely(!__pyx_t_7)) {
57447  PyObject* exc_type = PyErr_Occurred();
57448  if (exc_type) {
57449  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
57450  else __PYX_ERR(0, 3297, __pyx_L3_error)
57451  }
57452  break;
57453  }
57454  __Pyx_GOTREF(__pyx_t_7);
57455  }
57456  __Pyx_XDECREF_SET(__pyx_v_condition, __pyx_t_7);
57457  __pyx_t_7 = 0;
57458 
57459  /* "WaveTools.py":3298
57460  * try:
57461  * for condition in waveList:
57462  * etaCheck = condition.eta # <<<<<<<<<<<<<<
57463  * except:
57464  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function")
57465  */
57466  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_condition, __pyx_n_s_eta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3298, __pyx_L3_error)
57467  __Pyx_GOTREF(__pyx_t_7);
57468  __Pyx_XDECREF_SET(__pyx_v_etaCheck, __pyx_t_7);
57469  __pyx_t_7 = 0;
57470 
57471  /* "WaveTools.py":3297
57472  * def __init__(self,waveList):
57473  * try:
57474  * for condition in waveList: # <<<<<<<<<<<<<<
57475  * etaCheck = condition.eta
57476  * except:
57477  */
57478  }
57479  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
57480 
57481  /* "WaveTools.py":3296
57482  * """
57483  * def __init__(self,waveList):
57484  * try: # <<<<<<<<<<<<<<
57485  * for condition in waveList:
57486  * etaCheck = condition.eta
57487  */
57488  }
57489  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
57490  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
57491  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
57492  goto __pyx_L8_try_end;
57493  __pyx_L3_error:;
57494  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
57495  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
57496 
57497  /* "WaveTools.py":3299
57498  * for condition in waveList:
57499  * etaCheck = condition.eta
57500  * except: # <<<<<<<<<<<<<<
57501  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function")
57502  * sys.exit(1)
57503  */
57504  /*except:*/ {
57505  __Pyx_AddTraceback("WaveTools.CombineWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
57506  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 3299, __pyx_L5_except_error)
57507  __Pyx_GOTREF(__pyx_t_4);
57508  __Pyx_GOTREF(__pyx_t_7);
57509  __Pyx_GOTREF(__pyx_t_8);
57510 
57511  /* "WaveTools.py":3300
57512  * etaCheck = condition.eta
57513  * except:
57514  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function") # <<<<<<<<<<<<<<
57515  * sys.exit(1)
57516  * try:
57517  */
57518  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3300, __pyx_L5_except_error)
57519  __Pyx_GOTREF(__pyx_t_10);
57520  __pyx_t_11 = NULL;
57521  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
57522  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
57523  if (likely(__pyx_t_11)) {
57524  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
57525  __Pyx_INCREF(__pyx_t_11);
57526  __Pyx_INCREF(function);
57527  __Pyx_DECREF_SET(__pyx_t_10, function);
57528  }
57529  }
57530  __pyx_t_9 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_kp_s_ERROR_Each_input_list_entry_shou) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_ERROR_Each_input_list_entry_shou);
57531  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
57532  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3300, __pyx_L5_except_error)
57533  __Pyx_GOTREF(__pyx_t_9);
57534  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
57535  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
57536 
57537  /* "WaveTools.py":3301
57538  * except:
57539  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function")
57540  * sys.exit(1) # <<<<<<<<<<<<<<
57541  * try:
57542  * for condition in waveList:
57543  */
57544  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_sys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3301, __pyx_L5_except_error)
57545  __Pyx_GOTREF(__pyx_t_10);
57546  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exit); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3301, __pyx_L5_except_error)
57547  __Pyx_GOTREF(__pyx_t_11);
57548  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
57549  __pyx_t_10 = NULL;
57550  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
57551  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
57552  if (likely(__pyx_t_10)) {
57553  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
57554  __Pyx_INCREF(__pyx_t_10);
57555  __Pyx_INCREF(function);
57556  __Pyx_DECREF_SET(__pyx_t_11, function);
57557  }
57558  }
57559  __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_int_1);
57560  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
57561  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3301, __pyx_L5_except_error)
57562  __Pyx_GOTREF(__pyx_t_9);
57563  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
57564  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
57565  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
57566  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
57567  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
57568  goto __pyx_L4_exception_handled;
57569  }
57570  __pyx_L5_except_error:;
57571 
57572  /* "WaveTools.py":3296
57573  * """
57574  * def __init__(self,waveList):
57575  * try: # <<<<<<<<<<<<<<
57576  * for condition in waveList:
57577  * etaCheck = condition.eta
57578  */
57579  __Pyx_XGIVEREF(__pyx_t_1);
57580  __Pyx_XGIVEREF(__pyx_t_2);
57581  __Pyx_XGIVEREF(__pyx_t_3);
57582  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
57583  goto __pyx_L1_error;
57584  __pyx_L4_exception_handled:;
57585  __Pyx_XGIVEREF(__pyx_t_1);
57586  __Pyx_XGIVEREF(__pyx_t_2);
57587  __Pyx_XGIVEREF(__pyx_t_3);
57588  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
57589  __pyx_L8_try_end:;
57590  }
57591 
57592  /* "WaveTools.py":3302
57593  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function")
57594  * sys.exit(1)
57595  * try: # <<<<<<<<<<<<<<
57596  * for condition in waveList:
57597  * uCheck = condition.u
57598  */
57599  {
57600  __Pyx_PyThreadState_declare
57601  __Pyx_PyThreadState_assign
57602  __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
57603  __Pyx_XGOTREF(__pyx_t_3);
57604  __Pyx_XGOTREF(__pyx_t_2);
57605  __Pyx_XGOTREF(__pyx_t_1);
57606  /*try:*/ {
57607 
57608  /* "WaveTools.py":3303
57609  * sys.exit(1)
57610  * try:
57611  * for condition in waveList: # <<<<<<<<<<<<<<
57612  * uCheck = condition.u
57613  * except:
57614  */
57615  if (likely(PyList_CheckExact(__pyx_v_waveList)) || PyTuple_CheckExact(__pyx_v_waveList)) {
57616  __pyx_t_8 = __pyx_v_waveList; __Pyx_INCREF(__pyx_t_8); __pyx_t_5 = 0;
57617  __pyx_t_6 = NULL;
57618  } else {
57619  __pyx_t_5 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_waveList); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3303, __pyx_L13_error)
57620  __Pyx_GOTREF(__pyx_t_8);
57621  __pyx_t_6 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3303, __pyx_L13_error)
57622  }
57623  for (;;) {
57624  if (likely(!__pyx_t_6)) {
57625  if (likely(PyList_CheckExact(__pyx_t_8))) {
57626  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_8)) break;
57627  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
57628  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3303, __pyx_L13_error)
57629  #else
57630  __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3303, __pyx_L13_error)
57631  __Pyx_GOTREF(__pyx_t_7);
57632  #endif
57633  } else {
57634  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
57635  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
57636  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3303, __pyx_L13_error)
57637  #else
57638  __pyx_t_7 = PySequence_ITEM(__pyx_t_8, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3303, __pyx_L13_error)
57639  __Pyx_GOTREF(__pyx_t_7);
57640  #endif
57641  }
57642  } else {
57643  __pyx_t_7 = __pyx_t_6(__pyx_t_8);
57644  if (unlikely(!__pyx_t_7)) {
57645  PyObject* exc_type = PyErr_Occurred();
57646  if (exc_type) {
57647  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
57648  else __PYX_ERR(0, 3303, __pyx_L13_error)
57649  }
57650  break;
57651  }
57652  __Pyx_GOTREF(__pyx_t_7);
57653  }
57654  __Pyx_XDECREF_SET(__pyx_v_condition, __pyx_t_7);
57655  __pyx_t_7 = 0;
57656 
57657  /* "WaveTools.py":3304
57658  * try:
57659  * for condition in waveList:
57660  * uCheck = condition.u # <<<<<<<<<<<<<<
57661  * except:
57662  * logEvent("ERROR!: Each input list entry should be a waveTools function with a u function")
57663  */
57664  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_condition, __pyx_n_s_u); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3304, __pyx_L13_error)
57665  __Pyx_GOTREF(__pyx_t_7);
57666  __Pyx_XDECREF_SET(__pyx_v_uCheck, __pyx_t_7);
57667  __pyx_t_7 = 0;
57668 
57669  /* "WaveTools.py":3303
57670  * sys.exit(1)
57671  * try:
57672  * for condition in waveList: # <<<<<<<<<<<<<<
57673  * uCheck = condition.u
57674  * except:
57675  */
57676  }
57677  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
57678 
57679  /* "WaveTools.py":3302
57680  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function")
57681  * sys.exit(1)
57682  * try: # <<<<<<<<<<<<<<
57683  * for condition in waveList:
57684  * uCheck = condition.u
57685  */
57686  }
57687  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
57688  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
57689  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
57690  goto __pyx_L18_try_end;
57691  __pyx_L13_error:;
57692  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
57693  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
57694  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
57695  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
57696  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
57697  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
57698 
57699  /* "WaveTools.py":3305
57700  * for condition in waveList:
57701  * uCheck = condition.u
57702  * except: # <<<<<<<<<<<<<<
57703  * logEvent("ERROR!: Each input list entry should be a waveTools function with a u function")
57704  * sys.exit(1)
57705  */
57706  /*except:*/ {
57707  __Pyx_AddTraceback("WaveTools.CombineWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
57708  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(0, 3305, __pyx_L15_except_error)
57709  __Pyx_GOTREF(__pyx_t_8);
57710  __Pyx_GOTREF(__pyx_t_7);
57711  __Pyx_GOTREF(__pyx_t_4);
57712 
57713  /* "WaveTools.py":3306
57714  * uCheck = condition.u
57715  * except:
57716  * logEvent("ERROR!: Each input list entry should be a waveTools function with a u function") # <<<<<<<<<<<<<<
57717  * sys.exit(1)
57718  * self.waveList = waveList
57719  */
57720  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3306, __pyx_L15_except_error)
57721  __Pyx_GOTREF(__pyx_t_11);
57722  __pyx_t_10 = NULL;
57723  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
57724  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
57725  if (likely(__pyx_t_10)) {
57726  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
57727  __Pyx_INCREF(__pyx_t_10);
57728  __Pyx_INCREF(function);
57729  __Pyx_DECREF_SET(__pyx_t_11, function);
57730  }
57731  }
57732  __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_kp_s_ERROR_Each_input_list_entry_shou_2) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_kp_s_ERROR_Each_input_list_entry_shou_2);
57733  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
57734  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3306, __pyx_L15_except_error)
57735  __Pyx_GOTREF(__pyx_t_9);
57736  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
57737  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
57738 
57739  /* "WaveTools.py":3307
57740  * except:
57741  * logEvent("ERROR!: Each input list entry should be a waveTools function with a u function")
57742  * sys.exit(1) # <<<<<<<<<<<<<<
57743  * self.waveList = waveList
57744  * self.mwl = waveList[0].mwl
57745  */
57746  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3307, __pyx_L15_except_error)
57747  __Pyx_GOTREF(__pyx_t_11);
57748  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3307, __pyx_L15_except_error)
57749  __Pyx_GOTREF(__pyx_t_10);
57750  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
57751  __pyx_t_11 = NULL;
57752  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
57753  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
57754  if (likely(__pyx_t_11)) {
57755  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
57756  __Pyx_INCREF(__pyx_t_11);
57757  __Pyx_INCREF(function);
57758  __Pyx_DECREF_SET(__pyx_t_10, function);
57759  }
57760  }
57761  __pyx_t_9 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_11, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_int_1);
57762  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
57763  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3307, __pyx_L15_except_error)
57764  __Pyx_GOTREF(__pyx_t_9);
57765  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
57766  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
57767  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
57768  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
57769  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
57770  goto __pyx_L14_exception_handled;
57771  }
57772  __pyx_L15_except_error:;
57773 
57774  /* "WaveTools.py":3302
57775  * logEvent("ERROR!: Each input list entry should be a waveTools function with an eta function")
57776  * sys.exit(1)
57777  * try: # <<<<<<<<<<<<<<
57778  * for condition in waveList:
57779  * uCheck = condition.u
57780  */
57781  __Pyx_XGIVEREF(__pyx_t_3);
57782  __Pyx_XGIVEREF(__pyx_t_2);
57783  __Pyx_XGIVEREF(__pyx_t_1);
57784  __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
57785  goto __pyx_L1_error;
57786  __pyx_L14_exception_handled:;
57787  __Pyx_XGIVEREF(__pyx_t_3);
57788  __Pyx_XGIVEREF(__pyx_t_2);
57789  __Pyx_XGIVEREF(__pyx_t_1);
57790  __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
57791  __pyx_L18_try_end:;
57792  }
57793 
57794  /* "WaveTools.py":3308
57795  * logEvent("ERROR!: Each input list entry should be a waveTools function with a u function")
57796  * sys.exit(1)
57797  * self.waveList = waveList # <<<<<<<<<<<<<<
57798  * self.mwl = waveList[0].mwl
57799  * def eta(self,x,t):
57800  */
57801  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveList, __pyx_v_waveList) < 0) __PYX_ERR(0, 3308, __pyx_L1_error)
57802 
57803  /* "WaveTools.py":3309
57804  * sys.exit(1)
57805  * self.waveList = waveList
57806  * self.mwl = waveList[0].mwl # <<<<<<<<<<<<<<
57807  * def eta(self,x,t):
57808  * """
57809  */
57810  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_waveList, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3309, __pyx_L1_error)
57811  __Pyx_GOTREF(__pyx_t_4);
57812  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_mwl); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3309, __pyx_L1_error)
57813  __Pyx_GOTREF(__pyx_t_7);
57814  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
57815  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_t_7) < 0) __PYX_ERR(0, 3309, __pyx_L1_error)
57816  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
57817 
57818  /* "WaveTools.py":3295
57819  * List of wave classes
57820  * """
57821  * def __init__(self,waveList): # <<<<<<<<<<<<<<
57822  * try:
57823  * for condition in waveList:
57824  */
57825 
57826  /* function exit code */
57827  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
57828  goto __pyx_L0;
57829  __pyx_L1_error:;
57830  __Pyx_XDECREF(__pyx_t_4);
57831  __Pyx_XDECREF(__pyx_t_7);
57832  __Pyx_XDECREF(__pyx_t_8);
57833  __Pyx_XDECREF(__pyx_t_9);
57834  __Pyx_XDECREF(__pyx_t_10);
57835  __Pyx_XDECREF(__pyx_t_11);
57836  __Pyx_AddTraceback("WaveTools.CombineWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
57837  __pyx_r = NULL;
57838  __pyx_L0:;
57839  __Pyx_XDECREF(__pyx_v_condition);
57840  __Pyx_XDECREF(__pyx_v_etaCheck);
57841  __Pyx_XDECREF(__pyx_v_uCheck);
57842  __Pyx_XGIVEREF(__pyx_r);
57843  __Pyx_RefNannyFinishContext();
57844  return __pyx_r;
57845 }
57846 
57847 /* "WaveTools.py":3310
57848  * self.waveList = waveList
57849  * self.mwl = waveList[0].mwl
57850  * def eta(self,x,t): # <<<<<<<<<<<<<<
57851  * """
57852  * Calculates free surface elevation (combineWaves class)
57853  */
57854 
57855 /* Python wrapper */
57856 static PyObject *__pyx_pw_9WaveTools_12CombineWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
57857 static char __pyx_doc_9WaveTools_12CombineWaves_2eta[] = "\n Calculates free surface elevation (combineWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n float\n Free-surface elevation as a float\n\n ";
57858 static PyMethodDef __pyx_mdef_9WaveTools_12CombineWaves_3eta = {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12CombineWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12CombineWaves_2eta};
57859 static PyObject *__pyx_pw_9WaveTools_12CombineWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
57860  PyObject *__pyx_v_self = 0;
57861  PyObject *__pyx_v_x = 0;
57862  PyObject *__pyx_v_t = 0;
57863  int __pyx_lineno = 0;
57864  const char *__pyx_filename = NULL;
57865  int __pyx_clineno = 0;
57866  PyObject *__pyx_r = 0;
57867  __Pyx_RefNannyDeclarations
57868  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
57869  {
57870  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
57871  PyObject* values[3] = {0,0,0};
57872  if (unlikely(__pyx_kwds)) {
57873  Py_ssize_t kw_args;
57874  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
57875  switch (pos_args) {
57876  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
57877  CYTHON_FALLTHROUGH;
57878  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
57879  CYTHON_FALLTHROUGH;
57880  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
57881  CYTHON_FALLTHROUGH;
57882  case 0: break;
57883  default: goto __pyx_L5_argtuple_error;
57884  }
57885  kw_args = PyDict_Size(__pyx_kwds);
57886  switch (pos_args) {
57887  case 0:
57888  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
57889  else goto __pyx_L5_argtuple_error;
57890  CYTHON_FALLTHROUGH;
57891  case 1:
57892  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
57893  else {
57894  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); __PYX_ERR(0, 3310, __pyx_L3_error)
57895  }
57896  CYTHON_FALLTHROUGH;
57897  case 2:
57898  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
57899  else {
57900  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); __PYX_ERR(0, 3310, __pyx_L3_error)
57901  }
57902  }
57903  if (unlikely(kw_args > 0)) {
57904  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) __PYX_ERR(0, 3310, __pyx_L3_error)
57905  }
57906  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
57907  goto __pyx_L5_argtuple_error;
57908  } else {
57909  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
57910  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
57911  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
57912  }
57913  __pyx_v_self = values[0];
57914  __pyx_v_x = values[1];
57915  __pyx_v_t = values[2];
57916  }
57917  goto __pyx_L4_argument_unpacking_done;
57918  __pyx_L5_argtuple_error:;
57919  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3310, __pyx_L3_error)
57920  __pyx_L3_error:;
57921  __Pyx_AddTraceback("WaveTools.CombineWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
57922  __Pyx_RefNannyFinishContext();
57923  return NULL;
57924  __pyx_L4_argument_unpacking_done:;
57925  __pyx_r = __pyx_pf_9WaveTools_12CombineWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
57926 
57927  /* function exit code */
57928  __Pyx_RefNannyFinishContext();
57929  return __pyx_r;
57930 }
57931 
57932 static PyObject *__pyx_pf_9WaveTools_12CombineWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
57933  PyObject *__pyx_v_eta = NULL;
57934  PyObject *__pyx_v_cond = NULL;
57935  PyObject *__pyx_r = NULL;
57936  __Pyx_RefNannyDeclarations
57937  PyObject *__pyx_t_1 = NULL;
57938  PyObject *__pyx_t_2 = NULL;
57939  Py_ssize_t __pyx_t_3;
57940  PyObject *(*__pyx_t_4)(PyObject *);
57941  PyObject *__pyx_t_5 = NULL;
57942  PyObject *__pyx_t_6 = NULL;
57943  int __pyx_t_7;
57944  PyObject *__pyx_t_8 = NULL;
57945  int __pyx_lineno = 0;
57946  const char *__pyx_filename = NULL;
57947  int __pyx_clineno = 0;
57948  __Pyx_RefNannySetupContext("eta", 0);
57949 
57950  /* "WaveTools.py":3326
57951  *
57952  * """
57953  * eta = 0. # <<<<<<<<<<<<<<
57954  * for cond in self.waveList:
57955  * eta += cond.eta(x,t)
57956  */
57957  __Pyx_INCREF(__pyx_float_0_);
57958  __pyx_v_eta = __pyx_float_0_;
57959 
57960  /* "WaveTools.py":3327
57961  * """
57962  * eta = 0.
57963  * for cond in self.waveList: # <<<<<<<<<<<<<<
57964  * eta += cond.eta(x,t)
57965  * return eta
57966  */
57967  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3327, __pyx_L1_error)
57968  __Pyx_GOTREF(__pyx_t_1);
57969  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
57970  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
57971  __pyx_t_4 = NULL;
57972  } else {
57973  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3327, __pyx_L1_error)
57974  __Pyx_GOTREF(__pyx_t_2);
57975  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3327, __pyx_L1_error)
57976  }
57977  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
57978  for (;;) {
57979  if (likely(!__pyx_t_4)) {
57980  if (likely(PyList_CheckExact(__pyx_t_2))) {
57981  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
57982  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
57983  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3327, __pyx_L1_error)
57984  #else
57985  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3327, __pyx_L1_error)
57986  __Pyx_GOTREF(__pyx_t_1);
57987  #endif
57988  } else {
57989  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
57990  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
57991  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3327, __pyx_L1_error)
57992  #else
57993  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3327, __pyx_L1_error)
57994  __Pyx_GOTREF(__pyx_t_1);
57995  #endif
57996  }
57997  } else {
57998  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
57999  if (unlikely(!__pyx_t_1)) {
58000  PyObject* exc_type = PyErr_Occurred();
58001  if (exc_type) {
58002  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
58003  else __PYX_ERR(0, 3327, __pyx_L1_error)
58004  }
58005  break;
58006  }
58007  __Pyx_GOTREF(__pyx_t_1);
58008  }
58009  __Pyx_XDECREF_SET(__pyx_v_cond, __pyx_t_1);
58010  __pyx_t_1 = 0;
58011 
58012  /* "WaveTools.py":3328
58013  * eta = 0.
58014  * for cond in self.waveList:
58015  * eta += cond.eta(x,t) # <<<<<<<<<<<<<<
58016  * return eta
58017  *
58018  */
58019  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cond, __pyx_n_s_eta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3328, __pyx_L1_error)
58020  __Pyx_GOTREF(__pyx_t_5);
58021  __pyx_t_6 = NULL;
58022  __pyx_t_7 = 0;
58023  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
58024  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
58025  if (likely(__pyx_t_6)) {
58026  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
58027  __Pyx_INCREF(__pyx_t_6);
58028  __Pyx_INCREF(function);
58029  __Pyx_DECREF_SET(__pyx_t_5, function);
58030  __pyx_t_7 = 1;
58031  }
58032  }
58033  #if CYTHON_FAST_PYCALL
58034  if (PyFunction_Check(__pyx_t_5)) {
58035  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
58036  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3328, __pyx_L1_error)
58037  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
58038  __Pyx_GOTREF(__pyx_t_1);
58039  } else
58040  #endif
58041  #if CYTHON_FAST_PYCCALL
58042  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
58043  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
58044  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3328, __pyx_L1_error)
58045  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
58046  __Pyx_GOTREF(__pyx_t_1);
58047  } else
58048  #endif
58049  {
58050  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3328, __pyx_L1_error)
58051  __Pyx_GOTREF(__pyx_t_8);
58052  if (__pyx_t_6) {
58053  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
58054  }
58055  __Pyx_INCREF(__pyx_v_x);
58056  __Pyx_GIVEREF(__pyx_v_x);
58057  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_x);
58058  __Pyx_INCREF(__pyx_v_t);
58059  __Pyx_GIVEREF(__pyx_v_t);
58060  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_t);
58061  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3328, __pyx_L1_error)
58062  __Pyx_GOTREF(__pyx_t_1);
58063  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
58064  }
58065  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
58066  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_eta, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3328, __pyx_L1_error)
58067  __Pyx_GOTREF(__pyx_t_5);
58068  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58069  __Pyx_DECREF_SET(__pyx_v_eta, __pyx_t_5);
58070  __pyx_t_5 = 0;
58071 
58072  /* "WaveTools.py":3327
58073  * """
58074  * eta = 0.
58075  * for cond in self.waveList: # <<<<<<<<<<<<<<
58076  * eta += cond.eta(x,t)
58077  * return eta
58078  */
58079  }
58080  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
58081 
58082  /* "WaveTools.py":3329
58083  * for cond in self.waveList:
58084  * eta += cond.eta(x,t)
58085  * return eta # <<<<<<<<<<<<<<
58086  *
58087  * def u(self,x,t):
58088  */
58089  __Pyx_XDECREF(__pyx_r);
58090  __Pyx_INCREF(__pyx_v_eta);
58091  __pyx_r = __pyx_v_eta;
58092  goto __pyx_L0;
58093 
58094  /* "WaveTools.py":3310
58095  * self.waveList = waveList
58096  * self.mwl = waveList[0].mwl
58097  * def eta(self,x,t): # <<<<<<<<<<<<<<
58098  * """
58099  * Calculates free surface elevation (combineWaves class)
58100  */
58101 
58102  /* function exit code */
58103  __pyx_L1_error:;
58104  __Pyx_XDECREF(__pyx_t_1);
58105  __Pyx_XDECREF(__pyx_t_2);
58106  __Pyx_XDECREF(__pyx_t_5);
58107  __Pyx_XDECREF(__pyx_t_6);
58108  __Pyx_XDECREF(__pyx_t_8);
58109  __Pyx_AddTraceback("WaveTools.CombineWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
58110  __pyx_r = NULL;
58111  __pyx_L0:;
58112  __Pyx_XDECREF(__pyx_v_eta);
58113  __Pyx_XDECREF(__pyx_v_cond);
58114  __Pyx_XGIVEREF(__pyx_r);
58115  __Pyx_RefNannyFinishContext();
58116  return __pyx_r;
58117 }
58118 
58119 /* "WaveTools.py":3331
58120  * return eta
58121  *
58122  * def u(self,x,t): # <<<<<<<<<<<<<<
58123  * """
58124  * Calculates wave particle velocity (combineWaves class)
58125  */
58126 
58127 /* Python wrapper */
58128 static PyObject *__pyx_pw_9WaveTools_12CombineWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
58129 static char __pyx_doc_9WaveTools_12CombineWaves_4u[] = "\n Calculates wave particle velocity (combineWaves class)\n Parameters\n ----------\n x : numpy.ndarray\n Position vector\n t : float\n Time variable\n\n Returns\n --------\n numpy array\n Velocity as 1D numpy array\n\n ";
58130 static PyMethodDef __pyx_mdef_9WaveTools_12CombineWaves_5u = {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12CombineWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12CombineWaves_4u};
58131 static PyObject *__pyx_pw_9WaveTools_12CombineWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
58132  PyObject *__pyx_v_self = 0;
58133  PyObject *__pyx_v_x = 0;
58134  PyObject *__pyx_v_t = 0;
58135  int __pyx_lineno = 0;
58136  const char *__pyx_filename = NULL;
58137  int __pyx_clineno = 0;
58138  PyObject *__pyx_r = 0;
58139  __Pyx_RefNannyDeclarations
58140  __Pyx_RefNannySetupContext("u (wrapper)", 0);
58141  {
58142  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
58143  PyObject* values[3] = {0,0,0};
58144  if (unlikely(__pyx_kwds)) {
58145  Py_ssize_t kw_args;
58146  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
58147  switch (pos_args) {
58148  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
58149  CYTHON_FALLTHROUGH;
58150  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
58151  CYTHON_FALLTHROUGH;
58152  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
58153  CYTHON_FALLTHROUGH;
58154  case 0: break;
58155  default: goto __pyx_L5_argtuple_error;
58156  }
58157  kw_args = PyDict_Size(__pyx_kwds);
58158  switch (pos_args) {
58159  case 0:
58160  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
58161  else goto __pyx_L5_argtuple_error;
58162  CYTHON_FALLTHROUGH;
58163  case 1:
58164  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
58165  else {
58166  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); __PYX_ERR(0, 3331, __pyx_L3_error)
58167  }
58168  CYTHON_FALLTHROUGH;
58169  case 2:
58170  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
58171  else {
58172  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); __PYX_ERR(0, 3331, __pyx_L3_error)
58173  }
58174  }
58175  if (unlikely(kw_args > 0)) {
58176  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) __PYX_ERR(0, 3331, __pyx_L3_error)
58177  }
58178  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
58179  goto __pyx_L5_argtuple_error;
58180  } else {
58181  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
58182  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
58183  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
58184  }
58185  __pyx_v_self = values[0];
58186  __pyx_v_x = values[1];
58187  __pyx_v_t = values[2];
58188  }
58189  goto __pyx_L4_argument_unpacking_done;
58190  __pyx_L5_argtuple_error:;
58191  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3331, __pyx_L3_error)
58192  __pyx_L3_error:;
58193  __Pyx_AddTraceback("WaveTools.CombineWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
58194  __Pyx_RefNannyFinishContext();
58195  return NULL;
58196  __pyx_L4_argument_unpacking_done:;
58197  __pyx_r = __pyx_pf_9WaveTools_12CombineWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
58198 
58199  /* function exit code */
58200  __Pyx_RefNannyFinishContext();
58201  return __pyx_r;
58202 }
58203 
58204 static PyObject *__pyx_pf_9WaveTools_12CombineWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
58205  PyObject *__pyx_v_u = NULL;
58206  PyObject *__pyx_v_cond = NULL;
58207  PyObject *__pyx_r = NULL;
58208  __Pyx_RefNannyDeclarations
58209  PyObject *__pyx_t_1 = NULL;
58210  PyObject *__pyx_t_2 = NULL;
58211  PyObject *__pyx_t_3 = NULL;
58212  Py_ssize_t __pyx_t_4;
58213  PyObject *(*__pyx_t_5)(PyObject *);
58214  PyObject *__pyx_t_6 = NULL;
58215  int __pyx_t_7;
58216  PyObject *__pyx_t_8 = NULL;
58217  int __pyx_lineno = 0;
58218  const char *__pyx_filename = NULL;
58219  int __pyx_clineno = 0;
58220  __Pyx_RefNannySetupContext("u", 0);
58221 
58222  /* "WaveTools.py":3347
58223  *
58224  * """
58225  * u = np.zeros(3,) # <<<<<<<<<<<<<<
58226  * for cond in self.waveList:
58227  * u += cond.u(x,t)
58228  */
58229  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3347, __pyx_L1_error)
58230  __Pyx_GOTREF(__pyx_t_2);
58231  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3347, __pyx_L1_error)
58232  __Pyx_GOTREF(__pyx_t_3);
58233  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
58234  __pyx_t_2 = NULL;
58235  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
58236  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
58237  if (likely(__pyx_t_2)) {
58238  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
58239  __Pyx_INCREF(__pyx_t_2);
58240  __Pyx_INCREF(function);
58241  __Pyx_DECREF_SET(__pyx_t_3, function);
58242  }
58243  }
58244  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_int_3) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_3);
58245  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
58246  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3347, __pyx_L1_error)
58247  __Pyx_GOTREF(__pyx_t_1);
58248  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
58249  __pyx_v_u = __pyx_t_1;
58250  __pyx_t_1 = 0;
58251 
58252  /* "WaveTools.py":3348
58253  * """
58254  * u = np.zeros(3,)
58255  * for cond in self.waveList: # <<<<<<<<<<<<<<
58256  * u += cond.u(x,t)
58257  * return u
58258  */
58259  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3348, __pyx_L1_error)
58260  __Pyx_GOTREF(__pyx_t_1);
58261  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
58262  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
58263  __pyx_t_5 = NULL;
58264  } else {
58265  __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3348, __pyx_L1_error)
58266  __Pyx_GOTREF(__pyx_t_3);
58267  __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3348, __pyx_L1_error)
58268  }
58269  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58270  for (;;) {
58271  if (likely(!__pyx_t_5)) {
58272  if (likely(PyList_CheckExact(__pyx_t_3))) {
58273  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
58274  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
58275  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3348, __pyx_L1_error)
58276  #else
58277  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3348, __pyx_L1_error)
58278  __Pyx_GOTREF(__pyx_t_1);
58279  #endif
58280  } else {
58281  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
58282  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
58283  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3348, __pyx_L1_error)
58284  #else
58285  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3348, __pyx_L1_error)
58286  __Pyx_GOTREF(__pyx_t_1);
58287  #endif
58288  }
58289  } else {
58290  __pyx_t_1 = __pyx_t_5(__pyx_t_3);
58291  if (unlikely(!__pyx_t_1)) {
58292  PyObject* exc_type = PyErr_Occurred();
58293  if (exc_type) {
58294  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
58295  else __PYX_ERR(0, 3348, __pyx_L1_error)
58296  }
58297  break;
58298  }
58299  __Pyx_GOTREF(__pyx_t_1);
58300  }
58301  __Pyx_XDECREF_SET(__pyx_v_cond, __pyx_t_1);
58302  __pyx_t_1 = 0;
58303 
58304  /* "WaveTools.py":3349
58305  * u = np.zeros(3,)
58306  * for cond in self.waveList:
58307  * u += cond.u(x,t) # <<<<<<<<<<<<<<
58308  * return u
58309  *
58310  */
58311  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cond, __pyx_n_s_u); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3349, __pyx_L1_error)
58312  __Pyx_GOTREF(__pyx_t_2);
58313  __pyx_t_6 = NULL;
58314  __pyx_t_7 = 0;
58315  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
58316  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
58317  if (likely(__pyx_t_6)) {
58318  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
58319  __Pyx_INCREF(__pyx_t_6);
58320  __Pyx_INCREF(function);
58321  __Pyx_DECREF_SET(__pyx_t_2, function);
58322  __pyx_t_7 = 1;
58323  }
58324  }
58325  #if CYTHON_FAST_PYCALL
58326  if (PyFunction_Check(__pyx_t_2)) {
58327  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
58328  __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3349, __pyx_L1_error)
58329  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
58330  __Pyx_GOTREF(__pyx_t_1);
58331  } else
58332  #endif
58333  #if CYTHON_FAST_PYCCALL
58334  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
58335  PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_t};
58336  __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3349, __pyx_L1_error)
58337  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
58338  __Pyx_GOTREF(__pyx_t_1);
58339  } else
58340  #endif
58341  {
58342  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3349, __pyx_L1_error)
58343  __Pyx_GOTREF(__pyx_t_8);
58344  if (__pyx_t_6) {
58345  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
58346  }
58347  __Pyx_INCREF(__pyx_v_x);
58348  __Pyx_GIVEREF(__pyx_v_x);
58349  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_x);
58350  __Pyx_INCREF(__pyx_v_t);
58351  __Pyx_GIVEREF(__pyx_v_t);
58352  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_t);
58353  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3349, __pyx_L1_error)
58354  __Pyx_GOTREF(__pyx_t_1);
58355  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
58356  }
58357  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
58358  __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_u, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3349, __pyx_L1_error)
58359  __Pyx_GOTREF(__pyx_t_2);
58360  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58361  __Pyx_DECREF_SET(__pyx_v_u, __pyx_t_2);
58362  __pyx_t_2 = 0;
58363 
58364  /* "WaveTools.py":3348
58365  * """
58366  * u = np.zeros(3,)
58367  * for cond in self.waveList: # <<<<<<<<<<<<<<
58368  * u += cond.u(x,t)
58369  * return u
58370  */
58371  }
58372  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
58373 
58374  /* "WaveTools.py":3350
58375  * for cond in self.waveList:
58376  * u += cond.u(x,t)
58377  * return u # <<<<<<<<<<<<<<
58378  *
58379  */
58380  __Pyx_XDECREF(__pyx_r);
58381  __Pyx_INCREF(__pyx_v_u);
58382  __pyx_r = __pyx_v_u;
58383  goto __pyx_L0;
58384 
58385  /* "WaveTools.py":3331
58386  * return eta
58387  *
58388  * def u(self,x,t): # <<<<<<<<<<<<<<
58389  * """
58390  * Calculates wave particle velocity (combineWaves class)
58391  */
58392 
58393  /* function exit code */
58394  __pyx_L1_error:;
58395  __Pyx_XDECREF(__pyx_t_1);
58396  __Pyx_XDECREF(__pyx_t_2);
58397  __Pyx_XDECREF(__pyx_t_3);
58398  __Pyx_XDECREF(__pyx_t_6);
58399  __Pyx_XDECREF(__pyx_t_8);
58400  __Pyx_AddTraceback("WaveTools.CombineWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
58401  __pyx_r = NULL;
58402  __pyx_L0:;
58403  __Pyx_XDECREF(__pyx_v_u);
58404  __Pyx_XDECREF(__pyx_v_cond);
58405  __Pyx_XGIVEREF(__pyx_r);
58406  __Pyx_RefNannyFinishContext();
58407  return __pyx_r;
58408 }
58409 
58410 /* "(tree fragment)":1
58411  * def __pyx_unpickle_SteadyCurrent(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
58412  * cdef object __pyx_PickleError
58413  * cdef object __pyx_result
58414  */
58415 
58416 /* Python wrapper */
58417 static PyObject *__pyx_pw_9WaveTools_53__pyx_unpickle_SteadyCurrent(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
58418 static PyMethodDef __pyx_mdef_9WaveTools_53__pyx_unpickle_SteadyCurrent = {"__pyx_unpickle_SteadyCurrent", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_53__pyx_unpickle_SteadyCurrent, METH_VARARGS|METH_KEYWORDS, 0};
58419 static PyObject *__pyx_pw_9WaveTools_53__pyx_unpickle_SteadyCurrent(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
58420  PyObject *__pyx_v___pyx_type = 0;
58421  long __pyx_v___pyx_checksum;
58422  PyObject *__pyx_v___pyx_state = 0;
58423  int __pyx_lineno = 0;
58424  const char *__pyx_filename = NULL;
58425  int __pyx_clineno = 0;
58426  PyObject *__pyx_r = 0;
58427  __Pyx_RefNannyDeclarations
58428  __Pyx_RefNannySetupContext("__pyx_unpickle_SteadyCurrent (wrapper)", 0);
58429  {
58430  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
58431  PyObject* values[3] = {0,0,0};
58432  if (unlikely(__pyx_kwds)) {
58433  Py_ssize_t kw_args;
58434  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
58435  switch (pos_args) {
58436  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
58437  CYTHON_FALLTHROUGH;
58438  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
58439  CYTHON_FALLTHROUGH;
58440  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
58441  CYTHON_FALLTHROUGH;
58442  case 0: break;
58443  default: goto __pyx_L5_argtuple_error;
58444  }
58445  kw_args = PyDict_Size(__pyx_kwds);
58446  switch (pos_args) {
58447  case 0:
58448  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
58449  else goto __pyx_L5_argtuple_error;
58450  CYTHON_FALLTHROUGH;
58451  case 1:
58452  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
58453  else {
58454  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SteadyCurrent", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
58455  }
58456  CYTHON_FALLTHROUGH;
58457  case 2:
58458  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
58459  else {
58460  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SteadyCurrent", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
58461  }
58462  }
58463  if (unlikely(kw_args > 0)) {
58464  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_SteadyCurrent") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
58465  }
58466  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
58467  goto __pyx_L5_argtuple_error;
58468  } else {
58469  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
58470  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
58471  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
58472  }
58473  __pyx_v___pyx_type = values[0];
58474  __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
58475  __pyx_v___pyx_state = values[2];
58476  }
58477  goto __pyx_L4_argument_unpacking_done;
58478  __pyx_L5_argtuple_error:;
58479  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SteadyCurrent", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
58480  __pyx_L3_error:;
58481  __Pyx_AddTraceback("WaveTools.__pyx_unpickle_SteadyCurrent", __pyx_clineno, __pyx_lineno, __pyx_filename);
58482  __Pyx_RefNannyFinishContext();
58483  return NULL;
58484  __pyx_L4_argument_unpacking_done:;
58485  __pyx_r = __pyx_pf_9WaveTools_52__pyx_unpickle_SteadyCurrent(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
58486 
58487  /* function exit code */
58488  __Pyx_RefNannyFinishContext();
58489  return __pyx_r;
58490 }
58491 
58492 static PyObject *__pyx_pf_9WaveTools_52__pyx_unpickle_SteadyCurrent(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
58493  PyObject *__pyx_v___pyx_PickleError = 0;
58494  PyObject *__pyx_v___pyx_result = 0;
58495  PyObject *__pyx_r = NULL;
58496  __Pyx_RefNannyDeclarations
58497  PyObject *__pyx_t_1 = NULL;
58498  int __pyx_t_2;
58499  int __pyx_t_3;
58500  PyObject *__pyx_t_4 = NULL;
58501  PyObject *__pyx_t_5 = NULL;
58502  PyObject *__pyx_t_6 = NULL;
58503  int __pyx_lineno = 0;
58504  const char *__pyx_filename = NULL;
58505  int __pyx_clineno = 0;
58506  __Pyx_RefNannySetupContext("__pyx_unpickle_SteadyCurrent", 0);
58507 
58508  /* "(tree fragment)":4
58509  * cdef object __pyx_PickleError
58510  * cdef object __pyx_result
58511  * if __pyx_checksum not in (0xe2264c7, 0x4153f8a, 0xe106827): # <<<<<<<<<<<<<<
58512  * from pickle import PickleError as __pyx_PickleError
58513  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum)
58514  */
58515  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
58516  __Pyx_GOTREF(__pyx_t_1);
58517  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__56, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4, __pyx_L1_error)
58518  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58519  __pyx_t_3 = (__pyx_t_2 != 0);
58520  if (__pyx_t_3) {
58521 
58522  /* "(tree fragment)":5
58523  * cdef object __pyx_result
58524  * if __pyx_checksum not in (0xe2264c7, 0x4153f8a, 0xe106827):
58525  * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
58526  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum)
58527  * __pyx_result = SteadyCurrent.__new__(__pyx_type)
58528  */
58529  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
58530  __Pyx_GOTREF(__pyx_t_1);
58531  __Pyx_INCREF(__pyx_n_s_PickleError);
58532  __Pyx_GIVEREF(__pyx_n_s_PickleError);
58533  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError);
58534  __pyx_t_4 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
58535  __Pyx_GOTREF(__pyx_t_4);
58536  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58537  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
58538  __Pyx_GOTREF(__pyx_t_1);
58539  __Pyx_INCREF(__pyx_t_1);
58540  __pyx_v___pyx_PickleError = __pyx_t_1;
58541  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58542  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
58543 
58544  /* "(tree fragment)":6
58545  * if __pyx_checksum not in (0xe2264c7, 0x4153f8a, 0xe106827):
58546  * from pickle import PickleError as __pyx_PickleError
58547  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum) # <<<<<<<<<<<<<<
58548  * __pyx_result = SteadyCurrent.__new__(__pyx_type)
58549  * if __pyx_state is not None:
58550  */
58551  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
58552  __Pyx_GOTREF(__pyx_t_1);
58553  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
58554  __Pyx_GOTREF(__pyx_t_5);
58555  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58556  __Pyx_INCREF(__pyx_v___pyx_PickleError);
58557  __pyx_t_1 = __pyx_v___pyx_PickleError; __pyx_t_6 = NULL;
58558  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
58559  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
58560  if (likely(__pyx_t_6)) {
58561  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
58562  __Pyx_INCREF(__pyx_t_6);
58563  __Pyx_INCREF(function);
58564  __Pyx_DECREF_SET(__pyx_t_1, function);
58565  }
58566  }
58567  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
58568  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
58569  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
58570  if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
58571  __Pyx_GOTREF(__pyx_t_4);
58572  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58573  __Pyx_Raise(__pyx_t_4, 0, 0, 0);
58574  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
58575  __PYX_ERR(1, 6, __pyx_L1_error)
58576 
58577  /* "(tree fragment)":4
58578  * cdef object __pyx_PickleError
58579  * cdef object __pyx_result
58580  * if __pyx_checksum not in (0xe2264c7, 0x4153f8a, 0xe106827): # <<<<<<<<<<<<<<
58581  * from pickle import PickleError as __pyx_PickleError
58582  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum)
58583  */
58584  }
58585 
58586  /* "(tree fragment)":7
58587  * from pickle import PickleError as __pyx_PickleError
58588  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum)
58589  * __pyx_result = SteadyCurrent.__new__(__pyx_type) # <<<<<<<<<<<<<<
58590  * if __pyx_state is not None:
58591  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
58592  */
58593  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9WaveTools_SteadyCurrent), __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
58594  __Pyx_GOTREF(__pyx_t_1);
58595  __pyx_t_5 = NULL;
58596  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
58597  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
58598  if (likely(__pyx_t_5)) {
58599  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
58600  __Pyx_INCREF(__pyx_t_5);
58601  __Pyx_INCREF(function);
58602  __Pyx_DECREF_SET(__pyx_t_1, function);
58603  }
58604  }
58605  __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v___pyx_type);
58606  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
58607  if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 7, __pyx_L1_error)
58608  __Pyx_GOTREF(__pyx_t_4);
58609  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58610  __pyx_v___pyx_result = __pyx_t_4;
58611  __pyx_t_4 = 0;
58612 
58613  /* "(tree fragment)":8
58614  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum)
58615  * __pyx_result = SteadyCurrent.__new__(__pyx_type)
58616  * if __pyx_state is not None: # <<<<<<<<<<<<<<
58617  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
58618  * return __pyx_result
58619  */
58620  __pyx_t_3 = (__pyx_v___pyx_state != Py_None);
58621  __pyx_t_2 = (__pyx_t_3 != 0);
58622  if (__pyx_t_2) {
58623 
58624  /* "(tree fragment)":9
58625  * __pyx_result = SteadyCurrent.__new__(__pyx_type)
58626  * if __pyx_state is not None:
58627  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
58628  * return __pyx_result
58629  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state):
58630  */
58631  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
58632  __pyx_t_4 = __pyx_f_9WaveTools___pyx_unpickle_SteadyCurrent__set_state(((struct __pyx_obj_9WaveTools_SteadyCurrent *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 9, __pyx_L1_error)
58633  __Pyx_GOTREF(__pyx_t_4);
58634  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
58635 
58636  /* "(tree fragment)":8
58637  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0xe2264c7, 0x4153f8a, 0xe106827) = (U, mwl, ramp))" % __pyx_checksum)
58638  * __pyx_result = SteadyCurrent.__new__(__pyx_type)
58639  * if __pyx_state is not None: # <<<<<<<<<<<<<<
58640  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
58641  * return __pyx_result
58642  */
58643  }
58644 
58645  /* "(tree fragment)":10
58646  * if __pyx_state is not None:
58647  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
58648  * return __pyx_result # <<<<<<<<<<<<<<
58649  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state):
58650  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
58651  */
58652  __Pyx_XDECREF(__pyx_r);
58653  __Pyx_INCREF(__pyx_v___pyx_result);
58654  __pyx_r = __pyx_v___pyx_result;
58655  goto __pyx_L0;
58656 
58657  /* "(tree fragment)":1
58658  * def __pyx_unpickle_SteadyCurrent(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
58659  * cdef object __pyx_PickleError
58660  * cdef object __pyx_result
58661  */
58662 
58663  /* function exit code */
58664  __pyx_L1_error:;
58665  __Pyx_XDECREF(__pyx_t_1);
58666  __Pyx_XDECREF(__pyx_t_4);
58667  __Pyx_XDECREF(__pyx_t_5);
58668  __Pyx_XDECREF(__pyx_t_6);
58669  __Pyx_AddTraceback("WaveTools.__pyx_unpickle_SteadyCurrent", __pyx_clineno, __pyx_lineno, __pyx_filename);
58670  __pyx_r = NULL;
58671  __pyx_L0:;
58672  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
58673  __Pyx_XDECREF(__pyx_v___pyx_result);
58674  __Pyx_XGIVEREF(__pyx_r);
58675  __Pyx_RefNannyFinishContext();
58676  return __pyx_r;
58677 }
58678 
58679 /* "(tree fragment)":11
58680  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
58681  * return __pyx_result
58682  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
58683  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
58684  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
58685  */
58686 
58687 static PyObject *__pyx_f_9WaveTools___pyx_unpickle_SteadyCurrent__set_state(struct __pyx_obj_9WaveTools_SteadyCurrent *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
58688  PyObject *__pyx_r = NULL;
58689  __Pyx_RefNannyDeclarations
58690  PyObject *__pyx_t_1 = NULL;
58691  double __pyx_t_2;
58692  int __pyx_t_3;
58693  Py_ssize_t __pyx_t_4;
58694  int __pyx_t_5;
58695  int __pyx_t_6;
58696  PyObject *__pyx_t_7 = NULL;
58697  PyObject *__pyx_t_8 = NULL;
58698  PyObject *__pyx_t_9 = NULL;
58699  int __pyx_lineno = 0;
58700  const char *__pyx_filename = NULL;
58701  int __pyx_clineno = 0;
58702  __Pyx_RefNannySetupContext("__pyx_unpickle_SteadyCurrent__set_state", 0);
58703 
58704  /* "(tree fragment)":12
58705  * return __pyx_result
58706  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state):
58707  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2] # <<<<<<<<<<<<<<
58708  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
58709  * __pyx_result.__dict__.update(__pyx_state[3])
58710  */
58711  if (unlikely(__pyx_v___pyx_state == Py_None)) {
58712  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
58713  __PYX_ERR(1, 12, __pyx_L1_error)
58714  }
58715  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
58716  __Pyx_GOTREF(__pyx_t_1);
58717  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 12, __pyx_L1_error)
58718  __Pyx_GIVEREF(__pyx_t_1);
58719  __Pyx_GOTREF(__pyx_v___pyx_result->U);
58720  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->U));
58721  __pyx_v___pyx_result->U = ((PyArrayObject *)__pyx_t_1);
58722  __pyx_t_1 = 0;
58723  if (unlikely(__pyx_v___pyx_state == Py_None)) {
58724  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
58725  __PYX_ERR(1, 12, __pyx_L1_error)
58726  }
58727  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
58728  __Pyx_GOTREF(__pyx_t_1);
58729  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
58730  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58731  __pyx_v___pyx_result->mwl = __pyx_t_2;
58732  if (unlikely(__pyx_v___pyx_state == Py_None)) {
58733  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
58734  __PYX_ERR(1, 12, __pyx_L1_error)
58735  }
58736  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
58737  __Pyx_GOTREF(__pyx_t_1);
58738  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
58739  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58740  __pyx_v___pyx_result->ramp = __pyx_t_2;
58741 
58742  /* "(tree fragment)":13
58743  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state):
58744  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
58745  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
58746  * __pyx_result.__dict__.update(__pyx_state[3])
58747  */
58748  if (unlikely(__pyx_v___pyx_state == Py_None)) {
58749  PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
58750  __PYX_ERR(1, 13, __pyx_L1_error)
58751  }
58752  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
58753  __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
58754  if (__pyx_t_5) {
58755  } else {
58756  __pyx_t_3 = __pyx_t_5;
58757  goto __pyx_L4_bool_binop_done;
58758  }
58759  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
58760  __pyx_t_6 = (__pyx_t_5 != 0);
58761  __pyx_t_3 = __pyx_t_6;
58762  __pyx_L4_bool_binop_done:;
58763  if (__pyx_t_3) {
58764 
58765  /* "(tree fragment)":14
58766  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
58767  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
58768  * __pyx_result.__dict__.update(__pyx_state[3]) # <<<<<<<<<<<<<<
58769  */
58770  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
58771  __Pyx_GOTREF(__pyx_t_7);
58772  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
58773  __Pyx_GOTREF(__pyx_t_8);
58774  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
58775  if (unlikely(__pyx_v___pyx_state == Py_None)) {
58776  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
58777  __PYX_ERR(1, 14, __pyx_L1_error)
58778  }
58779  __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
58780  __Pyx_GOTREF(__pyx_t_7);
58781  __pyx_t_9 = NULL;
58782  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
58783  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
58784  if (likely(__pyx_t_9)) {
58785  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
58786  __Pyx_INCREF(__pyx_t_9);
58787  __Pyx_INCREF(function);
58788  __Pyx_DECREF_SET(__pyx_t_8, function);
58789  }
58790  }
58791  __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
58792  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
58793  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
58794  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
58795  __Pyx_GOTREF(__pyx_t_1);
58796  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
58797  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58798 
58799  /* "(tree fragment)":13
58800  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state):
58801  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
58802  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
58803  * __pyx_result.__dict__.update(__pyx_state[3])
58804  */
58805  }
58806 
58807  /* "(tree fragment)":11
58808  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
58809  * return __pyx_result
58810  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
58811  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
58812  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
58813  */
58814 
58815  /* function exit code */
58816  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
58817  goto __pyx_L0;
58818  __pyx_L1_error:;
58819  __Pyx_XDECREF(__pyx_t_1);
58820  __Pyx_XDECREF(__pyx_t_7);
58821  __Pyx_XDECREF(__pyx_t_8);
58822  __Pyx_XDECREF(__pyx_t_9);
58823  __Pyx_AddTraceback("WaveTools.__pyx_unpickle_SteadyCurrent__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
58824  __pyx_r = 0;
58825  __pyx_L0:;
58826  __Pyx_XGIVEREF(__pyx_r);
58827  __Pyx_RefNannyFinishContext();
58828  return __pyx_r;
58829 }
58830 
58831 /* "(tree fragment)":1
58832  * def __pyx_unpickle_SolitaryWave(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
58833  * cdef object __pyx_PickleError
58834  * cdef object __pyx_result
58835  */
58836 
58837 /* Python wrapper */
58838 static PyObject *__pyx_pw_9WaveTools_55__pyx_unpickle_SolitaryWave(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
58839 static PyMethodDef __pyx_mdef_9WaveTools_55__pyx_unpickle_SolitaryWave = {"__pyx_unpickle_SolitaryWave", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_55__pyx_unpickle_SolitaryWave, METH_VARARGS|METH_KEYWORDS, 0};
58840 static PyObject *__pyx_pw_9WaveTools_55__pyx_unpickle_SolitaryWave(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
58841  PyObject *__pyx_v___pyx_type = 0;
58842  long __pyx_v___pyx_checksum;
58843  PyObject *__pyx_v___pyx_state = 0;
58844  int __pyx_lineno = 0;
58845  const char *__pyx_filename = NULL;
58846  int __pyx_clineno = 0;
58847  PyObject *__pyx_r = 0;
58848  __Pyx_RefNannyDeclarations
58849  __Pyx_RefNannySetupContext("__pyx_unpickle_SolitaryWave (wrapper)", 0);
58850  {
58851  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
58852  PyObject* values[3] = {0,0,0};
58853  if (unlikely(__pyx_kwds)) {
58854  Py_ssize_t kw_args;
58855  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
58856  switch (pos_args) {
58857  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
58858  CYTHON_FALLTHROUGH;
58859  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
58860  CYTHON_FALLTHROUGH;
58861  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
58862  CYTHON_FALLTHROUGH;
58863  case 0: break;
58864  default: goto __pyx_L5_argtuple_error;
58865  }
58866  kw_args = PyDict_Size(__pyx_kwds);
58867  switch (pos_args) {
58868  case 0:
58869  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
58870  else goto __pyx_L5_argtuple_error;
58871  CYTHON_FALLTHROUGH;
58872  case 1:
58873  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
58874  else {
58875  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SolitaryWave", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
58876  }
58877  CYTHON_FALLTHROUGH;
58878  case 2:
58879  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
58880  else {
58881  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SolitaryWave", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
58882  }
58883  }
58884  if (unlikely(kw_args > 0)) {
58885  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_SolitaryWave") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
58886  }
58887  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
58888  goto __pyx_L5_argtuple_error;
58889  } else {
58890  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
58891  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
58892  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
58893  }
58894  __pyx_v___pyx_type = values[0];
58895  __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
58896  __pyx_v___pyx_state = values[2];
58897  }
58898  goto __pyx_L4_argument_unpacking_done;
58899  __pyx_L5_argtuple_error:;
58900  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_SolitaryWave", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
58901  __pyx_L3_error:;
58902  __Pyx_AddTraceback("WaveTools.__pyx_unpickle_SolitaryWave", __pyx_clineno, __pyx_lineno, __pyx_filename);
58903  __Pyx_RefNannyFinishContext();
58904  return NULL;
58905  __pyx_L4_argument_unpacking_done:;
58906  __pyx_r = __pyx_pf_9WaveTools_54__pyx_unpickle_SolitaryWave(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
58907 
58908  /* function exit code */
58909  __Pyx_RefNannyFinishContext();
58910  return __pyx_r;
58911 }
58912 
58913 static PyObject *__pyx_pf_9WaveTools_54__pyx_unpickle_SolitaryWave(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
58914  PyObject *__pyx_v___pyx_PickleError = 0;
58915  PyObject *__pyx_v___pyx_result = 0;
58916  PyObject *__pyx_r = NULL;
58917  __Pyx_RefNannyDeclarations
58918  PyObject *__pyx_t_1 = NULL;
58919  int __pyx_t_2;
58920  int __pyx_t_3;
58921  PyObject *__pyx_t_4 = NULL;
58922  PyObject *__pyx_t_5 = NULL;
58923  PyObject *__pyx_t_6 = NULL;
58924  int __pyx_lineno = 0;
58925  const char *__pyx_filename = NULL;
58926  int __pyx_clineno = 0;
58927  __Pyx_RefNannySetupContext("__pyx_unpickle_SolitaryWave", 0);
58928 
58929  /* "(tree fragment)":4
58930  * cdef object __pyx_PickleError
58931  * cdef object __pyx_result
58932  * if __pyx_checksum not in (0x9a37670, 0xebc478b, 0x6d927ea): # <<<<<<<<<<<<<<
58933  * from pickle import PickleError as __pyx_PickleError
58934  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum)
58935  */
58936  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
58937  __Pyx_GOTREF(__pyx_t_1);
58938  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__57, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4, __pyx_L1_error)
58939  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58940  __pyx_t_3 = (__pyx_t_2 != 0);
58941  if (__pyx_t_3) {
58942 
58943  /* "(tree fragment)":5
58944  * cdef object __pyx_result
58945  * if __pyx_checksum not in (0x9a37670, 0xebc478b, 0x6d927ea):
58946  * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<<
58947  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum)
58948  * __pyx_result = SolitaryWave.__new__(__pyx_type)
58949  */
58950  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
58951  __Pyx_GOTREF(__pyx_t_1);
58952  __Pyx_INCREF(__pyx_n_s_PickleError);
58953  __Pyx_GIVEREF(__pyx_n_s_PickleError);
58954  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError);
58955  __pyx_t_4 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
58956  __Pyx_GOTREF(__pyx_t_4);
58957  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58958  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
58959  __Pyx_GOTREF(__pyx_t_1);
58960  __Pyx_INCREF(__pyx_t_1);
58961  __pyx_v___pyx_PickleError = __pyx_t_1;
58962  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58963  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
58964 
58965  /* "(tree fragment)":6
58966  * if __pyx_checksum not in (0x9a37670, 0xebc478b, 0x6d927ea):
58967  * from pickle import PickleError as __pyx_PickleError
58968  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum) # <<<<<<<<<<<<<<
58969  * __pyx_result = SolitaryWave.__new__(__pyx_type)
58970  * if __pyx_state is not None:
58971  */
58972  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
58973  __Pyx_GOTREF(__pyx_t_1);
58974  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 6, __pyx_L1_error)
58975  __Pyx_GOTREF(__pyx_t_5);
58976  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58977  __Pyx_INCREF(__pyx_v___pyx_PickleError);
58978  __pyx_t_1 = __pyx_v___pyx_PickleError; __pyx_t_6 = NULL;
58979  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
58980  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
58981  if (likely(__pyx_t_6)) {
58982  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
58983  __Pyx_INCREF(__pyx_t_6);
58984  __Pyx_INCREF(function);
58985  __Pyx_DECREF_SET(__pyx_t_1, function);
58986  }
58987  }
58988  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
58989  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
58990  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
58991  if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
58992  __Pyx_GOTREF(__pyx_t_4);
58993  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
58994  __Pyx_Raise(__pyx_t_4, 0, 0, 0);
58995  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
58996  __PYX_ERR(1, 6, __pyx_L1_error)
58997 
58998  /* "(tree fragment)":4
58999  * cdef object __pyx_PickleError
59000  * cdef object __pyx_result
59001  * if __pyx_checksum not in (0x9a37670, 0xebc478b, 0x6d927ea): # <<<<<<<<<<<<<<
59002  * from pickle import PickleError as __pyx_PickleError
59003  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum)
59004  */
59005  }
59006 
59007  /* "(tree fragment)":7
59008  * from pickle import PickleError as __pyx_PickleError
59009  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum)
59010  * __pyx_result = SolitaryWave.__new__(__pyx_type) # <<<<<<<<<<<<<<
59011  * if __pyx_state is not None:
59012  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state)
59013  */
59014  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_9WaveTools_SolitaryWave), __pyx_n_s_new); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error)
59015  __Pyx_GOTREF(__pyx_t_1);
59016  __pyx_t_5 = NULL;
59017  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
59018  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
59019  if (likely(__pyx_t_5)) {
59020  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
59021  __Pyx_INCREF(__pyx_t_5);
59022  __Pyx_INCREF(function);
59023  __Pyx_DECREF_SET(__pyx_t_1, function);
59024  }
59025  }
59026  __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v___pyx_type);
59027  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
59028  if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 7, __pyx_L1_error)
59029  __Pyx_GOTREF(__pyx_t_4);
59030  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59031  __pyx_v___pyx_result = __pyx_t_4;
59032  __pyx_t_4 = 0;
59033 
59034  /* "(tree fragment)":8
59035  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum)
59036  * __pyx_result = SolitaryWave.__new__(__pyx_type)
59037  * if __pyx_state is not None: # <<<<<<<<<<<<<<
59038  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state)
59039  * return __pyx_result
59040  */
59041  __pyx_t_3 = (__pyx_v___pyx_state != Py_None);
59042  __pyx_t_2 = (__pyx_t_3 != 0);
59043  if (__pyx_t_2) {
59044 
59045  /* "(tree fragment)":9
59046  * __pyx_result = SolitaryWave.__new__(__pyx_type)
59047  * if __pyx_state is not None:
59048  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state) # <<<<<<<<<<<<<<
59049  * return __pyx_result
59050  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state):
59051  */
59052  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
59053  __pyx_t_4 = __pyx_f_9WaveTools___pyx_unpickle_SolitaryWave__set_state(((struct __pyx_obj_9WaveTools_SolitaryWave *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 9, __pyx_L1_error)
59054  __Pyx_GOTREF(__pyx_t_4);
59055  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
59056 
59057  /* "(tree fragment)":8
59058  * raise __pyx_PickleError("Incompatible checksums (0x%x vs (0x9a37670, 0xebc478b, 0x6d927ea) = (H, K, c, d2, d3, depth, fast, g, gAbs, mwl, trans, vDir, waveDir))" % __pyx_checksum)
59059  * __pyx_result = SolitaryWave.__new__(__pyx_type)
59060  * if __pyx_state is not None: # <<<<<<<<<<<<<<
59061  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state)
59062  * return __pyx_result
59063  */
59064  }
59065 
59066  /* "(tree fragment)":10
59067  * if __pyx_state is not None:
59068  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state)
59069  * return __pyx_result # <<<<<<<<<<<<<<
59070  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state):
59071  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12]
59072  */
59073  __Pyx_XDECREF(__pyx_r);
59074  __Pyx_INCREF(__pyx_v___pyx_result);
59075  __pyx_r = __pyx_v___pyx_result;
59076  goto __pyx_L0;
59077 
59078  /* "(tree fragment)":1
59079  * def __pyx_unpickle_SolitaryWave(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
59080  * cdef object __pyx_PickleError
59081  * cdef object __pyx_result
59082  */
59083 
59084  /* function exit code */
59085  __pyx_L1_error:;
59086  __Pyx_XDECREF(__pyx_t_1);
59087  __Pyx_XDECREF(__pyx_t_4);
59088  __Pyx_XDECREF(__pyx_t_5);
59089  __Pyx_XDECREF(__pyx_t_6);
59090  __Pyx_AddTraceback("WaveTools.__pyx_unpickle_SolitaryWave", __pyx_clineno, __pyx_lineno, __pyx_filename);
59091  __pyx_r = NULL;
59092  __pyx_L0:;
59093  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
59094  __Pyx_XDECREF(__pyx_v___pyx_result);
59095  __Pyx_XGIVEREF(__pyx_r);
59096  __Pyx_RefNannyFinishContext();
59097  return __pyx_r;
59098 }
59099 
59100 /* "(tree fragment)":11
59101  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state)
59102  * return __pyx_result
59103  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
59104  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12]
59105  * if len(__pyx_state) > 13 and hasattr(__pyx_result, '__dict__'):
59106  */
59107 
59108 static PyObject *__pyx_f_9WaveTools___pyx_unpickle_SolitaryWave__set_state(struct __pyx_obj_9WaveTools_SolitaryWave *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
59109  PyObject *__pyx_r = NULL;
59110  __Pyx_RefNannyDeclarations
59111  PyObject *__pyx_t_1 = NULL;
59112  double __pyx_t_2;
59113  bool __pyx_t_3;
59114  int __pyx_t_4;
59115  Py_ssize_t __pyx_t_5;
59116  int __pyx_t_6;
59117  int __pyx_t_7;
59118  PyObject *__pyx_t_8 = NULL;
59119  PyObject *__pyx_t_9 = NULL;
59120  PyObject *__pyx_t_10 = NULL;
59121  int __pyx_lineno = 0;
59122  const char *__pyx_filename = NULL;
59123  int __pyx_clineno = 0;
59124  __Pyx_RefNannySetupContext("__pyx_unpickle_SolitaryWave__set_state", 0);
59125 
59126  /* "(tree fragment)":12
59127  * return __pyx_result
59128  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state):
59129  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12] # <<<<<<<<<<<<<<
59130  * if len(__pyx_state) > 13 and hasattr(__pyx_result, '__dict__'):
59131  * __pyx_result.__dict__.update(__pyx_state[13])
59132  */
59133  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59134  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59135  __PYX_ERR(1, 12, __pyx_L1_error)
59136  }
59137  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59138  __Pyx_GOTREF(__pyx_t_1);
59139  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59140  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59141  __pyx_v___pyx_result->H = __pyx_t_2;
59142  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59143  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59144  __PYX_ERR(1, 12, __pyx_L1_error)
59145  }
59146  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59147  __Pyx_GOTREF(__pyx_t_1);
59148  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59149  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59150  __pyx_v___pyx_result->K = __pyx_t_2;
59151  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59152  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59153  __PYX_ERR(1, 12, __pyx_L1_error)
59154  }
59155  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59156  __Pyx_GOTREF(__pyx_t_1);
59157  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59158  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59159  __pyx_v___pyx_result->c = __pyx_t_2;
59160  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59161  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59162  __PYX_ERR(1, 12, __pyx_L1_error)
59163  }
59164  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59165  __Pyx_GOTREF(__pyx_t_1);
59166  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59167  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59168  __pyx_v___pyx_result->d2 = __pyx_t_2;
59169  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59170  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59171  __PYX_ERR(1, 12, __pyx_L1_error)
59172  }
59173  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59174  __Pyx_GOTREF(__pyx_t_1);
59175  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59176  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59177  __pyx_v___pyx_result->d3 = __pyx_t_2;
59178  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59179  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59180  __PYX_ERR(1, 12, __pyx_L1_error)
59181  }
59182  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59183  __Pyx_GOTREF(__pyx_t_1);
59184  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59185  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59186  __pyx_v___pyx_result->depth = __pyx_t_2;
59187  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59188  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59189  __PYX_ERR(1, 12, __pyx_L1_error)
59190  }
59191  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59192  __Pyx_GOTREF(__pyx_t_1);
59193  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59194  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59195  __pyx_v___pyx_result->fast = __pyx_t_3;
59196  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59197  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59198  __PYX_ERR(1, 12, __pyx_L1_error)
59199  }
59200  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59201  __Pyx_GOTREF(__pyx_t_1);
59202  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 12, __pyx_L1_error)
59203  __Pyx_GIVEREF(__pyx_t_1);
59204  __Pyx_GOTREF(__pyx_v___pyx_result->g);
59205  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->g));
59206  __pyx_v___pyx_result->g = ((PyArrayObject *)__pyx_t_1);
59207  __pyx_t_1 = 0;
59208  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59209  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59210  __PYX_ERR(1, 12, __pyx_L1_error)
59211  }
59212  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59213  __Pyx_GOTREF(__pyx_t_1);
59214  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59215  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59216  __pyx_v___pyx_result->gAbs = __pyx_t_2;
59217  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59218  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59219  __PYX_ERR(1, 12, __pyx_L1_error)
59220  }
59221  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 9, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59222  __Pyx_GOTREF(__pyx_t_1);
59223  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
59224  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59225  __pyx_v___pyx_result->mwl = __pyx_t_2;
59226  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59227  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59228  __PYX_ERR(1, 12, __pyx_L1_error)
59229  }
59230  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59231  __Pyx_GOTREF(__pyx_t_1);
59232  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 12, __pyx_L1_error)
59233  __Pyx_GIVEREF(__pyx_t_1);
59234  __Pyx_GOTREF(__pyx_v___pyx_result->trans);
59235  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->trans));
59236  __pyx_v___pyx_result->trans = ((PyArrayObject *)__pyx_t_1);
59237  __pyx_t_1 = 0;
59238  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59239  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59240  __PYX_ERR(1, 12, __pyx_L1_error)
59241  }
59242  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59243  __Pyx_GOTREF(__pyx_t_1);
59244  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 12, __pyx_L1_error)
59245  __Pyx_GIVEREF(__pyx_t_1);
59246  __Pyx_GOTREF(__pyx_v___pyx_result->vDir);
59247  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->vDir));
59248  __pyx_v___pyx_result->vDir = ((PyArrayObject *)__pyx_t_1);
59249  __pyx_t_1 = 0;
59250  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59251  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59252  __PYX_ERR(1, 12, __pyx_L1_error)
59253  }
59254  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 12, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
59255  __Pyx_GOTREF(__pyx_t_1);
59256  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 12, __pyx_L1_error)
59257  __Pyx_GIVEREF(__pyx_t_1);
59258  __Pyx_GOTREF(__pyx_v___pyx_result->waveDir);
59259  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->waveDir));
59260  __pyx_v___pyx_result->waveDir = ((PyArrayObject *)__pyx_t_1);
59261  __pyx_t_1 = 0;
59262 
59263  /* "(tree fragment)":13
59264  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state):
59265  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12]
59266  * if len(__pyx_state) > 13 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
59267  * __pyx_result.__dict__.update(__pyx_state[13])
59268  */
59269  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59270  PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
59271  __PYX_ERR(1, 13, __pyx_L1_error)
59272  }
59273  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
59274  __pyx_t_6 = ((__pyx_t_5 > 13) != 0);
59275  if (__pyx_t_6) {
59276  } else {
59277  __pyx_t_4 = __pyx_t_6;
59278  goto __pyx_L4_bool_binop_done;
59279  }
59280  __pyx_t_6 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
59281  __pyx_t_7 = (__pyx_t_6 != 0);
59282  __pyx_t_4 = __pyx_t_7;
59283  __pyx_L4_bool_binop_done:;
59284  if (__pyx_t_4) {
59285 
59286  /* "(tree fragment)":14
59287  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12]
59288  * if len(__pyx_state) > 13 and hasattr(__pyx_result, '__dict__'):
59289  * __pyx_result.__dict__.update(__pyx_state[13]) # <<<<<<<<<<<<<<
59290  */
59291  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
59292  __Pyx_GOTREF(__pyx_t_8);
59293  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_update); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L1_error)
59294  __Pyx_GOTREF(__pyx_t_9);
59295  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
59296  if (unlikely(__pyx_v___pyx_state == Py_None)) {
59297  PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
59298  __PYX_ERR(1, 14, __pyx_L1_error)
59299  }
59300  __pyx_t_8 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 13, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
59301  __Pyx_GOTREF(__pyx_t_8);
59302  __pyx_t_10 = NULL;
59303  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
59304  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
59305  if (likely(__pyx_t_10)) {
59306  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
59307  __Pyx_INCREF(__pyx_t_10);
59308  __Pyx_INCREF(function);
59309  __Pyx_DECREF_SET(__pyx_t_9, function);
59310  }
59311  }
59312  __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
59313  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
59314  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
59315  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
59316  __Pyx_GOTREF(__pyx_t_1);
59317  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
59318  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
59319 
59320  /* "(tree fragment)":13
59321  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state):
59322  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12]
59323  * if len(__pyx_state) > 13 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<<
59324  * __pyx_result.__dict__.update(__pyx_state[13])
59325  */
59326  }
59327 
59328  /* "(tree fragment)":11
59329  * __pyx_unpickle_SolitaryWave__set_state(<SolitaryWave> __pyx_result, __pyx_state)
59330  * return __pyx_result
59331  * cdef __pyx_unpickle_SolitaryWave__set_state(SolitaryWave __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
59332  * __pyx_result.H = __pyx_state[0]; __pyx_result.K = __pyx_state[1]; __pyx_result.c = __pyx_state[2]; __pyx_result.d2 = __pyx_state[3]; __pyx_result.d3 = __pyx_state[4]; __pyx_result.depth = __pyx_state[5]; __pyx_result.fast = __pyx_state[6]; __pyx_result.g = __pyx_state[7]; __pyx_result.gAbs = __pyx_state[8]; __pyx_result.mwl = __pyx_state[9]; __pyx_result.trans = __pyx_state[10]; __pyx_result.vDir = __pyx_state[11]; __pyx_result.waveDir = __pyx_state[12]
59333  * if len(__pyx_state) > 13 and hasattr(__pyx_result, '__dict__'):
59334  */
59335 
59336  /* function exit code */
59337  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
59338  goto __pyx_L0;
59339  __pyx_L1_error:;
59340  __Pyx_XDECREF(__pyx_t_1);
59341  __Pyx_XDECREF(__pyx_t_8);
59342  __Pyx_XDECREF(__pyx_t_9);
59343  __Pyx_XDECREF(__pyx_t_10);
59344  __Pyx_AddTraceback("WaveTools.__pyx_unpickle_SolitaryWave__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
59345  __pyx_r = 0;
59346  __pyx_L0:;
59347  __Pyx_XGIVEREF(__pyx_r);
59348  __Pyx_RefNannyFinishContext();
59349  return __pyx_r;
59350 }
59351 
59352 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":735
59353  * ctypedef npy_cdouble complex_t
59354  *
59355  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
59356  * return PyArray_MultiIterNew(1, <void*>a)
59357  *
59358  */
59359 
59360 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
59361  PyObject *__pyx_r = NULL;
59362  __Pyx_RefNannyDeclarations
59363  PyObject *__pyx_t_1 = NULL;
59364  int __pyx_lineno = 0;
59365  const char *__pyx_filename = NULL;
59366  int __pyx_clineno = 0;
59367  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
59368 
59369  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":736
59370  *
59371  * cdef inline object PyArray_MultiIterNew1(a):
59372  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
59373  *
59374  * cdef inline object PyArray_MultiIterNew2(a, b):
59375  */
59376  __Pyx_XDECREF(__pyx_r);
59377  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 736, __pyx_L1_error)
59378  __Pyx_GOTREF(__pyx_t_1);
59379  __pyx_r = __pyx_t_1;
59380  __pyx_t_1 = 0;
59381  goto __pyx_L0;
59382 
59383  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":735
59384  * ctypedef npy_cdouble complex_t
59385  *
59386  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
59387  * return PyArray_MultiIterNew(1, <void*>a)
59388  *
59389  */
59390 
59391  /* function exit code */
59392  __pyx_L1_error:;
59393  __Pyx_XDECREF(__pyx_t_1);
59394  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
59395  __pyx_r = 0;
59396  __pyx_L0:;
59397  __Pyx_XGIVEREF(__pyx_r);
59398  __Pyx_RefNannyFinishContext();
59399  return __pyx_r;
59400 }
59401 
59402 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":738
59403  * return PyArray_MultiIterNew(1, <void*>a)
59404  *
59405  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
59406  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
59407  *
59408  */
59409 
59410 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
59411  PyObject *__pyx_r = NULL;
59412  __Pyx_RefNannyDeclarations
59413  PyObject *__pyx_t_1 = NULL;
59414  int __pyx_lineno = 0;
59415  const char *__pyx_filename = NULL;
59416  int __pyx_clineno = 0;
59417  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
59418 
59419  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":739
59420  *
59421  * cdef inline object PyArray_MultiIterNew2(a, b):
59422  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
59423  *
59424  * cdef inline object PyArray_MultiIterNew3(a, b, c):
59425  */
59426  __Pyx_XDECREF(__pyx_r);
59427  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 739, __pyx_L1_error)
59428  __Pyx_GOTREF(__pyx_t_1);
59429  __pyx_r = __pyx_t_1;
59430  __pyx_t_1 = 0;
59431  goto __pyx_L0;
59432 
59433  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":738
59434  * return PyArray_MultiIterNew(1, <void*>a)
59435  *
59436  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
59437  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
59438  *
59439  */
59440 
59441  /* function exit code */
59442  __pyx_L1_error:;
59443  __Pyx_XDECREF(__pyx_t_1);
59444  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
59445  __pyx_r = 0;
59446  __pyx_L0:;
59447  __Pyx_XGIVEREF(__pyx_r);
59448  __Pyx_RefNannyFinishContext();
59449  return __pyx_r;
59450 }
59451 
59452 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":741
59453  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
59454  *
59455  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
59456  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
59457  *
59458  */
59459 
59460 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
59461  PyObject *__pyx_r = NULL;
59462  __Pyx_RefNannyDeclarations
59463  PyObject *__pyx_t_1 = NULL;
59464  int __pyx_lineno = 0;
59465  const char *__pyx_filename = NULL;
59466  int __pyx_clineno = 0;
59467  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
59468 
59469  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":742
59470  *
59471  * cdef inline object PyArray_MultiIterNew3(a, b, c):
59472  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
59473  *
59474  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
59475  */
59476  __Pyx_XDECREF(__pyx_r);
59477  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 742, __pyx_L1_error)
59478  __Pyx_GOTREF(__pyx_t_1);
59479  __pyx_r = __pyx_t_1;
59480  __pyx_t_1 = 0;
59481  goto __pyx_L0;
59482 
59483  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":741
59484  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
59485  *
59486  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
59487  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
59488  *
59489  */
59490 
59491  /* function exit code */
59492  __pyx_L1_error:;
59493  __Pyx_XDECREF(__pyx_t_1);
59494  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
59495  __pyx_r = 0;
59496  __pyx_L0:;
59497  __Pyx_XGIVEREF(__pyx_r);
59498  __Pyx_RefNannyFinishContext();
59499  return __pyx_r;
59500 }
59501 
59502 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":744
59503  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
59504  *
59505  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
59506  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
59507  *
59508  */
59509 
59510 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
59511  PyObject *__pyx_r = NULL;
59512  __Pyx_RefNannyDeclarations
59513  PyObject *__pyx_t_1 = NULL;
59514  int __pyx_lineno = 0;
59515  const char *__pyx_filename = NULL;
59516  int __pyx_clineno = 0;
59517  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
59518 
59519  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":745
59520  *
59521  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
59522  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
59523  *
59524  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
59525  */
59526  __Pyx_XDECREF(__pyx_r);
59527  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 745, __pyx_L1_error)
59528  __Pyx_GOTREF(__pyx_t_1);
59529  __pyx_r = __pyx_t_1;
59530  __pyx_t_1 = 0;
59531  goto __pyx_L0;
59532 
59533  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":744
59534  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
59535  *
59536  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
59537  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
59538  *
59539  */
59540 
59541  /* function exit code */
59542  __pyx_L1_error:;
59543  __Pyx_XDECREF(__pyx_t_1);
59544  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
59545  __pyx_r = 0;
59546  __pyx_L0:;
59547  __Pyx_XGIVEREF(__pyx_r);
59548  __Pyx_RefNannyFinishContext();
59549  return __pyx_r;
59550 }
59551 
59552 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":747
59553  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
59554  *
59555  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
59556  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
59557  *
59558  */
59559 
59560 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
59561  PyObject *__pyx_r = NULL;
59562  __Pyx_RefNannyDeclarations
59563  PyObject *__pyx_t_1 = NULL;
59564  int __pyx_lineno = 0;
59565  const char *__pyx_filename = NULL;
59566  int __pyx_clineno = 0;
59567  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
59568 
59569  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":748
59570  *
59571  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
59572  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
59573  *
59574  * cdef inline tuple PyDataType_SHAPE(dtype d):
59575  */
59576  __Pyx_XDECREF(__pyx_r);
59577  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 748, __pyx_L1_error)
59578  __Pyx_GOTREF(__pyx_t_1);
59579  __pyx_r = __pyx_t_1;
59580  __pyx_t_1 = 0;
59581  goto __pyx_L0;
59582 
59583  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":747
59584  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
59585  *
59586  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
59587  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
59588  *
59589  */
59590 
59591  /* function exit code */
59592  __pyx_L1_error:;
59593  __Pyx_XDECREF(__pyx_t_1);
59594  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
59595  __pyx_r = 0;
59596  __pyx_L0:;
59597  __Pyx_XGIVEREF(__pyx_r);
59598  __Pyx_RefNannyFinishContext();
59599  return __pyx_r;
59600 }
59601 
59602 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":750
59603  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
59604  *
59605  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
59606  * if PyDataType_HASSUBARRAY(d):
59607  * return <tuple>d.subarray.shape
59608  */
59609 
59610 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
59611  PyObject *__pyx_r = NULL;
59612  __Pyx_RefNannyDeclarations
59613  int __pyx_t_1;
59614  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
59615 
59616  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":751
59617  *
59618  * cdef inline tuple PyDataType_SHAPE(dtype d):
59619  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
59620  * return <tuple>d.subarray.shape
59621  * else:
59622  */
59623  __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
59624  if (__pyx_t_1) {
59625 
59626  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":752
59627  * cdef inline tuple PyDataType_SHAPE(dtype d):
59628  * if PyDataType_HASSUBARRAY(d):
59629  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
59630  * else:
59631  * return ()
59632  */
59633  __Pyx_XDECREF(__pyx_r);
59634  __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
59635  __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
59636  goto __pyx_L0;
59637 
59638  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":751
59639  *
59640  * cdef inline tuple PyDataType_SHAPE(dtype d):
59641  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
59642  * return <tuple>d.subarray.shape
59643  * else:
59644  */
59645  }
59646 
59647  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":754
59648  * return <tuple>d.subarray.shape
59649  * else:
59650  * return () # <<<<<<<<<<<<<<
59651  *
59652  *
59653  */
59654  /*else*/ {
59655  __Pyx_XDECREF(__pyx_r);
59656  __Pyx_INCREF(__pyx_empty_tuple);
59657  __pyx_r = __pyx_empty_tuple;
59658  goto __pyx_L0;
59659  }
59660 
59661  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":750
59662  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
59663  *
59664  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
59665  * if PyDataType_HASSUBARRAY(d):
59666  * return <tuple>d.subarray.shape
59667  */
59668 
59669  /* function exit code */
59670  __pyx_L0:;
59671  __Pyx_XGIVEREF(__pyx_r);
59672  __Pyx_RefNannyFinishContext();
59673  return __pyx_r;
59674 }
59675 
59676 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":929
59677  * int _import_umath() except -1
59678  *
59679  * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
59680  * Py_INCREF(base) # important to do this before stealing the reference below!
59681  * PyArray_SetBaseObject(arr, base)
59682  */
59683 
59684 static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
59685  __Pyx_RefNannyDeclarations
59686  __Pyx_RefNannySetupContext("set_array_base", 0);
59687 
59688  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":930
59689  *
59690  * cdef inline void set_array_base(ndarray arr, object base):
59691  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
59692  * PyArray_SetBaseObject(arr, base)
59693  *
59694  */
59695  Py_INCREF(__pyx_v_base);
59696 
59697  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":931
59698  * cdef inline void set_array_base(ndarray arr, object base):
59699  * Py_INCREF(base) # important to do this before stealing the reference below!
59700  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
59701  *
59702  * cdef inline object get_array_base(ndarray arr):
59703  */
59704  (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
59705 
59706  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":929
59707  * int _import_umath() except -1
59708  *
59709  * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
59710  * Py_INCREF(base) # important to do this before stealing the reference below!
59711  * PyArray_SetBaseObject(arr, base)
59712  */
59713 
59714  /* function exit code */
59715  __Pyx_RefNannyFinishContext();
59716 }
59717 
59718 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":933
59719  * PyArray_SetBaseObject(arr, base)
59720  *
59721  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
59722  * base = PyArray_BASE(arr)
59723  * if base is NULL:
59724  */
59725 
59726 static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
59727  PyObject *__pyx_v_base;
59728  PyObject *__pyx_r = NULL;
59729  __Pyx_RefNannyDeclarations
59730  int __pyx_t_1;
59731  __Pyx_RefNannySetupContext("get_array_base", 0);
59732 
59733  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":934
59734  *
59735  * cdef inline object get_array_base(ndarray arr):
59736  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
59737  * if base is NULL:
59738  * return None
59739  */
59740  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
59741 
59742  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":935
59743  * cdef inline object get_array_base(ndarray arr):
59744  * base = PyArray_BASE(arr)
59745  * if base is NULL: # <<<<<<<<<<<<<<
59746  * return None
59747  * return <object>base
59748  */
59749  __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
59750  if (__pyx_t_1) {
59751 
59752  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":936
59753  * base = PyArray_BASE(arr)
59754  * if base is NULL:
59755  * return None # <<<<<<<<<<<<<<
59756  * return <object>base
59757  *
59758  */
59759  __Pyx_XDECREF(__pyx_r);
59760  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
59761  goto __pyx_L0;
59762 
59763  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":935
59764  * cdef inline object get_array_base(ndarray arr):
59765  * base = PyArray_BASE(arr)
59766  * if base is NULL: # <<<<<<<<<<<<<<
59767  * return None
59768  * return <object>base
59769  */
59770  }
59771 
59772  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":937
59773  * if base is NULL:
59774  * return None
59775  * return <object>base # <<<<<<<<<<<<<<
59776  *
59777  * # Versions of the import_* functions which are more suitable for
59778  */
59779  __Pyx_XDECREF(__pyx_r);
59780  __Pyx_INCREF(((PyObject *)__pyx_v_base));
59781  __pyx_r = ((PyObject *)__pyx_v_base);
59782  goto __pyx_L0;
59783 
59784  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":933
59785  * PyArray_SetBaseObject(arr, base)
59786  *
59787  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
59788  * base = PyArray_BASE(arr)
59789  * if base is NULL:
59790  */
59791 
59792  /* function exit code */
59793  __pyx_L0:;
59794  __Pyx_XGIVEREF(__pyx_r);
59795  __Pyx_RefNannyFinishContext();
59796  return __pyx_r;
59797 }
59798 
59799 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":941
59800  * # Versions of the import_* functions which are more suitable for
59801  * # Cython code.
59802  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
59803  * try:
59804  * __pyx_import_array()
59805  */
59806 
59807 static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
59808  int __pyx_r;
59809  __Pyx_RefNannyDeclarations
59810  PyObject *__pyx_t_1 = NULL;
59811  PyObject *__pyx_t_2 = NULL;
59812  PyObject *__pyx_t_3 = NULL;
59813  int __pyx_t_4;
59814  PyObject *__pyx_t_5 = NULL;
59815  PyObject *__pyx_t_6 = NULL;
59816  PyObject *__pyx_t_7 = NULL;
59817  PyObject *__pyx_t_8 = NULL;
59818  int __pyx_lineno = 0;
59819  const char *__pyx_filename = NULL;
59820  int __pyx_clineno = 0;
59821  __Pyx_RefNannySetupContext("import_array", 0);
59822 
59823  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":942
59824  * # Cython code.
59825  * cdef inline int import_array() except -1:
59826  * try: # <<<<<<<<<<<<<<
59827  * __pyx_import_array()
59828  * except Exception:
59829  */
59830  {
59831  __Pyx_PyThreadState_declare
59832  __Pyx_PyThreadState_assign
59833  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
59834  __Pyx_XGOTREF(__pyx_t_1);
59835  __Pyx_XGOTREF(__pyx_t_2);
59836  __Pyx_XGOTREF(__pyx_t_3);
59837  /*try:*/ {
59838 
59839  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":943
59840  * cdef inline int import_array() except -1:
59841  * try:
59842  * __pyx_import_array() # <<<<<<<<<<<<<<
59843  * except Exception:
59844  * raise ImportError("numpy.core.multiarray failed to import")
59845  */
59846  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 943, __pyx_L3_error)
59847 
59848  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":942
59849  * # Cython code.
59850  * cdef inline int import_array() except -1:
59851  * try: # <<<<<<<<<<<<<<
59852  * __pyx_import_array()
59853  * except Exception:
59854  */
59855  }
59856  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
59857  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
59858  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
59859  goto __pyx_L8_try_end;
59860  __pyx_L3_error:;
59861 
59862  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":944
59863  * try:
59864  * __pyx_import_array()
59865  * except Exception: # <<<<<<<<<<<<<<
59866  * raise ImportError("numpy.core.multiarray failed to import")
59867  *
59868  */
59869  __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
59870  if (__pyx_t_4) {
59871  __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
59872  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 944, __pyx_L5_except_error)
59873  __Pyx_GOTREF(__pyx_t_5);
59874  __Pyx_GOTREF(__pyx_t_6);
59875  __Pyx_GOTREF(__pyx_t_7);
59876 
59877  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":945
59878  * __pyx_import_array()
59879  * except Exception:
59880  * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
59881  *
59882  * cdef inline int import_umath() except -1:
59883  */
59884  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 945, __pyx_L5_except_error)
59885  __Pyx_GOTREF(__pyx_t_8);
59886  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
59887  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
59888  __PYX_ERR(3, 945, __pyx_L5_except_error)
59889  }
59890  goto __pyx_L5_except_error;
59891  __pyx_L5_except_error:;
59892 
59893  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":942
59894  * # Cython code.
59895  * cdef inline int import_array() except -1:
59896  * try: # <<<<<<<<<<<<<<
59897  * __pyx_import_array()
59898  * except Exception:
59899  */
59900  __Pyx_XGIVEREF(__pyx_t_1);
59901  __Pyx_XGIVEREF(__pyx_t_2);
59902  __Pyx_XGIVEREF(__pyx_t_3);
59903  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
59904  goto __pyx_L1_error;
59905  __pyx_L8_try_end:;
59906  }
59907 
59908  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":941
59909  * # Versions of the import_* functions which are more suitable for
59910  * # Cython code.
59911  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
59912  * try:
59913  * __pyx_import_array()
59914  */
59915 
59916  /* function exit code */
59917  __pyx_r = 0;
59918  goto __pyx_L0;
59919  __pyx_L1_error:;
59920  __Pyx_XDECREF(__pyx_t_5);
59921  __Pyx_XDECREF(__pyx_t_6);
59922  __Pyx_XDECREF(__pyx_t_7);
59923  __Pyx_XDECREF(__pyx_t_8);
59924  __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
59925  __pyx_r = -1;
59926  __pyx_L0:;
59927  __Pyx_RefNannyFinishContext();
59928  return __pyx_r;
59929 }
59930 
59931 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":947
59932  * raise ImportError("numpy.core.multiarray failed to import")
59933  *
59934  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
59935  * try:
59936  * _import_umath()
59937  */
59938 
59939 static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
59940  int __pyx_r;
59941  __Pyx_RefNannyDeclarations
59942  PyObject *__pyx_t_1 = NULL;
59943  PyObject *__pyx_t_2 = NULL;
59944  PyObject *__pyx_t_3 = NULL;
59945  int __pyx_t_4;
59946  PyObject *__pyx_t_5 = NULL;
59947  PyObject *__pyx_t_6 = NULL;
59948  PyObject *__pyx_t_7 = NULL;
59949  PyObject *__pyx_t_8 = NULL;
59950  int __pyx_lineno = 0;
59951  const char *__pyx_filename = NULL;
59952  int __pyx_clineno = 0;
59953  __Pyx_RefNannySetupContext("import_umath", 0);
59954 
59955  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":948
59956  *
59957  * cdef inline int import_umath() except -1:
59958  * try: # <<<<<<<<<<<<<<
59959  * _import_umath()
59960  * except Exception:
59961  */
59962  {
59963  __Pyx_PyThreadState_declare
59964  __Pyx_PyThreadState_assign
59965  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
59966  __Pyx_XGOTREF(__pyx_t_1);
59967  __Pyx_XGOTREF(__pyx_t_2);
59968  __Pyx_XGOTREF(__pyx_t_3);
59969  /*try:*/ {
59970 
59971  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":949
59972  * cdef inline int import_umath() except -1:
59973  * try:
59974  * _import_umath() # <<<<<<<<<<<<<<
59975  * except Exception:
59976  * raise ImportError("numpy.core.umath failed to import")
59977  */
59978  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 949, __pyx_L3_error)
59979 
59980  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":948
59981  *
59982  * cdef inline int import_umath() except -1:
59983  * try: # <<<<<<<<<<<<<<
59984  * _import_umath()
59985  * except Exception:
59986  */
59987  }
59988  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
59989  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
59990  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
59991  goto __pyx_L8_try_end;
59992  __pyx_L3_error:;
59993 
59994  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":950
59995  * try:
59996  * _import_umath()
59997  * except Exception: # <<<<<<<<<<<<<<
59998  * raise ImportError("numpy.core.umath failed to import")
59999  *
60000  */
60001  __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
60002  if (__pyx_t_4) {
60003  __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
60004  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 950, __pyx_L5_except_error)
60005  __Pyx_GOTREF(__pyx_t_5);
60006  __Pyx_GOTREF(__pyx_t_6);
60007  __Pyx_GOTREF(__pyx_t_7);
60008 
60009  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":951
60010  * _import_umath()
60011  * except Exception:
60012  * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
60013  *
60014  * cdef inline int import_ufunc() except -1:
60015  */
60016  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 951, __pyx_L5_except_error)
60017  __Pyx_GOTREF(__pyx_t_8);
60018  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
60019  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
60020  __PYX_ERR(3, 951, __pyx_L5_except_error)
60021  }
60022  goto __pyx_L5_except_error;
60023  __pyx_L5_except_error:;
60024 
60025  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":948
60026  *
60027  * cdef inline int import_umath() except -1:
60028  * try: # <<<<<<<<<<<<<<
60029  * _import_umath()
60030  * except Exception:
60031  */
60032  __Pyx_XGIVEREF(__pyx_t_1);
60033  __Pyx_XGIVEREF(__pyx_t_2);
60034  __Pyx_XGIVEREF(__pyx_t_3);
60035  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
60036  goto __pyx_L1_error;
60037  __pyx_L8_try_end:;
60038  }
60039 
60040  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":947
60041  * raise ImportError("numpy.core.multiarray failed to import")
60042  *
60043  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
60044  * try:
60045  * _import_umath()
60046  */
60047 
60048  /* function exit code */
60049  __pyx_r = 0;
60050  goto __pyx_L0;
60051  __pyx_L1_error:;
60052  __Pyx_XDECREF(__pyx_t_5);
60053  __Pyx_XDECREF(__pyx_t_6);
60054  __Pyx_XDECREF(__pyx_t_7);
60055  __Pyx_XDECREF(__pyx_t_8);
60056  __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
60057  __pyx_r = -1;
60058  __pyx_L0:;
60059  __Pyx_RefNannyFinishContext();
60060  return __pyx_r;
60061 }
60062 
60063 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":953
60064  * raise ImportError("numpy.core.umath failed to import")
60065  *
60066  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
60067  * try:
60068  * _import_umath()
60069  */
60070 
60071 static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
60072  int __pyx_r;
60073  __Pyx_RefNannyDeclarations
60074  PyObject *__pyx_t_1 = NULL;
60075  PyObject *__pyx_t_2 = NULL;
60076  PyObject *__pyx_t_3 = NULL;
60077  int __pyx_t_4;
60078  PyObject *__pyx_t_5 = NULL;
60079  PyObject *__pyx_t_6 = NULL;
60080  PyObject *__pyx_t_7 = NULL;
60081  PyObject *__pyx_t_8 = NULL;
60082  int __pyx_lineno = 0;
60083  const char *__pyx_filename = NULL;
60084  int __pyx_clineno = 0;
60085  __Pyx_RefNannySetupContext("import_ufunc", 0);
60086 
60087  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":954
60088  *
60089  * cdef inline int import_ufunc() except -1:
60090  * try: # <<<<<<<<<<<<<<
60091  * _import_umath()
60092  * except Exception:
60093  */
60094  {
60095  __Pyx_PyThreadState_declare
60096  __Pyx_PyThreadState_assign
60097  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
60098  __Pyx_XGOTREF(__pyx_t_1);
60099  __Pyx_XGOTREF(__pyx_t_2);
60100  __Pyx_XGOTREF(__pyx_t_3);
60101  /*try:*/ {
60102 
60103  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":955
60104  * cdef inline int import_ufunc() except -1:
60105  * try:
60106  * _import_umath() # <<<<<<<<<<<<<<
60107  * except Exception:
60108  * raise ImportError("numpy.core.umath failed to import")
60109  */
60110  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 955, __pyx_L3_error)
60111 
60112  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":954
60113  *
60114  * cdef inline int import_ufunc() except -1:
60115  * try: # <<<<<<<<<<<<<<
60116  * _import_umath()
60117  * except Exception:
60118  */
60119  }
60120  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
60121  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
60122  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
60123  goto __pyx_L8_try_end;
60124  __pyx_L3_error:;
60125 
60126  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":956
60127  * try:
60128  * _import_umath()
60129  * except Exception: # <<<<<<<<<<<<<<
60130  * raise ImportError("numpy.core.umath failed to import")
60131  *
60132  */
60133  __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
60134  if (__pyx_t_4) {
60135  __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
60136  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 956, __pyx_L5_except_error)
60137  __Pyx_GOTREF(__pyx_t_5);
60138  __Pyx_GOTREF(__pyx_t_6);
60139  __Pyx_GOTREF(__pyx_t_7);
60140 
60141  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":957
60142  * _import_umath()
60143  * except Exception:
60144  * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
60145  *
60146  * cdef extern from *:
60147  */
60148  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 957, __pyx_L5_except_error)
60149  __Pyx_GOTREF(__pyx_t_8);
60150  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
60151  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
60152  __PYX_ERR(3, 957, __pyx_L5_except_error)
60153  }
60154  goto __pyx_L5_except_error;
60155  __pyx_L5_except_error:;
60156 
60157  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":954
60158  *
60159  * cdef inline int import_ufunc() except -1:
60160  * try: # <<<<<<<<<<<<<<
60161  * _import_umath()
60162  * except Exception:
60163  */
60164  __Pyx_XGIVEREF(__pyx_t_1);
60165  __Pyx_XGIVEREF(__pyx_t_2);
60166  __Pyx_XGIVEREF(__pyx_t_3);
60167  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
60168  goto __pyx_L1_error;
60169  __pyx_L8_try_end:;
60170  }
60171 
60172  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":953
60173  * raise ImportError("numpy.core.umath failed to import")
60174  *
60175  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
60176  * try:
60177  * _import_umath()
60178  */
60179 
60180  /* function exit code */
60181  __pyx_r = 0;
60182  goto __pyx_L0;
60183  __pyx_L1_error:;
60184  __Pyx_XDECREF(__pyx_t_5);
60185  __Pyx_XDECREF(__pyx_t_6);
60186  __Pyx_XDECREF(__pyx_t_7);
60187  __Pyx_XDECREF(__pyx_t_8);
60188  __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
60189  __pyx_r = -1;
60190  __pyx_L0:;
60191  __Pyx_RefNannyFinishContext();
60192  return __pyx_r;
60193 }
60194 
60195 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":967
60196  *
60197  *
60198  * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<<
60199  * """
60200  * Cython equivalent of `isinstance(obj, np.timedelta64)`
60201  */
60202 
60203 static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
60204  int __pyx_r;
60205  __Pyx_RefNannyDeclarations
60206  __Pyx_RefNannySetupContext("is_timedelta64_object", 0);
60207 
60208  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":979
60209  * bool
60210  * """
60211  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
60212  *
60213  *
60214  */
60215  __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type));
60216  goto __pyx_L0;
60217 
60218  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":967
60219  *
60220  *
60221  * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<<
60222  * """
60223  * Cython equivalent of `isinstance(obj, np.timedelta64)`
60224  */
60225 
60226  /* function exit code */
60227  __pyx_L0:;
60228  __Pyx_RefNannyFinishContext();
60229  return __pyx_r;
60230 }
60231 
60232 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":982
60233  *
60234  *
60235  * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<<
60236  * """
60237  * Cython equivalent of `isinstance(obj, np.datetime64)`
60238  */
60239 
60240 static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
60241  int __pyx_r;
60242  __Pyx_RefNannyDeclarations
60243  __Pyx_RefNannySetupContext("is_datetime64_object", 0);
60244 
60245  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":994
60246  * bool
60247  * """
60248  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
60249  *
60250  *
60251  */
60252  __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type));
60253  goto __pyx_L0;
60254 
60255  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":982
60256  *
60257  *
60258  * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<<
60259  * """
60260  * Cython equivalent of `isinstance(obj, np.datetime64)`
60261  */
60262 
60263  /* function exit code */
60264  __pyx_L0:;
60265  __Pyx_RefNannyFinishContext();
60266  return __pyx_r;
60267 }
60268 
60269 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":997
60270  *
60271  *
60272  * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<<
60273  * """
60274  * returns the int64 value underlying scalar numpy datetime64 object
60275  */
60276 
60277 static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
60278  npy_datetime __pyx_r;
60279 
60280  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1004
60281  * also needed. That can be found using `get_datetime64_unit`.
60282  * """
60283  * return (<PyDatetimeScalarObject*>obj).obval # <<<<<<<<<<<<<<
60284  *
60285  *
60286  */
60287  __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval;
60288  goto __pyx_L0;
60289 
60290  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":997
60291  *
60292  *
60293  * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<<
60294  * """
60295  * returns the int64 value underlying scalar numpy datetime64 object
60296  */
60297 
60298  /* function exit code */
60299  __pyx_L0:;
60300  return __pyx_r;
60301 }
60302 
60303 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1007
60304  *
60305  *
60306  * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<<
60307  * """
60308  * returns the int64 value underlying scalar numpy timedelta64 object
60309  */
60310 
60311 static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
60312  npy_timedelta __pyx_r;
60313 
60314  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1011
60315  * returns the int64 value underlying scalar numpy timedelta64 object
60316  * """
60317  * return (<PyTimedeltaScalarObject*>obj).obval # <<<<<<<<<<<<<<
60318  *
60319  *
60320  */
60321  __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval;
60322  goto __pyx_L0;
60323 
60324  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1007
60325  *
60326  *
60327  * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<<
60328  * """
60329  * returns the int64 value underlying scalar numpy timedelta64 object
60330  */
60331 
60332  /* function exit code */
60333  __pyx_L0:;
60334  return __pyx_r;
60335 }
60336 
60337 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1014
60338  *
60339  *
60340  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<<
60341  * """
60342  * returns the unit part of the dtype for a numpy datetime64 object.
60343  */
60344 
60345 static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
60346  NPY_DATETIMEUNIT __pyx_r;
60347 
60348  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1018
60349  * returns the unit part of the dtype for a numpy datetime64 object.
60350  * """
60351  * return <NPY_DATETIMEUNIT>(<PyDatetimeScalarObject*>obj).obmeta.base # <<<<<<<<<<<<<<
60352  */
60353  __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base);
60354  goto __pyx_L0;
60355 
60356  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1014
60357  *
60358  *
60359  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<<
60360  * """
60361  * returns the unit part of the dtype for a numpy datetime64 object.
60362  */
60363 
60364  /* function exit code */
60365  __pyx_L0:;
60366  return __pyx_r;
60367 }
60368 
60369 /* "carray.to_py":112
60370  *
60371  * @cname("__Pyx_carray_to_py_double")
60372  * cdef inline list __Pyx_carray_to_py_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<<
60373  * cdef size_t i
60374  * cdef object value
60375  */
60376 
60377 static CYTHON_INLINE PyObject *__Pyx_carray_to_py_double(double *__pyx_v_v, Py_ssize_t __pyx_v_length) {
60378  size_t __pyx_v_i;
60379  PyObject *__pyx_v_value = 0;
60380  PyObject *__pyx_v_l = NULL;
60381  PyObject *__pyx_r = NULL;
60382  __Pyx_RefNannyDeclarations
60383  PyObject *__pyx_t_1 = NULL;
60384  PyObject *__pyx_t_2 = NULL;
60385  PyObject *__pyx_t_3 = NULL;
60386  PyObject *__pyx_t_4 = NULL;
60387  Py_ssize_t __pyx_t_5;
60388  PyObject *(*__pyx_t_6)(PyObject *);
60389  size_t __pyx_t_7;
60390  int __pyx_lineno = 0;
60391  const char *__pyx_filename = NULL;
60392  int __pyx_clineno = 0;
60393  __Pyx_RefNannySetupContext("__Pyx_carray_to_py_double", 0);
60394 
60395  /* "carray.to_py":115
60396  * cdef size_t i
60397  * cdef object value
60398  * l = PyList_New(length) # <<<<<<<<<<<<<<
60399  * for i in range(<size_t>length):
60400  * value = v[i]
60401  */
60402  __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
60403  __Pyx_GOTREF(__pyx_t_1);
60404  __pyx_v_l = ((PyObject*)__pyx_t_1);
60405  __pyx_t_1 = 0;
60406 
60407  /* "carray.to_py":116
60408  * cdef object value
60409  * l = PyList_New(length)
60410  * for i in range(<size_t>length): # <<<<<<<<<<<<<<
60411  * value = v[i]
60412  * Py_INCREF(value)
60413  */
60414  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 116, __pyx_L1_error)
60415  __Pyx_GOTREF(__pyx_t_2);
60416  __pyx_t_3 = __Pyx_PyInt_FromSize_t(((size_t)__pyx_v_length)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 116, __pyx_L1_error)
60417  __Pyx_GOTREF(__pyx_t_3);
60418  __pyx_t_4 = NULL;
60419  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
60420  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
60421  if (likely(__pyx_t_4)) {
60422  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
60423  __Pyx_INCREF(__pyx_t_4);
60424  __Pyx_INCREF(function);
60425  __Pyx_DECREF_SET(__pyx_t_2, function);
60426  }
60427  }
60428  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
60429  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
60430  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
60431  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 116, __pyx_L1_error)
60432  __Pyx_GOTREF(__pyx_t_1);
60433  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
60434  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
60435  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
60436  __pyx_t_6 = NULL;
60437  } else {
60438  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 116, __pyx_L1_error)
60439  __Pyx_GOTREF(__pyx_t_2);
60440  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 116, __pyx_L1_error)
60441  }
60442  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
60443  for (;;) {
60444  if (likely(!__pyx_t_6)) {
60445  if (likely(PyList_CheckExact(__pyx_t_2))) {
60446  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
60447  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
60448  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 116, __pyx_L1_error)
60449  #else
60450  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 116, __pyx_L1_error)
60451  __Pyx_GOTREF(__pyx_t_1);
60452  #endif
60453  } else {
60454  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
60455  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
60456  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 116, __pyx_L1_error)
60457  #else
60458  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 116, __pyx_L1_error)
60459  __Pyx_GOTREF(__pyx_t_1);
60460  #endif
60461  }
60462  } else {
60463  __pyx_t_1 = __pyx_t_6(__pyx_t_2);
60464  if (unlikely(!__pyx_t_1)) {
60465  PyObject* exc_type = PyErr_Occurred();
60466  if (exc_type) {
60467  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
60468  else __PYX_ERR(1, 116, __pyx_L1_error)
60469  }
60470  break;
60471  }
60472  __Pyx_GOTREF(__pyx_t_1);
60473  }
60474  __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 116, __pyx_L1_error)
60475  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
60476  __pyx_v_i = __pyx_t_7;
60477 
60478  /* "carray.to_py":117
60479  * l = PyList_New(length)
60480  * for i in range(<size_t>length):
60481  * value = v[i] # <<<<<<<<<<<<<<
60482  * Py_INCREF(value)
60483  * PyList_SET_ITEM(l, i, value)
60484  */
60485  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 117, __pyx_L1_error)
60486  __Pyx_GOTREF(__pyx_t_1);
60487  __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1);
60488  __pyx_t_1 = 0;
60489 
60490  /* "carray.to_py":118
60491  * for i in range(<size_t>length):
60492  * value = v[i]
60493  * Py_INCREF(value) # <<<<<<<<<<<<<<
60494  * PyList_SET_ITEM(l, i, value)
60495  * return l
60496  */
60497  Py_INCREF(__pyx_v_value);
60498 
60499  /* "carray.to_py":119
60500  * value = v[i]
60501  * Py_INCREF(value)
60502  * PyList_SET_ITEM(l, i, value) # <<<<<<<<<<<<<<
60503  * return l
60504  *
60505  */
60506  PyList_SET_ITEM(__pyx_v_l, __pyx_v_i, __pyx_v_value);
60507 
60508  /* "carray.to_py":116
60509  * cdef object value
60510  * l = PyList_New(length)
60511  * for i in range(<size_t>length): # <<<<<<<<<<<<<<
60512  * value = v[i]
60513  * Py_INCREF(value)
60514  */
60515  }
60516  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
60517 
60518  /* "carray.to_py":120
60519  * Py_INCREF(value)
60520  * PyList_SET_ITEM(l, i, value)
60521  * return l # <<<<<<<<<<<<<<
60522  *
60523  *
60524  */
60525  __Pyx_XDECREF(__pyx_r);
60526  __Pyx_INCREF(__pyx_v_l);
60527  __pyx_r = __pyx_v_l;
60528  goto __pyx_L0;
60529 
60530  /* "carray.to_py":112
60531  *
60532  * @cname("__Pyx_carray_to_py_double")
60533  * cdef inline list __Pyx_carray_to_py_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<<
60534  * cdef size_t i
60535  * cdef object value
60536  */
60537 
60538  /* function exit code */
60539  __pyx_L1_error:;
60540  __Pyx_XDECREF(__pyx_t_1);
60541  __Pyx_XDECREF(__pyx_t_2);
60542  __Pyx_XDECREF(__pyx_t_3);
60543  __Pyx_XDECREF(__pyx_t_4);
60544  __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
60545  __pyx_r = 0;
60546  __pyx_L0:;
60547  __Pyx_XDECREF(__pyx_v_value);
60548  __Pyx_XDECREF(__pyx_v_l);
60549  __Pyx_XGIVEREF(__pyx_r);
60550  __Pyx_RefNannyFinishContext();
60551  return __pyx_r;
60552 }
60553 
60554 /* "carray.to_py":124
60555  *
60556  * @cname("__Pyx_carray_to_tuple_double")
60557  * cdef inline tuple __Pyx_carray_to_tuple_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<<
60558  * cdef size_t i
60559  * cdef object value
60560  */
60561 
60562 static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_double(double *__pyx_v_v, Py_ssize_t __pyx_v_length) {
60563  size_t __pyx_v_i;
60564  PyObject *__pyx_v_value = 0;
60565  PyObject *__pyx_v_t = NULL;
60566  PyObject *__pyx_r = NULL;
60567  __Pyx_RefNannyDeclarations
60568  PyObject *__pyx_t_1 = NULL;
60569  PyObject *__pyx_t_2 = NULL;
60570  PyObject *__pyx_t_3 = NULL;
60571  PyObject *__pyx_t_4 = NULL;
60572  Py_ssize_t __pyx_t_5;
60573  PyObject *(*__pyx_t_6)(PyObject *);
60574  size_t __pyx_t_7;
60575  int __pyx_lineno = 0;
60576  const char *__pyx_filename = NULL;
60577  int __pyx_clineno = 0;
60578  __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple_double", 0);
60579 
60580  /* "carray.to_py":127
60581  * cdef size_t i
60582  * cdef object value
60583  * t = PyTuple_New(length) # <<<<<<<<<<<<<<
60584  * for i in range(<size_t>length):
60585  * value = v[i]
60586  */
60587  __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 127, __pyx_L1_error)
60588  __Pyx_GOTREF(__pyx_t_1);
60589  __pyx_v_t = ((PyObject*)__pyx_t_1);
60590  __pyx_t_1 = 0;
60591 
60592  /* "carray.to_py":128
60593  * cdef object value
60594  * t = PyTuple_New(length)
60595  * for i in range(<size_t>length): # <<<<<<<<<<<<<<
60596  * value = v[i]
60597  * Py_INCREF(value)
60598  */
60599  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 128, __pyx_L1_error)
60600  __Pyx_GOTREF(__pyx_t_2);
60601  __pyx_t_3 = __Pyx_PyInt_FromSize_t(((size_t)__pyx_v_length)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 128, __pyx_L1_error)
60602  __Pyx_GOTREF(__pyx_t_3);
60603  __pyx_t_4 = NULL;
60604  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
60605  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
60606  if (likely(__pyx_t_4)) {
60607  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
60608  __Pyx_INCREF(__pyx_t_4);
60609  __Pyx_INCREF(function);
60610  __Pyx_DECREF_SET(__pyx_t_2, function);
60611  }
60612  }
60613  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
60614  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
60615  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
60616  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 128, __pyx_L1_error)
60617  __Pyx_GOTREF(__pyx_t_1);
60618  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
60619  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
60620  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
60621  __pyx_t_6 = NULL;
60622  } else {
60623  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 128, __pyx_L1_error)
60624  __Pyx_GOTREF(__pyx_t_2);
60625  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 128, __pyx_L1_error)
60626  }
60627  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
60628  for (;;) {
60629  if (likely(!__pyx_t_6)) {
60630  if (likely(PyList_CheckExact(__pyx_t_2))) {
60631  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
60632  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
60633  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 128, __pyx_L1_error)
60634  #else
60635  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 128, __pyx_L1_error)
60636  __Pyx_GOTREF(__pyx_t_1);
60637  #endif
60638  } else {
60639  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
60640  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
60641  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 128, __pyx_L1_error)
60642  #else
60643  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 128, __pyx_L1_error)
60644  __Pyx_GOTREF(__pyx_t_1);
60645  #endif
60646  }
60647  } else {
60648  __pyx_t_1 = __pyx_t_6(__pyx_t_2);
60649  if (unlikely(!__pyx_t_1)) {
60650  PyObject* exc_type = PyErr_Occurred();
60651  if (exc_type) {
60652  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
60653  else __PYX_ERR(1, 128, __pyx_L1_error)
60654  }
60655  break;
60656  }
60657  __Pyx_GOTREF(__pyx_t_1);
60658  }
60659  __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 128, __pyx_L1_error)
60660  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
60661  __pyx_v_i = __pyx_t_7;
60662 
60663  /* "carray.to_py":129
60664  * t = PyTuple_New(length)
60665  * for i in range(<size_t>length):
60666  * value = v[i] # <<<<<<<<<<<<<<
60667  * Py_INCREF(value)
60668  * PyTuple_SET_ITEM(t, i, value)
60669  */
60670  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 129, __pyx_L1_error)
60671  __Pyx_GOTREF(__pyx_t_1);
60672  __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1);
60673  __pyx_t_1 = 0;
60674 
60675  /* "carray.to_py":130
60676  * for i in range(<size_t>length):
60677  * value = v[i]
60678  * Py_INCREF(value) # <<<<<<<<<<<<<<
60679  * PyTuple_SET_ITEM(t, i, value)
60680  * return t
60681  */
60682  Py_INCREF(__pyx_v_value);
60683 
60684  /* "carray.to_py":131
60685  * value = v[i]
60686  * Py_INCREF(value)
60687  * PyTuple_SET_ITEM(t, i, value) # <<<<<<<<<<<<<<
60688  * return t
60689  */
60690  PyTuple_SET_ITEM(__pyx_v_t, __pyx_v_i, __pyx_v_value);
60691 
60692  /* "carray.to_py":128
60693  * cdef object value
60694  * t = PyTuple_New(length)
60695  * for i in range(<size_t>length): # <<<<<<<<<<<<<<
60696  * value = v[i]
60697  * Py_INCREF(value)
60698  */
60699  }
60700  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
60701 
60702  /* "carray.to_py":132
60703  * Py_INCREF(value)
60704  * PyTuple_SET_ITEM(t, i, value)
60705  * return t # <<<<<<<<<<<<<<
60706  */
60707  __Pyx_XDECREF(__pyx_r);
60708  __Pyx_INCREF(__pyx_v_t);
60709  __pyx_r = __pyx_v_t;
60710  goto __pyx_L0;
60711 
60712  /* "carray.to_py":124
60713  *
60714  * @cname("__Pyx_carray_to_tuple_double")
60715  * cdef inline tuple __Pyx_carray_to_tuple_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<<
60716  * cdef size_t i
60717  * cdef object value
60718  */
60719 
60720  /* function exit code */
60721  __pyx_L1_error:;
60722  __Pyx_XDECREF(__pyx_t_1);
60723  __Pyx_XDECREF(__pyx_t_2);
60724  __Pyx_XDECREF(__pyx_t_3);
60725  __Pyx_XDECREF(__pyx_t_4);
60726  __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
60727  __pyx_r = 0;
60728  __pyx_L0:;
60729  __Pyx_XDECREF(__pyx_v_value);
60730  __Pyx_XDECREF(__pyx_v_t);
60731  __Pyx_XGIVEREF(__pyx_r);
60732  __Pyx_RefNannyFinishContext();
60733  return __pyx_r;
60734 }
60735 
60736 static PyObject *__pyx_tp_new_9WaveTools_SteadyCurrent(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
60737  struct __pyx_obj_9WaveTools_SteadyCurrent *p;
60738  PyObject *o;
60739  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
60740  o = (*t->tp_alloc)(t, 0);
60741  } else {
60742  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
60743  }
60744  if (unlikely(!o)) return 0;
60745  p = ((struct __pyx_obj_9WaveTools_SteadyCurrent *)o);
60746  p->U = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60747  return o;
60748 }
60749 
60750 static void __pyx_tp_dealloc_9WaveTools_SteadyCurrent(PyObject *o) {
60751  struct __pyx_obj_9WaveTools_SteadyCurrent *p = (struct __pyx_obj_9WaveTools_SteadyCurrent *)o;
60752  #if CYTHON_USE_TP_FINALIZE
60753  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
60754  if (PyObject_CallFinalizerFromDealloc(o)) return;
60755  }
60756  #endif
60757  PyObject_GC_UnTrack(o);
60758  Py_CLEAR(p->U);
60759  (*Py_TYPE(o)->tp_free)(o);
60760 }
60761 
60762 static int __pyx_tp_traverse_9WaveTools_SteadyCurrent(PyObject *o, visitproc v, void *a) {
60763  int e;
60764  struct __pyx_obj_9WaveTools_SteadyCurrent *p = (struct __pyx_obj_9WaveTools_SteadyCurrent *)o;
60765  if (p->U) {
60766  e = (*v)(((PyObject *)p->U), a); if (e) return e;
60767  }
60768  return 0;
60769 }
60770 
60771 static int __pyx_tp_clear_9WaveTools_SteadyCurrent(PyObject *o) {
60772  PyObject* tmp;
60773  struct __pyx_obj_9WaveTools_SteadyCurrent *p = (struct __pyx_obj_9WaveTools_SteadyCurrent *)o;
60774  tmp = ((PyObject*)p->U);
60775  p->U = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60776  Py_XDECREF(tmp);
60777  return 0;
60778 }
60779 
60780 static PyObject *__pyx_getprop_9WaveTools_13SteadyCurrent_mwl(PyObject *o, CYTHON_UNUSED void *x) {
60781  return __pyx_pw_9WaveTools_13SteadyCurrent_3mwl_1__get__(o);
60782 }
60783 
60784 static int __pyx_setprop_9WaveTools_13SteadyCurrent_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
60785  if (v) {
60786  return __pyx_pw_9WaveTools_13SteadyCurrent_3mwl_3__set__(o, v);
60787  }
60788  else {
60789  PyErr_SetString(PyExc_NotImplementedError, "__del__");
60790  return -1;
60791  }
60792 }
60793 
60794 static PyMethodDef __pyx_methods_9WaveTools_SteadyCurrent[] = {
60795  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13SteadyCurrent_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13SteadyCurrent_2eta},
60796  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13SteadyCurrent_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13SteadyCurrent_4u},
60797  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_13SteadyCurrent_7__reduce_cython__, METH_NOARGS, 0},
60798  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_13SteadyCurrent_9__setstate_cython__, METH_O, 0},
60799  {0, 0, 0, 0}
60800 };
60801 
60802 static struct PyGetSetDef __pyx_getsets_9WaveTools_SteadyCurrent[] = {
60803  {(char *)"mwl", __pyx_getprop_9WaveTools_13SteadyCurrent_mwl, __pyx_setprop_9WaveTools_13SteadyCurrent_mwl, (char *)0, 0},
60804  {0, 0, 0, 0, 0}
60805 };
60806 
60807 static PyTypeObject __pyx_type_9WaveTools_SteadyCurrent = {
60808  PyVarObject_HEAD_INIT(0, 0)
60809  "WaveTools.SteadyCurrent", /*tp_name*/
60810  sizeof(struct __pyx_obj_9WaveTools_SteadyCurrent), /*tp_basicsize*/
60811  0, /*tp_itemsize*/
60812  __pyx_tp_dealloc_9WaveTools_SteadyCurrent, /*tp_dealloc*/
60813  #if PY_VERSION_HEX < 0x030800b4
60814  0, /*tp_print*/
60815  #endif
60816  #if PY_VERSION_HEX >= 0x030800b4
60817  0, /*tp_vectorcall_offset*/
60818  #endif
60819  0, /*tp_getattr*/
60820  0, /*tp_setattr*/
60821  #if PY_MAJOR_VERSION < 3
60822  0, /*tp_compare*/
60823  #endif
60824  #if PY_MAJOR_VERSION >= 3
60825  0, /*tp_as_async*/
60826  #endif
60827  0, /*tp_repr*/
60828  0, /*tp_as_number*/
60829  0, /*tp_as_sequence*/
60830  0, /*tp_as_mapping*/
60831  0, /*tp_hash*/
60832  0, /*tp_call*/
60833  0, /*tp_str*/
60834  0, /*tp_getattro*/
60835  0, /*tp_setattro*/
60836  0, /*tp_as_buffer*/
60837  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
60838  "\n This class is used for generating a steady current\n\n Parameters\n ----------\n U: numpy.ndarray\n Current velocity in vector form\n mwl : float\n Still water level\n rampTime : float\n Ramp time for current\n\n ", /*tp_doc*/
60839  __pyx_tp_traverse_9WaveTools_SteadyCurrent, /*tp_traverse*/
60840  __pyx_tp_clear_9WaveTools_SteadyCurrent, /*tp_clear*/
60841  0, /*tp_richcompare*/
60842  0, /*tp_weaklistoffset*/
60843  0, /*tp_iter*/
60844  0, /*tp_iternext*/
60845  __pyx_methods_9WaveTools_SteadyCurrent, /*tp_methods*/
60846  0, /*tp_members*/
60847  __pyx_getsets_9WaveTools_SteadyCurrent, /*tp_getset*/
60848  0, /*tp_base*/
60849  0, /*tp_dict*/
60850  0, /*tp_descr_get*/
60851  0, /*tp_descr_set*/
60852  0, /*tp_dictoffset*/
60853  __pyx_pw_9WaveTools_13SteadyCurrent_1__init__, /*tp_init*/
60854  0, /*tp_alloc*/
60855  __pyx_tp_new_9WaveTools_SteadyCurrent, /*tp_new*/
60856  0, /*tp_free*/
60857  0, /*tp_is_gc*/
60858  0, /*tp_bases*/
60859  0, /*tp_mro*/
60860  0, /*tp_cache*/
60861  0, /*tp_subclasses*/
60862  0, /*tp_weaklist*/
60863  0, /*tp_del*/
60864  0, /*tp_version_tag*/
60865  #if PY_VERSION_HEX >= 0x030400a1
60866  0, /*tp_finalize*/
60867  #endif
60868  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
60869  0, /*tp_vectorcall*/
60870  #endif
60871  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
60872  0, /*tp_print*/
60873  #endif
60874  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
60875  0, /*tp_pypy_flags*/
60876  #endif
60877 };
60878 
60879 static PyObject *__pyx_tp_new_9WaveTools_SolitaryWave(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
60880  struct __pyx_obj_9WaveTools_SolitaryWave *p;
60881  PyObject *o;
60882  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
60883  o = (*t->tp_alloc)(t, 0);
60884  } else {
60885  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
60886  }
60887  if (unlikely(!o)) return 0;
60888  p = ((struct __pyx_obj_9WaveTools_SolitaryWave *)o);
60889  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60890  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60891  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60892  p->trans = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60893  return o;
60894 }
60895 
60896 static void __pyx_tp_dealloc_9WaveTools_SolitaryWave(PyObject *o) {
60897  struct __pyx_obj_9WaveTools_SolitaryWave *p = (struct __pyx_obj_9WaveTools_SolitaryWave *)o;
60898  #if CYTHON_USE_TP_FINALIZE
60899  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
60900  if (PyObject_CallFinalizerFromDealloc(o)) return;
60901  }
60902  #endif
60903  PyObject_GC_UnTrack(o);
60904  Py_CLEAR(p->g);
60905  Py_CLEAR(p->waveDir);
60906  Py_CLEAR(p->vDir);
60907  Py_CLEAR(p->trans);
60908  (*Py_TYPE(o)->tp_free)(o);
60909 }
60910 
60911 static int __pyx_tp_traverse_9WaveTools_SolitaryWave(PyObject *o, visitproc v, void *a) {
60912  int e;
60913  struct __pyx_obj_9WaveTools_SolitaryWave *p = (struct __pyx_obj_9WaveTools_SolitaryWave *)o;
60914  if (p->g) {
60915  e = (*v)(((PyObject *)p->g), a); if (e) return e;
60916  }
60917  if (p->waveDir) {
60918  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
60919  }
60920  if (p->vDir) {
60921  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
60922  }
60923  if (p->trans) {
60924  e = (*v)(((PyObject *)p->trans), a); if (e) return e;
60925  }
60926  return 0;
60927 }
60928 
60929 static int __pyx_tp_clear_9WaveTools_SolitaryWave(PyObject *o) {
60930  PyObject* tmp;
60931  struct __pyx_obj_9WaveTools_SolitaryWave *p = (struct __pyx_obj_9WaveTools_SolitaryWave *)o;
60932  tmp = ((PyObject*)p->g);
60933  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60934  Py_XDECREF(tmp);
60935  tmp = ((PyObject*)p->waveDir);
60936  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60937  Py_XDECREF(tmp);
60938  tmp = ((PyObject*)p->vDir);
60939  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60940  Py_XDECREF(tmp);
60941  tmp = ((PyObject*)p->trans);
60942  p->trans = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
60943  Py_XDECREF(tmp);
60944  return 0;
60945 }
60946 
60947 static PyObject *__pyx_getprop_9WaveTools_12SolitaryWave_mwl(PyObject *o, CYTHON_UNUSED void *x) {
60948  return __pyx_pw_9WaveTools_12SolitaryWave_3mwl_1__get__(o);
60949 }
60950 
60951 static int __pyx_setprop_9WaveTools_12SolitaryWave_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
60952  if (v) {
60953  return __pyx_pw_9WaveTools_12SolitaryWave_3mwl_3__set__(o, v);
60954  }
60955  else {
60956  PyErr_SetString(PyExc_NotImplementedError, "__del__");
60957  return -1;
60958  }
60959 }
60960 
60961 static PyObject *__pyx_getprop_9WaveTools_12SolitaryWave_c(PyObject *o, CYTHON_UNUSED void *x) {
60962  return __pyx_pw_9WaveTools_12SolitaryWave_1c_1__get__(o);
60963 }
60964 
60965 static int __pyx_setprop_9WaveTools_12SolitaryWave_c(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
60966  if (v) {
60967  return __pyx_pw_9WaveTools_12SolitaryWave_1c_3__set__(o, v);
60968  }
60969  else {
60970  PyErr_SetString(PyExc_NotImplementedError, "__del__");
60971  return -1;
60972  }
60973 }
60974 
60975 static PyMethodDef __pyx_methods_9WaveTools_SolitaryWave[] = {
60976  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12SolitaryWave_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12SolitaryWave_2eta},
60977  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_12SolitaryWave_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12SolitaryWave_4u},
60978  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_12SolitaryWave_7__reduce_cython__, METH_NOARGS, 0},
60979  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_12SolitaryWave_9__setstate_cython__, METH_O, 0},
60980  {0, 0, 0, 0}
60981 };
60982 
60983 static struct PyGetSetDef __pyx_getsets_9WaveTools_SolitaryWave[] = {
60984  {(char *)"mwl", __pyx_getprop_9WaveTools_12SolitaryWave_mwl, __pyx_setprop_9WaveTools_12SolitaryWave_mwl, (char *)0, 0},
60985  {(char *)"c", __pyx_getprop_9WaveTools_12SolitaryWave_c, __pyx_setprop_9WaveTools_12SolitaryWave_c, (char *)0, 0},
60986  {0, 0, 0, 0, 0}
60987 };
60988 
60989 static PyTypeObject __pyx_type_9WaveTools_SolitaryWave = {
60990  PyVarObject_HEAD_INIT(0, 0)
60991  "WaveTools.SolitaryWave", /*tp_name*/
60992  sizeof(struct __pyx_obj_9WaveTools_SolitaryWave), /*tp_basicsize*/
60993  0, /*tp_itemsize*/
60994  __pyx_tp_dealloc_9WaveTools_SolitaryWave, /*tp_dealloc*/
60995  #if PY_VERSION_HEX < 0x030800b4
60996  0, /*tp_print*/
60997  #endif
60998  #if PY_VERSION_HEX >= 0x030800b4
60999  0, /*tp_vectorcall_offset*/
61000  #endif
61001  0, /*tp_getattr*/
61002  0, /*tp_setattr*/
61003  #if PY_MAJOR_VERSION < 3
61004  0, /*tp_compare*/
61005  #endif
61006  #if PY_MAJOR_VERSION >= 3
61007  0, /*tp_as_async*/
61008  #endif
61009  0, /*tp_repr*/
61010  0, /*tp_as_number*/
61011  0, /*tp_as_sequence*/
61012  0, /*tp_as_mapping*/
61013  0, /*tp_hash*/
61014  0, /*tp_call*/
61015  0, /*tp_str*/
61016  0, /*tp_getattro*/
61017  0, /*tp_setattro*/
61018  0, /*tp_as_buffer*/
61019  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
61020  "\n This class is used for generating 1st order solitary wave\n\n Parameters\n ----------\n waveHeight: float\n Regular wave height\n mwl : float\n Still water level\n depth : float\n Water depth\n g : numpy.ndarray\n Gravitational acceleration vector\n waveDir : numpy.ndarray\n Wave direction in vector form\n trans : numpy.ndarray\n Position vector of the peak \n fast : bool\n Switch for optimised functions\n\n ", /*tp_doc*/
61021  __pyx_tp_traverse_9WaveTools_SolitaryWave, /*tp_traverse*/
61022  __pyx_tp_clear_9WaveTools_SolitaryWave, /*tp_clear*/
61023  0, /*tp_richcompare*/
61024  0, /*tp_weaklistoffset*/
61025  0, /*tp_iter*/
61026  0, /*tp_iternext*/
61027  __pyx_methods_9WaveTools_SolitaryWave, /*tp_methods*/
61028  0, /*tp_members*/
61029  __pyx_getsets_9WaveTools_SolitaryWave, /*tp_getset*/
61030  0, /*tp_base*/
61031  0, /*tp_dict*/
61032  0, /*tp_descr_get*/
61033  0, /*tp_descr_set*/
61034  0, /*tp_dictoffset*/
61035  __pyx_pw_9WaveTools_12SolitaryWave_1__init__, /*tp_init*/
61036  0, /*tp_alloc*/
61037  __pyx_tp_new_9WaveTools_SolitaryWave, /*tp_new*/
61038  0, /*tp_free*/
61039  0, /*tp_is_gc*/
61040  0, /*tp_bases*/
61041  0, /*tp_mro*/
61042  0, /*tp_cache*/
61043  0, /*tp_subclasses*/
61044  0, /*tp_weaklist*/
61045  0, /*tp_del*/
61046  0, /*tp_version_tag*/
61047  #if PY_VERSION_HEX >= 0x030400a1
61048  0, /*tp_finalize*/
61049  #endif
61050  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
61051  0, /*tp_vectorcall*/
61052  #endif
61053  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
61054  0, /*tp_print*/
61055  #endif
61056  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
61057  0, /*tp_pypy_flags*/
61058  #endif
61059 };
61060 static struct __pyx_vtabstruct_9WaveTools_MonochromaticWaves __pyx_vtable_9WaveTools_MonochromaticWaves;
61061 
61062 static PyObject *__pyx_tp_new_9WaveTools_MonochromaticWaves(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
61063  struct __pyx_obj_9WaveTools_MonochromaticWaves *p;
61064  PyObject *o;
61065  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
61066  o = (*t->tp_alloc)(t, 0);
61067  } else {
61068  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
61069  }
61070  if (unlikely(!o)) return 0;
61071  p = ((struct __pyx_obj_9WaveTools_MonochromaticWaves *)o);
61072  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_MonochromaticWaves;
61073  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61074  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61075  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61076  p->Ycoeff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61077  p->Bcoeff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61078  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61079  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61080  p->mV = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61081  p->waveType = Py_None; Py_INCREF(Py_None);
61082  return o;
61083 }
61084 
61085 static void __pyx_tp_dealloc_9WaveTools_MonochromaticWaves(PyObject *o) {
61086  struct __pyx_obj_9WaveTools_MonochromaticWaves *p = (struct __pyx_obj_9WaveTools_MonochromaticWaves *)o;
61087  #if CYTHON_USE_TP_FINALIZE
61088  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
61089  if (PyObject_CallFinalizerFromDealloc(o)) return;
61090  }
61091  #endif
61092  PyObject_GC_UnTrack(o);
61093  Py_CLEAR(p->g);
61094  Py_CLEAR(p->waveDir);
61095  Py_CLEAR(p->vDir);
61096  Py_CLEAR(p->Ycoeff);
61097  Py_CLEAR(p->Bcoeff);
61098  Py_CLEAR(p->kDir);
61099  Py_CLEAR(p->tanhF);
61100  Py_CLEAR(p->mV);
61101  Py_CLEAR(p->waveType);
61102  (*Py_TYPE(o)->tp_free)(o);
61103 }
61104 
61105 static int __pyx_tp_traverse_9WaveTools_MonochromaticWaves(PyObject *o, visitproc v, void *a) {
61106  int e;
61107  struct __pyx_obj_9WaveTools_MonochromaticWaves *p = (struct __pyx_obj_9WaveTools_MonochromaticWaves *)o;
61108  if (p->g) {
61109  e = (*v)(((PyObject *)p->g), a); if (e) return e;
61110  }
61111  if (p->waveDir) {
61112  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
61113  }
61114  if (p->vDir) {
61115  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
61116  }
61117  if (p->Ycoeff) {
61118  e = (*v)(((PyObject *)p->Ycoeff), a); if (e) return e;
61119  }
61120  if (p->Bcoeff) {
61121  e = (*v)(((PyObject *)p->Bcoeff), a); if (e) return e;
61122  }
61123  if (p->kDir) {
61124  e = (*v)(((PyObject *)p->kDir), a); if (e) return e;
61125  }
61126  if (p->tanhF) {
61127  e = (*v)(((PyObject *)p->tanhF), a); if (e) return e;
61128  }
61129  if (p->mV) {
61130  e = (*v)(((PyObject *)p->mV), a); if (e) return e;
61131  }
61132  if (p->waveType) {
61133  e = (*v)(p->waveType, a); if (e) return e;
61134  }
61135  return 0;
61136 }
61137 
61138 static int __pyx_tp_clear_9WaveTools_MonochromaticWaves(PyObject *o) {
61139  PyObject* tmp;
61140  struct __pyx_obj_9WaveTools_MonochromaticWaves *p = (struct __pyx_obj_9WaveTools_MonochromaticWaves *)o;
61141  tmp = ((PyObject*)p->g);
61142  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61143  Py_XDECREF(tmp);
61144  tmp = ((PyObject*)p->waveDir);
61145  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61146  Py_XDECREF(tmp);
61147  tmp = ((PyObject*)p->vDir);
61148  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61149  Py_XDECREF(tmp);
61150  tmp = ((PyObject*)p->Ycoeff);
61151  p->Ycoeff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61152  Py_XDECREF(tmp);
61153  tmp = ((PyObject*)p->Bcoeff);
61154  p->Bcoeff = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61155  Py_XDECREF(tmp);
61156  tmp = ((PyObject*)p->kDir);
61157  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61158  Py_XDECREF(tmp);
61159  tmp = ((PyObject*)p->tanhF);
61160  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61161  Py_XDECREF(tmp);
61162  tmp = ((PyObject*)p->mV);
61163  p->mV = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61164  Py_XDECREF(tmp);
61165  tmp = ((PyObject*)p->waveType);
61166  p->waveType = Py_None; Py_INCREF(Py_None);
61167  Py_XDECREF(tmp);
61168  return 0;
61169 }
61170 
61171 static PyObject *__pyx_getprop_9WaveTools_18MonochromaticWaves_wavelength(PyObject *o, CYTHON_UNUSED void *x) {
61172  return __pyx_pw_9WaveTools_18MonochromaticWaves_10wavelength_1__get__(o);
61173 }
61174 
61175 static int __pyx_setprop_9WaveTools_18MonochromaticWaves_wavelength(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61176  if (v) {
61177  return __pyx_pw_9WaveTools_18MonochromaticWaves_10wavelength_3__set__(o, v);
61178  }
61179  else {
61180  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61181  return -1;
61182  }
61183 }
61184 
61185 static PyObject *__pyx_getprop_9WaveTools_18MonochromaticWaves_mwl(PyObject *o, CYTHON_UNUSED void *x) {
61186  return __pyx_pw_9WaveTools_18MonochromaticWaves_3mwl_1__get__(o);
61187 }
61188 
61189 static int __pyx_setprop_9WaveTools_18MonochromaticWaves_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61190  if (v) {
61191  return __pyx_pw_9WaveTools_18MonochromaticWaves_3mwl_3__set__(o, v);
61192  }
61193  else {
61194  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61195  return -1;
61196  }
61197 }
61198 
61199 static PyMethodDef __pyx_methods_9WaveTools_MonochromaticWaves[] = {
61200  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_18MonochromaticWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_2eta},
61201  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_18MonochromaticWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_4u},
61202  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_7__reduce_cython__, METH_NOARGS, 0},
61203  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_9__setstate_cython__, METH_O, 0},
61204  {0, 0, 0, 0}
61205 };
61206 
61207 static struct PyGetSetDef __pyx_getsets_9WaveTools_MonochromaticWaves[] = {
61208  {(char *)"wavelength", __pyx_getprop_9WaveTools_18MonochromaticWaves_wavelength, __pyx_setprop_9WaveTools_18MonochromaticWaves_wavelength, (char *)0, 0},
61209  {(char *)"mwl", __pyx_getprop_9WaveTools_18MonochromaticWaves_mwl, __pyx_setprop_9WaveTools_18MonochromaticWaves_mwl, (char *)0, 0},
61210  {0, 0, 0, 0, 0}
61211 };
61212 
61213 static PyTypeObject __pyx_type_9WaveTools_MonochromaticWaves = {
61214  PyVarObject_HEAD_INIT(0, 0)
61215  "WaveTools.MonochromaticWaves", /*tp_name*/
61216  sizeof(struct __pyx_obj_9WaveTools_MonochromaticWaves), /*tp_basicsize*/
61217  0, /*tp_itemsize*/
61218  __pyx_tp_dealloc_9WaveTools_MonochromaticWaves, /*tp_dealloc*/
61219  #if PY_VERSION_HEX < 0x030800b4
61220  0, /*tp_print*/
61221  #endif
61222  #if PY_VERSION_HEX >= 0x030800b4
61223  0, /*tp_vectorcall_offset*/
61224  #endif
61225  0, /*tp_getattr*/
61226  0, /*tp_setattr*/
61227  #if PY_MAJOR_VERSION < 3
61228  0, /*tp_compare*/
61229  #endif
61230  #if PY_MAJOR_VERSION >= 3
61231  0, /*tp_as_async*/
61232  #endif
61233  0, /*tp_repr*/
61234  0, /*tp_as_number*/
61235  0, /*tp_as_sequence*/
61236  0, /*tp_as_mapping*/
61237  0, /*tp_hash*/
61238  0, /*tp_call*/
61239  0, /*tp_str*/
61240  0, /*tp_getattro*/
61241  0, /*tp_setattro*/
61242  0, /*tp_as_buffer*/
61243  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
61244  "\n This class is used for generating regular waves in both linear and nonlinear regimes. See Dean and Dalrymple 1994 for equations.\n\n Parameters\n ----------\n period : float\n Regular wave period\n waveHeight: float\n Regular wave height\n mwl : float\n Still water level\n depth : float\n Water depth\n g : numpy.ndarray\n Gravitational acceleration vector\n waveDir : numpy.ndarray\n Wave direction in vector form\n wavelength : float\n Regular wave length, calculated from linear dispersion if set to None\n waveType : string\n Defines regular wave theory (\"Linear\", \"Fenton\")\n Fenton: uses BCoeffs/YCoeffs provided by user\n autoFenton: bool\n autoFenton=True: uses waveheight, period, depth, and g to\n calculate coeffs\n autoFenton=False: uses BCoeffs/YCoeffs provided by user\n autoFentonOpts: dict\n options for autoFenton. The dictionary must contain the following\n entries (here the default values if autoFentonOpts is None):\n autoFentonOpts = {'mode': 'Period',\n 'current_criterion': 1,\n 'height_steps': 1,\n 'niter': 40,\n 'conv_crit': 1e-05,\n 'points_freesurface': 50,\n 'points_velocity': 16,\n 'points_vertical': 20}\n Ycoeff : numpy.ndarray\n Fenton Fourier coefficients for free-surface elevation \n Bcoeff : numpy.ndarray\n Fenton Fourier coefficients for velocity (set to None for linear wave theory) \n Nf : integer\n Fenton Fourier components for reconstruction (set to 1000, needs to be equal to the size of Bcoeff and Ycoeff) \n meanVelocity : numpy.ndarray""\n Mean velocity for Fenton Fourier approximation \n phi0 : float\n Regular wave phase (0 by default) \n fast : bool\n Switch for optimised functions\n\n ", /*tp_doc*/
61245  __pyx_tp_traverse_9WaveTools_MonochromaticWaves, /*tp_traverse*/
61246  __pyx_tp_clear_9WaveTools_MonochromaticWaves, /*tp_clear*/
61247  0, /*tp_richcompare*/
61248  0, /*tp_weaklistoffset*/
61249  0, /*tp_iter*/
61250  0, /*tp_iternext*/
61251  __pyx_methods_9WaveTools_MonochromaticWaves, /*tp_methods*/
61252  0, /*tp_members*/
61253  __pyx_getsets_9WaveTools_MonochromaticWaves, /*tp_getset*/
61254  0, /*tp_base*/
61255  0, /*tp_dict*/
61256  0, /*tp_descr_get*/
61257  0, /*tp_descr_set*/
61258  0, /*tp_dictoffset*/
61259  __pyx_pw_9WaveTools_18MonochromaticWaves_1__init__, /*tp_init*/
61260  0, /*tp_alloc*/
61261  __pyx_tp_new_9WaveTools_MonochromaticWaves, /*tp_new*/
61262  0, /*tp_free*/
61263  0, /*tp_is_gc*/
61264  0, /*tp_bases*/
61265  0, /*tp_mro*/
61266  0, /*tp_cache*/
61267  0, /*tp_subclasses*/
61268  0, /*tp_weaklist*/
61269  0, /*tp_del*/
61270  0, /*tp_version_tag*/
61271  #if PY_VERSION_HEX >= 0x030400a1
61272  0, /*tp_finalize*/
61273  #endif
61274  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
61275  0, /*tp_vectorcall*/
61276  #endif
61277  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
61278  0, /*tp_print*/
61279  #endif
61280  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
61281  0, /*tp_pypy_flags*/
61282  #endif
61283 };
61284 static struct __pyx_vtabstruct_9WaveTools_NewWave __pyx_vtable_9WaveTools_NewWave;
61285 
61286 static PyObject *__pyx_tp_new_9WaveTools_NewWave(PyTypeObject *t, PyObject *a, PyObject *k) {
61287  struct __pyx_obj_9WaveTools_NewWave *p;
61288  PyObject *o;
61289  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
61290  o = (*t->tp_alloc)(t, 0);
61291  } else {
61292  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
61293  }
61294  if (unlikely(!o)) return 0;
61295  p = ((struct __pyx_obj_9WaveTools_NewWave *)o);
61296  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_NewWave;
61297  p->fi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61298  p->fim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61299  p->Si_Jm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61300  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61301  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61302  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61303  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61304  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61305  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61306  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61307  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61308  p->phi = Py_None; Py_INCREF(Py_None);
61309  if (unlikely(__pyx_pw_9WaveTools_7NewWave_1__cinit__(o, a, k) < 0)) goto bad;
61310  return o;
61311  bad:
61312  Py_DECREF(o); o = 0;
61313  return NULL;
61314 }
61315 
61316 static void __pyx_tp_dealloc_9WaveTools_NewWave(PyObject *o) {
61317  struct __pyx_obj_9WaveTools_NewWave *p = (struct __pyx_obj_9WaveTools_NewWave *)o;
61318  #if CYTHON_USE_TP_FINALIZE
61319  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
61320  if (PyObject_CallFinalizerFromDealloc(o)) return;
61321  }
61322  #endif
61323  PyObject_GC_UnTrack(o);
61324  Py_CLEAR(p->fi);
61325  Py_CLEAR(p->fim);
61326  Py_CLEAR(p->Si_Jm);
61327  Py_CLEAR(p->ki);
61328  Py_CLEAR(p->omega);
61329  Py_CLEAR(p->tanhF);
61330  Py_CLEAR(p->g);
61331  Py_CLEAR(p->waveDir);
61332  Py_CLEAR(p->vDir);
61333  Py_CLEAR(p->kDir);
61334  Py_CLEAR(p->ai);
61335  Py_CLEAR(p->phi);
61336  (*Py_TYPE(o)->tp_free)(o);
61337 }
61338 
61339 static int __pyx_tp_traverse_9WaveTools_NewWave(PyObject *o, visitproc v, void *a) {
61340  int e;
61341  struct __pyx_obj_9WaveTools_NewWave *p = (struct __pyx_obj_9WaveTools_NewWave *)o;
61342  if (p->fi) {
61343  e = (*v)(((PyObject *)p->fi), a); if (e) return e;
61344  }
61345  if (p->fim) {
61346  e = (*v)(((PyObject *)p->fim), a); if (e) return e;
61347  }
61348  if (p->Si_Jm) {
61349  e = (*v)(((PyObject *)p->Si_Jm), a); if (e) return e;
61350  }
61351  if (p->ki) {
61352  e = (*v)(((PyObject *)p->ki), a); if (e) return e;
61353  }
61354  if (p->omega) {
61355  e = (*v)(((PyObject *)p->omega), a); if (e) return e;
61356  }
61357  if (p->tanhF) {
61358  e = (*v)(((PyObject *)p->tanhF), a); if (e) return e;
61359  }
61360  if (p->g) {
61361  e = (*v)(((PyObject *)p->g), a); if (e) return e;
61362  }
61363  if (p->waveDir) {
61364  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
61365  }
61366  if (p->vDir) {
61367  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
61368  }
61369  if (p->kDir) {
61370  e = (*v)(((PyObject *)p->kDir), a); if (e) return e;
61371  }
61372  if (p->ai) {
61373  e = (*v)(((PyObject *)p->ai), a); if (e) return e;
61374  }
61375  if (p->phi) {
61376  e = (*v)(p->phi, a); if (e) return e;
61377  }
61378  return 0;
61379 }
61380 
61381 static int __pyx_tp_clear_9WaveTools_NewWave(PyObject *o) {
61382  PyObject* tmp;
61383  struct __pyx_obj_9WaveTools_NewWave *p = (struct __pyx_obj_9WaveTools_NewWave *)o;
61384  tmp = ((PyObject*)p->fi);
61385  p->fi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61386  Py_XDECREF(tmp);
61387  tmp = ((PyObject*)p->fim);
61388  p->fim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61389  Py_XDECREF(tmp);
61390  tmp = ((PyObject*)p->Si_Jm);
61391  p->Si_Jm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61392  Py_XDECREF(tmp);
61393  tmp = ((PyObject*)p->ki);
61394  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61395  Py_XDECREF(tmp);
61396  tmp = ((PyObject*)p->omega);
61397  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61398  Py_XDECREF(tmp);
61399  tmp = ((PyObject*)p->tanhF);
61400  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61401  Py_XDECREF(tmp);
61402  tmp = ((PyObject*)p->g);
61403  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61404  Py_XDECREF(tmp);
61405  tmp = ((PyObject*)p->waveDir);
61406  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61407  Py_XDECREF(tmp);
61408  tmp = ((PyObject*)p->vDir);
61409  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61410  Py_XDECREF(tmp);
61411  tmp = ((PyObject*)p->kDir);
61412  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61413  Py_XDECREF(tmp);
61414  tmp = ((PyObject*)p->ai);
61415  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61416  Py_XDECREF(tmp);
61417  tmp = ((PyObject*)p->phi);
61418  p->phi = Py_None; Py_INCREF(Py_None);
61419  Py_XDECREF(tmp);
61420  return 0;
61421 }
61422 
61423 static PyObject *__pyx_getprop_9WaveTools_7NewWave_mwl(PyObject *o, CYTHON_UNUSED void *x) {
61424  return __pyx_pw_9WaveTools_7NewWave_3mwl_1__get__(o);
61425 }
61426 
61427 static int __pyx_setprop_9WaveTools_7NewWave_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61428  if (v) {
61429  return __pyx_pw_9WaveTools_7NewWave_3mwl_3__set__(o, v);
61430  }
61431  else {
61432  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61433  return -1;
61434  }
61435 }
61436 
61437 static PyObject *__pyx_getprop_9WaveTools_7NewWave_depth(PyObject *o, CYTHON_UNUSED void *x) {
61438  return __pyx_pw_9WaveTools_7NewWave_5depth_1__get__(o);
61439 }
61440 
61441 static int __pyx_setprop_9WaveTools_7NewWave_depth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61442  if (v) {
61443  return __pyx_pw_9WaveTools_7NewWave_5depth_3__set__(o, v);
61444  }
61445  else {
61446  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61447  return -1;
61448  }
61449 }
61450 
61451 static PyObject *__pyx_getprop_9WaveTools_7NewWave_gAbs(PyObject *o, CYTHON_UNUSED void *x) {
61452  return __pyx_pw_9WaveTools_7NewWave_4gAbs_1__get__(o);
61453 }
61454 
61455 static int __pyx_setprop_9WaveTools_7NewWave_gAbs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61456  if (v) {
61457  return __pyx_pw_9WaveTools_7NewWave_4gAbs_3__set__(o, v);
61458  }
61459  else {
61460  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61461  return -1;
61462  }
61463 }
61464 
61465 static PyObject *__pyx_getprop_9WaveTools_7NewWave_Tlag(PyObject *o, CYTHON_UNUSED void *x) {
61466  return __pyx_pw_9WaveTools_7NewWave_4Tlag_1__get__(o);
61467 }
61468 
61469 static int __pyx_setprop_9WaveTools_7NewWave_Tlag(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61470  if (v) {
61471  return __pyx_pw_9WaveTools_7NewWave_4Tlag_3__set__(o, v);
61472  }
61473  else {
61474  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61475  return -1;
61476  }
61477 }
61478 
61479 static PyObject *__pyx_getprop_9WaveTools_7NewWave_Hs(PyObject *o, CYTHON_UNUSED void *x) {
61480  return __pyx_pw_9WaveTools_7NewWave_2Hs_1__get__(o);
61481 }
61482 
61483 static int __pyx_setprop_9WaveTools_7NewWave_Hs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61484  if (v) {
61485  return __pyx_pw_9WaveTools_7NewWave_2Hs_3__set__(o, v);
61486  }
61487  else {
61488  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61489  return -1;
61490  }
61491 }
61492 
61493 static PyObject *__pyx_getprop_9WaveTools_7NewWave_Tp(PyObject *o, CYTHON_UNUSED void *x) {
61494  return __pyx_pw_9WaveTools_7NewWave_2Tp_1__get__(o);
61495 }
61496 
61497 static int __pyx_setprop_9WaveTools_7NewWave_Tp(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61498  if (v) {
61499  return __pyx_pw_9WaveTools_7NewWave_2Tp_3__set__(o, v);
61500  }
61501  else {
61502  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61503  return -1;
61504  }
61505 }
61506 
61507 static PyObject *__pyx_getprop_9WaveTools_7NewWave_fp(PyObject *o, CYTHON_UNUSED void *x) {
61508  return __pyx_pw_9WaveTools_7NewWave_2fp_1__get__(o);
61509 }
61510 
61511 static int __pyx_setprop_9WaveTools_7NewWave_fp(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61512  if (v) {
61513  return __pyx_pw_9WaveTools_7NewWave_2fp_3__set__(o, v);
61514  }
61515  else {
61516  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61517  return -1;
61518  }
61519 }
61520 
61521 static PyObject *__pyx_getprop_9WaveTools_7NewWave_bandFactor(PyObject *o, CYTHON_UNUSED void *x) {
61522  return __pyx_pw_9WaveTools_7NewWave_10bandFactor_1__get__(o);
61523 }
61524 
61525 static int __pyx_setprop_9WaveTools_7NewWave_bandFactor(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61526  if (v) {
61527  return __pyx_pw_9WaveTools_7NewWave_10bandFactor_3__set__(o, v);
61528  }
61529  else {
61530  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61531  return -1;
61532  }
61533 }
61534 
61535 static PyObject *__pyx_getprop_9WaveTools_7NewWave_df(PyObject *o, CYTHON_UNUSED void *x) {
61536  return __pyx_pw_9WaveTools_7NewWave_2df_1__get__(o);
61537 }
61538 
61539 static int __pyx_setprop_9WaveTools_7NewWave_df(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61540  if (v) {
61541  return __pyx_pw_9WaveTools_7NewWave_2df_3__set__(o, v);
61542  }
61543  else {
61544  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61545  return -1;
61546  }
61547 }
61548 
61549 static PyObject *__pyx_getprop_9WaveTools_7NewWave_focus(PyObject *o, CYTHON_UNUSED void *x) {
61550  return __pyx_pw_9WaveTools_7NewWave_5focus_1__get__(o);
61551 }
61552 
61553 static int __pyx_setprop_9WaveTools_7NewWave_focus(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61554  if (v) {
61555  return __pyx_pw_9WaveTools_7NewWave_5focus_3__set__(o, v);
61556  }
61557  else {
61558  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61559  return -1;
61560  }
61561 }
61562 
61563 static PyObject *__pyx_getprop_9WaveTools_7NewWave_tfocus(PyObject *o, CYTHON_UNUSED void *x) {
61564  return __pyx_pw_9WaveTools_7NewWave_6tfocus_1__get__(o);
61565 }
61566 
61567 static int __pyx_setprop_9WaveTools_7NewWave_tfocus(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61568  if (v) {
61569  return __pyx_pw_9WaveTools_7NewWave_6tfocus_3__set__(o, v);
61570  }
61571  else {
61572  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61573  return -1;
61574  }
61575 }
61576 
61577 static PyObject *__pyx_getprop_9WaveTools_7NewWave_N(PyObject *o, CYTHON_UNUSED void *x) {
61578  return __pyx_pw_9WaveTools_7NewWave_1N_1__get__(o);
61579 }
61580 
61581 static int __pyx_setprop_9WaveTools_7NewWave_N(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61582  if (v) {
61583  return __pyx_pw_9WaveTools_7NewWave_1N_3__set__(o, v);
61584  }
61585  else {
61586  PyErr_SetString(PyExc_NotImplementedError, "__del__");
61587  return -1;
61588  }
61589 }
61590 
61591 static PyObject *__pyx_getprop_9WaveTools_7NewWave_fi(PyObject *o, CYTHON_UNUSED void *x) {
61592  return __pyx_pw_9WaveTools_7NewWave_2fi_1__get__(o);
61593 }
61594 
61595 static int __pyx_setprop_9WaveTools_7NewWave_fi(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61596  if (v) {
61597  return __pyx_pw_9WaveTools_7NewWave_2fi_3__set__(o, v);
61598  }
61599  else {
61600  return __pyx_pw_9WaveTools_7NewWave_2fi_5__del__(o);
61601  }
61602 }
61603 
61604 static PyObject *__pyx_getprop_9WaveTools_7NewWave_fim(PyObject *o, CYTHON_UNUSED void *x) {
61605  return __pyx_pw_9WaveTools_7NewWave_3fim_1__get__(o);
61606 }
61607 
61608 static int __pyx_setprop_9WaveTools_7NewWave_fim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61609  if (v) {
61610  return __pyx_pw_9WaveTools_7NewWave_3fim_3__set__(o, v);
61611  }
61612  else {
61613  return __pyx_pw_9WaveTools_7NewWave_3fim_5__del__(o);
61614  }
61615 }
61616 
61617 static PyObject *__pyx_getprop_9WaveTools_7NewWave_Si_Jm(PyObject *o, CYTHON_UNUSED void *x) {
61618  return __pyx_pw_9WaveTools_7NewWave_5Si_Jm_1__get__(o);
61619 }
61620 
61621 static int __pyx_setprop_9WaveTools_7NewWave_Si_Jm(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61622  if (v) {
61623  return __pyx_pw_9WaveTools_7NewWave_5Si_Jm_3__set__(o, v);
61624  }
61625  else {
61626  return __pyx_pw_9WaveTools_7NewWave_5Si_Jm_5__del__(o);
61627  }
61628 }
61629 
61630 static PyObject *__pyx_getprop_9WaveTools_7NewWave_ki(PyObject *o, CYTHON_UNUSED void *x) {
61631  return __pyx_pw_9WaveTools_7NewWave_2ki_1__get__(o);
61632 }
61633 
61634 static int __pyx_setprop_9WaveTools_7NewWave_ki(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61635  if (v) {
61636  return __pyx_pw_9WaveTools_7NewWave_2ki_3__set__(o, v);
61637  }
61638  else {
61639  return __pyx_pw_9WaveTools_7NewWave_2ki_5__del__(o);
61640  }
61641 }
61642 
61643 static PyObject *__pyx_getprop_9WaveTools_7NewWave_omega(PyObject *o, CYTHON_UNUSED void *x) {
61644  return __pyx_pw_9WaveTools_7NewWave_5omega_1__get__(o);
61645 }
61646 
61647 static int __pyx_setprop_9WaveTools_7NewWave_omega(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61648  if (v) {
61649  return __pyx_pw_9WaveTools_7NewWave_5omega_3__set__(o, v);
61650  }
61651  else {
61652  return __pyx_pw_9WaveTools_7NewWave_5omega_5__del__(o);
61653  }
61654 }
61655 
61656 static PyObject *__pyx_getprop_9WaveTools_7NewWave_tanhF(PyObject *o, CYTHON_UNUSED void *x) {
61657  return __pyx_pw_9WaveTools_7NewWave_5tanhF_1__get__(o);
61658 }
61659 
61660 static int __pyx_setprop_9WaveTools_7NewWave_tanhF(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61661  if (v) {
61662  return __pyx_pw_9WaveTools_7NewWave_5tanhF_3__set__(o, v);
61663  }
61664  else {
61665  return __pyx_pw_9WaveTools_7NewWave_5tanhF_5__del__(o);
61666  }
61667 }
61668 
61669 static PyObject *__pyx_getprop_9WaveTools_7NewWave_g(PyObject *o, CYTHON_UNUSED void *x) {
61670  return __pyx_pw_9WaveTools_7NewWave_1g_1__get__(o);
61671 }
61672 
61673 static int __pyx_setprop_9WaveTools_7NewWave_g(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61674  if (v) {
61675  return __pyx_pw_9WaveTools_7NewWave_1g_3__set__(o, v);
61676  }
61677  else {
61678  return __pyx_pw_9WaveTools_7NewWave_1g_5__del__(o);
61679  }
61680 }
61681 
61682 static PyObject *__pyx_getprop_9WaveTools_7NewWave_waveDir(PyObject *o, CYTHON_UNUSED void *x) {
61683  return __pyx_pw_9WaveTools_7NewWave_7waveDir_1__get__(o);
61684 }
61685 
61686 static int __pyx_setprop_9WaveTools_7NewWave_waveDir(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61687  if (v) {
61688  return __pyx_pw_9WaveTools_7NewWave_7waveDir_3__set__(o, v);
61689  }
61690  else {
61691  return __pyx_pw_9WaveTools_7NewWave_7waveDir_5__del__(o);
61692  }
61693 }
61694 
61695 static PyObject *__pyx_getprop_9WaveTools_7NewWave_vDir(PyObject *o, CYTHON_UNUSED void *x) {
61696  return __pyx_pw_9WaveTools_7NewWave_4vDir_1__get__(o);
61697 }
61698 
61699 static int __pyx_setprop_9WaveTools_7NewWave_vDir(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61700  if (v) {
61701  return __pyx_pw_9WaveTools_7NewWave_4vDir_3__set__(o, v);
61702  }
61703  else {
61704  return __pyx_pw_9WaveTools_7NewWave_4vDir_5__del__(o);
61705  }
61706 }
61707 
61708 static PyObject *__pyx_getprop_9WaveTools_7NewWave_kDir(PyObject *o, CYTHON_UNUSED void *x) {
61709  return __pyx_pw_9WaveTools_7NewWave_4kDir_1__get__(o);
61710 }
61711 
61712 static int __pyx_setprop_9WaveTools_7NewWave_kDir(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61713  if (v) {
61714  return __pyx_pw_9WaveTools_7NewWave_4kDir_3__set__(o, v);
61715  }
61716  else {
61717  return __pyx_pw_9WaveTools_7NewWave_4kDir_5__del__(o);
61718  }
61719 }
61720 
61721 static PyObject *__pyx_getprop_9WaveTools_7NewWave_ai(PyObject *o, CYTHON_UNUSED void *x) {
61722  return __pyx_pw_9WaveTools_7NewWave_2ai_1__get__(o);
61723 }
61724 
61725 static int __pyx_setprop_9WaveTools_7NewWave_ai(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61726  if (v) {
61727  return __pyx_pw_9WaveTools_7NewWave_2ai_3__set__(o, v);
61728  }
61729  else {
61730  return __pyx_pw_9WaveTools_7NewWave_2ai_5__del__(o);
61731  }
61732 }
61733 
61734 static PyObject *__pyx_getprop_9WaveTools_7NewWave_phi(PyObject *o, CYTHON_UNUSED void *x) {
61735  return __pyx_pw_9WaveTools_7NewWave_3phi_1__get__(o);
61736 }
61737 
61738 static int __pyx_setprop_9WaveTools_7NewWave_phi(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61739  if (v) {
61740  return __pyx_pw_9WaveTools_7NewWave_3phi_3__set__(o, v);
61741  }
61742  else {
61743  return __pyx_pw_9WaveTools_7NewWave_3phi_5__del__(o);
61744  }
61745 }
61746 
61747 static PyMethodDef __pyx_methods_9WaveTools_NewWave[] = {
61748  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7NewWave_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_7NewWave_2eta},
61749  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7NewWave_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_7NewWave_4u},
61750  {"writeEtaSeries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_7NewWave_7writeEtaSeries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_7NewWave_6writeEtaSeries},
61751  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_7NewWave_9__reduce_cython__, METH_NOARGS, 0},
61752  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_7NewWave_11__setstate_cython__, METH_O, 0},
61753  {0, 0, 0, 0}
61754 };
61755 
61756 static struct PyGetSetDef __pyx_getsets_9WaveTools_NewWave[] = {
61757  {(char *)"mwl", __pyx_getprop_9WaveTools_7NewWave_mwl, __pyx_setprop_9WaveTools_7NewWave_mwl, (char *)0, 0},
61758  {(char *)"depth", __pyx_getprop_9WaveTools_7NewWave_depth, __pyx_setprop_9WaveTools_7NewWave_depth, (char *)0, 0},
61759  {(char *)"gAbs", __pyx_getprop_9WaveTools_7NewWave_gAbs, __pyx_setprop_9WaveTools_7NewWave_gAbs, (char *)0, 0},
61760  {(char *)"Tlag", __pyx_getprop_9WaveTools_7NewWave_Tlag, __pyx_setprop_9WaveTools_7NewWave_Tlag, (char *)0, 0},
61761  {(char *)"Hs", __pyx_getprop_9WaveTools_7NewWave_Hs, __pyx_setprop_9WaveTools_7NewWave_Hs, (char *)0, 0},
61762  {(char *)"Tp", __pyx_getprop_9WaveTools_7NewWave_Tp, __pyx_setprop_9WaveTools_7NewWave_Tp, (char *)0, 0},
61763  {(char *)"fp", __pyx_getprop_9WaveTools_7NewWave_fp, __pyx_setprop_9WaveTools_7NewWave_fp, (char *)0, 0},
61764  {(char *)"bandFactor", __pyx_getprop_9WaveTools_7NewWave_bandFactor, __pyx_setprop_9WaveTools_7NewWave_bandFactor, (char *)0, 0},
61765  {(char *)"df", __pyx_getprop_9WaveTools_7NewWave_df, __pyx_setprop_9WaveTools_7NewWave_df, (char *)0, 0},
61766  {(char *)"focus", __pyx_getprop_9WaveTools_7NewWave_focus, __pyx_setprop_9WaveTools_7NewWave_focus, (char *)0, 0},
61767  {(char *)"tfocus", __pyx_getprop_9WaveTools_7NewWave_tfocus, __pyx_setprop_9WaveTools_7NewWave_tfocus, (char *)0, 0},
61768  {(char *)"N", __pyx_getprop_9WaveTools_7NewWave_N, __pyx_setprop_9WaveTools_7NewWave_N, (char *)0, 0},
61769  {(char *)"fi", __pyx_getprop_9WaveTools_7NewWave_fi, __pyx_setprop_9WaveTools_7NewWave_fi, (char *)0, 0},
61770  {(char *)"fim", __pyx_getprop_9WaveTools_7NewWave_fim, __pyx_setprop_9WaveTools_7NewWave_fim, (char *)0, 0},
61771  {(char *)"Si_Jm", __pyx_getprop_9WaveTools_7NewWave_Si_Jm, __pyx_setprop_9WaveTools_7NewWave_Si_Jm, (char *)0, 0},
61772  {(char *)"ki", __pyx_getprop_9WaveTools_7NewWave_ki, __pyx_setprop_9WaveTools_7NewWave_ki, (char *)0, 0},
61773  {(char *)"omega", __pyx_getprop_9WaveTools_7NewWave_omega, __pyx_setprop_9WaveTools_7NewWave_omega, (char *)0, 0},
61774  {(char *)"tanhF", __pyx_getprop_9WaveTools_7NewWave_tanhF, __pyx_setprop_9WaveTools_7NewWave_tanhF, (char *)0, 0},
61775  {(char *)"g", __pyx_getprop_9WaveTools_7NewWave_g, __pyx_setprop_9WaveTools_7NewWave_g, (char *)0, 0},
61776  {(char *)"waveDir", __pyx_getprop_9WaveTools_7NewWave_waveDir, __pyx_setprop_9WaveTools_7NewWave_waveDir, (char *)0, 0},
61777  {(char *)"vDir", __pyx_getprop_9WaveTools_7NewWave_vDir, __pyx_setprop_9WaveTools_7NewWave_vDir, (char *)0, 0},
61778  {(char *)"kDir", __pyx_getprop_9WaveTools_7NewWave_kDir, __pyx_setprop_9WaveTools_7NewWave_kDir, (char *)0, 0},
61779  {(char *)"ai", __pyx_getprop_9WaveTools_7NewWave_ai, __pyx_setprop_9WaveTools_7NewWave_ai, (char *)0, 0},
61780  {(char *)"phi", __pyx_getprop_9WaveTools_7NewWave_phi, __pyx_setprop_9WaveTools_7NewWave_phi, (char *)0, 0},
61781  {0, 0, 0, 0, 0}
61782 };
61783 
61784 static PyTypeObject __pyx_type_9WaveTools_NewWave = {
61785  PyVarObject_HEAD_INIT(0, 0)
61786  "WaveTools.NewWave", /*tp_name*/
61787  sizeof(struct __pyx_obj_9WaveTools_NewWave), /*tp_basicsize*/
61788  0, /*tp_itemsize*/
61789  __pyx_tp_dealloc_9WaveTools_NewWave, /*tp_dealloc*/
61790  #if PY_VERSION_HEX < 0x030800b4
61791  0, /*tp_print*/
61792  #endif
61793  #if PY_VERSION_HEX >= 0x030800b4
61794  0, /*tp_vectorcall_offset*/
61795  #endif
61796  0, /*tp_getattr*/
61797  0, /*tp_setattr*/
61798  #if PY_MAJOR_VERSION < 3
61799  0, /*tp_compare*/
61800  #endif
61801  #if PY_MAJOR_VERSION >= 3
61802  0, /*tp_as_async*/
61803  #endif
61804  0, /*tp_repr*/
61805  0, /*tp_as_number*/
61806  0, /*tp_as_sequence*/
61807  0, /*tp_as_mapping*/
61808  0, /*tp_hash*/
61809  0, /*tp_call*/
61810  0, /*tp_str*/
61811  0, /*tp_getattro*/
61812  0, /*tp_setattro*/
61813  0, /*tp_as_buffer*/
61814  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
61815  "\n This class is used for generating the NewWave theory (see Tromans et al. 1991)\n\n Parameters\n ----------\n Tp : float\n Peak wave period \n Hs : float\n Significant wave height \n mwl : float\n Still water level \n depth : float\n Water depth \n waveDir : numpy.ndarray\n Wave direction vector \n g : Numpy array\n Gravitational acceleration vector \n N : int\n Number of frequency components\n bandFactor : float\n Spectral band factor. fmax = bandFactor/Tp, fmin = 1/(bandFactor*Tp) \n spectName : string\n Name of spectral distribution\n spectral_params : dict\n Dictionary of arguments specific to the spectral distribution\n Example for JONSWAP = {\"gamma\": 3.3, \"TMA\":True,\"depth\": depth}\n TMA=True activates the TMA modification, which in turn needs the depth as a parameter \n crestFocus: bool\n Switch to determine if crest focused or trough focused. By default true\n xfocus : numpy array\n Position of focused crest / trough\n tfocus : numpy array\n Time of focused crest / trough\n Nmax: int\n Normalisation factor to get the 1/N wave event at the NewWave series\n fast : bool\n Switch for optimised functions \n ", /*tp_doc*/
61816  __pyx_tp_traverse_9WaveTools_NewWave, /*tp_traverse*/
61817  __pyx_tp_clear_9WaveTools_NewWave, /*tp_clear*/
61818  0, /*tp_richcompare*/
61819  0, /*tp_weaklistoffset*/
61820  0, /*tp_iter*/
61821  0, /*tp_iternext*/
61822  __pyx_methods_9WaveTools_NewWave, /*tp_methods*/
61823  0, /*tp_members*/
61824  __pyx_getsets_9WaveTools_NewWave, /*tp_getset*/
61825  0, /*tp_base*/
61826  0, /*tp_dict*/
61827  0, /*tp_descr_get*/
61828  0, /*tp_descr_set*/
61829  0, /*tp_dictoffset*/
61830  0, /*tp_init*/
61831  0, /*tp_alloc*/
61832  __pyx_tp_new_9WaveTools_NewWave, /*tp_new*/
61833  0, /*tp_free*/
61834  0, /*tp_is_gc*/
61835  0, /*tp_bases*/
61836  0, /*tp_mro*/
61837  0, /*tp_cache*/
61838  0, /*tp_subclasses*/
61839  0, /*tp_weaklist*/
61840  0, /*tp_del*/
61841  0, /*tp_version_tag*/
61842  #if PY_VERSION_HEX >= 0x030400a1
61843  0, /*tp_finalize*/
61844  #endif
61845  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
61846  0, /*tp_vectorcall*/
61847  #endif
61848  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
61849  0, /*tp_print*/
61850  #endif
61851  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
61852  0, /*tp_pypy_flags*/
61853  #endif
61854 };
61855 static struct __pyx_vtabstruct_9WaveTools_RandomWaves __pyx_vtable_9WaveTools_RandomWaves;
61856 
61857 static PyObject *__pyx_tp_new_9WaveTools_RandomWaves(PyTypeObject *t, PyObject *a, PyObject *k) {
61858  struct __pyx_obj_9WaveTools_RandomWaves *p;
61859  PyObject *o;
61860  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
61861  o = (*t->tp_alloc)(t, 0);
61862  } else {
61863  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
61864  }
61865  if (unlikely(!o)) return 0;
61866  p = ((struct __pyx_obj_9WaveTools_RandomWaves *)o);
61867  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_RandomWaves;
61868  p->fi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61869  p->fim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61870  p->Si_Jm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61871  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61872  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61873  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61874  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61875  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61876  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61877  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61878  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61879  p->phi = Py_None; Py_INCREF(Py_None);
61880  if (unlikely(__pyx_pw_9WaveTools_11RandomWaves_1__cinit__(o, a, k) < 0)) goto bad;
61881  return o;
61882  bad:
61883  Py_DECREF(o); o = 0;
61884  return NULL;
61885 }
61886 
61887 static void __pyx_tp_dealloc_9WaveTools_RandomWaves(PyObject *o) {
61888  struct __pyx_obj_9WaveTools_RandomWaves *p = (struct __pyx_obj_9WaveTools_RandomWaves *)o;
61889  #if CYTHON_USE_TP_FINALIZE
61890  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
61891  if (PyObject_CallFinalizerFromDealloc(o)) return;
61892  }
61893  #endif
61894  PyObject_GC_UnTrack(o);
61895  Py_CLEAR(p->fi);
61896  Py_CLEAR(p->fim);
61897  Py_CLEAR(p->Si_Jm);
61898  Py_CLEAR(p->ki);
61899  Py_CLEAR(p->omega);
61900  Py_CLEAR(p->tanhF);
61901  Py_CLEAR(p->g);
61902  Py_CLEAR(p->waveDir);
61903  Py_CLEAR(p->vDir);
61904  Py_CLEAR(p->kDir);
61905  Py_CLEAR(p->ai);
61906  Py_CLEAR(p->phi);
61907  (*Py_TYPE(o)->tp_free)(o);
61908 }
61909 
61910 static int __pyx_tp_traverse_9WaveTools_RandomWaves(PyObject *o, visitproc v, void *a) {
61911  int e;
61912  struct __pyx_obj_9WaveTools_RandomWaves *p = (struct __pyx_obj_9WaveTools_RandomWaves *)o;
61913  if (p->fi) {
61914  e = (*v)(((PyObject *)p->fi), a); if (e) return e;
61915  }
61916  if (p->fim) {
61917  e = (*v)(((PyObject *)p->fim), a); if (e) return e;
61918  }
61919  if (p->Si_Jm) {
61920  e = (*v)(((PyObject *)p->Si_Jm), a); if (e) return e;
61921  }
61922  if (p->ki) {
61923  e = (*v)(((PyObject *)p->ki), a); if (e) return e;
61924  }
61925  if (p->omega) {
61926  e = (*v)(((PyObject *)p->omega), a); if (e) return e;
61927  }
61928  if (p->tanhF) {
61929  e = (*v)(((PyObject *)p->tanhF), a); if (e) return e;
61930  }
61931  if (p->g) {
61932  e = (*v)(((PyObject *)p->g), a); if (e) return e;
61933  }
61934  if (p->waveDir) {
61935  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
61936  }
61937  if (p->vDir) {
61938  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
61939  }
61940  if (p->kDir) {
61941  e = (*v)(((PyObject *)p->kDir), a); if (e) return e;
61942  }
61943  if (p->ai) {
61944  e = (*v)(((PyObject *)p->ai), a); if (e) return e;
61945  }
61946  if (p->phi) {
61947  e = (*v)(p->phi, a); if (e) return e;
61948  }
61949  return 0;
61950 }
61951 
61952 static int __pyx_tp_clear_9WaveTools_RandomWaves(PyObject *o) {
61953  PyObject* tmp;
61954  struct __pyx_obj_9WaveTools_RandomWaves *p = (struct __pyx_obj_9WaveTools_RandomWaves *)o;
61955  tmp = ((PyObject*)p->fi);
61956  p->fi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61957  Py_XDECREF(tmp);
61958  tmp = ((PyObject*)p->fim);
61959  p->fim = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61960  Py_XDECREF(tmp);
61961  tmp = ((PyObject*)p->Si_Jm);
61962  p->Si_Jm = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61963  Py_XDECREF(tmp);
61964  tmp = ((PyObject*)p->ki);
61965  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61966  Py_XDECREF(tmp);
61967  tmp = ((PyObject*)p->omega);
61968  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61969  Py_XDECREF(tmp);
61970  tmp = ((PyObject*)p->tanhF);
61971  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61972  Py_XDECREF(tmp);
61973  tmp = ((PyObject*)p->g);
61974  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61975  Py_XDECREF(tmp);
61976  tmp = ((PyObject*)p->waveDir);
61977  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61978  Py_XDECREF(tmp);
61979  tmp = ((PyObject*)p->vDir);
61980  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61981  Py_XDECREF(tmp);
61982  tmp = ((PyObject*)p->kDir);
61983  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61984  Py_XDECREF(tmp);
61985  tmp = ((PyObject*)p->ai);
61986  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
61987  Py_XDECREF(tmp);
61988  tmp = ((PyObject*)p->phi);
61989  p->phi = Py_None; Py_INCREF(Py_None);
61990  Py_XDECREF(tmp);
61991  return 0;
61992 }
61993 
61994 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_mwl(PyObject *o, CYTHON_UNUSED void *x) {
61995  return __pyx_pw_9WaveTools_11RandomWaves_3mwl_1__get__(o);
61996 }
61997 
61998 static int __pyx_setprop_9WaveTools_11RandomWaves_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
61999  if (v) {
62000  return __pyx_pw_9WaveTools_11RandomWaves_3mwl_3__set__(o, v);
62001  }
62002  else {
62003  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62004  return -1;
62005  }
62006 }
62007 
62008 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_depth(PyObject *o, CYTHON_UNUSED void *x) {
62009  return __pyx_pw_9WaveTools_11RandomWaves_5depth_1__get__(o);
62010 }
62011 
62012 static int __pyx_setprop_9WaveTools_11RandomWaves_depth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62013  if (v) {
62014  return __pyx_pw_9WaveTools_11RandomWaves_5depth_3__set__(o, v);
62015  }
62016  else {
62017  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62018  return -1;
62019  }
62020 }
62021 
62022 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_gAbs(PyObject *o, CYTHON_UNUSED void *x) {
62023  return __pyx_pw_9WaveTools_11RandomWaves_4gAbs_1__get__(o);
62024 }
62025 
62026 static int __pyx_setprop_9WaveTools_11RandomWaves_gAbs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62027  if (v) {
62028  return __pyx_pw_9WaveTools_11RandomWaves_4gAbs_3__set__(o, v);
62029  }
62030  else {
62031  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62032  return -1;
62033  }
62034 }
62035 
62036 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_Tlag(PyObject *o, CYTHON_UNUSED void *x) {
62037  return __pyx_pw_9WaveTools_11RandomWaves_4Tlag_1__get__(o);
62038 }
62039 
62040 static int __pyx_setprop_9WaveTools_11RandomWaves_Tlag(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62041  if (v) {
62042  return __pyx_pw_9WaveTools_11RandomWaves_4Tlag_3__set__(o, v);
62043  }
62044  else {
62045  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62046  return -1;
62047  }
62048 }
62049 
62050 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_Hs(PyObject *o, CYTHON_UNUSED void *x) {
62051  return __pyx_pw_9WaveTools_11RandomWaves_2Hs_1__get__(o);
62052 }
62053 
62054 static int __pyx_setprop_9WaveTools_11RandomWaves_Hs(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62055  if (v) {
62056  return __pyx_pw_9WaveTools_11RandomWaves_2Hs_3__set__(o, v);
62057  }
62058  else {
62059  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62060  return -1;
62061  }
62062 }
62063 
62064 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_Tp(PyObject *o, CYTHON_UNUSED void *x) {
62065  return __pyx_pw_9WaveTools_11RandomWaves_2Tp_1__get__(o);
62066 }
62067 
62068 static int __pyx_setprop_9WaveTools_11RandomWaves_Tp(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62069  if (v) {
62070  return __pyx_pw_9WaveTools_11RandomWaves_2Tp_3__set__(o, v);
62071  }
62072  else {
62073  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62074  return -1;
62075  }
62076 }
62077 
62078 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_fp(PyObject *o, CYTHON_UNUSED void *x) {
62079  return __pyx_pw_9WaveTools_11RandomWaves_2fp_1__get__(o);
62080 }
62081 
62082 static int __pyx_setprop_9WaveTools_11RandomWaves_fp(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62083  if (v) {
62084  return __pyx_pw_9WaveTools_11RandomWaves_2fp_3__set__(o, v);
62085  }
62086  else {
62087  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62088  return -1;
62089  }
62090 }
62091 
62092 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_bandFactor(PyObject *o, CYTHON_UNUSED void *x) {
62093  return __pyx_pw_9WaveTools_11RandomWaves_10bandFactor_1__get__(o);
62094 }
62095 
62096 static int __pyx_setprop_9WaveTools_11RandomWaves_bandFactor(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62097  if (v) {
62098  return __pyx_pw_9WaveTools_11RandomWaves_10bandFactor_3__set__(o, v);
62099  }
62100  else {
62101  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62102  return -1;
62103  }
62104 }
62105 
62106 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_df(PyObject *o, CYTHON_UNUSED void *x) {
62107  return __pyx_pw_9WaveTools_11RandomWaves_2df_1__get__(o);
62108 }
62109 
62110 static int __pyx_setprop_9WaveTools_11RandomWaves_df(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62111  if (v) {
62112  return __pyx_pw_9WaveTools_11RandomWaves_2df_3__set__(o, v);
62113  }
62114  else {
62115  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62116  return -1;
62117  }
62118 }
62119 
62120 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_wavelength(PyObject *o, CYTHON_UNUSED void *x) {
62121  return __pyx_pw_9WaveTools_11RandomWaves_10wavelength_1__get__(o);
62122 }
62123 
62124 static int __pyx_setprop_9WaveTools_11RandomWaves_wavelength(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62125  if (v) {
62126  return __pyx_pw_9WaveTools_11RandomWaves_10wavelength_3__set__(o, v);
62127  }
62128  else {
62129  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62130  return -1;
62131  }
62132 }
62133 
62134 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_N(PyObject *o, CYTHON_UNUSED void *x) {
62135  return __pyx_pw_9WaveTools_11RandomWaves_1N_1__get__(o);
62136 }
62137 
62138 static int __pyx_setprop_9WaveTools_11RandomWaves_N(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62139  if (v) {
62140  return __pyx_pw_9WaveTools_11RandomWaves_1N_3__set__(o, v);
62141  }
62142  else {
62143  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62144  return -1;
62145  }
62146 }
62147 
62148 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_fi(PyObject *o, CYTHON_UNUSED void *x) {
62149  return __pyx_pw_9WaveTools_11RandomWaves_2fi_1__get__(o);
62150 }
62151 
62152 static int __pyx_setprop_9WaveTools_11RandomWaves_fi(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62153  if (v) {
62154  return __pyx_pw_9WaveTools_11RandomWaves_2fi_3__set__(o, v);
62155  }
62156  else {
62157  return __pyx_pw_9WaveTools_11RandomWaves_2fi_5__del__(o);
62158  }
62159 }
62160 
62161 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_fim(PyObject *o, CYTHON_UNUSED void *x) {
62162  return __pyx_pw_9WaveTools_11RandomWaves_3fim_1__get__(o);
62163 }
62164 
62165 static int __pyx_setprop_9WaveTools_11RandomWaves_fim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62166  if (v) {
62167  return __pyx_pw_9WaveTools_11RandomWaves_3fim_3__set__(o, v);
62168  }
62169  else {
62170  return __pyx_pw_9WaveTools_11RandomWaves_3fim_5__del__(o);
62171  }
62172 }
62173 
62174 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_Si_Jm(PyObject *o, CYTHON_UNUSED void *x) {
62175  return __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_1__get__(o);
62176 }
62177 
62178 static int __pyx_setprop_9WaveTools_11RandomWaves_Si_Jm(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62179  if (v) {
62180  return __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_3__set__(o, v);
62181  }
62182  else {
62183  return __pyx_pw_9WaveTools_11RandomWaves_5Si_Jm_5__del__(o);
62184  }
62185 }
62186 
62187 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_ki(PyObject *o, CYTHON_UNUSED void *x) {
62188  return __pyx_pw_9WaveTools_11RandomWaves_2ki_1__get__(o);
62189 }
62190 
62191 static int __pyx_setprop_9WaveTools_11RandomWaves_ki(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62192  if (v) {
62193  return __pyx_pw_9WaveTools_11RandomWaves_2ki_3__set__(o, v);
62194  }
62195  else {
62196  return __pyx_pw_9WaveTools_11RandomWaves_2ki_5__del__(o);
62197  }
62198 }
62199 
62200 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_omega(PyObject *o, CYTHON_UNUSED void *x) {
62201  return __pyx_pw_9WaveTools_11RandomWaves_5omega_1__get__(o);
62202 }
62203 
62204 static int __pyx_setprop_9WaveTools_11RandomWaves_omega(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62205  if (v) {
62206  return __pyx_pw_9WaveTools_11RandomWaves_5omega_3__set__(o, v);
62207  }
62208  else {
62209  return __pyx_pw_9WaveTools_11RandomWaves_5omega_5__del__(o);
62210  }
62211 }
62212 
62213 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_tanhF(PyObject *o, CYTHON_UNUSED void *x) {
62214  return __pyx_pw_9WaveTools_11RandomWaves_5tanhF_1__get__(o);
62215 }
62216 
62217 static int __pyx_setprop_9WaveTools_11RandomWaves_tanhF(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62218  if (v) {
62219  return __pyx_pw_9WaveTools_11RandomWaves_5tanhF_3__set__(o, v);
62220  }
62221  else {
62222  return __pyx_pw_9WaveTools_11RandomWaves_5tanhF_5__del__(o);
62223  }
62224 }
62225 
62226 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_g(PyObject *o, CYTHON_UNUSED void *x) {
62227  return __pyx_pw_9WaveTools_11RandomWaves_1g_1__get__(o);
62228 }
62229 
62230 static int __pyx_setprop_9WaveTools_11RandomWaves_g(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62231  if (v) {
62232  return __pyx_pw_9WaveTools_11RandomWaves_1g_3__set__(o, v);
62233  }
62234  else {
62235  return __pyx_pw_9WaveTools_11RandomWaves_1g_5__del__(o);
62236  }
62237 }
62238 
62239 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_waveDir(PyObject *o, CYTHON_UNUSED void *x) {
62240  return __pyx_pw_9WaveTools_11RandomWaves_7waveDir_1__get__(o);
62241 }
62242 
62243 static int __pyx_setprop_9WaveTools_11RandomWaves_waveDir(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62244  if (v) {
62245  return __pyx_pw_9WaveTools_11RandomWaves_7waveDir_3__set__(o, v);
62246  }
62247  else {
62248  return __pyx_pw_9WaveTools_11RandomWaves_7waveDir_5__del__(o);
62249  }
62250 }
62251 
62252 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_vDir(PyObject *o, CYTHON_UNUSED void *x) {
62253  return __pyx_pw_9WaveTools_11RandomWaves_4vDir_1__get__(o);
62254 }
62255 
62256 static int __pyx_setprop_9WaveTools_11RandomWaves_vDir(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62257  if (v) {
62258  return __pyx_pw_9WaveTools_11RandomWaves_4vDir_3__set__(o, v);
62259  }
62260  else {
62261  return __pyx_pw_9WaveTools_11RandomWaves_4vDir_5__del__(o);
62262  }
62263 }
62264 
62265 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_kDir(PyObject *o, CYTHON_UNUSED void *x) {
62266  return __pyx_pw_9WaveTools_11RandomWaves_4kDir_1__get__(o);
62267 }
62268 
62269 static int __pyx_setprop_9WaveTools_11RandomWaves_kDir(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62270  if (v) {
62271  return __pyx_pw_9WaveTools_11RandomWaves_4kDir_3__set__(o, v);
62272  }
62273  else {
62274  return __pyx_pw_9WaveTools_11RandomWaves_4kDir_5__del__(o);
62275  }
62276 }
62277 
62278 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_ai(PyObject *o, CYTHON_UNUSED void *x) {
62279  return __pyx_pw_9WaveTools_11RandomWaves_2ai_1__get__(o);
62280 }
62281 
62282 static int __pyx_setprop_9WaveTools_11RandomWaves_ai(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62283  if (v) {
62284  return __pyx_pw_9WaveTools_11RandomWaves_2ai_3__set__(o, v);
62285  }
62286  else {
62287  return __pyx_pw_9WaveTools_11RandomWaves_2ai_5__del__(o);
62288  }
62289 }
62290 
62291 static PyObject *__pyx_getprop_9WaveTools_11RandomWaves_phi(PyObject *o, CYTHON_UNUSED void *x) {
62292  return __pyx_pw_9WaveTools_11RandomWaves_3phi_1__get__(o);
62293 }
62294 
62295 static int __pyx_setprop_9WaveTools_11RandomWaves_phi(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62296  if (v) {
62297  return __pyx_pw_9WaveTools_11RandomWaves_3phi_3__set__(o, v);
62298  }
62299  else {
62300  return __pyx_pw_9WaveTools_11RandomWaves_3phi_5__del__(o);
62301  }
62302 }
62303 
62304 static PyMethodDef __pyx_methods_9WaveTools_RandomWaves[] = {
62305  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11RandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_2eta},
62306  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11RandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_4u},
62307  {"writeEtaSeries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_11RandomWaves_7writeEtaSeries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_6writeEtaSeries},
62308  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_9__reduce_cython__, METH_NOARGS, 0},
62309  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_11__setstate_cython__, METH_O, 0},
62310  {0, 0, 0, 0}
62311 };
62312 
62313 static struct PyGetSetDef __pyx_getsets_9WaveTools_RandomWaves[] = {
62314  {(char *)"mwl", __pyx_getprop_9WaveTools_11RandomWaves_mwl, __pyx_setprop_9WaveTools_11RandomWaves_mwl, (char *)0, 0},
62315  {(char *)"depth", __pyx_getprop_9WaveTools_11RandomWaves_depth, __pyx_setprop_9WaveTools_11RandomWaves_depth, (char *)0, 0},
62316  {(char *)"gAbs", __pyx_getprop_9WaveTools_11RandomWaves_gAbs, __pyx_setprop_9WaveTools_11RandomWaves_gAbs, (char *)0, 0},
62317  {(char *)"Tlag", __pyx_getprop_9WaveTools_11RandomWaves_Tlag, __pyx_setprop_9WaveTools_11RandomWaves_Tlag, (char *)0, 0},
62318  {(char *)"Hs", __pyx_getprop_9WaveTools_11RandomWaves_Hs, __pyx_setprop_9WaveTools_11RandomWaves_Hs, (char *)0, 0},
62319  {(char *)"Tp", __pyx_getprop_9WaveTools_11RandomWaves_Tp, __pyx_setprop_9WaveTools_11RandomWaves_Tp, (char *)0, 0},
62320  {(char *)"fp", __pyx_getprop_9WaveTools_11RandomWaves_fp, __pyx_setprop_9WaveTools_11RandomWaves_fp, (char *)0, 0},
62321  {(char *)"bandFactor", __pyx_getprop_9WaveTools_11RandomWaves_bandFactor, __pyx_setprop_9WaveTools_11RandomWaves_bandFactor, (char *)0, 0},
62322  {(char *)"df", __pyx_getprop_9WaveTools_11RandomWaves_df, __pyx_setprop_9WaveTools_11RandomWaves_df, (char *)0, 0},
62323  {(char *)"wavelength", __pyx_getprop_9WaveTools_11RandomWaves_wavelength, __pyx_setprop_9WaveTools_11RandomWaves_wavelength, (char *)0, 0},
62324  {(char *)"N", __pyx_getprop_9WaveTools_11RandomWaves_N, __pyx_setprop_9WaveTools_11RandomWaves_N, (char *)0, 0},
62325  {(char *)"fi", __pyx_getprop_9WaveTools_11RandomWaves_fi, __pyx_setprop_9WaveTools_11RandomWaves_fi, (char *)0, 0},
62326  {(char *)"fim", __pyx_getprop_9WaveTools_11RandomWaves_fim, __pyx_setprop_9WaveTools_11RandomWaves_fim, (char *)0, 0},
62327  {(char *)"Si_Jm", __pyx_getprop_9WaveTools_11RandomWaves_Si_Jm, __pyx_setprop_9WaveTools_11RandomWaves_Si_Jm, (char *)0, 0},
62328  {(char *)"ki", __pyx_getprop_9WaveTools_11RandomWaves_ki, __pyx_setprop_9WaveTools_11RandomWaves_ki, (char *)0, 0},
62329  {(char *)"omega", __pyx_getprop_9WaveTools_11RandomWaves_omega, __pyx_setprop_9WaveTools_11RandomWaves_omega, (char *)0, 0},
62330  {(char *)"tanhF", __pyx_getprop_9WaveTools_11RandomWaves_tanhF, __pyx_setprop_9WaveTools_11RandomWaves_tanhF, (char *)0, 0},
62331  {(char *)"g", __pyx_getprop_9WaveTools_11RandomWaves_g, __pyx_setprop_9WaveTools_11RandomWaves_g, (char *)0, 0},
62332  {(char *)"waveDir", __pyx_getprop_9WaveTools_11RandomWaves_waveDir, __pyx_setprop_9WaveTools_11RandomWaves_waveDir, (char *)0, 0},
62333  {(char *)"vDir", __pyx_getprop_9WaveTools_11RandomWaves_vDir, __pyx_setprop_9WaveTools_11RandomWaves_vDir, (char *)0, 0},
62334  {(char *)"kDir", __pyx_getprop_9WaveTools_11RandomWaves_kDir, __pyx_setprop_9WaveTools_11RandomWaves_kDir, (char *)0, 0},
62335  {(char *)"ai", __pyx_getprop_9WaveTools_11RandomWaves_ai, __pyx_setprop_9WaveTools_11RandomWaves_ai, (char *)0, 0},
62336  {(char *)"phi", __pyx_getprop_9WaveTools_11RandomWaves_phi, __pyx_setprop_9WaveTools_11RandomWaves_phi, (char *)0, 0},
62337  {0, 0, 0, 0, 0}
62338 };
62339 
62340 static PyTypeObject __pyx_type_9WaveTools_RandomWaves = {
62341  PyVarObject_HEAD_INIT(0, 0)
62342  "WaveTools.RandomWaves", /*tp_name*/
62343  sizeof(struct __pyx_obj_9WaveTools_RandomWaves), /*tp_basicsize*/
62344  0, /*tp_itemsize*/
62345  __pyx_tp_dealloc_9WaveTools_RandomWaves, /*tp_dealloc*/
62346  #if PY_VERSION_HEX < 0x030800b4
62347  0, /*tp_print*/
62348  #endif
62349  #if PY_VERSION_HEX >= 0x030800b4
62350  0, /*tp_vectorcall_offset*/
62351  #endif
62352  0, /*tp_getattr*/
62353  0, /*tp_setattr*/
62354  #if PY_MAJOR_VERSION < 3
62355  0, /*tp_compare*/
62356  #endif
62357  #if PY_MAJOR_VERSION >= 3
62358  0, /*tp_as_async*/
62359  #endif
62360  0, /*tp_repr*/
62361  0, /*tp_as_number*/
62362  0, /*tp_as_sequence*/
62363  0, /*tp_as_mapping*/
62364  0, /*tp_hash*/
62365  0, /*tp_call*/
62366  0, /*tp_str*/
62367  0, /*tp_getattro*/
62368  0, /*tp_setattro*/
62369  0, /*tp_as_buffer*/
62370  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
62371  "\n This class is used for generating plane random waves using linear reconstruction of components from a\n wave spectrum\n\n Parameters\n ----------\n Tp : float\n Peak wave period \n Hs : float\n Significant wave height \n mwl : float\n Still water level \n depth : float\n Water depth \n waveDir : numpy.ndarray\n Wave direction vector \n g : Numpy array\n Gravitational acceleration vector \n N : int\n Number of frequency components\n bandFactor : float\n Spectral band factor. fmax = bandFactor/Tp, fmin = 1/(bandFactor*Tp) \n spectName : string\n Name of spectral distribution\n spectral_params : dict\n Dictionary of arguments specific to the spectral distribution\n Example for JONSWAP = {\"gamma\": 3.3, \"TMA\":True,\"depth\": depth}\n TMA=True activates the TMA modification, which in turn needs the depth as a parameter \n phi : numpy.ndarray\n Component phases (if set to None, phases are picked at random) \n fast : bool\n Switch for optimised functions \n ", /*tp_doc*/
62372  __pyx_tp_traverse_9WaveTools_RandomWaves, /*tp_traverse*/
62373  __pyx_tp_clear_9WaveTools_RandomWaves, /*tp_clear*/
62374  0, /*tp_richcompare*/
62375  0, /*tp_weaklistoffset*/
62376  0, /*tp_iter*/
62377  0, /*tp_iternext*/
62378  __pyx_methods_9WaveTools_RandomWaves, /*tp_methods*/
62379  0, /*tp_members*/
62380  __pyx_getsets_9WaveTools_RandomWaves, /*tp_getset*/
62381  0, /*tp_base*/
62382  0, /*tp_dict*/
62383  0, /*tp_descr_get*/
62384  0, /*tp_descr_set*/
62385  0, /*tp_dictoffset*/
62386  0, /*tp_init*/
62387  0, /*tp_alloc*/
62388  __pyx_tp_new_9WaveTools_RandomWaves, /*tp_new*/
62389  0, /*tp_free*/
62390  0, /*tp_is_gc*/
62391  0, /*tp_bases*/
62392  0, /*tp_mro*/
62393  0, /*tp_cache*/
62394  0, /*tp_subclasses*/
62395  0, /*tp_weaklist*/
62396  0, /*tp_del*/
62397  0, /*tp_version_tag*/
62398  #if PY_VERSION_HEX >= 0x030400a1
62399  0, /*tp_finalize*/
62400  #endif
62401  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
62402  0, /*tp_vectorcall*/
62403  #endif
62404  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
62405  0, /*tp_print*/
62406  #endif
62407  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
62408  0, /*tp_pypy_flags*/
62409  #endif
62410 };
62411 static struct __pyx_vtabstruct_9WaveTools_MultiSpectraRandomWaves __pyx_vtable_9WaveTools_MultiSpectraRandomWaves;
62412 
62413 static PyObject *__pyx_tp_new_9WaveTools_MultiSpectraRandomWaves(PyTypeObject *t, PyObject *a, PyObject *k) {
62414  struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *p;
62415  PyObject *o;
62416  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
62417  o = (*t->tp_alloc)(t, 0);
62418  } else {
62419  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
62420  }
62421  if (unlikely(!o)) return 0;
62422  p = ((struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)o);
62423  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_MultiSpectraRandomWaves;
62424  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62425  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62426  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62427  p->omegaM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62428  p->phiM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62429  p->kiM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62430  p->kDirM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62431  p->tanhFM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62432  p->aiM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62433  if (unlikely(__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__cinit__(o, a, k) < 0)) goto bad;
62434  return o;
62435  bad:
62436  Py_DECREF(o); o = 0;
62437  return NULL;
62438 }
62439 
62440 static void __pyx_tp_dealloc_9WaveTools_MultiSpectraRandomWaves(PyObject *o) {
62441  struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *p = (struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)o;
62442  #if CYTHON_USE_TP_FINALIZE
62443  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
62444  if (PyObject_CallFinalizerFromDealloc(o)) return;
62445  }
62446  #endif
62447  PyObject_GC_UnTrack(o);
62448  Py_CLEAR(p->g);
62449  Py_CLEAR(p->vDir);
62450  Py_CLEAR(p->waveDir);
62451  Py_CLEAR(p->omegaM);
62452  Py_CLEAR(p->phiM);
62453  Py_CLEAR(p->kiM);
62454  Py_CLEAR(p->kDirM);
62455  Py_CLEAR(p->tanhFM);
62456  Py_CLEAR(p->aiM);
62457  (*Py_TYPE(o)->tp_free)(o);
62458 }
62459 
62460 static int __pyx_tp_traverse_9WaveTools_MultiSpectraRandomWaves(PyObject *o, visitproc v, void *a) {
62461  int e;
62462  struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *p = (struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)o;
62463  if (p->g) {
62464  e = (*v)(((PyObject *)p->g), a); if (e) return e;
62465  }
62466  if (p->vDir) {
62467  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
62468  }
62469  if (p->waveDir) {
62470  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
62471  }
62472  if (p->omegaM) {
62473  e = (*v)(((PyObject *)p->omegaM), a); if (e) return e;
62474  }
62475  if (p->phiM) {
62476  e = (*v)(((PyObject *)p->phiM), a); if (e) return e;
62477  }
62478  if (p->kiM) {
62479  e = (*v)(((PyObject *)p->kiM), a); if (e) return e;
62480  }
62481  if (p->kDirM) {
62482  e = (*v)(((PyObject *)p->kDirM), a); if (e) return e;
62483  }
62484  if (p->tanhFM) {
62485  e = (*v)(((PyObject *)p->tanhFM), a); if (e) return e;
62486  }
62487  if (p->aiM) {
62488  e = (*v)(((PyObject *)p->aiM), a); if (e) return e;
62489  }
62490  return 0;
62491 }
62492 
62493 static int __pyx_tp_clear_9WaveTools_MultiSpectraRandomWaves(PyObject *o) {
62494  PyObject* tmp;
62495  struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *p = (struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *)o;
62496  tmp = ((PyObject*)p->g);
62497  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62498  Py_XDECREF(tmp);
62499  tmp = ((PyObject*)p->vDir);
62500  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62501  Py_XDECREF(tmp);
62502  tmp = ((PyObject*)p->waveDir);
62503  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62504  Py_XDECREF(tmp);
62505  tmp = ((PyObject*)p->omegaM);
62506  p->omegaM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62507  Py_XDECREF(tmp);
62508  tmp = ((PyObject*)p->phiM);
62509  p->phiM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62510  Py_XDECREF(tmp);
62511  tmp = ((PyObject*)p->kiM);
62512  p->kiM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62513  Py_XDECREF(tmp);
62514  tmp = ((PyObject*)p->kDirM);
62515  p->kDirM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62516  Py_XDECREF(tmp);
62517  tmp = ((PyObject*)p->tanhFM);
62518  p->tanhFM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62519  Py_XDECREF(tmp);
62520  tmp = ((PyObject*)p->aiM);
62521  p->aiM = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62522  Py_XDECREF(tmp);
62523  return 0;
62524 }
62525 
62526 static PyObject *__pyx_getprop_9WaveTools_23MultiSpectraRandomWaves_mwl(PyObject *o, CYTHON_UNUSED void *x) {
62527  return __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3mwl_1__get__(o);
62528 }
62529 
62530 static int __pyx_setprop_9WaveTools_23MultiSpectraRandomWaves_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62531  if (v) {
62532  return __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3mwl_3__set__(o, v);
62533  }
62534  else {
62535  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62536  return -1;
62537  }
62538 }
62539 
62540 static PyObject *__pyx_getprop_9WaveTools_23MultiSpectraRandomWaves_depth(PyObject *o, CYTHON_UNUSED void *x) {
62541  return __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5depth_1__get__(o);
62542 }
62543 
62544 static int __pyx_setprop_9WaveTools_23MultiSpectraRandomWaves_depth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62545  if (v) {
62546  return __pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5depth_3__set__(o, v);
62547  }
62548  else {
62549  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62550  return -1;
62551  }
62552 }
62553 
62554 static PyMethodDef __pyx_methods_9WaveTools_MultiSpectraRandomWaves[] = {
62555  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta},
62556  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u},
62557  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_7__reduce_cython__, METH_NOARGS, 0},
62558  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_9__setstate_cython__, METH_O, 0},
62559  {0, 0, 0, 0}
62560 };
62561 
62562 static struct PyGetSetDef __pyx_getsets_9WaveTools_MultiSpectraRandomWaves[] = {
62563  {(char *)"mwl", __pyx_getprop_9WaveTools_23MultiSpectraRandomWaves_mwl, __pyx_setprop_9WaveTools_23MultiSpectraRandomWaves_mwl, (char *)0, 0},
62564  {(char *)"depth", __pyx_getprop_9WaveTools_23MultiSpectraRandomWaves_depth, __pyx_setprop_9WaveTools_23MultiSpectraRandomWaves_depth, (char *)0, 0},
62565  {0, 0, 0, 0, 0}
62566 };
62567 
62568 static PyTypeObject __pyx_type_9WaveTools_MultiSpectraRandomWaves = {
62569  PyVarObject_HEAD_INIT(0, 0)
62570  "WaveTools.MultiSpectraRandomWaves", /*tp_name*/
62571  sizeof(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves), /*tp_basicsize*/
62572  0, /*tp_itemsize*/
62573  __pyx_tp_dealloc_9WaveTools_MultiSpectraRandomWaves, /*tp_dealloc*/
62574  #if PY_VERSION_HEX < 0x030800b4
62575  0, /*tp_print*/
62576  #endif
62577  #if PY_VERSION_HEX >= 0x030800b4
62578  0, /*tp_vectorcall_offset*/
62579  #endif
62580  0, /*tp_getattr*/
62581  0, /*tp_setattr*/
62582  #if PY_MAJOR_VERSION < 3
62583  0, /*tp_compare*/
62584  #endif
62585  #if PY_MAJOR_VERSION >= 3
62586  0, /*tp_as_async*/
62587  #endif
62588  0, /*tp_repr*/
62589  0, /*tp_as_number*/
62590  0, /*tp_as_sequence*/
62591  0, /*tp_as_mapping*/
62592  0, /*tp_hash*/
62593  0, /*tp_call*/
62594  0, /*tp_str*/
62595  0, /*tp_getattro*/
62596  0, /*tp_setattro*/
62597  0, /*tp_as_buffer*/
62598  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
62599  "This class is used for generating random waves by combining\n multiple spectra with different distributions and directions\n\n Parameters\n ----------\n\n Nspectra : int\n Total number of spectra\n Tp : list\n List of peak wave periods\n Hs : list\n List of significant wave heights\n mwl : float\n Still water level\n \n depth : float\n Water depth\n \n waveDir : list\n List of wave direction vector\n \n g : Numpy array\n Gravitational acceleration vector\n N : list\n List of numbers of frequency components\n bandFactor : list\n List of spectral band factors\n spectName : list\n List of names of spectral distribution\n spectral_params : list\n List of names of spectral distribution (see RandomWaves class)\n phi : list\n List of component phases\n fast : bool\n Switch for optimised functions \n ", /*tp_doc*/
62600  __pyx_tp_traverse_9WaveTools_MultiSpectraRandomWaves, /*tp_traverse*/
62601  __pyx_tp_clear_9WaveTools_MultiSpectraRandomWaves, /*tp_clear*/
62602  0, /*tp_richcompare*/
62603  0, /*tp_weaklistoffset*/
62604  0, /*tp_iter*/
62605  0, /*tp_iternext*/
62606  __pyx_methods_9WaveTools_MultiSpectraRandomWaves, /*tp_methods*/
62607  0, /*tp_members*/
62608  __pyx_getsets_9WaveTools_MultiSpectraRandomWaves, /*tp_getset*/
62609  0, /*tp_base*/
62610  0, /*tp_dict*/
62611  0, /*tp_descr_get*/
62612  0, /*tp_descr_set*/
62613  0, /*tp_dictoffset*/
62614  0, /*tp_init*/
62615  0, /*tp_alloc*/
62616  __pyx_tp_new_9WaveTools_MultiSpectraRandomWaves, /*tp_new*/
62617  0, /*tp_free*/
62618  0, /*tp_is_gc*/
62619  0, /*tp_bases*/
62620  0, /*tp_mro*/
62621  0, /*tp_cache*/
62622  0, /*tp_subclasses*/
62623  0, /*tp_weaklist*/
62624  0, /*tp_del*/
62625  0, /*tp_version_tag*/
62626  #if PY_VERSION_HEX >= 0x030400a1
62627  0, /*tp_finalize*/
62628  #endif
62629  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
62630  0, /*tp_vectorcall*/
62631  #endif
62632  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
62633  0, /*tp_print*/
62634  #endif
62635  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
62636  0, /*tp_pypy_flags*/
62637  #endif
62638 };
62639 static struct __pyx_vtabstruct_9WaveTools_DirectionalWaves __pyx_vtable_9WaveTools_DirectionalWaves;
62640 
62641 static PyObject *__pyx_tp_new_9WaveTools_DirectionalWaves(PyTypeObject *t, PyObject *a, PyObject *k) {
62642  struct __pyx_obj_9WaveTools_DirectionalWaves *p;
62643  PyObject *o;
62644  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
62645  o = (*t->tp_alloc)(t, 0);
62646  } else {
62647  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
62648  }
62649  if (unlikely(!o)) return 0;
62650  p = ((struct __pyx_obj_9WaveTools_DirectionalWaves *)o);
62651  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_DirectionalWaves;
62652  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62653  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62654  p->tanh = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62655  p->waveDir0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62656  p->waveDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62657  p->phiDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62658  p->aiDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62659  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62660  p->kDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62661  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62662  if (unlikely(__pyx_pw_9WaveTools_16DirectionalWaves_1__cinit__(o, a, k) < 0)) goto bad;
62663  return o;
62664  bad:
62665  Py_DECREF(o); o = 0;
62666  return NULL;
62667 }
62668 
62669 static void __pyx_tp_dealloc_9WaveTools_DirectionalWaves(PyObject *o) {
62670  struct __pyx_obj_9WaveTools_DirectionalWaves *p = (struct __pyx_obj_9WaveTools_DirectionalWaves *)o;
62671  #if CYTHON_USE_TP_FINALIZE
62672  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
62673  if (PyObject_CallFinalizerFromDealloc(o)) return;
62674  }
62675  #endif
62676  PyObject_GC_UnTrack(o);
62677  Py_CLEAR(p->vDir);
62678  Py_CLEAR(p->omega);
62679  Py_CLEAR(p->tanh);
62680  Py_CLEAR(p->waveDir0);
62681  Py_CLEAR(p->waveDirs);
62682  Py_CLEAR(p->phiDirs);
62683  Py_CLEAR(p->aiDirs);
62684  Py_CLEAR(p->ki);
62685  Py_CLEAR(p->kDirs);
62686  Py_CLEAR(p->tanhF);
62687  (*Py_TYPE(o)->tp_free)(o);
62688 }
62689 
62690 static int __pyx_tp_traverse_9WaveTools_DirectionalWaves(PyObject *o, visitproc v, void *a) {
62691  int e;
62692  struct __pyx_obj_9WaveTools_DirectionalWaves *p = (struct __pyx_obj_9WaveTools_DirectionalWaves *)o;
62693  if (p->vDir) {
62694  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
62695  }
62696  if (p->omega) {
62697  e = (*v)(((PyObject *)p->omega), a); if (e) return e;
62698  }
62699  if (p->tanh) {
62700  e = (*v)(((PyObject *)p->tanh), a); if (e) return e;
62701  }
62702  if (p->waveDir0) {
62703  e = (*v)(((PyObject *)p->waveDir0), a); if (e) return e;
62704  }
62705  if (p->waveDirs) {
62706  e = (*v)(((PyObject *)p->waveDirs), a); if (e) return e;
62707  }
62708  if (p->phiDirs) {
62709  e = (*v)(((PyObject *)p->phiDirs), a); if (e) return e;
62710  }
62711  if (p->aiDirs) {
62712  e = (*v)(((PyObject *)p->aiDirs), a); if (e) return e;
62713  }
62714  if (p->ki) {
62715  e = (*v)(((PyObject *)p->ki), a); if (e) return e;
62716  }
62717  if (p->kDirs) {
62718  e = (*v)(((PyObject *)p->kDirs), a); if (e) return e;
62719  }
62720  if (p->tanhF) {
62721  e = (*v)(((PyObject *)p->tanhF), a); if (e) return e;
62722  }
62723  return 0;
62724 }
62725 
62726 static int __pyx_tp_clear_9WaveTools_DirectionalWaves(PyObject *o) {
62727  PyObject* tmp;
62728  struct __pyx_obj_9WaveTools_DirectionalWaves *p = (struct __pyx_obj_9WaveTools_DirectionalWaves *)o;
62729  tmp = ((PyObject*)p->vDir);
62730  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62731  Py_XDECREF(tmp);
62732  tmp = ((PyObject*)p->omega);
62733  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62734  Py_XDECREF(tmp);
62735  tmp = ((PyObject*)p->tanh);
62736  p->tanh = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62737  Py_XDECREF(tmp);
62738  tmp = ((PyObject*)p->waveDir0);
62739  p->waveDir0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62740  Py_XDECREF(tmp);
62741  tmp = ((PyObject*)p->waveDirs);
62742  p->waveDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62743  Py_XDECREF(tmp);
62744  tmp = ((PyObject*)p->phiDirs);
62745  p->phiDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62746  Py_XDECREF(tmp);
62747  tmp = ((PyObject*)p->aiDirs);
62748  p->aiDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62749  Py_XDECREF(tmp);
62750  tmp = ((PyObject*)p->ki);
62751  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62752  Py_XDECREF(tmp);
62753  tmp = ((PyObject*)p->kDirs);
62754  p->kDirs = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62755  Py_XDECREF(tmp);
62756  tmp = ((PyObject*)p->tanhF);
62757  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62758  Py_XDECREF(tmp);
62759  return 0;
62760 }
62761 
62762 static PyObject *__pyx_getprop_9WaveTools_16DirectionalWaves_mwl(PyObject *o, CYTHON_UNUSED void *x) {
62763  return __pyx_pw_9WaveTools_16DirectionalWaves_3mwl_1__get__(o);
62764 }
62765 
62766 static int __pyx_setprop_9WaveTools_16DirectionalWaves_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62767  if (v) {
62768  return __pyx_pw_9WaveTools_16DirectionalWaves_3mwl_3__set__(o, v);
62769  }
62770  else {
62771  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62772  return -1;
62773  }
62774 }
62775 
62776 static PyObject *__pyx_getprop_9WaveTools_16DirectionalWaves_depth(PyObject *o, CYTHON_UNUSED void *x) {
62777  return __pyx_pw_9WaveTools_16DirectionalWaves_5depth_1__get__(o);
62778 }
62779 
62780 static int __pyx_setprop_9WaveTools_16DirectionalWaves_depth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
62781  if (v) {
62782  return __pyx_pw_9WaveTools_16DirectionalWaves_5depth_3__set__(o, v);
62783  }
62784  else {
62785  PyErr_SetString(PyExc_NotImplementedError, "__del__");
62786  return -1;
62787  }
62788 }
62789 
62790 static PyMethodDef __pyx_methods_9WaveTools_DirectionalWaves[] = {
62791  {"eta", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_16DirectionalWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_2eta},
62792  {"u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_16DirectionalWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_4u},
62793  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_7__reduce_cython__, METH_NOARGS, 0},
62794  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_9__setstate_cython__, METH_O, 0},
62795  {0, 0, 0, 0}
62796 };
62797 
62798 static struct PyGetSetDef __pyx_getsets_9WaveTools_DirectionalWaves[] = {
62799  {(char *)"mwl", __pyx_getprop_9WaveTools_16DirectionalWaves_mwl, __pyx_setprop_9WaveTools_16DirectionalWaves_mwl, (char *)0, 0},
62800  {(char *)"depth", __pyx_getprop_9WaveTools_16DirectionalWaves_depth, __pyx_setprop_9WaveTools_16DirectionalWaves_depth, (char *)0, 0},
62801  {0, 0, 0, 0, 0}
62802 };
62803 
62804 static PyTypeObject __pyx_type_9WaveTools_DirectionalWaves = {
62805  PyVarObject_HEAD_INIT(0, 0)
62806  "WaveTools.DirectionalWaves", /*tp_name*/
62807  sizeof(struct __pyx_obj_9WaveTools_DirectionalWaves), /*tp_basicsize*/
62808  0, /*tp_itemsize*/
62809  __pyx_tp_dealloc_9WaveTools_DirectionalWaves, /*tp_dealloc*/
62810  #if PY_VERSION_HEX < 0x030800b4
62811  0, /*tp_print*/
62812  #endif
62813  #if PY_VERSION_HEX >= 0x030800b4
62814  0, /*tp_vectorcall_offset*/
62815  #endif
62816  0, /*tp_getattr*/
62817  0, /*tp_setattr*/
62818  #if PY_MAJOR_VERSION < 3
62819  0, /*tp_compare*/
62820  #endif
62821  #if PY_MAJOR_VERSION >= 3
62822  0, /*tp_as_async*/
62823  #endif
62824  0, /*tp_repr*/
62825  0, /*tp_as_number*/
62826  0, /*tp_as_sequence*/
62827  0, /*tp_as_mapping*/
62828  0, /*tp_hash*/
62829  0, /*tp_call*/
62830  0, /*tp_str*/
62831  0, /*tp_getattro*/
62832  0, /*tp_setattro*/
62833  0, /*tp_as_buffer*/
62834  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
62835  "\n This class is used for generating directional random waves using linear reconstruction of components from a\n wave spectrum\n\n Parameters\n ----------\n M : int\n Number of directional components\n Tp : float\n Peak wave period\n Hs : float\n Significant wave height\n mwl : float\n Still water level\n depth : float\n Water depth\n waveDir0 : numpy.ndarray\n Leading wave direction vector\n g : Numpy array\n Gravitational acceleration vector\n N : int\n Number of frequency components\n bandFactor : float\n Spectral band factor. fmax = bandFactor/Tp, fmin = 1/(bandFactor*Tp) \n spectName : string\n Name of spectral distribution\n spreadName : string\n Name of spreading distribution\n spectral_params : dict\n Dictionary of arguments specific to the spectral distribution (see RandomWaves class) \n spread_params : dict\n Dictionary of arguments specific to the spreading distribution\n Example for Cos-2s = {\"s\": 10}\n Example for Mitsuyashu-type = {\"fp\": 1/Tp, \"smax\":10}\n \n phi : numpy.ndarray\n Component phases (if set to None, phases are picked at random)\n \n phiSymm : bool\n Switch for enabling a symmetric phase allocation across directional components\n fast : bool\n Switch for enabling optimised functions \n\n ", /*tp_doc*/
62836  __pyx_tp_traverse_9WaveTools_DirectionalWaves, /*tp_traverse*/
62837  __pyx_tp_clear_9WaveTools_DirectionalWaves, /*tp_clear*/
62838  0, /*tp_richcompare*/
62839  0, /*tp_weaklistoffset*/
62840  0, /*tp_iter*/
62841  0, /*tp_iternext*/
62842  __pyx_methods_9WaveTools_DirectionalWaves, /*tp_methods*/
62843  0, /*tp_members*/
62844  __pyx_getsets_9WaveTools_DirectionalWaves, /*tp_getset*/
62845  0, /*tp_base*/
62846  0, /*tp_dict*/
62847  0, /*tp_descr_get*/
62848  0, /*tp_descr_set*/
62849  0, /*tp_dictoffset*/
62850  0, /*tp_init*/
62851  0, /*tp_alloc*/
62852  __pyx_tp_new_9WaveTools_DirectionalWaves, /*tp_new*/
62853  0, /*tp_free*/
62854  0, /*tp_is_gc*/
62855  0, /*tp_bases*/
62856  0, /*tp_mro*/
62857  0, /*tp_cache*/
62858  0, /*tp_subclasses*/
62859  0, /*tp_weaklist*/
62860  0, /*tp_del*/
62861  0, /*tp_version_tag*/
62862  #if PY_VERSION_HEX >= 0x030400a1
62863  0, /*tp_finalize*/
62864  #endif
62865  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
62866  0, /*tp_vectorcall*/
62867  #endif
62868  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
62869  0, /*tp_print*/
62870  #endif
62871  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
62872  0, /*tp_pypy_flags*/
62873  #endif
62874 };
62875 static struct __pyx_vtabstruct_9WaveTools_TimeSeries __pyx_vtable_9WaveTools_TimeSeries;
62876 
62877 static PyObject *__pyx_tp_new_9WaveTools_TimeSeries(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
62878  struct __pyx_obj_9WaveTools_TimeSeries *p;
62879  PyObject *o;
62880  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
62881  o = (*t->tp_alloc)(t, 0);
62882  } else {
62883  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
62884  }
62885  if (unlikely(!o)) return 0;
62886  p = ((struct __pyx_obj_9WaveTools_TimeSeries *)o);
62887  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_TimeSeries;
62888  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62889  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62890  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62891  p->x0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62892  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62893  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62894  p->time = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62895  p->etaS = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62896  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62897  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62898  p->phi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62899  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62900  p->windows_handover = ((PyObject*)Py_None); Py_INCREF(Py_None);
62901  p->windows_rec = ((PyObject*)Py_None); Py_INCREF(Py_None);
62902  p->decompose_window = ((PyObject*)Py_None); Py_INCREF(Py_None);
62903  p->eta = Py_None; Py_INCREF(Py_None);
62904  p->u = Py_None; Py_INCREF(Py_None);
62905  return o;
62906 }
62907 
62908 static void __pyx_tp_dealloc_9WaveTools_TimeSeries(PyObject *o) {
62909  struct __pyx_obj_9WaveTools_TimeSeries *p = (struct __pyx_obj_9WaveTools_TimeSeries *)o;
62910  #if CYTHON_USE_TP_FINALIZE
62911  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
62912  if (PyObject_CallFinalizerFromDealloc(o)) return;
62913  }
62914  #endif
62915  PyObject_GC_UnTrack(o);
62916  Py_CLEAR(p->g);
62917  Py_CLEAR(p->waveDir);
62918  Py_CLEAR(p->vDir);
62919  Py_CLEAR(p->x0);
62920  Py_CLEAR(p->kDir);
62921  Py_CLEAR(p->tanhF);
62922  Py_CLEAR(p->time);
62923  Py_CLEAR(p->etaS);
62924  Py_CLEAR(p->ai);
62925  Py_CLEAR(p->omega);
62926  Py_CLEAR(p->phi);
62927  Py_CLEAR(p->ki);
62928  Py_CLEAR(p->windows_handover);
62929  Py_CLEAR(p->windows_rec);
62930  Py_CLEAR(p->decompose_window);
62931  Py_CLEAR(p->eta);
62932  Py_CLEAR(p->u);
62933  (*Py_TYPE(o)->tp_free)(o);
62934 }
62935 
62936 static int __pyx_tp_traverse_9WaveTools_TimeSeries(PyObject *o, visitproc v, void *a) {
62937  int e;
62938  struct __pyx_obj_9WaveTools_TimeSeries *p = (struct __pyx_obj_9WaveTools_TimeSeries *)o;
62939  if (p->g) {
62940  e = (*v)(((PyObject *)p->g), a); if (e) return e;
62941  }
62942  if (p->waveDir) {
62943  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
62944  }
62945  if (p->vDir) {
62946  e = (*v)(((PyObject *)p->vDir), a); if (e) return e;
62947  }
62948  if (p->x0) {
62949  e = (*v)(((PyObject *)p->x0), a); if (e) return e;
62950  }
62951  if (p->kDir) {
62952  e = (*v)(((PyObject *)p->kDir), a); if (e) return e;
62953  }
62954  if (p->tanhF) {
62955  e = (*v)(((PyObject *)p->tanhF), a); if (e) return e;
62956  }
62957  if (p->time) {
62958  e = (*v)(((PyObject *)p->time), a); if (e) return e;
62959  }
62960  if (p->etaS) {
62961  e = (*v)(((PyObject *)p->etaS), a); if (e) return e;
62962  }
62963  if (p->ai) {
62964  e = (*v)(((PyObject *)p->ai), a); if (e) return e;
62965  }
62966  if (p->omega) {
62967  e = (*v)(((PyObject *)p->omega), a); if (e) return e;
62968  }
62969  if (p->phi) {
62970  e = (*v)(((PyObject *)p->phi), a); if (e) return e;
62971  }
62972  if (p->ki) {
62973  e = (*v)(((PyObject *)p->ki), a); if (e) return e;
62974  }
62975  if (p->windows_handover) {
62976  e = (*v)(p->windows_handover, a); if (e) return e;
62977  }
62978  if (p->windows_rec) {
62979  e = (*v)(p->windows_rec, a); if (e) return e;
62980  }
62981  if (p->decompose_window) {
62982  e = (*v)(p->decompose_window, a); if (e) return e;
62983  }
62984  if (p->eta) {
62985  e = (*v)(p->eta, a); if (e) return e;
62986  }
62987  if (p->u) {
62988  e = (*v)(p->u, a); if (e) return e;
62989  }
62990  return 0;
62991 }
62992 
62993 static int __pyx_tp_clear_9WaveTools_TimeSeries(PyObject *o) {
62994  PyObject* tmp;
62995  struct __pyx_obj_9WaveTools_TimeSeries *p = (struct __pyx_obj_9WaveTools_TimeSeries *)o;
62996  tmp = ((PyObject*)p->g);
62997  p->g = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
62998  Py_XDECREF(tmp);
62999  tmp = ((PyObject*)p->waveDir);
63000  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63001  Py_XDECREF(tmp);
63002  tmp = ((PyObject*)p->vDir);
63003  p->vDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63004  Py_XDECREF(tmp);
63005  tmp = ((PyObject*)p->x0);
63006  p->x0 = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63007  Py_XDECREF(tmp);
63008  tmp = ((PyObject*)p->kDir);
63009  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63010  Py_XDECREF(tmp);
63011  tmp = ((PyObject*)p->tanhF);
63012  p->tanhF = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63013  Py_XDECREF(tmp);
63014  tmp = ((PyObject*)p->time);
63015  p->time = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63016  Py_XDECREF(tmp);
63017  tmp = ((PyObject*)p->etaS);
63018  p->etaS = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63019  Py_XDECREF(tmp);
63020  tmp = ((PyObject*)p->ai);
63021  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63022  Py_XDECREF(tmp);
63023  tmp = ((PyObject*)p->omega);
63024  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63025  Py_XDECREF(tmp);
63026  tmp = ((PyObject*)p->phi);
63027  p->phi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63028  Py_XDECREF(tmp);
63029  tmp = ((PyObject*)p->ki);
63030  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63031  Py_XDECREF(tmp);
63032  tmp = ((PyObject*)p->windows_handover);
63033  p->windows_handover = ((PyObject*)Py_None); Py_INCREF(Py_None);
63034  Py_XDECREF(tmp);
63035  tmp = ((PyObject*)p->windows_rec);
63036  p->windows_rec = ((PyObject*)Py_None); Py_INCREF(Py_None);
63037  Py_XDECREF(tmp);
63038  tmp = ((PyObject*)p->decompose_window);
63039  p->decompose_window = ((PyObject*)Py_None); Py_INCREF(Py_None);
63040  Py_XDECREF(tmp);
63041  tmp = ((PyObject*)p->eta);
63042  p->eta = Py_None; Py_INCREF(Py_None);
63043  Py_XDECREF(tmp);
63044  tmp = ((PyObject*)p->u);
63045  p->u = Py_None; Py_INCREF(Py_None);
63046  Py_XDECREF(tmp);
63047  return 0;
63048 }
63049 
63050 static PyObject *__pyx_getprop_9WaveTools_10TimeSeries_wavelength(PyObject *o, CYTHON_UNUSED void *x) {
63051  return __pyx_pw_9WaveTools_10TimeSeries_10wavelength_1__get__(o);
63052 }
63053 
63054 static int __pyx_setprop_9WaveTools_10TimeSeries_wavelength(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63055  if (v) {
63056  return __pyx_pw_9WaveTools_10TimeSeries_10wavelength_3__set__(o, v);
63057  }
63058  else {
63059  PyErr_SetString(PyExc_NotImplementedError, "__del__");
63060  return -1;
63061  }
63062 }
63063 
63064 static PyObject *__pyx_getprop_9WaveTools_10TimeSeries_mwl(PyObject *o, CYTHON_UNUSED void *x) {
63065  return __pyx_pw_9WaveTools_10TimeSeries_3mwl_1__get__(o);
63066 }
63067 
63068 static int __pyx_setprop_9WaveTools_10TimeSeries_mwl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63069  if (v) {
63070  return __pyx_pw_9WaveTools_10TimeSeries_3mwl_3__set__(o, v);
63071  }
63072  else {
63073  PyErr_SetString(PyExc_NotImplementedError, "__del__");
63074  return -1;
63075  }
63076 }
63077 
63078 static PyObject *__pyx_getprop_9WaveTools_10TimeSeries_eta(PyObject *o, CYTHON_UNUSED void *x) {
63079  return __pyx_pw_9WaveTools_10TimeSeries_3eta_1__get__(o);
63080 }
63081 
63082 static int __pyx_setprop_9WaveTools_10TimeSeries_eta(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63083  if (v) {
63084  return __pyx_pw_9WaveTools_10TimeSeries_3eta_3__set__(o, v);
63085  }
63086  else {
63087  return __pyx_pw_9WaveTools_10TimeSeries_3eta_5__del__(o);
63088  }
63089 }
63090 
63091 static PyObject *__pyx_getprop_9WaveTools_10TimeSeries_u(PyObject *o, CYTHON_UNUSED void *x) {
63092  return __pyx_pw_9WaveTools_10TimeSeries_1u_1__get__(o);
63093 }
63094 
63095 static int __pyx_setprop_9WaveTools_10TimeSeries_u(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63096  if (v) {
63097  return __pyx_pw_9WaveTools_10TimeSeries_1u_3__set__(o, v);
63098  }
63099  else {
63100  return __pyx_pw_9WaveTools_10TimeSeries_1u_5__del__(o);
63101  }
63102 }
63103 
63104 static PyMethodDef __pyx_methods_9WaveTools_TimeSeries[] = {
63105  {"windOut", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_3windOut, METH_NOARGS, 0},
63106  {"etaDirect", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_5etaDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_4etaDirect},
63107  {"uDirect", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_7uDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_6uDirect},
63108  {"findWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_9findWindow, METH_O, __pyx_doc_9WaveTools_10TimeSeries_8findWindow},
63109  {"etaWindow", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_11etaWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_10etaWindow},
63110  {"uWindow", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_10TimeSeries_13uWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_12uWindow},
63111  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_15__reduce_cython__, METH_NOARGS, 0},
63112  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_17__setstate_cython__, METH_O, 0},
63113  {0, 0, 0, 0}
63114 };
63115 
63116 static struct PyGetSetDef __pyx_getsets_9WaveTools_TimeSeries[] = {
63117  {(char *)"wavelength", __pyx_getprop_9WaveTools_10TimeSeries_wavelength, __pyx_setprop_9WaveTools_10TimeSeries_wavelength, (char *)0, 0},
63118  {(char *)"mwl", __pyx_getprop_9WaveTools_10TimeSeries_mwl, __pyx_setprop_9WaveTools_10TimeSeries_mwl, (char *)0, 0},
63119  {(char *)"eta", __pyx_getprop_9WaveTools_10TimeSeries_eta, __pyx_setprop_9WaveTools_10TimeSeries_eta, (char *)0, 0},
63120  {(char *)"u", __pyx_getprop_9WaveTools_10TimeSeries_u, __pyx_setprop_9WaveTools_10TimeSeries_u, (char *)0, 0},
63121  {0, 0, 0, 0, 0}
63122 };
63123 
63124 static PyTypeObject __pyx_type_9WaveTools_TimeSeries = {
63125  PyVarObject_HEAD_INIT(0, 0)
63126  "WaveTools.TimeSeries", /*tp_name*/
63127  sizeof(struct __pyx_obj_9WaveTools_TimeSeries), /*tp_basicsize*/
63128  0, /*tp_itemsize*/
63129  __pyx_tp_dealloc_9WaveTools_TimeSeries, /*tp_dealloc*/
63130  #if PY_VERSION_HEX < 0x030800b4
63131  0, /*tp_print*/
63132  #endif
63133  #if PY_VERSION_HEX >= 0x030800b4
63134  0, /*tp_vectorcall_offset*/
63135  #endif
63136  0, /*tp_getattr*/
63137  0, /*tp_setattr*/
63138  #if PY_MAJOR_VERSION < 3
63139  0, /*tp_compare*/
63140  #endif
63141  #if PY_MAJOR_VERSION >= 3
63142  0, /*tp_as_async*/
63143  #endif
63144  0, /*tp_repr*/
63145  0, /*tp_as_number*/
63146  0, /*tp_as_sequence*/
63147  0, /*tp_as_mapping*/
63148  0, /*tp_hash*/
63149  0, /*tp_call*/
63150  0, /*tp_str*/
63151  0, /*tp_getattro*/
63152  0, /*tp_setattro*/
63153  0, /*tp_as_buffer*/
63154  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
63155  "This class is used for generating waves from an arbirtrary free-surface elevation time series\n\n Parameters\n ----------\n timeSeriesFile : string\n Time series file name (csv or txt)\n skiprows : int\n Number of header rows in time series file \n timeSeriesPosition : numpy.ndarrat\n Coordinates of the gauge / signal location \n depth : float\n Water depth \n N : int\n Number of frequency components\n mwl : float\n Still water level \n waveDir : numpy.ndarray\n Leading wave direction vector \n g : Numpy array\n Gravitational acceleration vector \n cutoffTotal : float\n Cut off fraction, applied both at the leading and tailing parts of the series \n rec_direct : bool\n Switch for activating direct decomposition\n window_params : dict\n Dictionary of parameters for window method\n e.g. window_params = {\"Nwaves\":15, \"Tm\": Tp/1.1, \"Window\":\"costap\"} (minimum parameters required)\n e.g. window_params = {\"Nwaves\":15, \"Tm\": Tp/1.1, \"Window\":\"costap\", \"Overlap\":0.5, \"Cutoff\":0.2} (full range of parameters)\n \n arrayData : bool\n Switch for passing the time series as an array (False by default)\n seriesArray : numpy.ndarray\n Free surface elevation time series given in an array format (None by default) \n fast : bool\n Switch for enabling optimised functions \n\n ", /*tp_doc*/
63156  __pyx_tp_traverse_9WaveTools_TimeSeries, /*tp_traverse*/
63157  __pyx_tp_clear_9WaveTools_TimeSeries, /*tp_clear*/
63158  0, /*tp_richcompare*/
63159  0, /*tp_weaklistoffset*/
63160  0, /*tp_iter*/
63161  0, /*tp_iternext*/
63162  __pyx_methods_9WaveTools_TimeSeries, /*tp_methods*/
63163  0, /*tp_members*/
63164  __pyx_getsets_9WaveTools_TimeSeries, /*tp_getset*/
63165  0, /*tp_base*/
63166  0, /*tp_dict*/
63167  0, /*tp_descr_get*/
63168  0, /*tp_descr_set*/
63169  0, /*tp_dictoffset*/
63170  __pyx_pw_9WaveTools_10TimeSeries_1__init__, /*tp_init*/
63171  0, /*tp_alloc*/
63172  __pyx_tp_new_9WaveTools_TimeSeries, /*tp_new*/
63173  0, /*tp_free*/
63174  0, /*tp_is_gc*/
63175  0, /*tp_bases*/
63176  0, /*tp_mro*/
63177  0, /*tp_cache*/
63178  0, /*tp_subclasses*/
63179  0, /*tp_weaklist*/
63180  0, /*tp_del*/
63181  0, /*tp_version_tag*/
63182  #if PY_VERSION_HEX >= 0x030400a1
63183  0, /*tp_finalize*/
63184  #endif
63185  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
63186  0, /*tp_vectorcall*/
63187  #endif
63188  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
63189  0, /*tp_print*/
63190  #endif
63191  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
63192  0, /*tp_pypy_flags*/
63193  #endif
63194 };
63195 static struct __pyx_vtabstruct_9WaveTools_RandomNLWaves __pyx_vtable_9WaveTools_RandomNLWaves;
63196 
63197 static PyObject *__pyx_tp_new_9WaveTools_RandomNLWaves(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
63198  struct __pyx_obj_9WaveTools_RandomNLWaves *p;
63199  PyObject *o;
63200  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
63201  o = (*t->tp_alloc)(t, 0);
63202  } else {
63203  o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
63204  }
63205  if (unlikely(!o)) return 0;
63206  p = ((struct __pyx_obj_9WaveTools_RandomNLWaves *)o);
63207  p->__pyx_vtab = __pyx_vtabptr_9WaveTools_RandomNLWaves;
63208  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63209  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63210  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63211  p->phi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63212  p->tanhKd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63213  p->sinhKd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63214  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63215  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63216  p->eta = Py_None; Py_INCREF(Py_None);
63217  p->u = Py_None; Py_INCREF(Py_None);
63218  p->eta_linear = Py_None; Py_INCREF(Py_None);
63219  return o;
63220 }
63221 
63222 static void __pyx_tp_dealloc_9WaveTools_RandomNLWaves(PyObject *o) {
63223  struct __pyx_obj_9WaveTools_RandomNLWaves *p = (struct __pyx_obj_9WaveTools_RandomNLWaves *)o;
63224  #if CYTHON_USE_TP_FINALIZE
63225  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
63226  if (PyObject_CallFinalizerFromDealloc(o)) return;
63227  }
63228  #endif
63229  PyObject_GC_UnTrack(o);
63230  Py_CLEAR(p->omega);
63231  Py_CLEAR(p->ki);
63232  Py_CLEAR(p->kDir);
63233  Py_CLEAR(p->phi);
63234  Py_CLEAR(p->tanhKd);
63235  Py_CLEAR(p->sinhKd);
63236  Py_CLEAR(p->waveDir);
63237  Py_CLEAR(p->ai);
63238  Py_CLEAR(p->eta);
63239  Py_CLEAR(p->u);
63240  Py_CLEAR(p->eta_linear);
63241  (*Py_TYPE(o)->tp_free)(o);
63242 }
63243 
63244 static int __pyx_tp_traverse_9WaveTools_RandomNLWaves(PyObject *o, visitproc v, void *a) {
63245  int e;
63246  struct __pyx_obj_9WaveTools_RandomNLWaves *p = (struct __pyx_obj_9WaveTools_RandomNLWaves *)o;
63247  if (p->omega) {
63248  e = (*v)(((PyObject *)p->omega), a); if (e) return e;
63249  }
63250  if (p->ki) {
63251  e = (*v)(((PyObject *)p->ki), a); if (e) return e;
63252  }
63253  if (p->kDir) {
63254  e = (*v)(((PyObject *)p->kDir), a); if (e) return e;
63255  }
63256  if (p->phi) {
63257  e = (*v)(((PyObject *)p->phi), a); if (e) return e;
63258  }
63259  if (p->tanhKd) {
63260  e = (*v)(((PyObject *)p->tanhKd), a); if (e) return e;
63261  }
63262  if (p->sinhKd) {
63263  e = (*v)(((PyObject *)p->sinhKd), a); if (e) return e;
63264  }
63265  if (p->waveDir) {
63266  e = (*v)(((PyObject *)p->waveDir), a); if (e) return e;
63267  }
63268  if (p->ai) {
63269  e = (*v)(((PyObject *)p->ai), a); if (e) return e;
63270  }
63271  if (p->eta) {
63272  e = (*v)(p->eta, a); if (e) return e;
63273  }
63274  if (p->u) {
63275  e = (*v)(p->u, a); if (e) return e;
63276  }
63277  if (p->eta_linear) {
63278  e = (*v)(p->eta_linear, a); if (e) return e;
63279  }
63280  return 0;
63281 }
63282 
63283 static int __pyx_tp_clear_9WaveTools_RandomNLWaves(PyObject *o) {
63284  PyObject* tmp;
63285  struct __pyx_obj_9WaveTools_RandomNLWaves *p = (struct __pyx_obj_9WaveTools_RandomNLWaves *)o;
63286  tmp = ((PyObject*)p->omega);
63287  p->omega = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63288  Py_XDECREF(tmp);
63289  tmp = ((PyObject*)p->ki);
63290  p->ki = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63291  Py_XDECREF(tmp);
63292  tmp = ((PyObject*)p->kDir);
63293  p->kDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63294  Py_XDECREF(tmp);
63295  tmp = ((PyObject*)p->phi);
63296  p->phi = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63297  Py_XDECREF(tmp);
63298  tmp = ((PyObject*)p->tanhKd);
63299  p->tanhKd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63300  Py_XDECREF(tmp);
63301  tmp = ((PyObject*)p->sinhKd);
63302  p->sinhKd = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63303  Py_XDECREF(tmp);
63304  tmp = ((PyObject*)p->waveDir);
63305  p->waveDir = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63306  Py_XDECREF(tmp);
63307  tmp = ((PyObject*)p->ai);
63308  p->ai = ((PyArrayObject *)Py_None); Py_INCREF(Py_None);
63309  Py_XDECREF(tmp);
63310  tmp = ((PyObject*)p->eta);
63311  p->eta = Py_None; Py_INCREF(Py_None);
63312  Py_XDECREF(tmp);
63313  tmp = ((PyObject*)p->u);
63314  p->u = Py_None; Py_INCREF(Py_None);
63315  Py_XDECREF(tmp);
63316  tmp = ((PyObject*)p->eta_linear);
63317  p->eta_linear = Py_None; Py_INCREF(Py_None);
63318  Py_XDECREF(tmp);
63319  return 0;
63320 }
63321 
63322 static PyObject *__pyx_getprop_9WaveTools_13RandomNLWaves_eta(PyObject *o, CYTHON_UNUSED void *x) {
63323  return __pyx_pw_9WaveTools_13RandomNLWaves_3eta_1__get__(o);
63324 }
63325 
63326 static int __pyx_setprop_9WaveTools_13RandomNLWaves_eta(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63327  if (v) {
63328  return __pyx_pw_9WaveTools_13RandomNLWaves_3eta_3__set__(o, v);
63329  }
63330  else {
63331  return __pyx_pw_9WaveTools_13RandomNLWaves_3eta_5__del__(o);
63332  }
63333 }
63334 
63335 static PyObject *__pyx_getprop_9WaveTools_13RandomNLWaves_u(PyObject *o, CYTHON_UNUSED void *x) {
63336  return __pyx_pw_9WaveTools_13RandomNLWaves_1u_1__get__(o);
63337 }
63338 
63339 static int __pyx_setprop_9WaveTools_13RandomNLWaves_u(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63340  if (v) {
63341  return __pyx_pw_9WaveTools_13RandomNLWaves_1u_3__set__(o, v);
63342  }
63343  else {
63344  return __pyx_pw_9WaveTools_13RandomNLWaves_1u_5__del__(o);
63345  }
63346 }
63347 
63348 static PyObject *__pyx_getprop_9WaveTools_13RandomNLWaves_eta_linear(PyObject *o, CYTHON_UNUSED void *x) {
63349  return __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_1__get__(o);
63350 }
63351 
63352 static int __pyx_setprop_9WaveTools_13RandomNLWaves_eta_linear(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
63353  if (v) {
63354  return __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_3__set__(o, v);
63355  }
63356  else {
63357  return __pyx_pw_9WaveTools_13RandomNLWaves_10eta_linear_5__del__(o);
63358  }
63359 }
63360 
63361 static PyMethodDef __pyx_methods_9WaveTools_RandomNLWaves[] = {
63362  {"eta_2ndOrder", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_3eta_2ndOrder, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_2eta_2ndOrder},
63363  {"eta_short", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_5eta_short, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_4eta_short},
63364  {"eta_long", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_7eta_long, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_6eta_long},
63365  {"eta_setUp", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_9eta_setUp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_8eta_setUp},
63366  {"eta_overall", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_11eta_overall, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_10eta_overall},
63367  {"writeEtaSeries", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_13writeEtaSeries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_12writeEtaSeries},
63368  {"wtError", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9WaveTools_13RandomNLWaves_15wtError, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_13RandomNLWaves_14wtError},
63369  {"__reduce_cython__", (PyCFunction)__pyx_pw_9WaveTools_13RandomNLWaves_17__reduce_cython__, METH_NOARGS, 0},
63370  {"__setstate_cython__", (PyCFunction)__pyx_pw_9WaveTools_13RandomNLWaves_19__setstate_cython__, METH_O, 0},
63371  {0, 0, 0, 0}
63372 };
63373 
63374 static struct PyGetSetDef __pyx_getsets_9WaveTools_RandomNLWaves[] = {
63375  {(char *)"eta", __pyx_getprop_9WaveTools_13RandomNLWaves_eta, __pyx_setprop_9WaveTools_13RandomNLWaves_eta, (char *)0, 0},
63376  {(char *)"u", __pyx_getprop_9WaveTools_13RandomNLWaves_u, __pyx_setprop_9WaveTools_13RandomNLWaves_u, (char *)0, 0},
63377  {(char *)"eta_linear", __pyx_getprop_9WaveTools_13RandomNLWaves_eta_linear, __pyx_setprop_9WaveTools_13RandomNLWaves_eta_linear, (char *)0, 0},
63378  {0, 0, 0, 0, 0}
63379 };
63380 
63381 static PyTypeObject __pyx_type_9WaveTools_RandomNLWaves = {
63382  PyVarObject_HEAD_INIT(0, 0)
63383  "WaveTools.RandomNLWaves", /*tp_name*/
63384  sizeof(struct __pyx_obj_9WaveTools_RandomNLWaves), /*tp_basicsize*/
63385  0, /*tp_itemsize*/
63386  __pyx_tp_dealloc_9WaveTools_RandomNLWaves, /*tp_dealloc*/
63387  #if PY_VERSION_HEX < 0x030800b4
63388  0, /*tp_print*/
63389  #endif
63390  #if PY_VERSION_HEX >= 0x030800b4
63391  0, /*tp_vectorcall_offset*/
63392  #endif
63393  0, /*tp_getattr*/
63394  0, /*tp_setattr*/
63395  #if PY_MAJOR_VERSION < 3
63396  0, /*tp_compare*/
63397  #endif
63398  #if PY_MAJOR_VERSION >= 3
63399  0, /*tp_as_async*/
63400  #endif
63401  0, /*tp_repr*/
63402  0, /*tp_as_number*/
63403  0, /*tp_as_sequence*/
63404  0, /*tp_as_mapping*/
63405  0, /*tp_hash*/
63406  0, /*tp_call*/
63407  0, /*tp_str*/
63408  0, /*tp_getattro*/
63409  0, /*tp_setattro*/
63410  0, /*tp_as_buffer*/
63411  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
63412  "\n This class is contains functions for calculating random waves with 2nd order corrections\n\n Parameters\n ----------\n Tstart : float\n Start time\n Tend : float\n End time\n Tp : float\n Peak wave period\n Hs : float\n Significant wave height\n mwl : float\n Still water level\n depth : float\n Water depth\n waveDir : numpy.ndarray\n Wave direction vector\n g : Numpy array\n Gravitational acceleration vector\n N : int\n Number of frequency components\n bandFactor : float\n Spectral band factor. fmax = bandFactor/Tp, fmin = 1/(bandFactor*Tp)\n spectName : string\n Name of spectral distribution\n spectral_params : dict\n Dictionary of arguments specific to the spectral distribution\n Example for JONSWAP = {\"gamma\": 3.3, \"TMA\":True,\"depth\": depth}\n TMA=True activates the TMA modification, which in turn needs the depth as a parameter \n phi : numpy.ndarray\n Component phases (if set to None, phases are picked at random) \n fast : bool\n Switch for enabling optimised functions \n ", /*tp_doc*/
63413  __pyx_tp_traverse_9WaveTools_RandomNLWaves, /*tp_traverse*/
63414  __pyx_tp_clear_9WaveTools_RandomNLWaves, /*tp_clear*/
63415  0, /*tp_richcompare*/
63416  0, /*tp_weaklistoffset*/
63417  0, /*tp_iter*/
63418  0, /*tp_iternext*/
63419  __pyx_methods_9WaveTools_RandomNLWaves, /*tp_methods*/
63420  0, /*tp_members*/
63421  __pyx_getsets_9WaveTools_RandomNLWaves, /*tp_getset*/
63422  0, /*tp_base*/
63423  0, /*tp_dict*/
63424  0, /*tp_descr_get*/
63425  0, /*tp_descr_set*/
63426  0, /*tp_dictoffset*/
63427  __pyx_pw_9WaveTools_13RandomNLWaves_1__init__, /*tp_init*/
63428  0, /*tp_alloc*/
63429  __pyx_tp_new_9WaveTools_RandomNLWaves, /*tp_new*/
63430  0, /*tp_free*/
63431  0, /*tp_is_gc*/
63432  0, /*tp_bases*/
63433  0, /*tp_mro*/
63434  0, /*tp_cache*/
63435  0, /*tp_subclasses*/
63436  0, /*tp_weaklist*/
63437  0, /*tp_del*/
63438  0, /*tp_version_tag*/
63439  #if PY_VERSION_HEX >= 0x030400a1
63440  0, /*tp_finalize*/
63441  #endif
63442  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
63443  0, /*tp_vectorcall*/
63444  #endif
63445  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
63446  0, /*tp_print*/
63447  #endif
63448  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
63449  0, /*tp_pypy_flags*/
63450  #endif
63451 };
63452 
63453 static struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *__pyx_freelist_9WaveTools___pyx_scope_struct____cinit__[8];
63454 static int __pyx_freecount_9WaveTools___pyx_scope_struct____cinit__ = 0;
63455 
63456 static PyObject *__pyx_tp_new_9WaveTools___pyx_scope_struct____cinit__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
63457  PyObject *o;
63458  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9WaveTools___pyx_scope_struct____cinit__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__)))) {
63459  o = (PyObject*)__pyx_freelist_9WaveTools___pyx_scope_struct____cinit__[--__pyx_freecount_9WaveTools___pyx_scope_struct____cinit__];
63460  memset(o, 0, sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__));
63461  (void) PyObject_INIT(o, t);
63462  PyObject_GC_Track(o);
63463  } else {
63464  o = (*t->tp_alloc)(t, 0);
63465  if (unlikely(!o)) return 0;
63466  }
63467  return o;
63468 }
63469 
63470 static void __pyx_tp_dealloc_9WaveTools___pyx_scope_struct____cinit__(PyObject *o) {
63471  struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *p = (struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *)o;
63472  PyObject_GC_UnTrack(o);
63473  Py_CLEAR(p->__pyx_v_self);
63474  Py_CLEAR(p->__pyx_v_xfocus);
63475  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9WaveTools___pyx_scope_struct____cinit__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__)))) {
63476  __pyx_freelist_9WaveTools___pyx_scope_struct____cinit__[__pyx_freecount_9WaveTools___pyx_scope_struct____cinit__++] = ((struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *)o);
63477  } else {
63478  (*Py_TYPE(o)->tp_free)(o);
63479  }
63480 }
63481 
63482 static int __pyx_tp_traverse_9WaveTools___pyx_scope_struct____cinit__(PyObject *o, visitproc v, void *a) {
63483  int e;
63484  struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *p = (struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *)o;
63485  if (p->__pyx_v_self) {
63486  e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
63487  }
63488  if (p->__pyx_v_xfocus) {
63489  e = (*v)(p->__pyx_v_xfocus, a); if (e) return e;
63490  }
63491  return 0;
63492 }
63493 
63494 static int __pyx_tp_clear_9WaveTools___pyx_scope_struct____cinit__(PyObject *o) {
63495  PyObject* tmp;
63496  struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *p = (struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__ *)o;
63497  tmp = ((PyObject*)p->__pyx_v_self);
63498  p->__pyx_v_self = ((struct __pyx_obj_9WaveTools_NewWave *)Py_None); Py_INCREF(Py_None);
63499  Py_XDECREF(tmp);
63500  tmp = ((PyObject*)p->__pyx_v_xfocus);
63501  p->__pyx_v_xfocus = Py_None; Py_INCREF(Py_None);
63502  Py_XDECREF(tmp);
63503  return 0;
63504 }
63505 
63506 static PyTypeObject __pyx_type_9WaveTools___pyx_scope_struct____cinit__ = {
63507  PyVarObject_HEAD_INIT(0, 0)
63508  "WaveTools.__pyx_scope_struct____cinit__", /*tp_name*/
63509  sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct____cinit__), /*tp_basicsize*/
63510  0, /*tp_itemsize*/
63511  __pyx_tp_dealloc_9WaveTools___pyx_scope_struct____cinit__, /*tp_dealloc*/
63512  #if PY_VERSION_HEX < 0x030800b4
63513  0, /*tp_print*/
63514  #endif
63515  #if PY_VERSION_HEX >= 0x030800b4
63516  0, /*tp_vectorcall_offset*/
63517  #endif
63518  0, /*tp_getattr*/
63519  0, /*tp_setattr*/
63520  #if PY_MAJOR_VERSION < 3
63521  0, /*tp_compare*/
63522  #endif
63523  #if PY_MAJOR_VERSION >= 3
63524  0, /*tp_as_async*/
63525  #endif
63526  0, /*tp_repr*/
63527  0, /*tp_as_number*/
63528  0, /*tp_as_sequence*/
63529  0, /*tp_as_mapping*/
63530  0, /*tp_hash*/
63531  0, /*tp_call*/
63532  0, /*tp_str*/
63533  0, /*tp_getattro*/
63534  0, /*tp_setattro*/
63535  0, /*tp_as_buffer*/
63536  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
63537  0, /*tp_doc*/
63538  __pyx_tp_traverse_9WaveTools___pyx_scope_struct____cinit__, /*tp_traverse*/
63539  __pyx_tp_clear_9WaveTools___pyx_scope_struct____cinit__, /*tp_clear*/
63540  0, /*tp_richcompare*/
63541  0, /*tp_weaklistoffset*/
63542  0, /*tp_iter*/
63543  0, /*tp_iternext*/
63544  0, /*tp_methods*/
63545  0, /*tp_members*/
63546  0, /*tp_getset*/
63547  0, /*tp_base*/
63548  0, /*tp_dict*/
63549  0, /*tp_descr_get*/
63550  0, /*tp_descr_set*/
63551  0, /*tp_dictoffset*/
63552  0, /*tp_init*/
63553  0, /*tp_alloc*/
63554  __pyx_tp_new_9WaveTools___pyx_scope_struct____cinit__, /*tp_new*/
63555  0, /*tp_free*/
63556  0, /*tp_is_gc*/
63557  0, /*tp_bases*/
63558  0, /*tp_mro*/
63559  0, /*tp_cache*/
63560  0, /*tp_subclasses*/
63561  0, /*tp_weaklist*/
63562  0, /*tp_del*/
63563  0, /*tp_version_tag*/
63564  #if PY_VERSION_HEX >= 0x030400a1
63565  0, /*tp_finalize*/
63566  #endif
63567  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
63568  0, /*tp_vectorcall*/
63569  #endif
63570  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
63571  0, /*tp_print*/
63572  #endif
63573  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
63574  0, /*tp_pypy_flags*/
63575  #endif
63576 };
63577 
63578 static struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *__pyx_freelist_9WaveTools___pyx_scope_struct_1_genexpr[8];
63579 static int __pyx_freecount_9WaveTools___pyx_scope_struct_1_genexpr = 0;
63580 
63581 static PyObject *__pyx_tp_new_9WaveTools___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
63582  PyObject *o;
63583  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_9WaveTools___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr)))) {
63584  o = (PyObject*)__pyx_freelist_9WaveTools___pyx_scope_struct_1_genexpr[--__pyx_freecount_9WaveTools___pyx_scope_struct_1_genexpr];
63585  memset(o, 0, sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr));
63586  (void) PyObject_INIT(o, t);
63587  PyObject_GC_Track(o);
63588  } else {
63589  o = (*t->tp_alloc)(t, 0);
63590  if (unlikely(!o)) return 0;
63591  }
63592  return o;
63593 }
63594 
63595 static void __pyx_tp_dealloc_9WaveTools___pyx_scope_struct_1_genexpr(PyObject *o) {
63596  struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *)o;
63597  PyObject_GC_UnTrack(o);
63598  Py_CLEAR(p->__pyx_outer_scope);
63599  Py_CLEAR(p->__pyx_v_j);
63600  Py_CLEAR(p->__pyx_t_0);
63601  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_9WaveTools___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr)))) {
63602  __pyx_freelist_9WaveTools___pyx_scope_struct_1_genexpr[__pyx_freecount_9WaveTools___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *)o);
63603  } else {
63604  (*Py_TYPE(o)->tp_free)(o);
63605  }
63606 }
63607 
63608 static int __pyx_tp_traverse_9WaveTools___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
63609  int e;
63610  struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr *)o;
63611  if (p->__pyx_outer_scope) {
63612  e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
63613  }
63614  if (p->__pyx_v_j) {
63615  e = (*v)(p->__pyx_v_j, a); if (e) return e;
63616  }
63617  if (p->__pyx_t_0) {
63618  e = (*v)(p->__pyx_t_0, a); if (e) return e;
63619  }
63620  return 0;
63621 }
63622 
63623 static PyTypeObject __pyx_type_9WaveTools___pyx_scope_struct_1_genexpr = {
63624  PyVarObject_HEAD_INIT(0, 0)
63625  "WaveTools.__pyx_scope_struct_1_genexpr", /*tp_name*/
63626  sizeof(struct __pyx_obj_9WaveTools___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
63627  0, /*tp_itemsize*/
63628  __pyx_tp_dealloc_9WaveTools___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
63629  #if PY_VERSION_HEX < 0x030800b4
63630  0, /*tp_print*/
63631  #endif
63632  #if PY_VERSION_HEX >= 0x030800b4
63633  0, /*tp_vectorcall_offset*/
63634  #endif
63635  0, /*tp_getattr*/
63636  0, /*tp_setattr*/
63637  #if PY_MAJOR_VERSION < 3
63638  0, /*tp_compare*/
63639  #endif
63640  #if PY_MAJOR_VERSION >= 3
63641  0, /*tp_as_async*/
63642  #endif
63643  0, /*tp_repr*/
63644  0, /*tp_as_number*/
63645  0, /*tp_as_sequence*/
63646  0, /*tp_as_mapping*/
63647  0, /*tp_hash*/
63648  0, /*tp_call*/
63649  0, /*tp_str*/
63650  0, /*tp_getattro*/
63651  0, /*tp_setattro*/
63652  0, /*tp_as_buffer*/
63653  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
63654  0, /*tp_doc*/
63655  __pyx_tp_traverse_9WaveTools___pyx_scope_struct_1_genexpr, /*tp_traverse*/
63656  0, /*tp_clear*/
63657  0, /*tp_richcompare*/
63658  0, /*tp_weaklistoffset*/
63659  0, /*tp_iter*/
63660  0, /*tp_iternext*/
63661  0, /*tp_methods*/
63662  0, /*tp_members*/
63663  0, /*tp_getset*/
63664  0, /*tp_base*/
63665  0, /*tp_dict*/
63666  0, /*tp_descr_get*/
63667  0, /*tp_descr_set*/
63668  0, /*tp_dictoffset*/
63669  0, /*tp_init*/
63670  0, /*tp_alloc*/
63671  __pyx_tp_new_9WaveTools___pyx_scope_struct_1_genexpr, /*tp_new*/
63672  0, /*tp_free*/
63673  0, /*tp_is_gc*/
63674  0, /*tp_bases*/
63675  0, /*tp_mro*/
63676  0, /*tp_cache*/
63677  0, /*tp_subclasses*/
63678  0, /*tp_weaklist*/
63679  0, /*tp_del*/
63680  0, /*tp_version_tag*/
63681  #if PY_VERSION_HEX >= 0x030400a1
63682  0, /*tp_finalize*/
63683  #endif
63684  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
63685  0, /*tp_vectorcall*/
63686  #endif
63687  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
63688  0, /*tp_print*/
63689  #endif
63690  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
63691  0, /*tp_pypy_flags*/
63692  #endif
63693 };
63694 
63695 static PyMethodDef __pyx_methods[] = {
63696  {0, 0, 0, 0}
63697 };
63698 
63699 #if PY_MAJOR_VERSION >= 3
63700 #if CYTHON_PEP489_MULTI_PHASE_INIT
63701 static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
63702 static int __pyx_pymod_exec_WaveTools(PyObject* module); /*proto*/
63703 static PyModuleDef_Slot __pyx_moduledef_slots[] = {
63704  {Py_mod_create, (void*)__pyx_pymod_create},
63705  {Py_mod_exec, (void*)__pyx_pymod_exec_WaveTools},
63706  {0, NULL}
63707 };
63708 #endif
63709 
63710 static struct PyModuleDef __pyx_moduledef = {
63711  PyModuleDef_HEAD_INIT,
63712  "WaveTools",
63713  __pyx_k_Tools_for_working_with_water_wav, /* m_doc */
63714  #if CYTHON_PEP489_MULTI_PHASE_INIT
63715  0, /* m_size */
63716  #else
63717  -1, /* m_size */
63718  #endif
63719  __pyx_methods /* m_methods */,
63720  #if CYTHON_PEP489_MULTI_PHASE_INIT
63721  __pyx_moduledef_slots, /* m_slots */
63722  #else
63723  NULL, /* m_reload */
63724  #endif
63725  NULL, /* m_traverse */
63726  NULL, /* m_clear */
63727  NULL /* m_free */
63728 };
63729 #endif
63730 #ifndef CYTHON_SMALL_CODE
63731 #if defined(__clang__)
63732  #define CYTHON_SMALL_CODE
63733 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
63734  #define CYTHON_SMALL_CODE __attribute__((cold))
63735 #else
63736  #define CYTHON_SMALL_CODE
63737 #endif
63738 #endif
63739 
63740 static __Pyx_StringTabEntry __pyx_string_tab[] = {
63741  {&__pyx_n_s_Bcoeff, __pyx_k_Bcoeff, sizeof(__pyx_k_Bcoeff), 0, 0, 1, 1},
63742  {&__pyx_n_s_CombineWaves, __pyx_k_CombineWaves, sizeof(__pyx_k_CombineWaves), 0, 0, 1, 1},
63743  {&__pyx_n_s_CombineWaves___init, __pyx_k_CombineWaves___init, sizeof(__pyx_k_CombineWaves___init), 0, 0, 1, 1},
63744  {&__pyx_n_s_CombineWaves_eta, __pyx_k_CombineWaves_eta, sizeof(__pyx_k_CombineWaves_eta), 0, 0, 1, 1},
63745  {&__pyx_n_s_CombineWaves_u, __pyx_k_CombineWaves_u, sizeof(__pyx_k_CombineWaves_u), 0, 0, 1, 1},
63746  {&__pyx_n_s_Comm, __pyx_k_Comm, sizeof(__pyx_k_Comm), 0, 0, 1, 1},
63747  {&__pyx_n_s_Cutoff, __pyx_k_Cutoff, sizeof(__pyx_k_Cutoff), 0, 0, 1, 1},
63748  {&__pyx_kp_s_Cutoff_2, __pyx_k_Cutoff_2, sizeof(__pyx_k_Cutoff_2), 0, 0, 1, 0},
63749  {&__pyx_kp_s_Direct_reconstruction, __pyx_k_Direct_reconstruction, sizeof(__pyx_k_Direct_reconstruction), 0, 0, 1, 0},
63750  {&__pyx_n_s_DirectionalWaves, __pyx_k_DirectionalWaves, sizeof(__pyx_k_DirectionalWaves), 0, 0, 1, 1},
63751  {&__pyx_n_s_DirectionalWaves___reduce_cython, __pyx_k_DirectionalWaves___reduce_cython, sizeof(__pyx_k_DirectionalWaves___reduce_cython), 0, 0, 1, 1},
63752  {&__pyx_n_s_DirectionalWaves___setstate_cyth, __pyx_k_DirectionalWaves___setstate_cyth, sizeof(__pyx_k_DirectionalWaves___setstate_cyth), 0, 0, 1, 1},
63753  {&__pyx_n_s_DirectionalWaves_eta, __pyx_k_DirectionalWaves_eta, sizeof(__pyx_k_DirectionalWaves_eta), 0, 0, 1, 1},
63754  {&__pyx_n_s_DirectionalWaves_u, __pyx_k_DirectionalWaves_u, sizeof(__pyx_k_DirectionalWaves_u), 0, 0, 1, 1},
63755  {&__pyx_kp_s_ERROR_Custom_parameters_not_set, __pyx_k_ERROR_Custom_parameters_not_set, sizeof(__pyx_k_ERROR_Custom_parameters_not_set), 0, 0, 1, 0},
63756  {&__pyx_kp_s_ERROR_Each_input_list_entry_shou, __pyx_k_ERROR_Each_input_list_entry_shou, sizeof(__pyx_k_ERROR_Each_input_list_entry_shou), 0, 0, 1, 0},
63757  {&__pyx_kp_s_ERROR_Each_input_list_entry_shou_2, __pyx_k_ERROR_Each_input_list_entry_shou_2, sizeof(__pyx_k_ERROR_Each_input_list_entry_shou_2), 0, 0, 1, 0},
63758  {&__pyx_kp_s_ERROR_Number_of_Fourier_modes_is, __pyx_k_ERROR_Number_of_Fourier_modes_is, sizeof(__pyx_k_ERROR_Number_of_Fourier_modes_is), 0, 0, 1, 0},
63759  {&__pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke, __pyx_k_ERROR_WaveTools_py_Dictionary_ke, sizeof(__pyx_k_ERROR_WaveTools_py_Dictionary_ke), 0, 0, 1, 0},
63760  {&__pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_2, __pyx_k_ERROR_WaveTools_py_Dictionary_ke_2, sizeof(__pyx_k_ERROR_WaveTools_py_Dictionary_ke_2), 0, 0, 1, 0},
63761  {&__pyx_kp_s_ERROR_WaveTools_py_Dictionary_ke_3, __pyx_k_ERROR_WaveTools_py_Dictionary_ke_3, sizeof(__pyx_k_ERROR_WaveTools_py_Dictionary_ke_3), 0, 0, 1, 0},
63762  {&__pyx_kp_s_ERROR_WaveTools_py_Found_large_e, __pyx_k_ERROR_WaveTools_py_Found_large_e, sizeof(__pyx_k_ERROR_WaveTools_py_Found_large_e), 0, 0, 1, 0},
63763  {&__pyx_kp_s_ERROR_WaveTools_py_Found_not_con, __pyx_k_ERROR_WaveTools_py_Found_not_con, sizeof(__pyx_k_ERROR_WaveTools_py_Found_not_con), 0, 0, 1, 0},
63764  {&__pyx_kp_s_ERROR_WaveTools_py_Found_too_few, __pyx_k_ERROR_WaveTools_py_Found_too_few, sizeof(__pyx_k_ERROR_WaveTools_py_Found_too_few), 0, 0, 1, 0},
63765  {&__pyx_kp_s_ERROR_WaveTools_py_Reconstructio, __pyx_k_ERROR_WaveTools_py_Reconstructio, sizeof(__pyx_k_ERROR_WaveTools_py_Reconstructio), 0, 0, 1, 0},
63766  {&__pyx_kp_s_ERROR_WaveTools_py_Relaxation_zo, __pyx_k_ERROR_WaveTools_py_Relaxation_zo, sizeof(__pyx_k_ERROR_WaveTools_py_Relaxation_zo), 0, 0, 1, 0},
63767  {&__pyx_kp_s_ERROR_WaveTools_py_Set_parameter, __pyx_k_ERROR_WaveTools_py_Set_parameter, sizeof(__pyx_k_ERROR_WaveTools_py_Set_parameter), 0, 0, 1, 0},
63768  {&__pyx_kp_s_ERROR_Wavetools_py_Additional_sp, __pyx_k_ERROR_Wavetools_py_Additional_sp, sizeof(__pyx_k_ERROR_Wavetools_py_Additional_sp), 0, 0, 1, 0},
63769  {&__pyx_kp_s_ERROR_Wavetools_py_Additional_sp_2, __pyx_k_ERROR_Wavetools_py_Additional_sp_2, sizeof(__pyx_k_ERROR_Wavetools_py_Additional_sp_2), 0, 0, 1, 0},
63770  {&__pyx_kp_s_ERROR_Wavetools_py_File_s_must_b, __pyx_k_ERROR_Wavetools_py_File_s_must_b, sizeof(__pyx_k_ERROR_Wavetools_py_File_s_must_b), 0, 0, 1, 0},
63771  {&__pyx_kp_s_ERROR_Wavetools_py_Location_vect, __pyx_k_ERROR_Wavetools_py_Location_vect, sizeof(__pyx_k_ERROR_Wavetools_py_Location_vect), 0, 0, 1, 0},
63772  {&__pyx_kp_s_ERROR_Wavetools_py_Location_vect_2, __pyx_k_ERROR_Wavetools_py_Location_vect_2, sizeof(__pyx_k_ERROR_Wavetools_py_Location_vect_2), 0, 0, 1, 0},
63773  {&__pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe, __pyx_k_ERROR_Wavetools_py_Maximum_numbe, sizeof(__pyx_k_ERROR_Wavetools_py_Maximum_numbe), 0, 0, 1, 0},
63774  {&__pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe_2, __pyx_k_ERROR_Wavetools_py_Maximum_numbe_2, sizeof(__pyx_k_ERROR_Wavetools_py_Maximum_numbe_2), 0, 0, 1, 0},
63775  {&__pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe_3, __pyx_k_ERROR_Wavetools_py_Maximum_numbe_3, sizeof(__pyx_k_ERROR_Wavetools_py_Maximum_numbe_3), 0, 0, 1, 0},
63776  {&__pyx_kp_s_ERROR_Wavetools_py_Parameters_pa, __pyx_k_ERROR_Wavetools_py_Parameters_pa, sizeof(__pyx_k_ERROR_Wavetools_py_Parameters_pa), 0, 0, 1, 0},
63777  {&__pyx_kp_s_ERROR_Wavetools_py_Phase_array_m, __pyx_k_ERROR_Wavetools_py_Phase_array_m, sizeof(__pyx_k_ERROR_Wavetools_py_Phase_array_m), 0, 0, 1, 0},
63778  {&__pyx_kp_s_ERROR_Wavetools_py_SteadyCurrent, __pyx_k_ERROR_Wavetools_py_SteadyCurrent, sizeof(__pyx_k_ERROR_Wavetools_py_SteadyCurrent), 0, 0, 1, 0},
63779  {&__pyx_kp_s_ERROR_Wavetools_py_Timeseries_fi, __pyx_k_ERROR_Wavetools_py_Timeseries_fi, sizeof(__pyx_k_ERROR_Wavetools_py_Timeseries_fi), 0, 0, 1, 0},
63780  {&__pyx_kp_s_ERROR_Wavetools_py_Wavelenght_is, __pyx_k_ERROR_Wavetools_py_Wavelenght_is, sizeof(__pyx_k_ERROR_Wavetools_py_Wavelenght_is), 0, 0, 1, 0},
63781  {&__pyx_kp_s_ERROR_Wavetools_py_Window_handov, __pyx_k_ERROR_Wavetools_py_Window_handov, sizeof(__pyx_k_ERROR_Wavetools_py_Window_handov), 0, 0, 1, 0},
63782  {&__pyx_kp_s_ERROR_Wavetools_py_Wrong_functio, __pyx_k_ERROR_Wavetools_py_Wrong_functio, sizeof(__pyx_k_ERROR_Wavetools_py_Wrong_functio), 0, 0, 1, 0},
63783  {&__pyx_kp_s_ERROR_Wavetools_py_Ycoeff_and_Bc, __pyx_k_ERROR_Wavetools_py_Ycoeff_and_Bc, sizeof(__pyx_k_ERROR_Wavetools_py_Ycoeff_and_Bc), 0, 0, 1, 0},
63784  {&__pyx_kp_s_ERROR_Wavetools_py_You_are_not_r, __pyx_k_ERROR_Wavetools_py_You_are_not_r, sizeof(__pyx_k_ERROR_Wavetools_py_You_are_not_r), 0, 0, 1, 0},
63785  {&__pyx_kp_s_ERROR_Wavetools_py_eta_and_u_fun, __pyx_k_ERROR_Wavetools_py_eta_and_u_fun, sizeof(__pyx_k_ERROR_Wavetools_py_eta_and_u_fun), 0, 0, 1, 0},
63786  {&__pyx_kp_s_ERROR_Wavetools_py_meanVelocity, __pyx_k_ERROR_Wavetools_py_meanVelocity, sizeof(__pyx_k_ERROR_Wavetools_py_meanVelocity), 0, 0, 1, 0},
63787  {&__pyx_kp_s_ERROR_Wavetools_py_phi_argument, __pyx_k_ERROR_Wavetools_py_phi_argument, sizeof(__pyx_k_ERROR_Wavetools_py_phi_argument), 0, 0, 1, 0},
63788  {&__pyx_kp_s_ERROR_Wavetools_py_phi_in_Direct, __pyx_k_ERROR_Wavetools_py_phi_in_Direct, sizeof(__pyx_k_ERROR_Wavetools_py_phi_in_Direct), 0, 0, 1, 0},
63789  {&__pyx_kp_s_ERROR_Wavetools_pyx_Argument_mod, __pyx_k_ERROR_Wavetools_pyx_Argument_mod, sizeof(__pyx_k_ERROR_Wavetools_pyx_Argument_mod), 0, 0, 1, 0},
63790  {&__pyx_kp_s_ERROR_Wrong_wavetype_given_Valid, __pyx_k_ERROR_Wrong_wavetype_given_Valid, sizeof(__pyx_k_ERROR_Wrong_wavetype_given_Valid), 0, 0, 1, 0},
63791  {&__pyx_kp_s_End_time, __pyx_k_End_time, sizeof(__pyx_k_End_time), 0, 0, 1, 0},
63792  {&__pyx_kp_s_Er1, __pyx_k_Er1, sizeof(__pyx_k_Er1), 0, 0, 1, 0},
63793  {&__pyx_n_s_Etaoverall, __pyx_k_Etaoverall, sizeof(__pyx_k_Etaoverall), 0, 0, 1, 1},
63794  {&__pyx_n_s_EtasetUp, __pyx_k_EtasetUp, sizeof(__pyx_k_EtasetUp), 0, 0, 1, 1},
63795  {&__pyx_n_s_Fenton, __pyx_k_Fenton, sizeof(__pyx_k_Fenton), 0, 0, 1, 1},
63796  {&__pyx_n_s_G0, __pyx_k_G0, sizeof(__pyx_k_G0), 0, 0, 1, 1},
63797  {&__pyx_n_s_Hs, __pyx_k_Hs, sizeof(__pyx_k_Hs), 0, 0, 1, 1},
63798  {&__pyx_n_s_Hs_2, __pyx_k_Hs_2, sizeof(__pyx_k_Hs_2), 0, 0, 1, 1},
63799  {&__pyx_kp_s_INFO_Calculating_nonlinear_corre, __pyx_k_INFO_Calculating_nonlinear_corre, sizeof(__pyx_k_INFO_Calculating_nonlinear_corre), 0, 0, 1, 0},
63800  {&__pyx_kp_s_INFO_WaveTools_py_Cutoff_entry_i, __pyx_k_INFO_WaveTools_py_Cutoff_entry_i, sizeof(__pyx_k_INFO_WaveTools_py_Cutoff_entry_i), 0, 0, 1, 0},
63801  {&__pyx_kp_s_INFO_WaveTools_py_Not_constant_s, __pyx_k_INFO_WaveTools_py_Not_constant_s, sizeof(__pyx_k_INFO_WaveTools_py_Not_constant_s), 0, 0, 1, 0},
63802  {&__pyx_kp_s_INFO_WaveTools_py_Overlap_entry, __pyx_k_INFO_WaveTools_py_Overlap_entry, sizeof(__pyx_k_INFO_WaveTools_py_Overlap_entry), 0, 0, 1, 0},
63803  {&__pyx_kp_s_INFO_WaveTools_py_performing_a_d, __pyx_k_INFO_WaveTools_py_performing_a_d, sizeof(__pyx_k_INFO_WaveTools_py_performing_a_d), 0, 0, 1, 0},
63804  {&__pyx_kp_s_INFO_WaveTools_py_performing_ser, __pyx_k_INFO_WaveTools_py_performing_ser, sizeof(__pyx_k_INFO_WaveTools_py_performing_ser), 0, 0, 1, 0},
63805  {&__pyx_kp_s_INFO_Wavetools_py_Checking_durat, __pyx_k_INFO_Wavetools_py_Checking_durat, sizeof(__pyx_k_INFO_Wavetools_py_Checking_durat), 0, 0, 1, 0},
63806  {&__pyx_kp_s_INFO_Wavetools_py_Correcting_win, __pyx_k_INFO_Wavetools_py_Correcting_win, sizeof(__pyx_k_INFO_Wavetools_py_Correcting_win), 0, 0, 1, 0},
63807  {&__pyx_kp_s_INFO_Wavetools_py_No_phase_array, __pyx_k_INFO_Wavetools_py_No_phase_array, sizeof(__pyx_k_INFO_Wavetools_py_No_phase_array), 0, 0, 1, 0},
63808  {&__pyx_kp_s_INFO_Wavetools_py_Reading_spectr, __pyx_k_INFO_Wavetools_py_Reading_spectr, sizeof(__pyx_k_INFO_Wavetools_py_Reading_spectr), 0, 0, 1, 0},
63809  {&__pyx_kp_s_INFO_Wavetools_py_Using_s_window, __pyx_k_INFO_Wavetools_py_Using_s_window, sizeof(__pyx_k_INFO_Wavetools_py_Using_s_window), 0, 0, 1, 0},
63810  {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
63811  {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
63812  {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0},
63813  {&__pyx_n_s_JONSWAP, __pyx_k_JONSWAP, sizeof(__pyx_k_JONSWAP), 0, 0, 1, 1},
63814  {&__pyx_n_s_K, __pyx_k_K, sizeof(__pyx_k_K), 0, 0, 1, 1},
63815  {&__pyx_n_s_Lgen, __pyx_k_Lgen, sizeof(__pyx_k_Lgen), 0, 0, 1, 1},
63816  {&__pyx_n_s_Linear, __pyx_k_Linear, sizeof(__pyx_k_Linear), 0, 0, 1, 1},
63817  {&__pyx_n_s_M, __pyx_k_M, sizeof(__pyx_k_M), 0, 0, 1, 1},
63818  {&__pyx_n_s_MonochromaticWaves, __pyx_k_MonochromaticWaves, sizeof(__pyx_k_MonochromaticWaves), 0, 0, 1, 1},
63819  {&__pyx_n_s_MonochromaticWaves___reduce_cyth, __pyx_k_MonochromaticWaves___reduce_cyth, sizeof(__pyx_k_MonochromaticWaves___reduce_cyth), 0, 0, 1, 1},
63820  {&__pyx_n_s_MonochromaticWaves___setstate_cy, __pyx_k_MonochromaticWaves___setstate_cy, sizeof(__pyx_k_MonochromaticWaves___setstate_cy), 0, 0, 1, 1},
63821  {&__pyx_n_s_MonochromaticWaves_eta, __pyx_k_MonochromaticWaves_eta, sizeof(__pyx_k_MonochromaticWaves_eta), 0, 0, 1, 1},
63822  {&__pyx_n_s_MonochromaticWaves_u, __pyx_k_MonochromaticWaves_u, sizeof(__pyx_k_MonochromaticWaves_u), 0, 0, 1, 1},
63823  {&__pyx_n_s_MultiSpectraRandomWaves, __pyx_k_MultiSpectraRandomWaves, sizeof(__pyx_k_MultiSpectraRandomWaves), 0, 0, 1, 1},
63824  {&__pyx_n_s_MultiSpectraRandomWaves___reduce, __pyx_k_MultiSpectraRandomWaves___reduce, sizeof(__pyx_k_MultiSpectraRandomWaves___reduce), 0, 0, 1, 1},
63825  {&__pyx_n_s_MultiSpectraRandomWaves___setsta, __pyx_k_MultiSpectraRandomWaves___setsta, sizeof(__pyx_k_MultiSpectraRandomWaves___setsta), 0, 0, 1, 1},
63826  {&__pyx_n_s_MultiSpectraRandomWaves_eta, __pyx_k_MultiSpectraRandomWaves_eta, sizeof(__pyx_k_MultiSpectraRandomWaves_eta), 0, 0, 1, 1},
63827  {&__pyx_n_s_MultiSpectraRandomWaves_u, __pyx_k_MultiSpectraRandomWaves_u, sizeof(__pyx_k_MultiSpectraRandomWaves_u), 0, 0, 1, 1},
63828  {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1},
63829  {&__pyx_n_s_NLongW, __pyx_k_NLongW, sizeof(__pyx_k_NLongW), 0, 0, 1, 1},
63830  {&__pyx_n_s_NewWave, __pyx_k_NewWave, sizeof(__pyx_k_NewWave), 0, 0, 1, 1},
63831  {&__pyx_n_s_NewWave___reduce_cython, __pyx_k_NewWave___reduce_cython, sizeof(__pyx_k_NewWave___reduce_cython), 0, 0, 1, 1},
63832  {&__pyx_n_s_NewWave___setstate_cython, __pyx_k_NewWave___setstate_cython, sizeof(__pyx_k_NewWave___setstate_cython), 0, 0, 1, 1},
63833  {&__pyx_n_s_NewWave_eta, __pyx_k_NewWave_eta, sizeof(__pyx_k_NewWave_eta), 0, 0, 1, 1},
63834  {&__pyx_n_s_NewWave_u, __pyx_k_NewWave_u, sizeof(__pyx_k_NewWave_u), 0, 0, 1, 1},
63835  {&__pyx_n_s_NewWave_writeEtaSeries, __pyx_k_NewWave_writeEtaSeries, sizeof(__pyx_k_NewWave_writeEtaSeries), 0, 0, 1, 1},
63836  {&__pyx_n_s_Nf, __pyx_k_Nf, sizeof(__pyx_k_Nf), 0, 0, 1, 1},
63837  {&__pyx_n_s_Nfreq, __pyx_k_Nfreq, sizeof(__pyx_k_Nfreq), 0, 0, 1, 1},
63838  {&__pyx_n_s_Nmax, __pyx_k_Nmax, sizeof(__pyx_k_Nmax), 0, 0, 1, 1},
63839  {&__pyx_n_s_Np, __pyx_k_Np, sizeof(__pyx_k_Np), 0, 0, 1, 1},
63840  {&__pyx_n_s_Nseries, __pyx_k_Nseries, sizeof(__pyx_k_Nseries), 0, 0, 1, 1},
63841  {&__pyx_n_s_Nspectra, __pyx_k_Nspectra, sizeof(__pyx_k_Nspectra), 0, 0, 1, 1},
63842  {&__pyx_kp_s_Number_of_windows, __pyx_k_Number_of_windows, sizeof(__pyx_k_Number_of_windows), 0, 0, 1, 0},
63843  {&__pyx_n_s_Nwaves, __pyx_k_Nwaves, sizeof(__pyx_k_Nwaves), 0, 0, 1, 1},
63844  {&__pyx_n_s_Nwaves_tot, __pyx_k_Nwaves_tot, sizeof(__pyx_k_Nwaves_tot), 0, 0, 1, 1},
63845  {&__pyx_n_s_Nwind, __pyx_k_Nwind, sizeof(__pyx_k_Nwind), 0, 0, 1, 1},
63846  {&__pyx_n_s_Overlap, __pyx_k_Overlap, sizeof(__pyx_k_Overlap), 0, 0, 1, 1},
63847  {&__pyx_n_s_PM_mod, __pyx_k_PM_mod, sizeof(__pyx_k_PM_mod), 0, 0, 1, 1},
63848  {&__pyx_n_s_Period, __pyx_k_Period, sizeof(__pyx_k_Period), 0, 0, 1, 1},
63849  {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
63850  {&__pyx_n_s_Profiling, __pyx_k_Profiling, sizeof(__pyx_k_Profiling), 0, 0, 1, 1},
63851  {&__pyx_n_s_RW, __pyx_k_RW, sizeof(__pyx_k_RW), 0, 0, 1, 1},
63852  {&__pyx_n_s_RandomNLWaves, __pyx_k_RandomNLWaves, sizeof(__pyx_k_RandomNLWaves), 0, 0, 1, 1},
63853  {&__pyx_n_s_RandomNLWavesFast, __pyx_k_RandomNLWavesFast, sizeof(__pyx_k_RandomNLWavesFast), 0, 0, 1, 1},
63854  {&__pyx_n_s_RandomNLWavesFast___init, __pyx_k_RandomNLWavesFast___init, sizeof(__pyx_k_RandomNLWavesFast___init), 0, 0, 1, 1},
63855  {&__pyx_n_s_RandomNLWavesFast_eta, __pyx_k_RandomNLWavesFast_eta, sizeof(__pyx_k_RandomNLWavesFast_eta), 0, 0, 1, 1},
63856  {&__pyx_n_s_RandomNLWavesFast_u, __pyx_k_RandomNLWavesFast_u, sizeof(__pyx_k_RandomNLWavesFast_u), 0, 0, 1, 1},
63857  {&__pyx_n_s_RandomNLWaves___reduce_cython, __pyx_k_RandomNLWaves___reduce_cython, sizeof(__pyx_k_RandomNLWaves___reduce_cython), 0, 0, 1, 1},
63858  {&__pyx_n_s_RandomNLWaves___setstate_cython, __pyx_k_RandomNLWaves___setstate_cython, sizeof(__pyx_k_RandomNLWaves___setstate_cython), 0, 0, 1, 1},
63859  {&__pyx_n_s_RandomNLWaves_eta_2ndOrder, __pyx_k_RandomNLWaves_eta_2ndOrder, sizeof(__pyx_k_RandomNLWaves_eta_2ndOrder), 0, 0, 1, 1},
63860  {&__pyx_n_s_RandomNLWaves_eta_long, __pyx_k_RandomNLWaves_eta_long, sizeof(__pyx_k_RandomNLWaves_eta_long), 0, 0, 1, 1},
63861  {&__pyx_n_s_RandomNLWaves_eta_overall, __pyx_k_RandomNLWaves_eta_overall, sizeof(__pyx_k_RandomNLWaves_eta_overall), 0, 0, 1, 1},
63862  {&__pyx_n_s_RandomNLWaves_eta_setUp, __pyx_k_RandomNLWaves_eta_setUp, sizeof(__pyx_k_RandomNLWaves_eta_setUp), 0, 0, 1, 1},
63863  {&__pyx_n_s_RandomNLWaves_eta_short, __pyx_k_RandomNLWaves_eta_short, sizeof(__pyx_k_RandomNLWaves_eta_short), 0, 0, 1, 1},
63864  {&__pyx_n_s_RandomNLWaves_writeEtaSeries, __pyx_k_RandomNLWaves_writeEtaSeries, sizeof(__pyx_k_RandomNLWaves_writeEtaSeries), 0, 0, 1, 1},
63865  {&__pyx_n_s_RandomNLWaves_wtError, __pyx_k_RandomNLWaves_wtError, sizeof(__pyx_k_RandomNLWaves_wtError), 0, 0, 1, 1},
63866  {&__pyx_n_s_RandomSeries, __pyx_k_RandomSeries, sizeof(__pyx_k_RandomSeries), 0, 0, 1, 1},
63867  {&__pyx_n_s_RandomWaves, __pyx_k_RandomWaves, sizeof(__pyx_k_RandomWaves), 0, 0, 1, 1},
63868  {&__pyx_n_s_RandomWavesFast, __pyx_k_RandomWavesFast, sizeof(__pyx_k_RandomWavesFast), 0, 0, 1, 1},
63869  {&__pyx_n_s_RandomWavesFast___init, __pyx_k_RandomWavesFast___init, sizeof(__pyx_k_RandomWavesFast___init), 0, 0, 1, 1},
63870  {&__pyx_n_s_RandomWavesFast_printOut, __pyx_k_RandomWavesFast_printOut, sizeof(__pyx_k_RandomWavesFast_printOut), 0, 0, 1, 1},
63871  {&__pyx_n_s_RandomWaves___reduce_cython, __pyx_k_RandomWaves___reduce_cython, sizeof(__pyx_k_RandomWaves___reduce_cython), 0, 0, 1, 1},
63872  {&__pyx_n_s_RandomWaves___setstate_cython, __pyx_k_RandomWaves___setstate_cython, sizeof(__pyx_k_RandomWaves___setstate_cython), 0, 0, 1, 1},
63873  {&__pyx_n_s_RandomWaves_eta, __pyx_k_RandomWaves_eta, sizeof(__pyx_k_RandomWaves_eta), 0, 0, 1, 1},
63874  {&__pyx_n_s_RandomWaves_u, __pyx_k_RandomWaves_u, sizeof(__pyx_k_RandomWaves_u), 0, 0, 1, 1},
63875  {&__pyx_n_s_RandomWaves_writeEtaSeries, __pyx_k_RandomWaves_writeEtaSeries, sizeof(__pyx_k_RandomWaves_writeEtaSeries), 0, 0, 1, 1},
63876  {&__pyx_n_s_SolitaryWave, __pyx_k_SolitaryWave, sizeof(__pyx_k_SolitaryWave), 0, 0, 1, 1},
63877  {&__pyx_n_s_SolitaryWave___reduce_cython, __pyx_k_SolitaryWave___reduce_cython, sizeof(__pyx_k_SolitaryWave___reduce_cython), 0, 0, 1, 1},
63878  {&__pyx_n_s_SolitaryWave___setstate_cython, __pyx_k_SolitaryWave___setstate_cython, sizeof(__pyx_k_SolitaryWave___setstate_cython), 0, 0, 1, 1},
63879  {&__pyx_n_s_SolitaryWave_eta, __pyx_k_SolitaryWave_eta, sizeof(__pyx_k_SolitaryWave_eta), 0, 0, 1, 1},
63880  {&__pyx_n_s_SolitaryWave_u, __pyx_k_SolitaryWave_u, sizeof(__pyx_k_SolitaryWave_u), 0, 0, 1, 1},
63881  {&__pyx_n_s_SpatialTools, __pyx_k_SpatialTools, sizeof(__pyx_k_SpatialTools), 0, 0, 1, 1},
63882  {&__pyx_kp_s_Start_Time, __pyx_k_Start_Time, sizeof(__pyx_k_Start_Time), 0, 0, 1, 0},
63883  {&__pyx_n_s_SteadyCurrent, __pyx_k_SteadyCurrent, sizeof(__pyx_k_SteadyCurrent), 0, 0, 1, 1},
63884  {&__pyx_n_s_SteadyCurrent___reduce_cython, __pyx_k_SteadyCurrent___reduce_cython, sizeof(__pyx_k_SteadyCurrent___reduce_cython), 0, 0, 1, 1},
63885  {&__pyx_n_s_SteadyCurrent___setstate_cython, __pyx_k_SteadyCurrent___setstate_cython, sizeof(__pyx_k_SteadyCurrent___setstate_cython), 0, 0, 1, 1},
63886  {&__pyx_n_s_SteadyCurrent_eta, __pyx_k_SteadyCurrent_eta, sizeof(__pyx_k_SteadyCurrent_eta), 0, 0, 1, 1},
63887  {&__pyx_n_s_SteadyCurrent_u, __pyx_k_SteadyCurrent_u, sizeof(__pyx_k_SteadyCurrent_u), 0, 0, 1, 1},
63888  {&__pyx_n_s_TMA, __pyx_k_TMA, sizeof(__pyx_k_TMA), 0, 0, 1, 1},
63889  {&__pyx_n_s_TOverlap, __pyx_k_TOverlap, sizeof(__pyx_k_TOverlap), 0, 0, 1, 1},
63890  {&__pyx_n_s_TS, __pyx_k_TS, sizeof(__pyx_k_TS), 0, 0, 1, 1},
63891  {&__pyx_n_s_TWindow, __pyx_k_TWindow, sizeof(__pyx_k_TWindow), 0, 0, 1, 1},
63892  {&__pyx_n_s_Tend, __pyx_k_Tend, sizeof(__pyx_k_Tend), 0, 0, 1, 1},
63893  {&__pyx_kp_s_This_class_is_used_for_combinin, __pyx_k_This_class_is_used_for_combinin, sizeof(__pyx_k_This_class_is_used_for_combinin), 0, 0, 1, 0},
63894  {&__pyx_kp_s_This_class_is_used_for_generati, __pyx_k_This_class_is_used_for_generati, sizeof(__pyx_k_This_class_is_used_for_generati), 0, 0, 1, 0},
63895  {&__pyx_kp_s_This_class_is_used_for_generati_2, __pyx_k_This_class_is_used_for_generati_2, sizeof(__pyx_k_This_class_is_used_for_generati_2), 0, 0, 1, 0},
63896  {&__pyx_n_s_TimeSeries, __pyx_k_TimeSeries, sizeof(__pyx_k_TimeSeries), 0, 0, 1, 1},
63897  {&__pyx_n_s_TimeSeries___reduce_cython, __pyx_k_TimeSeries___reduce_cython, sizeof(__pyx_k_TimeSeries___reduce_cython), 0, 0, 1, 1},
63898  {&__pyx_n_s_TimeSeries___setstate_cython, __pyx_k_TimeSeries___setstate_cython, sizeof(__pyx_k_TimeSeries___setstate_cython), 0, 0, 1, 1},
63899  {&__pyx_n_s_TimeSeries_etaDirect, __pyx_k_TimeSeries_etaDirect, sizeof(__pyx_k_TimeSeries_etaDirect), 0, 0, 1, 1},
63900  {&__pyx_n_s_TimeSeries_etaWindow, __pyx_k_TimeSeries_etaWindow, sizeof(__pyx_k_TimeSeries_etaWindow), 0, 0, 1, 1},
63901  {&__pyx_n_s_TimeSeries_findWindow, __pyx_k_TimeSeries_findWindow, sizeof(__pyx_k_TimeSeries_findWindow), 0, 0, 1, 1},
63902  {&__pyx_n_s_TimeSeries_uDirect, __pyx_k_TimeSeries_uDirect, sizeof(__pyx_k_TimeSeries_uDirect), 0, 0, 1, 1},
63903  {&__pyx_n_s_TimeSeries_uWindow, __pyx_k_TimeSeries_uWindow, sizeof(__pyx_k_TimeSeries_uWindow), 0, 0, 1, 1},
63904  {&__pyx_n_s_TimeSeries_windOut, __pyx_k_TimeSeries_windOut, sizeof(__pyx_k_TimeSeries_windOut), 0, 0, 1, 1},
63905  {&__pyx_n_s_Tlag, __pyx_k_Tlag, sizeof(__pyx_k_Tlag), 0, 0, 1, 1},
63906  {&__pyx_n_s_Tm, __pyx_k_Tm, sizeof(__pyx_k_Tm), 0, 0, 1, 1},
63907  {&__pyx_n_s_Tmax, __pyx_k_Tmax, sizeof(__pyx_k_Tmax), 0, 0, 1, 1},
63908  {&__pyx_n_s_Tp, __pyx_k_Tp, sizeof(__pyx_k_Tp), 0, 0, 1, 1},
63909  {&__pyx_n_s_Tp_2, __pyx_k_Tp_2, sizeof(__pyx_k_Tp_2), 0, 0, 1, 1},
63910  {&__pyx_n_s_Tstart, __pyx_k_Tstart, sizeof(__pyx_k_Tstart), 0, 0, 1, 1},
63911  {&__pyx_n_s_Tstart_temp, __pyx_k_Tstart_temp, sizeof(__pyx_k_Tstart_temp), 0, 0, 1, 1},
63912  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
63913  {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
63914  {&__pyx_n_s_UH, __pyx_k_UH, sizeof(__pyx_k_UH), 0, 0, 1, 1},
63915  {&__pyx_n_s_UV, __pyx_k_UV, sizeof(__pyx_k_UV), 0, 0, 1, 1},
63916  {&__pyx_n_s_Udrift, __pyx_k_Udrift, sizeof(__pyx_k_Udrift), 0, 0, 1, 1},
63917  {&__pyx_n_s_Uhorz, __pyx_k_Uhorz, sizeof(__pyx_k_Uhorz), 0, 0, 1, 1},
63918  {&__pyx_n_s_Uvert, __pyx_k_Uvert, sizeof(__pyx_k_Uvert), 0, 0, 1, 1},
63919  {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
63920  {&__pyx_n_s_WaveTools, __pyx_k_WaveTools, sizeof(__pyx_k_WaveTools), 0, 0, 1, 1},
63921  {&__pyx_kp_s_Wave_direction_is_not_perpendicu, __pyx_k_Wave_direction_is_not_perpendicu, sizeof(__pyx_k_Wave_direction_is_not_perpendicu), 0, 0, 1, 0},
63922  {&__pyx_kp_s_Wavetools_py_Provide_valid_depth, __pyx_k_Wavetools_py_Provide_valid_depth, sizeof(__pyx_k_Wavetools_py_Provide_valid_depth), 0, 0, 1, 0},
63923  {&__pyx_kp_s_Wavetools_py_Stopping_simulation, __pyx_k_Wavetools_py_Stopping_simulation, sizeof(__pyx_k_Wavetools_py_Stopping_simulation), 0, 0, 1, 0},
63924  {&__pyx_n_s_Window, __pyx_k_Window, sizeof(__pyx_k_Window), 0, 0, 1, 1},
63925  {&__pyx_n_s_Ycoeff, __pyx_k_Ycoeff, sizeof(__pyx_k_Ycoeff), 0, 0, 1, 1},
63926  {&__pyx_n_s_Z, __pyx_k_Z, sizeof(__pyx_k_Z), 0, 0, 1, 1},
63927  {&__pyx_kp_s__43, __pyx_k__43, sizeof(__pyx_k__43), 0, 0, 1, 0},
63928  {&__pyx_kp_s__52, __pyx_k__52, sizeof(__pyx_k__52), 0, 0, 1, 0},
63929  {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
63930  {&__pyx_n_s_a1, __pyx_k_a1, sizeof(__pyx_k_a1), 0, 0, 1, 1},
63931  {&__pyx_n_s_a2, __pyx_k_a2, sizeof(__pyx_k_a2), 0, 0, 1, 1},
63932  {&__pyx_n_s_aR, __pyx_k_aR, sizeof(__pyx_k_aR), 0, 0, 1, 1},
63933  {&__pyx_n_s_aRN, __pyx_k_aRN, sizeof(__pyx_k_aRN), 0, 0, 1, 1},
63934  {&__pyx_n_s_aa, __pyx_k_aa, sizeof(__pyx_k_aa), 0, 0, 1, 1},
63935  {&__pyx_n_s_ai, __pyx_k_ai, sizeof(__pyx_k_ai), 0, 0, 1, 1},
63936  {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
63937  {&__pyx_n_s_all_2, __pyx_k_all_2, sizeof(__pyx_k_all_2), 0, 0, 1, 1},
63938  {&__pyx_n_s_amp, __pyx_k_amp, sizeof(__pyx_k_amp), 0, 0, 1, 1},
63939  {&__pyx_n_s_amplitude, __pyx_k_amplitude, sizeof(__pyx_k_amplitude), 0, 0, 1, 1},
63940  {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
63941  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
63942  {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
63943  {&__pyx_n_s_arrayData, __pyx_k_arrayData, sizeof(__pyx_k_arrayData), 0, 0, 1, 1},
63944  {&__pyx_n_s_autoFenton, __pyx_k_autoFenton, sizeof(__pyx_k_autoFenton), 0, 0, 1, 1},
63945  {&__pyx_n_s_autoFentonOpts, __pyx_k_autoFentonOpts, sizeof(__pyx_k_autoFentonOpts), 0, 0, 1, 1},
63946  {&__pyx_n_s_bandFactor, __pyx_k_bandFactor, sizeof(__pyx_k_bandFactor), 0, 0, 1, 1},
63947  {&__pyx_n_s_barrier, __pyx_k_barrier, sizeof(__pyx_k_barrier), 0, 0, 1, 1},
63948  {&__pyx_n_s_bj, __pyx_k_bj, sizeof(__pyx_k_bj), 0, 0, 1, 1},
63949  {&__pyx_n_s_builtins, __pyx_k_builtins, sizeof(__pyx_k_builtins), 0, 0, 1, 1},
63950  {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
63951  {&__pyx_n_s_checkAcc, __pyx_k_checkAcc, sizeof(__pyx_k_checkAcc), 0, 0, 1, 1},
63952  {&__pyx_n_s_cinit___locals_genexpr, __pyx_k_cinit___locals_genexpr, sizeof(__pyx_k_cinit___locals_genexpr), 0, 0, 1, 1},
63953  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
63954  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
63955  {&__pyx_n_s_cmat, __pyx_k_cmat, sizeof(__pyx_k_cmat), 0, 0, 1, 1},
63956  {&__pyx_n_s_cmath, __pyx_k_cmath, sizeof(__pyx_k_cmath), 0, 0, 1, 1},
63957  {&__pyx_n_s_cond, __pyx_k_cond, sizeof(__pyx_k_cond), 0, 0, 1, 1},
63958  {&__pyx_n_s_condition, __pyx_k_condition, sizeof(__pyx_k_condition), 0, 0, 1, 1},
63959  {&__pyx_n_s_conv_crit, __pyx_k_conv_crit, sizeof(__pyx_k_conv_crit), 0, 0, 1, 1},
63960  {&__pyx_n_s_copyFiles, __pyx_k_copyFiles, sizeof(__pyx_k_copyFiles), 0, 0, 1, 1},
63961  {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1},
63962  {&__pyx_n_s_cos2s, __pyx_k_cos2s, sizeof(__pyx_k_cos2s), 0, 0, 1, 1},
63963  {&__pyx_n_s_coshkzd_test, __pyx_k_coshkzd_test, sizeof(__pyx_k_coshkzd_test), 0, 0, 1, 1},
63964  {&__pyx_n_s_costap, __pyx_k_costap, sizeof(__pyx_k_costap), 0, 0, 1, 1},
63965  {&__pyx_n_s_cppU, __pyx_k_cppU, sizeof(__pyx_k_cppU), 0, 0, 1, 1},
63966  {&__pyx_n_s_crestFocus, __pyx_k_crestFocus, sizeof(__pyx_k_crestFocus), 0, 0, 1, 1},
63967  {&__pyx_kp_s_csv, __pyx_k_csv, sizeof(__pyx_k_csv), 0, 0, 1, 0},
63968  {&__pyx_n_s_current_criterion, __pyx_k_current_criterion, sizeof(__pyx_k_current_criterion), 0, 0, 1, 1},
63969  {&__pyx_n_s_current_magnitude, __pyx_k_current_magnitude, sizeof(__pyx_k_current_magnitude), 0, 0, 1, 1},
63970  {&__pyx_n_s_custom, __pyx_k_custom, sizeof(__pyx_k_custom), 0, 0, 1, 1},
63971  {&__pyx_n_s_cut, __pyx_k_cut, sizeof(__pyx_k_cut), 0, 0, 1, 1},
63972  {&__pyx_n_s_cutoff, __pyx_k_cutoff, sizeof(__pyx_k_cutoff), 0, 0, 1, 1},
63973  {&__pyx_n_s_cutoffTotal, __pyx_k_cutoffTotal, sizeof(__pyx_k_cutoffTotal), 0, 0, 1, 1},
63974  {&__pyx_n_s_cutoff_win, __pyx_k_cutoff_win, sizeof(__pyx_k_cutoff_win), 0, 0, 1, 1},
63975  {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
63976  {&__pyx_n_s_decompose_tseries, __pyx_k_decompose_tseries, sizeof(__pyx_k_decompose_tseries), 0, 0, 1, 1},
63977  {&__pyx_n_s_delimiter, __pyx_k_delimiter, sizeof(__pyx_k_delimiter), 0, 0, 1, 1},
63978  {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1},
63979  {&__pyx_n_s_depth_2, __pyx_k_depth_2, sizeof(__pyx_k_depth_2), 0, 0, 1, 1},
63980  {&__pyx_n_s_df, __pyx_k_df, sizeof(__pyx_k_df), 0, 0, 1, 1},
63981  {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
63982  {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1},
63983  {&__pyx_n_s_dirCheck, __pyx_k_dirCheck, sizeof(__pyx_k_dirCheck), 0, 0, 1, 1},
63984  {&__pyx_n_s_dircheck, __pyx_k_dircheck, sizeof(__pyx_k_dircheck), 0, 0, 1, 1},
63985  {&__pyx_n_s_dispersion, __pyx_k_dispersion, sizeof(__pyx_k_dispersion), 0, 0, 1, 1},
63986  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
63987  {&__pyx_n_s_dom, __pyx_k_dom, sizeof(__pyx_k_dom), 0, 0, 1, 1},
63988  {&__pyx_n_s_dt, __pyx_k_dt, sizeof(__pyx_k_dt), 0, 0, 1, 1},
63989  {&__pyx_n_s_duration, __pyx_k_duration, sizeof(__pyx_k_duration), 0, 0, 1, 1},
63990  {&__pyx_n_s_er1, __pyx_k_er1, sizeof(__pyx_k_er1), 0, 0, 1, 1},
63991  {&__pyx_n_s_errors, __pyx_k_errors, sizeof(__pyx_k_errors), 0, 0, 1, 1},
63992  {&__pyx_n_s_eta, __pyx_k_eta, sizeof(__pyx_k_eta), 0, 0, 1, 1},
63993  {&__pyx_n_s_etaCheck, __pyx_k_etaCheck, sizeof(__pyx_k_etaCheck), 0, 0, 1, 1},
63994  {&__pyx_n_s_etaDirect, __pyx_k_etaDirect, sizeof(__pyx_k_etaDirect), 0, 0, 1, 1},
63995  {&__pyx_n_s_etaR, __pyx_k_etaR, sizeof(__pyx_k_etaR), 0, 0, 1, 1},
63996  {&__pyx_n_s_etaWindow, __pyx_k_etaWindow, sizeof(__pyx_k_etaWindow), 0, 0, 1, 1},
63997  {&__pyx_n_s_eta_2ndOrder, __pyx_k_eta_2ndOrder, sizeof(__pyx_k_eta_2ndOrder), 0, 0, 1, 1},
63998  {&__pyx_n_s_eta_long, __pyx_k_eta_long, sizeof(__pyx_k_eta_long), 0, 0, 1, 1},
63999  {&__pyx_n_s_eta_mode, __pyx_k_eta_mode, sizeof(__pyx_k_eta_mode), 0, 0, 1, 1},
64000  {&__pyx_n_s_eta_overall, __pyx_k_eta_overall, sizeof(__pyx_k_eta_overall), 0, 0, 1, 1},
64001  {&__pyx_n_s_eta_setUp, __pyx_k_eta_setUp, sizeof(__pyx_k_eta_setUp), 0, 0, 1, 1},
64002  {&__pyx_n_s_eta_short, __pyx_k_eta_short, sizeof(__pyx_k_eta_short), 0, 0, 1, 1},
64003  {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
64004  {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1},
64005  {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
64006  {&__pyx_n_s_f0, __pyx_k_f0, sizeof(__pyx_k_f0), 0, 0, 1, 1},
64007  {&__pyx_n_s_fast, __pyx_k_fast, sizeof(__pyx_k_fast), 0, 0, 1, 1},
64008  {&__pyx_n_s_fastcos_test, __pyx_k_fastcos_test, sizeof(__pyx_k_fastcos_test), 0, 0, 1, 1},
64009  {&__pyx_n_s_fastcosh_test, __pyx_k_fastcosh_test, sizeof(__pyx_k_fastcosh_test), 0, 0, 1, 1},
64010  {&__pyx_n_s_fastsinh_test, __pyx_k_fastsinh_test, sizeof(__pyx_k_fastsinh_test), 0, 0, 1, 1},
64011  {&__pyx_n_s_fft, __pyx_k_fft, sizeof(__pyx_k_fft), 0, 0, 1, 1},
64012  {&__pyx_n_s_fft_x, __pyx_k_fft_x, sizeof(__pyx_k_fft_x), 0, 0, 1, 1},
64013  {&__pyx_n_s_fftfreq, __pyx_k_fftfreq, sizeof(__pyx_k_fftfreq), 0, 0, 1, 1},
64014  {&__pyx_n_s_fi, __pyx_k_fi, sizeof(__pyx_k_fi), 0, 0, 1, 1},
64015  {&__pyx_n_s_fim_tmp, __pyx_k_fim_tmp, sizeof(__pyx_k_fim_tmp), 0, 0, 1, 1},
64016  {&__pyx_n_s_findWindow, __pyx_k_findWindow, sizeof(__pyx_k_findWindow), 0, 0, 1, 1},
64017  {&__pyx_n_s_fname, __pyx_k_fname, sizeof(__pyx_k_fname), 0, 0, 1, 1},
64018  {&__pyx_n_s_freq, __pyx_k_freq, sizeof(__pyx_k_freq), 0, 0, 1, 1},
64019  {&__pyx_n_s_freq_S, __pyx_k_freq_S, sizeof(__pyx_k_freq_S), 0, 0, 1, 1},
64020  {&__pyx_n_s_freq_array, __pyx_k_freq_array, sizeof(__pyx_k_freq_array), 0, 0, 1, 1},
64021  {&__pyx_n_s_fun, __pyx_k_fun, sizeof(__pyx_k_fun), 0, 0, 1, 1},
64022  {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1},
64023  {&__pyx_n_s_funcName, __pyx_k_funcName, sizeof(__pyx_k_funcName), 0, 0, 1, 1},
64024  {&__pyx_n_s_funcNames, __pyx_k_funcNames, sizeof(__pyx_k_funcNames), 0, 0, 1, 1},
64025  {&__pyx_n_s_func_ret, __pyx_k_func_ret, sizeof(__pyx_k_func_ret), 0, 0, 1, 1},
64026  {&__pyx_n_s_g, __pyx_k_g, sizeof(__pyx_k_g), 0, 0, 1, 1},
64027  {&__pyx_n_s_gAbs, __pyx_k_gAbs, sizeof(__pyx_k_gAbs), 0, 0, 1, 1},
64028  {&__pyx_n_s_gamma, __pyx_k_gamma, sizeof(__pyx_k_gamma), 0, 0, 1, 1},
64029  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
64030  {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
64031  {&__pyx_n_s_getBYCoeffs, __pyx_k_getBYCoeffs, sizeof(__pyx_k_getBYCoeffs), 0, 0, 1, 1},
64032  {&__pyx_n_s_getWavelength, __pyx_k_getWavelength, sizeof(__pyx_k_getWavelength), 0, 0, 1, 1},
64033  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
64034  {&__pyx_n_s_height_steps, __pyx_k_height_steps, sizeof(__pyx_k_height_steps), 0, 0, 1, 1},
64035  {&__pyx_n_s_ho, __pyx_k_ho, sizeof(__pyx_k_ho), 0, 0, 1, 1},
64036  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
64037  {&__pyx_n_s_i1, __pyx_k_i1, sizeof(__pyx_k_i1), 0, 0, 1, 1},
64038  {&__pyx_n_s_i2, __pyx_k_i2, sizeof(__pyx_k_i2), 0, 0, 1, 1},
64039  {&__pyx_n_s_iend, __pyx_k_iend, sizeof(__pyx_k_iend), 0, 0, 1, 1},
64040  {&__pyx_n_s_ii, __pyx_k_ii, sizeof(__pyx_k_ii), 0, 0, 1, 1},
64041  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
64042  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
64043  {&__pyx_n_s_interp, __pyx_k_interp, sizeof(__pyx_k_interp), 0, 0, 1, 1},
64044  {&__pyx_n_s_isMaster, __pyx_k_isMaster, sizeof(__pyx_k_isMaster), 0, 0, 1, 1},
64045  {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1},
64046  {&__pyx_n_s_jj, __pyx_k_jj, sizeof(__pyx_k_jj), 0, 0, 1, 1},
64047  {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
64048  {&__pyx_n_s_kAbs, __pyx_k_kAbs, sizeof(__pyx_k_kAbs), 0, 0, 1, 1},
64049  {&__pyx_n_s_kDir, __pyx_k_kDir, sizeof(__pyx_k_kDir), 0, 0, 1, 1},
64050  {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1},
64051  {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1},
64052  {&__pyx_n_s_linalg, __pyx_k_linalg, sizeof(__pyx_k_linalg), 0, 0, 1, 1},
64053  {&__pyx_n_s_linear, __pyx_k_linear, sizeof(__pyx_k_linear), 0, 0, 1, 1},
64054  {&__pyx_n_s_linspace, __pyx_k_linspace, sizeof(__pyx_k_linspace), 0, 0, 1, 1},
64055  {&__pyx_n_s_loadExistingFunction, __pyx_k_loadExistingFunction, sizeof(__pyx_k_loadExistingFunction), 0, 0, 1, 1},
64056  {&__pyx_n_s_loadtxt, __pyx_k_loadtxt, sizeof(__pyx_k_loadtxt), 0, 0, 1, 1},
64057  {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1},
64058  {&__pyx_n_s_logEvent, __pyx_k_logEvent, sizeof(__pyx_k_logEvent), 0, 0, 1, 1},
64059  {&__pyx_n_s_logFile, __pyx_k_logFile, sizeof(__pyx_k_logFile), 0, 0, 1, 1},
64060  {&__pyx_n_s_long, __pyx_k_long, sizeof(__pyx_k_long), 0, 0, 1, 1},
64061  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
64062  {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
64063  {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1},
64064  {&__pyx_n_s_meanVelocity, __pyx_k_meanVelocity, sizeof(__pyx_k_meanVelocity), 0, 0, 1, 1},
64065  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
64066  {&__pyx_n_s_mitsuyasu, __pyx_k_mitsuyasu, sizeof(__pyx_k_mitsuyasu), 0, 0, 1, 1},
64067  {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
64068  {&__pyx_n_s_modes, __pyx_k_modes, sizeof(__pyx_k_modes), 0, 0, 1, 1},
64069  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
64070  {&__pyx_n_s_mwl, __pyx_k_mwl, sizeof(__pyx_k_mwl), 0, 0, 1, 1},
64071  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
64072  {&__pyx_n_s_ncoeffs, __pyx_k_ncoeffs, sizeof(__pyx_k_ncoeffs), 0, 0, 1, 1},
64073  {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
64074  {&__pyx_n_s_nfft, __pyx_k_nfft, sizeof(__pyx_k_nfft), 0, 0, 1, 1},
64075  {&__pyx_n_s_niter, __pyx_k_niter, sizeof(__pyx_k_niter), 0, 0, 1, 1},
64076  {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
64077  {&__pyx_n_s_norm, __pyx_k_norm, sizeof(__pyx_k_norm), 0, 0, 1, 1},
64078  {&__pyx_n_s_normIntegral, __pyx_k_normIntegral, sizeof(__pyx_k_normIntegral), 0, 0, 1, 1},
64079  {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
64080  {&__pyx_n_s_npoints, __pyx_k_npoints, sizeof(__pyx_k_npoints), 0, 0, 1, 1},
64081  {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
64082  {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0},
64083  {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0},
64084  {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
64085  {&__pyx_n_s_old_div, __pyx_k_old_div, sizeof(__pyx_k_old_div), 0, 0, 1, 1},
64086  {&__pyx_n_s_omega, __pyx_k_omega, sizeof(__pyx_k_omega), 0, 0, 1, 1},
64087  {&__pyx_n_s_omega0, __pyx_k_omega0, sizeof(__pyx_k_omega0), 0, 0, 1, 1},
64088  {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1},
64089  {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1},
64090  {&__pyx_n_s_overl, __pyx_k_overl, sizeof(__pyx_k_overl), 0, 0, 1, 1},
64091  {&__pyx_n_s_past_utils, __pyx_k_past_utils, sizeof(__pyx_k_past_utils), 0, 0, 1, 1},
64092  {&__pyx_n_s_period, __pyx_k_period, sizeof(__pyx_k_period), 0, 0, 1, 1},
64093  {&__pyx_n_s_periods, __pyx_k_periods, sizeof(__pyx_k_periods), 0, 0, 1, 1},
64094  {&__pyx_n_s_phase, __pyx_k_phase, sizeof(__pyx_k_phase), 0, 0, 1, 1},
64095  {&__pyx_n_s_phi, __pyx_k_phi, sizeof(__pyx_k_phi), 0, 0, 1, 1},
64096  {&__pyx_n_s_phi0, __pyx_k_phi0, sizeof(__pyx_k_phi0), 0, 0, 1, 1},
64097  {&__pyx_n_s_phiSymm, __pyx_k_phiSymm, sizeof(__pyx_k_phiSymm), 0, 0, 1, 1},
64098  {&__pyx_n_s_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 0, 1, 1},
64099  {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
64100  {&__pyx_n_s_points_freesurface, __pyx_k_points_freesurface, sizeof(__pyx_k_points_freesurface), 0, 0, 1, 1},
64101  {&__pyx_n_s_points_velocity, __pyx_k_points_velocity, sizeof(__pyx_k_points_velocity), 0, 0, 1, 1},
64102  {&__pyx_n_s_points_vertical, __pyx_k_points_vertical, sizeof(__pyx_k_points_vertical), 0, 0, 1, 1},
64103  {&__pyx_n_s_pp, __pyx_k_pp, sizeof(__pyx_k_pp), 0, 0, 1, 1},
64104  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
64105  {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
64106  {&__pyx_n_s_printOut, __pyx_k_printOut, sizeof(__pyx_k_printOut), 0, 0, 1, 1},
64107  {&__pyx_n_s_proteus, __pyx_k_proteus, sizeof(__pyx_k_proteus), 0, 0, 1, 1},
64108  {&__pyx_kp_s_proteus_WaveTools_py, __pyx_k_proteus_WaveTools_py, sizeof(__pyx_k_proteus_WaveTools_py), 0, 0, 1, 0},
64109  {&__pyx_n_s_proteus_fenton, __pyx_k_proteus_fenton, sizeof(__pyx_k_proteus_fenton), 0, 0, 1, 1},
64110  {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
64111  {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
64112  {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
64113  {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
64114  {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
64115  {&__pyx_n_s_pyx_unpickle_SolitaryWave, __pyx_k_pyx_unpickle_SolitaryWave, sizeof(__pyx_k_pyx_unpickle_SolitaryWave), 0, 0, 1, 1},
64116  {&__pyx_n_s_pyx_unpickle_SteadyCurrent, __pyx_k_pyx_unpickle_SteadyCurrent, sizeof(__pyx_k_pyx_unpickle_SteadyCurrent), 0, 0, 1, 1},
64117  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
64118  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
64119  {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
64120  {&__pyx_n_s_rampTime, __pyx_k_rampTime, sizeof(__pyx_k_rampTime), 0, 0, 1, 1},
64121  {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1},
64122  {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1},
64123  {&__pyx_n_s_randomNLWaves, __pyx_k_randomNLWaves, sizeof(__pyx_k_randomNLWaves), 0, 0, 1, 1},
64124  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
64125  {&__pyx_n_s_real, __pyx_k_real, sizeof(__pyx_k_real), 0, 0, 1, 1},
64126  {&__pyx_n_s_rec_d, __pyx_k_rec_d, sizeof(__pyx_k_rec_d), 0, 0, 1, 1},
64127  {&__pyx_n_s_rec_direct, __pyx_k_rec_direct, sizeof(__pyx_k_rec_direct), 0, 0, 1, 1},
64128  {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
64129  {&__pyx_n_s_reduceToIntervals, __pyx_k_reduceToIntervals, sizeof(__pyx_k_reduceToIntervals), 0, 0, 1, 1},
64130  {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
64131  {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
64132  {&__pyx_n_s_results, __pyx_k_results, sizeof(__pyx_k_results), 0, 0, 1, 1},
64133  {&__pyx_n_s_returnRectangles, __pyx_k_returnRectangles, sizeof(__pyx_k_returnRectangles), 0, 0, 1, 1},
64134  {&__pyx_n_s_returnRectangles3D, __pyx_k_returnRectangles3D, sizeof(__pyx_k_returnRectangles3D), 0, 0, 1, 1},
64135  {&__pyx_n_s_rotation3D, __pyx_k_rotation3D, sizeof(__pyx_k_rotation3D), 0, 0, 1, 1},
64136  {&__pyx_n_s_round, __pyx_k_round, sizeof(__pyx_k_round), 0, 0, 1, 1},
64137  {&__pyx_n_s_runFourier, __pyx_k_runFourier, sizeof(__pyx_k_runFourier), 0, 0, 1, 1},
64138  {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
64139  {&__pyx_n_s_savetxt, __pyx_k_savetxt, sizeof(__pyx_k_savetxt), 0, 0, 1, 1},
64140  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
64141  {&__pyx_kp_s_self_Bcoeff__self_Ycoeff__self, __pyx_k_self_Bcoeff__self_Ycoeff__self, sizeof(__pyx_k_self_Bcoeff__self_Ycoeff__self), 0, 0, 1, 0},
64142  {&__pyx_kp_s_self_T0__self__cpp_eta_self__cpp, __pyx_k_self_T0__self__cpp_eta_self__cpp, sizeof(__pyx_k_self_T0__self__cpp_eta_self__cpp), 0, 0, 1, 0},
64143  {&__pyx_kp_s_self_ai__self_kDir__self_ki__sel, __pyx_k_self_ai__self_kDir__self_ki__sel, sizeof(__pyx_k_self_ai__self_kDir__self_ki__sel), 0, 0, 1, 0},
64144  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
64145  {&__pyx_n_s_series, __pyx_k_series, sizeof(__pyx_k_series), 0, 0, 1, 1},
64146  {&__pyx_n_s_seriesArray, __pyx_k_seriesArray, sizeof(__pyx_k_seriesArray), 0, 0, 1, 1},
64147  {&__pyx_n_s_setDirVector, __pyx_k_setDirVector, sizeof(__pyx_k_setDirVector), 0, 0, 1, 1},
64148  {&__pyx_n_s_setUp, __pyx_k_setUp, sizeof(__pyx_k_setUp), 0, 0, 1, 1},
64149  {&__pyx_n_s_setVertDir, __pyx_k_setVertDir, sizeof(__pyx_k_setVertDir), 0, 0, 1, 1},
64150  {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
64151  {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
64152  {&__pyx_n_s_setup, __pyx_k_setup, sizeof(__pyx_k_setup), 0, 0, 1, 1},
64153  {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
64154  {&__pyx_n_s_short, __pyx_k_short, sizeof(__pyx_k_short), 0, 0, 1, 1},
64155  {&__pyx_n_s_sigma, __pyx_k_sigma, sizeof(__pyx_k_sigma), 0, 0, 1, 1},
64156  {&__pyx_n_s_sigmaReturn, __pyx_k_sigmaReturn, sizeof(__pyx_k_sigmaReturn), 0, 0, 1, 1},
64157  {&__pyx_n_s_sinh, __pyx_k_sinh, sizeof(__pyx_k_sinh), 0, 0, 1, 1},
64158  {&__pyx_n_s_sinhkzd_test, __pyx_k_sinhkzd_test, sizeof(__pyx_k_sinhkzd_test), 0, 0, 1, 1},
64159  {&__pyx_n_s_sinus, __pyx_k_sinus, sizeof(__pyx_k_sinus), 0, 0, 1, 1},
64160  {&__pyx_n_s_skiprows, __pyx_k_skiprows, sizeof(__pyx_k_skiprows), 0, 0, 1, 1},
64161  {&__pyx_n_s_smax, __pyx_k_smax, sizeof(__pyx_k_smax), 0, 0, 1, 1},
64162  {&__pyx_n_s_spectName, __pyx_k_spectName, sizeof(__pyx_k_spectName), 0, 0, 1, 1},
64163  {&__pyx_n_s_spectral_params, __pyx_k_spectral_params, sizeof(__pyx_k_spectral_params), 0, 0, 1, 1},
64164  {&__pyx_n_s_spreadName, __pyx_k_spreadName, sizeof(__pyx_k_spreadName), 0, 0, 1, 1},
64165  {&__pyx_n_s_spread_params, __pyx_k_spread_params, sizeof(__pyx_k_spread_params), 0, 0, 1, 1},
64166  {&__pyx_n_s_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 0, 0, 1, 1},
64167  {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
64168  {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
64169  {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
64170  {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1},
64171  {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
64172  {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
64173  {&__pyx_n_s_tanh, __pyx_k_tanh, sizeof(__pyx_k_tanh), 0, 0, 1, 1},
64174  {&__pyx_n_s_te, __pyx_k_te, sizeof(__pyx_k_te), 0, 0, 1, 1},
64175  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
64176  {&__pyx_n_s_tfocus, __pyx_k_tfocus, sizeof(__pyx_k_tfocus), 0, 0, 1, 1},
64177  {&__pyx_n_s_theta, __pyx_k_theta, sizeof(__pyx_k_theta), 0, 0, 1, 1},
64178  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
64179  {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
64180  {&__pyx_n_s_timeSeriesFile, __pyx_k_timeSeriesFile, sizeof(__pyx_k_timeSeriesFile), 0, 0, 1, 1},
64181  {&__pyx_n_s_timeSeriesPosition, __pyx_k_timeSeriesPosition, sizeof(__pyx_k_timeSeriesPosition), 0, 0, 1, 1},
64182  {&__pyx_n_s_timelst, __pyx_k_timelst, sizeof(__pyx_k_timelst), 0, 0, 1, 1},
64183  {&__pyx_n_s_tma, __pyx_k_tma, sizeof(__pyx_k_tma), 0, 0, 1, 1},
64184  {&__pyx_n_s_tolist, __pyx_k_tolist, sizeof(__pyx_k_tolist), 0, 0, 1, 1},
64185  {&__pyx_n_s_tophat, __pyx_k_tophat, sizeof(__pyx_k_tophat), 0, 0, 1, 1},
64186  {&__pyx_n_s_trans, __pyx_k_trans, sizeof(__pyx_k_trans), 0, 0, 1, 1},
64187  {&__pyx_n_s_ts, __pyx_k_ts, sizeof(__pyx_k_ts), 0, 0, 1, 1},
64188  {&__pyx_n_s_tt, __pyx_k_tt, sizeof(__pyx_k_tt), 0, 0, 1, 1},
64189  {&__pyx_kp_s_txt, __pyx_k_txt, sizeof(__pyx_k_txt), 0, 0, 1, 0},
64190  {&__pyx_n_s_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 0, 1, 1},
64191  {&__pyx_n_s_uCheck, __pyx_k_uCheck, sizeof(__pyx_k_uCheck), 0, 0, 1, 1},
64192  {&__pyx_n_s_uDirect, __pyx_k_uDirect, sizeof(__pyx_k_uDirect), 0, 0, 1, 1},
64193  {&__pyx_n_s_uR, __pyx_k_uR, sizeof(__pyx_k_uR), 0, 0, 1, 1},
64194  {&__pyx_n_s_uWindow, __pyx_k_uWindow, sizeof(__pyx_k_uWindow), 0, 0, 1, 1},
64195  {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
64196  {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1},
64197  {&__pyx_n_s_v1, __pyx_k_v1, sizeof(__pyx_k_v1), 0, 0, 1, 1},
64198  {&__pyx_n_s_v2, __pyx_k_v2, sizeof(__pyx_k_v2), 0, 0, 1, 1},
64199  {&__pyx_n_s_vDir, __pyx_k_vDir, sizeof(__pyx_k_vDir), 0, 0, 1, 1},
64200  {&__pyx_n_s_validFunctions, __pyx_k_validFunctions, sizeof(__pyx_k_validFunctions), 0, 0, 1, 1},
64201  {&__pyx_n_s_vector, __pyx_k_vector, sizeof(__pyx_k_vector), 0, 0, 1, 1},
64202  {&__pyx_n_s_vel_mode, __pyx_k_vel_mode, sizeof(__pyx_k_vel_mode), 0, 0, 1, 1},
64203  {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
64204  {&__pyx_n_s_w_aux, __pyx_k_w_aux, sizeof(__pyx_k_w_aux), 0, 0, 1, 1},
64205  {&__pyx_n_s_waveDir, __pyx_k_waveDir, sizeof(__pyx_k_waveDir), 0, 0, 1, 1},
64206  {&__pyx_n_s_waveDir0, __pyx_k_waveDir0, sizeof(__pyx_k_waveDir0), 0, 0, 1, 1},
64207  {&__pyx_n_s_waveHeight, __pyx_k_waveHeight, sizeof(__pyx_k_waveHeight), 0, 0, 1, 1},
64208  {&__pyx_n_s_waveList, __pyx_k_waveList, sizeof(__pyx_k_waveList), 0, 0, 1, 1},
64209  {&__pyx_n_s_waveType, __pyx_k_waveType, sizeof(__pyx_k_waveType), 0, 0, 1, 1},
64210  {&__pyx_n_s_waveheight, __pyx_k_waveheight, sizeof(__pyx_k_waveheight), 0, 0, 1, 1},
64211  {&__pyx_n_s_wavelength, __pyx_k_wavelength, sizeof(__pyx_k_wavelength), 0, 0, 1, 1},
64212  {&__pyx_kp_s_waves_This_may_take_a_while, __pyx_k_waves_This_may_take_a_while, sizeof(__pyx_k_waves_This_may_take_a_while), 0, 0, 1, 0},
64213  {&__pyx_n_s_where, __pyx_k_where, sizeof(__pyx_k_where), 0, 0, 1, 1},
64214  {&__pyx_n_s_wind, __pyx_k_wind, sizeof(__pyx_k_wind), 0, 0, 1, 1},
64215  {&__pyx_n_s_windOut, __pyx_k_windOut, sizeof(__pyx_k_windOut), 0, 0, 1, 1},
64216  {&__pyx_n_s_window_params, __pyx_k_window_params, sizeof(__pyx_k_window_params), 0, 0, 1, 1},
64217  {&__pyx_n_s_windows, __pyx_k_windows, sizeof(__pyx_k_windows), 0, 0, 1, 1},
64218  {&__pyx_n_s_writeEtaSeries, __pyx_k_writeEtaSeries, sizeof(__pyx_k_writeEtaSeries), 0, 0, 1, 1},
64219  {&__pyx_n_s_writeInput, __pyx_k_writeInput, sizeof(__pyx_k_writeInput), 0, 0, 1, 1},
64220  {&__pyx_n_s_wtError, __pyx_k_wtError, sizeof(__pyx_k_wtError), 0, 0, 1, 1},
64221  {&__pyx_n_s_ww, __pyx_k_ww, sizeof(__pyx_k_ww), 0, 0, 1, 1},
64222  {&__pyx_n_s_wwi_setUp, __pyx_k_wwi_setUp, sizeof(__pyx_k_wwi_setUp), 0, 0, 1, 1},
64223  {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
64224  {&__pyx_n_s_x0, __pyx_k_x0, sizeof(__pyx_k_x0), 0, 0, 1, 1},
64225  {&__pyx_n_s_xfocus, __pyx_k_xfocus, sizeof(__pyx_k_xfocus), 0, 0, 1, 1},
64226  {&__pyx_n_s_xx, __pyx_k_xx, sizeof(__pyx_k_xx), 0, 0, 1, 1},
64227  {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
64228  {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
64229  {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
64230  {0, 0, 0, 0, 0, 0, 0}
64231 };
64232 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
64233  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 2596, __pyx_L1_error)
64234  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) __PYX_ERR(0, 344, __pyx_L1_error)
64235  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
64236  __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 1384, __pyx_L1_error)
64237  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(0, 2186, __pyx_L1_error)
64238  __pyx_builtin_round = __Pyx_GetBuiltinName(__pyx_n_s_round); if (!__pyx_builtin_round) __PYX_ERR(0, 2699, __pyx_L1_error)
64239  __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 2755, __pyx_L1_error)
64240  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(3, 945, __pyx_L1_error)
64241  return 0;
64242  __pyx_L1_error:;
64243  return -1;
64244 }
64245 
64246 static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
64247  __Pyx_RefNannyDeclarations
64248  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
64249 
64250  /* "WaveTools.py":254
64251  * #print self.dircheck
64252  * if dircheck > 1e-10:
64253  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0) # <<<<<<<<<<<<<<
64254  * return sys.exit(1)
64255  * else:
64256  */
64257  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Wave_direction_is_not_perpendicu); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 254, __pyx_L1_error)
64258  __Pyx_GOTREF(__pyx_tuple_);
64259  __Pyx_GIVEREF(__pyx_tuple_);
64260 
64261  /* "WaveTools.py":277
64262  *
64263  * """
64264  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist() # <<<<<<<<<<<<<<
64265  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
64266  * def returnRectangles(a,x):
64267  */
64268  __pyx_slice__2 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) __PYX_ERR(0, 277, __pyx_L1_error)
64269  __Pyx_GOTREF(__pyx_slice__2);
64270  __Pyx_GIVEREF(__pyx_slice__2);
64271  __pyx_slice__3 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__3)) __PYX_ERR(0, 277, __pyx_L1_error)
64272  __Pyx_GOTREF(__pyx_slice__3);
64273  __Pyx_GIVEREF(__pyx_slice__3);
64274 
64275  /* "WaveTools.py":319
64276  * numpy.ndarray
64277  * """
64278  * ai = 0.5*(a[1:,:]+a[:-1,:]) # <<<<<<<<<<<<<<
64279  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
64280  * for ii in range(len(x)-1):
64281  */
64282  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 319, __pyx_L1_error)
64283  __Pyx_GOTREF(__pyx_slice__4);
64284  __Pyx_GIVEREF(__pyx_slice__4);
64285  __pyx_tuple__5 = PyTuple_Pack(2, __pyx_slice__2, __pyx_slice__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 319, __pyx_L1_error)
64286  __Pyx_GOTREF(__pyx_tuple__5);
64287  __Pyx_GIVEREF(__pyx_tuple__5);
64288  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_slice__3, __pyx_slice__4); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 319, __pyx_L1_error)
64289  __Pyx_GOTREF(__pyx_tuple__6);
64290  __Pyx_GIVEREF(__pyx_tuple__6);
64291 
64292  /* "WaveTools.py":320
64293  * """
64294  * ai = 0.5*(a[1:,:]+a[:-1,:])
64295  * ai = 0.5*(ai[:,1:]+ai[:,:-1]) # <<<<<<<<<<<<<<
64296  * for ii in range(len(x)-1):
64297  * ai[ii,:] *= (y[1:]-y[:-1])
64298  */
64299  __pyx_tuple__7 = PyTuple_Pack(2, __pyx_slice__4, __pyx_slice__2); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 320, __pyx_L1_error)
64300  __Pyx_GOTREF(__pyx_tuple__7);
64301  __Pyx_GIVEREF(__pyx_tuple__7);
64302  __pyx_tuple__8 = PyTuple_Pack(2, __pyx_slice__4, __pyx_slice__3); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 320, __pyx_L1_error)
64303  __Pyx_GOTREF(__pyx_tuple__8);
64304  __Pyx_GIVEREF(__pyx_tuple__8);
64305 
64306  /* "WaveTools.py":530
64307  *
64308  * """
64309  * return (old_div(5.0,16.0))*Hs**2*(old_div(f0**4,f**5))*np.exp((old_div(-5.0,4.0))*(old_div(f0,f))**4) # <<<<<<<<<<<<<<
64310  *
64311  * def cos2s(theta,f,s=10):
64312  */
64313  __pyx_tuple__9 = PyTuple_Pack(2, __pyx_float_5_0, __pyx_float_16_0); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 530, __pyx_L1_error)
64314  __Pyx_GOTREF(__pyx_tuple__9);
64315  __Pyx_GIVEREF(__pyx_tuple__9);
64316  __pyx_tuple__10 = PyTuple_Pack(2, __pyx_float_neg_5_0, __pyx_float_4_0); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 530, __pyx_L1_error)
64317  __Pyx_GOTREF(__pyx_tuple__10);
64318  __Pyx_GIVEREF(__pyx_tuple__10);
64319 
64320  /* "WaveTools.py":551
64321  * """
64322  * fun = np.zeros((len(theta),len(f)),)
64323  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
64324  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
64325  * return fun
64326  */
64327  __pyx_tuple__11 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__4); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 551, __pyx_L1_error)
64328  __Pyx_GOTREF(__pyx_tuple__11);
64329  __Pyx_GIVEREF(__pyx_tuple__11);
64330 
64331  /* "WaveTools.py":994
64332  * self.wavelength=wavelength
64333  * except:
64334  * logEvent("ERROR! Wavetools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0) # <<<<<<<<<<<<<<
64335  * sys.exit(1)
64336  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ):
64337  */
64338  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_Wavelenght_is); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 994, __pyx_L1_error)
64339  __Pyx_GOTREF(__pyx_tuple__16);
64340  __Pyx_GIVEREF(__pyx_tuple__16);
64341 
64342  /* "WaveTools.py":997
64343  * sys.exit(1)
64344  * if ( (len(self.Ycoeff)!=self.Nf) or (len(self.Bcoeff)!=self.Nf) or (Ycoeff[0]==0.) or (Bcoeff[0]==0.) ):
64345  * logEvent("ERROR! Wavetools.py: Ycoeff and Bcoeff must have the same length and equal to Nf and the 1st order harmonic must not be zero",level=0) # <<<<<<<<<<<<<<
64346  * sys.exit(1)
64347  * else:
64348  */
64349  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_Ycoeff_and_Bc); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 997, __pyx_L1_error)
64350  __Pyx_GOTREF(__pyx_tuple__17);
64351  __Pyx_GIVEREF(__pyx_tuple__17);
64352 
64353  /* "WaveTools.py":1047
64354  *
64355  * if(len(meanVelocity) != 3):
64356  * logEvent("ERROR! Wavetools.py: meanVelocity should be a vector with 3 components. ",level=0) # <<<<<<<<<<<<<<
64357  * sys.exit(1)
64358  * if(self.Nf > 1000) and waveType == "Fenton":
64359  */
64360  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_meanVelocity); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1047, __pyx_L1_error)
64361  __Pyx_GOTREF(__pyx_tuple__18);
64362  __Pyx_GIVEREF(__pyx_tuple__18);
64363 
64364  /* "WaveTools.py":1050
64365  * sys.exit(1)
64366  * if(self.Nf > 1000) and waveType == "Fenton":
64367  * logEvent("ERROR! Wavetools.py: You are not really using more than 1000 Fourier modes for a regular wave, right? ",level=0) # <<<<<<<<<<<<<<
64368  * sys.exit(1)
64369  *
64370  */
64371  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_You_are_not_r); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1050, __pyx_L1_error)
64372  __Pyx_GOTREF(__pyx_tuple__19);
64373  __Pyx_GIVEREF(__pyx_tuple__19);
64374 
64375  /* "(tree fragment)":2
64376  * def __reduce_cython__(self):
64377  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
64378  * def __setstate_cython__(self, __pyx_state):
64379  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
64380  */
64381  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_self_Bcoeff__self_Ycoeff__self); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 2, __pyx_L1_error)
64382  __Pyx_GOTREF(__pyx_tuple__20);
64383  __Pyx_GIVEREF(__pyx_tuple__20);
64384 
64385  /* "(tree fragment)":4
64386  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
64387  * def __setstate_cython__(self, __pyx_state):
64388  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
64389  */
64390  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_self_Bcoeff__self_Ycoeff__self); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error)
64391  __Pyx_GOTREF(__pyx_tuple__21);
64392  __Pyx_GIVEREF(__pyx_tuple__21);
64393 
64394  /* "WaveTools.py":1267
64395  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
64396  * if(self.N > 10000):
64397  * logEvent("ERROR! Wavetools.py: Maximum number of frequencies for Random Waves is 10000 ",level=0) # <<<<<<<<<<<<<<
64398  * self.phi= -sum(self.kDir[:,j]*xfocus[j] for j in range(3))+tfocus*self.omega
64399  *
64400  */
64401  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1267, __pyx_L1_error)
64402  __Pyx_GOTREF(__pyx_tuple__23);
64403  __Pyx_GIVEREF(__pyx_tuple__23);
64404 
64405  /* "WaveTools.py":1393
64406  * np.savetxt(fname,list(zip(time,etaR)))
64407  * series = np.zeros((len(time),2),)
64408  * series[:,0] = time # <<<<<<<<<<<<<<
64409  * series[:,1] = etaR
64410  *
64411  */
64412  __pyx_tuple__25 = PyTuple_Pack(2, __pyx_slice__4, __pyx_int_0); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 1393, __pyx_L1_error)
64413  __Pyx_GOTREF(__pyx_tuple__25);
64414  __Pyx_GIVEREF(__pyx_tuple__25);
64415 
64416  /* "WaveTools.py":1394
64417  * series = np.zeros((len(time),2),)
64418  * series[:,0] = time
64419  * series[:,1] = etaR # <<<<<<<<<<<<<<
64420  *
64421  * return series
64422  */
64423  __pyx_tuple__26 = PyTuple_Pack(2, __pyx_slice__4, __pyx_int_1); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 1394, __pyx_L1_error)
64424  __Pyx_GOTREF(__pyx_tuple__26);
64425  __Pyx_GIVEREF(__pyx_tuple__26);
64426 
64427  /* "(tree fragment)":2
64428  * def __reduce_cython__(self):
64429  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64430  * def __setstate_cython__(self, __pyx_state):
64431  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64432  */
64433  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 2, __pyx_L1_error)
64434  __Pyx_GOTREF(__pyx_tuple__27);
64435  __Pyx_GIVEREF(__pyx_tuple__27);
64436 
64437  /* "(tree fragment)":4
64438  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64439  * def __setstate_cython__(self, __pyx_state):
64440  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64441  */
64442  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 4, __pyx_L1_error)
64443  __Pyx_GOTREF(__pyx_tuple__28);
64444  __Pyx_GIVEREF(__pyx_tuple__28);
64445 
64446  /* "(tree fragment)":2
64447  * def __reduce_cython__(self):
64448  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64449  * def __setstate_cython__(self, __pyx_state):
64450  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64451  */
64452  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 2, __pyx_L1_error)
64453  __Pyx_GOTREF(__pyx_tuple__30);
64454  __Pyx_GIVEREF(__pyx_tuple__30);
64455 
64456  /* "(tree fragment)":4
64457  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64458  * def __setstate_cython__(self, __pyx_state):
64459  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64460  */
64461  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 4, __pyx_L1_error)
64462  __Pyx_GOTREF(__pyx_tuple__31);
64463  __Pyx_GIVEREF(__pyx_tuple__31);
64464 
64465  /* "WaveTools.py":1734
64466  * self.Nall+=nn
64467  * if(self.Nall > 10000):
64468  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for MultispectraRandomWaves is 10000 ",level=0) # <<<<<<<<<<<<<<
64469  *
64470  *
64471  */
64472  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe_2); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1734, __pyx_L1_error)
64473  __Pyx_GOTREF(__pyx_tuple__32);
64474  __Pyx_GIVEREF(__pyx_tuple__32);
64475 
64476  /* "WaveTools.py":1769
64477  * self.kiM[NN1:NN] = RW.ki
64478  * self.aiM[NN1:NN] = RW.ai
64479  * self.kDirM[NN1:NN,:] =RW.kDir[:,:] # <<<<<<<<<<<<<<
64480  * self.phiM[NN1:NN] = RW.phi
64481  * for ij in range(3):
64482  */
64483  __pyx_tuple__33 = PyTuple_Pack(2, __pyx_slice__4, __pyx_slice__4); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 1769, __pyx_L1_error)
64484  __Pyx_GOTREF(__pyx_tuple__33);
64485  __Pyx_GIVEREF(__pyx_tuple__33);
64486 
64487  /* "(tree fragment)":2
64488  * def __reduce_cython__(self):
64489  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64490  * def __setstate_cython__(self, __pyx_state):
64491  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64492  */
64493  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 2, __pyx_L1_error)
64494  __Pyx_GOTREF(__pyx_tuple__34);
64495  __Pyx_GIVEREF(__pyx_tuple__34);
64496 
64497  /* "(tree fragment)":4
64498  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64499  * def __setstate_cython__(self, __pyx_state):
64500  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64501  */
64502  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 4, __pyx_L1_error)
64503  __Pyx_GOTREF(__pyx_tuple__35);
64504  __Pyx_GIVEREF(__pyx_tuple__35);
64505 
64506  /* "WaveTools.py":1924
64507  * self.vDir = setVertDir(g)
64508  * if(self.Nall > 100000):
64509  * logEvent("ERROR! Wavetools.py: Maximum (number of frequencies) x (No of spectra) for DirectionalWaves is 100000 ",level=0) # <<<<<<<<<<<<<<
64510  *
64511  *
64512  */
64513  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_Maximum_numbe_3); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1924, __pyx_L1_error)
64514  __Pyx_GOTREF(__pyx_tuple__36);
64515  __Pyx_GIVEREF(__pyx_tuple__36);
64516 
64517  /* "WaveTools.py":1954
64518  * self.gAbs = sqrt(g[0]*g[0]+g[1]*g[1]+g[2]*g[2])
64519  *
64520  * temp_array = np.zeros((1,3),) # <<<<<<<<<<<<<<
64521  * temp_array[0,:] = waveDir0
64522  * directions = list(range(0,self.Mtot))
64523  */
64524  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_3); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 1954, __pyx_L1_error)
64525  __Pyx_GOTREF(__pyx_tuple__37);
64526  __Pyx_GIVEREF(__pyx_tuple__37);
64527 
64528  /* "(tree fragment)":2
64529  * def __reduce_cython__(self):
64530  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64531  * def __setstate_cython__(self, __pyx_state):
64532  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64533  */
64534  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 2, __pyx_L1_error)
64535  __Pyx_GOTREF(__pyx_tuple__38);
64536  __Pyx_GIVEREF(__pyx_tuple__38);
64537 
64538  /* "(tree fragment)":4
64539  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
64540  * def __setstate_cython__(self, __pyx_state):
64541  * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
64542  */
64543  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 4, __pyx_L1_error)
64544  __Pyx_GOTREF(__pyx_tuple__39);
64545  __Pyx_GIVEREF(__pyx_tuple__39);
64546 
64547  /* "WaveTools.py":2163
64548  * self.x0 = timeSeriesPosition
64549  * else:
64550  * logEvent("ERROR! Wavetools.py: Location vector for timeSeries must have three-components",level=0) # <<<<<<<<<<<<<<
64551  * sys.exit(1)
64552  *
64553  */
64554  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_ERROR_Wavetools_py_Location_vect_2); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 2163, __pyx_L1_error)
64555  __Pyx_GOTREF(__pyx_tuple__41);
64556  __Pyx_GIVEREF(__pyx_tuple__41);
64557 
64558  /* "WaveTools.py":2185
64559  * tdata = seriesArray
64560  * else:
64561  * filetype = timeSeriesFile[-4:] # <<<<<<<<<<<<<<
64562  * fid = open(timeSeriesFile,"r")
64563  * if (filetype !=".txt") and (filetype != ".csv"):
64564  */
64565  __pyx_slice__42 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) __PYX_ERR(0, 2185, __pyx_L1_error)
64566  __Pyx_GOTREF(__pyx_slice__42);
64567  __Pyx_GIVEREF(__pyx_slice__42);
64568 
64569  /* "WaveTools.py":2218
64570  * doInterp = True
64571  * if(doInterp):
64572  * logEvent("INFO WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0) # <<<<<<<<<<<<<<
64573  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
64574  * self.etaS = np.interp(self.time,time_temp,tdata[:,1])
64575  */
64576  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_INFO_WaveTools_py_Not_constant_s); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 2218, __pyx_L1_error)
64577  __Pyx_GOTREF(__pyx_tuple__44);
64578  __Pyx_GIVEREF(__pyx_tuple__44);
64579 
64580  /* "WaveTools.py":2343
64581  * # Setting where each window starts and ends
64582  * for jj in range(self.Nwindows):
64583  * span = np.zeros(2,"d") # <<<<<<<<<<<<<<
64584  * tfirst = self.time[0] + self.Twindow
64585  * tlast = self.time[-1] - self.Twindow
64586  */
64587  __pyx_tuple__45 = PyTuple_Pack(2, __pyx_int_2, __pyx_n_s_d); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 2343, __pyx_L1_error)
64588  __Pyx_GOTREF(__pyx_tuple__45);
64589  __Pyx_GIVEREF(__pyx_tuple__45);
64590 
64591  /* "WaveTools.py":2406
64592  * for ii in range(len(self.windows_handover)):
64593  * self.whand_c[ii] = self.windows_handover[ii]
64594  * self.T0[ii] = self.windows_rec[ii][0,0] # <<<<<<<<<<<<<<
64595  * self.whand_ = self.whand_c
64596  * self.T0_ = self.T0
64597  */
64598  __pyx_tuple__46 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 2406, __pyx_L1_error)
64599  __Pyx_GOTREF(__pyx_tuple__46);
64600  __Pyx_GIVEREF(__pyx_tuple__46);
64601 
64602  /* "(tree fragment)":2
64603  * def __reduce_cython__(self):
64604  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
64605  * def __setstate_cython__(self, __pyx_state):
64606  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
64607  */
64608  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_self_T0__self__cpp_eta_self__cpp); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(1, 2, __pyx_L1_error)
64609  __Pyx_GOTREF(__pyx_tuple__47);
64610  __Pyx_GIVEREF(__pyx_tuple__47);
64611 
64612  /* "(tree fragment)":4
64613  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
64614  * def __setstate_cython__(self, __pyx_state):
64615  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
64616  */
64617  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_self_T0__self__cpp_eta_self__cpp); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(1, 4, __pyx_L1_error)
64618  __Pyx_GOTREF(__pyx_tuple__48);
64619  __Pyx_GIVEREF(__pyx_tuple__48);
64620 
64621  /* "WaveTools.py":2694
64622  * self.series = RW.writeEtaSeries(Tstart,Tend,x0,fname,4.*self.Lgen)
64623  * self.cutoff = max(0.2*self.Tp , cutoff_win*Nwaves*Tp)
64624  * duration = (self.series[-1,0]-self.series[0,0]) # <<<<<<<<<<<<<<
64625  * self.cutoff = old_div(self.cutoff, duration)
64626  * Tm = old_div(self.Tp,1.1)
64627  */
64628  __pyx_tuple__49 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_int_0); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 2694, __pyx_L1_error)
64629  __Pyx_GOTREF(__pyx_tuple__49);
64630  __Pyx_GIVEREF(__pyx_tuple__49);
64631 
64632  /* "WaveTools.py":2743
64633  * self.er1 = old_div(max(errors[:]),self.Hs)
64634  * if self.er1 > 0.01 and checkAcc:
64635  * logEvent('ERROR!: WaveTools.py: Found large errors error={s}) during window reconstruction at RandomWavesFast. Please a) Increase Nfreq, b) Decrease waves per window to decrease error < 1%. You can set checkAcc = False if you want to proceed with these errors',level=0) # <<<<<<<<<<<<<<
64636  * sys.exit(1)
64637  *
64638  */
64639  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_ERROR_WaveTools_py_Found_large_e); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 2743, __pyx_L1_error)
64640  __Pyx_GOTREF(__pyx_tuple__50);
64641  __Pyx_GIVEREF(__pyx_tuple__50);
64642 
64643  /* "WaveTools.py":3125
64644  * """
64645  *
64646  * logEvent("ERROR! Wavetools.py: eta and u functions not available for this class. Please use RandomNLWavesFast for generating random waves with nonlinear correction",0) # <<<<<<<<<<<<<<
64647  * sys.exit(1)
64648  *
64649  */
64650  __pyx_tuple__53 = PyTuple_Pack(2, __pyx_kp_s_ERROR_Wavetools_py_eta_and_u_fun, __pyx_int_0); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 3125, __pyx_L1_error)
64651  __Pyx_GOTREF(__pyx_tuple__53);
64652  __Pyx_GIVEREF(__pyx_tuple__53);
64653 
64654  /* "(tree fragment)":2
64655  * def __reduce_cython__(self):
64656  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
64657  * def __setstate_cython__(self, __pyx_state):
64658  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
64659  */
64660  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_self_ai__self_kDir__self_ki__sel); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 2, __pyx_L1_error)
64661  __Pyx_GOTREF(__pyx_tuple__54);
64662  __Pyx_GIVEREF(__pyx_tuple__54);
64663 
64664  /* "(tree fragment)":4
64665  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
64666  * def __setstate_cython__(self, __pyx_state):
64667  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
64668  */
64669  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_self_ai__self_kDir__self_ki__sel); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 4, __pyx_L1_error)
64670  __Pyx_GOTREF(__pyx_tuple__55);
64671  __Pyx_GIVEREF(__pyx_tuple__55);
64672  __pyx_tuple__56 = PyTuple_Pack(3, __pyx_int_237135047, __pyx_int_68501386, __pyx_int_235956263); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(1, 4, __pyx_L1_error)
64673  __Pyx_GOTREF(__pyx_tuple__56);
64674  __Pyx_GIVEREF(__pyx_tuple__56);
64675  __pyx_tuple__57 = PyTuple_Pack(3, __pyx_int_161707632, __pyx_int_247220107, __pyx_int_114894826); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 4, __pyx_L1_error)
64676  __Pyx_GOTREF(__pyx_tuple__57);
64677  __Pyx_GIVEREF(__pyx_tuple__57);
64678 
64679  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":945
64680  * __pyx_import_array()
64681  * except Exception:
64682  * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
64683  *
64684  * cdef inline int import_umath() except -1:
64685  */
64686  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(3, 945, __pyx_L1_error)
64687  __Pyx_GOTREF(__pyx_tuple__58);
64688  __Pyx_GIVEREF(__pyx_tuple__58);
64689 
64690  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":951
64691  * _import_umath()
64692  * except Exception:
64693  * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
64694  *
64695  * cdef inline int import_ufunc() except -1:
64696  */
64697  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(3, 951, __pyx_L1_error)
64698  __Pyx_GOTREF(__pyx_tuple__59);
64699  __Pyx_GIVEREF(__pyx_tuple__59);
64700 
64701  /* "WaveTools.py":67
64702  *
64703  *
64704  * def fastcos_test(phase,sinus=False): # <<<<<<<<<<<<<<
64705  * """Fast cosine function with Taylor approximation - TO BE USED FOR TESTING"
64706  * Parameters
64707  */
64708  __pyx_tuple__60 = PyTuple_Pack(2, __pyx_n_s_phase, __pyx_n_s_sinus); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 67, __pyx_L1_error)
64709  __Pyx_GOTREF(__pyx_tuple__60);
64710  __Pyx_GIVEREF(__pyx_tuple__60);
64711  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_fastcos_test, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 67, __pyx_L1_error)
64712  __pyx_tuple__62 = PyTuple_Pack(1, ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 67, __pyx_L1_error)
64713  __Pyx_GOTREF(__pyx_tuple__62);
64714  __Pyx_GIVEREF(__pyx_tuple__62);
64715 
64716  /* "WaveTools.py":84
64717  * phase = old_div(np.pi,2.) - phase
64718  * return fastcos(phase,True)
64719  * def fastcosh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
64720  * """Fast hyperbolic cosine function with Taylor approximation - TO BE USED FOR TESTING"
64721  * Parameters
64722  */
64723  __pyx_tuple__63 = PyTuple_Pack(4, __pyx_n_s_k, __pyx_n_s_Z, __pyx_n_s_fast, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 84, __pyx_L1_error)
64724  __Pyx_GOTREF(__pyx_tuple__63);
64725  __Pyx_GIVEREF(__pyx_tuple__63);
64726  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_fastcosh_test, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 84, __pyx_L1_error)
64727  __pyx_tuple__65 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 84, __pyx_L1_error)
64728  __Pyx_GOTREF(__pyx_tuple__65);
64729  __Pyx_GIVEREF(__pyx_tuple__65);
64730 
64731  /* "WaveTools.py":100
64732  * fastcosh(xx,k,Z,fast)
64733  * return xx[0]
64734  * def fastsinh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
64735  * """Fast hyperbolic sine function with Taylor approximation - TO BE USED FOR TESTING"
64736  * Parameters
64737  */
64738  __pyx_tuple__66 = PyTuple_Pack(4, __pyx_n_s_k, __pyx_n_s_Z, __pyx_n_s_fast, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 100, __pyx_L1_error)
64739  __Pyx_GOTREF(__pyx_tuple__66);
64740  __Pyx_GIVEREF(__pyx_tuple__66);
64741  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_fastsinh_test, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 100, __pyx_L1_error)
64742  __pyx_tuple__68 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 100, __pyx_L1_error)
64743  __Pyx_GOTREF(__pyx_tuple__68);
64744  __Pyx_GIVEREF(__pyx_tuple__68);
64745 
64746  /* "WaveTools.py":118
64747  *
64748  *
64749  * def coshkzd_test(k,Z,d, fast=True): # <<<<<<<<<<<<<<
64750  * """Calculation of u horizontal profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
64751  * and hyp trig relation cosh(a+b) = cosha*coshb+sinha*sinhb
64752  */
64753  __pyx_tuple__69 = PyTuple_Pack(4, __pyx_n_s_k, __pyx_n_s_Z, __pyx_n_s_d, __pyx_n_s_fast); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 118, __pyx_L1_error)
64754  __Pyx_GOTREF(__pyx_tuple__69);
64755  __Pyx_GIVEREF(__pyx_tuple__69);
64756  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_coshkzd_test, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 118, __pyx_L1_error)
64757  __pyx_tuple__71 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 118, __pyx_L1_error)
64758  __Pyx_GOTREF(__pyx_tuple__71);
64759  __Pyx_GIVEREF(__pyx_tuple__71);
64760 
64761  /* "WaveTools.py":140
64762  * return 0.
64763  *
64764  * def sinhkzd_test(k,Z,d,fast=True): # <<<<<<<<<<<<<<
64765  * """Calculation of v vertical profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
64766  * and hyp trig relation sinh(a+b) = sinha*coshb+cosha*sinhb
64767  */
64768  __pyx_tuple__72 = PyTuple_Pack(4, __pyx_n_s_k, __pyx_n_s_Z, __pyx_n_s_d, __pyx_n_s_fast); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 140, __pyx_L1_error)
64769  __Pyx_GOTREF(__pyx_tuple__72);
64770  __Pyx_GIVEREF(__pyx_tuple__72);
64771  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_sinhkzd_test, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 140, __pyx_L1_error)
64772  __pyx_tuple__74 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 140, __pyx_L1_error)
64773  __Pyx_GOTREF(__pyx_tuple__74);
64774  __Pyx_GIVEREF(__pyx_tuple__74);
64775 
64776  /* "WaveTools.py":163
64777  * return 0.
64778  *
64779  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
64780  * """Checks if a function name is known function and returns it
64781  *
64782  */
64783  __pyx_tuple__75 = PyTuple_Pack(5, __pyx_n_s_funcName, __pyx_n_s_validFunctions, __pyx_n_s_funcNames, __pyx_n_s_func, __pyx_n_s_func_ret); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 163, __pyx_L1_error)
64784  __Pyx_GOTREF(__pyx_tuple__75);
64785  __Pyx_GIVEREF(__pyx_tuple__75);
64786  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_loadExistingFunction, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 163, __pyx_L1_error)
64787 
64788  /* "WaveTools.py":198
64789  *
64790  *
64791  * def setVertDir(g): # <<<<<<<<<<<<<<
64792  * """ Returns the unit vector for the vertical direction
64793  *
64794  */
64795  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_g); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 198, __pyx_L1_error)
64796  __Pyx_GOTREF(__pyx_tuple__77);
64797  __Pyx_GIVEREF(__pyx_tuple__77);
64798  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_setVertDir, 198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 198, __pyx_L1_error)
64799 
64800  /* "WaveTools.py":216
64801  *
64802  *
64803  * def setDirVector(vector): # <<<<<<<<<<<<<<
64804  * """ Returns the direction of a vector in the form of a unit vector
64805  *
64806  */
64807  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_n_s_vector); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 216, __pyx_L1_error)
64808  __Pyx_GOTREF(__pyx_tuple__79);
64809  __Pyx_GIVEREF(__pyx_tuple__79);
64810  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_setDirVector, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 216, __pyx_L1_error)
64811 
64812  /* "WaveTools.py":231
64813  * return old_div(vector,(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2)))
64814  *
64815  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
64816  * """ Checks if two vectors are vertical raises SystemError if True
64817  *
64818  */
64819  __pyx_tuple__81 = PyTuple_Pack(3, __pyx_n_s_v1, __pyx_n_s_v2, __pyx_n_s_dircheck); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 231, __pyx_L1_error)
64820  __Pyx_GOTREF(__pyx_tuple__81);
64821  __Pyx_GIVEREF(__pyx_tuple__81);
64822  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_dirCheck, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 231, __pyx_L1_error)
64823 
64824  /* "WaveTools.py":258
64825  * else:
64826  * return None
64827  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
64828  * """ Prepares the x-axis array with N elements for numerical integration
64829  *
64830  */
64831  __pyx_tuple__83 = PyTuple_Pack(3, __pyx_n_s_fi, __pyx_n_s_df, __pyx_n_s_fim_tmp); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 258, __pyx_L1_error)
64832  __Pyx_GOTREF(__pyx_tuple__83);
64833  __Pyx_GIVEREF(__pyx_tuple__83);
64834  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_reduceToIntervals, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 258, __pyx_L1_error)
64835 
64836  /* "WaveTools.py":279
64837  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
64838  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
64839  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
64840  * """ Returns 2D discrete integral array using the rectangle method
64841  *
64842  */
64843  __pyx_tuple__85 = PyTuple_Pack(2, __pyx_n_s_a, __pyx_n_s_x); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 279, __pyx_L1_error)
64844  __Pyx_GOTREF(__pyx_tuple__85);
64845  __Pyx_GIVEREF(__pyx_tuple__85);
64846  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_returnRectangles, 279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 279, __pyx_L1_error)
64847 
64848  /* "WaveTools.py":299
64849  * """
64850  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
64851  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
64852  * """ Returns 3D discrete integrals using the rectangle method
64853  *
64854  */
64855  __pyx_tuple__87 = PyTuple_Pack(6, __pyx_n_s_a, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_ai, __pyx_n_s_ii, __pyx_n_s_jj); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 299, __pyx_L1_error)
64856  __Pyx_GOTREF(__pyx_tuple__87);
64857  __Pyx_GIVEREF(__pyx_tuple__87);
64858  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_returnRectangles3D, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 299, __pyx_L1_error)
64859 
64860  /* "WaveTools.py":326
64861  * ai[:,jj] *= (x[1:]-x[:-1])
64862  * return ai
64863  * def normIntegral(f,dom): # <<<<<<<<<<<<<<
64864  * """Returns a normalised 2D function
64865  *
64866  */
64867  __pyx_tuple__89 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_dom, __pyx_n_s_G0); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 326, __pyx_L1_error)
64868  __Pyx_GOTREF(__pyx_tuple__89);
64869  __Pyx_GIVEREF(__pyx_tuple__89);
64870  __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_normIntegral, 326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 326, __pyx_L1_error)
64871 
64872  /* "WaveTools.py":349
64873  *
64874  *
64875  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
64876  * """Calculates the free surface elevation for a single frequency mode
64877  *
64878  */
64879  __pyx_tuple__91 = PyTuple_Pack(7, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_kDir, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_amplitude, __pyx_n_s_phase); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 349, __pyx_L1_error)
64880  __Pyx_GOTREF(__pyx_tuple__91);
64881  __Pyx_GIVEREF(__pyx_tuple__91);
64882  __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(6, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__91, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta_mode, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 349, __pyx_L1_error)
64883 
64884  /* "WaveTools.py":375
64885  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
64886  * return amplitude*cos(phase)
64887  * def Udrift(amp,gAbs,c,d): # <<<<<<<<<<<<<<
64888  * """Calculates the 2nd order Stokes drift for a linear mode
64889  *
64890  */
64891  __pyx_tuple__93 = PyTuple_Pack(4, __pyx_n_s_amp, __pyx_n_s_gAbs, __pyx_n_s_c, __pyx_n_s_d); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 375, __pyx_L1_error)
64892  __Pyx_GOTREF(__pyx_tuple__93);
64893  __Pyx_GIVEREF(__pyx_tuple__93);
64894  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_Udrift, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 375, __pyx_L1_error)
64895 
64896  /* "WaveTools.py":397
64897  * return 0.5*gAbs*amp*amp/c/d
64898  *
64899  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, vDir, gAbs): # <<<<<<<<<<<<<<
64900  * """Calculates the wave velocity components for a single frequency mode
64901  *
64902  */
64903  __pyx_tuple__95 = PyTuple_Pack(18, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_kDir, __pyx_n_s_kAbs, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_amplitude, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_vDir, __pyx_n_s_gAbs, __pyx_n_s_phase, __pyx_n_s_Z, __pyx_n_s_UH, __pyx_n_s_UV, __pyx_n_s_ii, __pyx_n_s_waveDir, __pyx_n_s_V); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 397, __pyx_L1_error)
64904  __Pyx_GOTREF(__pyx_tuple__95);
64905  __Pyx_GIVEREF(__pyx_tuple__95);
64906  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(11, 0, 18, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_vel_mode, 397, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 397, __pyx_L1_error)
64907 
64908  /* "WaveTools.py":447
64909  *
64910  *
64911  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
64912  * """Calculates sigma function for JONSWAP spectrum
64913  *
64914  */
64915  __pyx_tuple__97 = PyTuple_Pack(3, __pyx_n_s_omega, __pyx_n_s_omega0, __pyx_n_s_sigmaReturn); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 447, __pyx_L1_error)
64916  __Pyx_GOTREF(__pyx_tuple__97);
64917  __Pyx_GIVEREF(__pyx_tuple__97);
64918  __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_sigma, 447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(0, 447, __pyx_L1_error)
64919 
64920  /* "WaveTools.py":466
64921  * return sigmaReturn
64922  *
64923  * def custom(): # <<<<<<<<<<<<<<
64924  * pass
64925  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None):
64926  */
64927  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_custom, 466, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 466, __pyx_L1_error)
64928 
64929  /* "WaveTools.py":468
64930  * def custom():
64931  * pass
64932  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
64933  * """Calculates the JONSWAP frequency spectrum (Goda 2009)
64934  *
64935  */
64936  __pyx_tuple__100 = PyTuple_Pack(11, __pyx_n_s_f, __pyx_n_s_f0, __pyx_n_s_Hs, __pyx_n_s_gamma, __pyx_n_s_TMA, __pyx_n_s_depth, __pyx_n_s_Tp, __pyx_n_s_bj, __pyx_n_s_r, __pyx_n_s_tma, __pyx_n_s_k); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 468, __pyx_L1_error)
64937  __Pyx_GOTREF(__pyx_tuple__100);
64938  __Pyx_GIVEREF(__pyx_tuple__100);
64939  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(6, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__100, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_JONSWAP, 468, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(0, 468, __pyx_L1_error)
64940  __pyx_tuple__102 = PyTuple_Pack(3, ((PyObject*)__pyx_float_3_3), ((PyObject *)Py_False), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(0, 468, __pyx_L1_error)
64941  __Pyx_GOTREF(__pyx_tuple__102);
64942  __Pyx_GIVEREF(__pyx_tuple__102);
64943 
64944  /* "WaveTools.py":508
64945  * return tma * bj*(Hs**2)*(old_div(1.,((Tp**4) *(f**5))))*np.exp(-1.25*(old_div(1.,(Tp*f)**(4.))))*(gamma**r)
64946  *
64947  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
64948  * """Calculates the Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
64949  *
64950  */
64951  __pyx_tuple__103 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_f0, __pyx_n_s_Hs); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 508, __pyx_L1_error)
64952  __Pyx_GOTREF(__pyx_tuple__103);
64953  __Pyx_GIVEREF(__pyx_tuple__103);
64954  __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__103, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_PM_mod, 508, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(0, 508, __pyx_L1_error)
64955 
64956  /* "WaveTools.py":532
64957  * return (old_div(5.0,16.0))*Hs**2*(old_div(f0**4,f**5))*np.exp((old_div(-5.0,4.0))*(old_div(f0,f))**4)
64958  *
64959  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
64960  * """Calculates the cos-2s directional spreading function
64961  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
64962  */
64963  __pyx_tuple__105 = PyTuple_Pack(5, __pyx_n_s_theta, __pyx_n_s_f, __pyx_n_s_s, __pyx_n_s_fun, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 532, __pyx_L1_error)
64964  __Pyx_GOTREF(__pyx_tuple__105);
64965  __Pyx_GIVEREF(__pyx_tuple__105);
64966  __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__105, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_cos2s, 532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 532, __pyx_L1_error)
64967  __pyx_tuple__107 = PyTuple_Pack(1, ((PyObject *)__pyx_int_10)); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 532, __pyx_L1_error)
64968  __Pyx_GOTREF(__pyx_tuple__107);
64969  __Pyx_GIVEREF(__pyx_tuple__107);
64970 
64971  /* "WaveTools.py":554
64972  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
64973  * return fun
64974  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
64975  * """The cos2s wave directional spread with wave frequency dependency
64976  *
64977  */
64978  __pyx_tuple__108 = PyTuple_Pack(7, __pyx_n_s_theta, __pyx_n_s_fi, __pyx_n_s_f0, __pyx_n_s_smax, __pyx_n_s_s, __pyx_n_s_ii, __pyx_n_s_fun); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(0, 554, __pyx_L1_error)
64979  __Pyx_GOTREF(__pyx_tuple__108);
64980  __Pyx_GIVEREF(__pyx_tuple__108);
64981  __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_mitsuyasu, 554, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(0, 554, __pyx_L1_error)
64982  __pyx_tuple__110 = PyTuple_Pack(1, ((PyObject *)__pyx_int_10)); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 554, __pyx_L1_error)
64983  __Pyx_GOTREF(__pyx_tuple__110);
64984  __Pyx_GIVEREF(__pyx_tuple__110);
64985 
64986  /* "WaveTools.py":588
64987  *
64988  *
64989  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
64990  * """Calculates the wave number for single or multiple frequencies using linear dispersion relation.
64991  *
64992  */
64993  __pyx_tuple__111 = PyTuple_Pack(7, __pyx_n_s_w, __pyx_n_s_d, __pyx_n_s_g, __pyx_n_s_niter, __pyx_n_s_w_aux, __pyx_n_s_K, __pyx_n_s_jj); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 588, __pyx_L1_error)
64994  __Pyx_GOTREF(__pyx_tuple__111);
64995  __Pyx_GIVEREF(__pyx_tuple__111);
64996  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_dispersion, 588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(0, 588, __pyx_L1_error)
64997  __pyx_tuple__113 = PyTuple_Pack(2, ((PyObject*)__pyx_float_9_81), ((PyObject *)__pyx_int_1000)); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(0, 588, __pyx_L1_error)
64998  __Pyx_GOTREF(__pyx_tuple__113);
64999  __Pyx_GIVEREF(__pyx_tuple__113);
65000 
65001  /* "WaveTools.py":617
65002  *
65003  *
65004  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
65005  * """ Calculates and returns a top hat filter array
65006  *
65007  */
65008  __pyx_tuple__114 = PyTuple_Pack(4, __pyx_n_s_l, __pyx_n_s_cutoff, __pyx_n_s_a, __pyx_n_s_cut); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(0, 617, __pyx_L1_error)
65009  __Pyx_GOTREF(__pyx_tuple__114);
65010  __Pyx_GIVEREF(__pyx_tuple__114);
65011  __pyx_codeobj__115 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_tophat, 617, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(0, 617, __pyx_L1_error)
65012 
65013  /* "WaveTools.py":637
65014  * return a
65015  *
65016  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
65017  * """ Calculates and returns a top hat filter array
65018  *
65019  */
65020  __pyx_tuple__116 = PyTuple_Pack(5, __pyx_n_s_l, __pyx_n_s_cutoff, __pyx_n_s_npoints, __pyx_n_s_wind, __pyx_n_s_k); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(0, 637, __pyx_L1_error)
65021  __Pyx_GOTREF(__pyx_tuple__116);
65022  __Pyx_GIVEREF(__pyx_tuple__116);
65023  __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__116, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_costap, 637, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(0, 637, __pyx_L1_error)
65024  __pyx_tuple__118 = PyTuple_Pack(1, ((PyObject*)__pyx_float_0_1)); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(0, 637, __pyx_L1_error)
65025  __Pyx_GOTREF(__pyx_tuple__118);
65026  __Pyx_GIVEREF(__pyx_tuple__118);
65027 
65028  /* "WaveTools.py":660
65029  * return wind
65030  *
65031  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
65032  * """ Performs spectral analysis and calculates angular frequency components, amplitude, phase and mean level power
65033  * of a time series with constant sampling.
65034  */
65035  __pyx_tuple__119 = PyTuple_Pack(13, __pyx_n_s_time, __pyx_n_s_eta, __pyx_n_s_dt, __pyx_n_s_nfft, __pyx_n_s_results, __pyx_n_s_fft_x, __pyx_n_s_freq, __pyx_n_s_iend, __pyx_n_s_setup, __pyx_n_s_aa, __pyx_n_s_ww, __pyx_n_s_pp, __pyx_n_s_k); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(0, 660, __pyx_L1_error)
65036  __Pyx_GOTREF(__pyx_tuple__119);
65037  __Pyx_GIVEREF(__pyx_tuple__119);
65038  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__119, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_decompose_tseries, 660, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(0, 660, __pyx_L1_error)
65039 
65040  /* "WaveTools.py":736
65041  * self.ramp = rampTime
65042  *
65043  * def eta(self,x,t): # <<<<<<<<<<<<<<
65044  * """Calculates free surface elevation (SolitaryWave class)
65045  * Parameters
65046  */
65047  __pyx_tuple__121 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(0, 736, __pyx_L1_error)
65048  __Pyx_GOTREF(__pyx_tuple__121);
65049  __Pyx_GIVEREF(__pyx_tuple__121);
65050  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 736, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(0, 736, __pyx_L1_error)
65051 
65052  /* "WaveTools.py":752
65053  * """
65054  * return 0.
65055  * def u(self,x,t): # <<<<<<<<<<<<<<
65056  * """Calculates wave velocity vector (SolitaryWave class).
65057  * Parameters
65058  */
65059  __pyx_tuple__123 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(0, 752, __pyx_L1_error)
65060  __Pyx_GOTREF(__pyx_tuple__123);
65061  __Pyx_GIVEREF(__pyx_tuple__123);
65062  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 752, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(0, 752, __pyx_L1_error)
65063 
65064  /* "(tree fragment)":1
65065  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65066  * cdef tuple state
65067  * cdef object _dict
65068  */
65069  __pyx_tuple__125 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(1, 1, __pyx_L1_error)
65070  __Pyx_GOTREF(__pyx_tuple__125);
65071  __Pyx_GIVEREF(__pyx_tuple__125);
65072  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(1, 1, __pyx_L1_error)
65073 
65074  /* "(tree fragment)":16
65075  * else:
65076  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state)
65077  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65078  * __pyx_unpickle_SteadyCurrent__set_state(self, __pyx_state)
65079  */
65080  __pyx_tuple__127 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(1, 16, __pyx_L1_error)
65081  __Pyx_GOTREF(__pyx_tuple__127);
65082  __Pyx_GIVEREF(__pyx_tuple__127);
65083  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(1, 16, __pyx_L1_error)
65084 
65085  /* "WaveTools.py":804
65086  * g,
65087  * waveDir,
65088  * trans = np.zeros(3,"d"), # <<<<<<<<<<<<<<
65089  * fast = True):
65090  *
65091  */
65092  __pyx_tuple__129 = PyTuple_Pack(2, __pyx_int_3, __pyx_n_s_d); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(0, 804, __pyx_L1_error)
65093  __Pyx_GOTREF(__pyx_tuple__129);
65094  __Pyx_GIVEREF(__pyx_tuple__129);
65095 
65096  /* "WaveTools.py":823
65097  * dirCheck(self.waveDir,self.vDir)
65098  *
65099  * def eta(self,x,t): # <<<<<<<<<<<<<<
65100  * """Calculates free surface elevation (SolitaryWave class)
65101  * Parameters
65102  */
65103  __pyx_tuple__130 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_phase, __pyx_n_s_a1); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(0, 823, __pyx_L1_error)
65104  __Pyx_GOTREF(__pyx_tuple__130);
65105  __Pyx_GIVEREF(__pyx_tuple__130);
65106  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 823, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(0, 823, __pyx_L1_error)
65107 
65108  /* "WaveTools.py":841
65109  * a1 = self.K*phase
65110  * return self.H*1.0/ cosh(a1)**2
65111  * def u(self,x,t): # <<<<<<<<<<<<<<
65112  * """Calculates wave velocity vector (SolitaryWave class).
65113  * Parameters
65114  */
65115  __pyx_tuple__132 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_phase, __pyx_n_s_a1, __pyx_n_s_a2, __pyx_n_s_Z, __pyx_n_s_Uhorz, __pyx_n_s_Uvert); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(0, 841, __pyx_L1_error)
65116  __Pyx_GOTREF(__pyx_tuple__132);
65117  __Pyx_GIVEREF(__pyx_tuple__132);
65118  __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(3, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 841, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(0, 841, __pyx_L1_error)
65119 
65120  /* "(tree fragment)":1
65121  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65122  * cdef tuple state
65123  * cdef object _dict
65124  */
65125  __pyx_tuple__134 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(1, 1, __pyx_L1_error)
65126  __Pyx_GOTREF(__pyx_tuple__134);
65127  __Pyx_GIVEREF(__pyx_tuple__134);
65128  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(1, 1, __pyx_L1_error)
65129 
65130  /* "(tree fragment)":16
65131  * else:
65132  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state)
65133  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65134  * __pyx_unpickle_SolitaryWave__set_state(self, __pyx_state)
65135  */
65136  __pyx_tuple__136 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(1, 16, __pyx_L1_error)
65137  __Pyx_GOTREF(__pyx_tuple__136);
65138  __Pyx_GIVEREF(__pyx_tuple__136);
65139  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(1, 16, __pyx_L1_error)
65140 
65141  /* "WaveTools.py":952
65142  * autoFenton=True,
65143  * autoFentonOpts=None,
65144  * Ycoeff = np.zeros(1000,), # <<<<<<<<<<<<<<
65145  * Bcoeff =np.zeros(1000,),
65146  * Nf = 1000,
65147  */
65148  __pyx_tuple__138 = PyTuple_Pack(1, __pyx_int_1000); if (unlikely(!__pyx_tuple__138)) __PYX_ERR(0, 952, __pyx_L1_error)
65149  __Pyx_GOTREF(__pyx_tuple__138);
65150  __Pyx_GIVEREF(__pyx_tuple__138);
65151 
65152  /* "WaveTools.py":1106
65153  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast)
65154  *
65155  * def eta(self,x,t): # <<<<<<<<<<<<<<
65156  * """Calculates free surface elevation (MonochromaticWaves class)
65157  * Parameters
65158  */
65159  __pyx_tuple__139 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(0, 1106, __pyx_L1_error)
65160  __Pyx_GOTREF(__pyx_tuple__139);
65161  __Pyx_GIVEREF(__pyx_tuple__139);
65162  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 1106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(0, 1106, __pyx_L1_error)
65163 
65164  /* "WaveTools.py":1130
65165  * return self.etaFenton(xx,t)
65166  *
65167  * def u(self,x,t): # <<<<<<<<<<<<<<
65168  * """Calculates wave velocity vector (MonochromaticWaves class).
65169  * Parameters
65170  */
65171  __pyx_tuple__141 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__141)) __PYX_ERR(0, 1130, __pyx_L1_error)
65172  __Pyx_GOTREF(__pyx_tuple__141);
65173  __Pyx_GIVEREF(__pyx_tuple__141);
65174  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 1130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(0, 1130, __pyx_L1_error)
65175 
65176  /* "(tree fragment)":1
65177  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65178  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
65179  * def __setstate_cython__(self, __pyx_state):
65180  */
65181  __pyx_tuple__143 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__143)) __PYX_ERR(1, 1, __pyx_L1_error)
65182  __Pyx_GOTREF(__pyx_tuple__143);
65183  __Pyx_GIVEREF(__pyx_tuple__143);
65184  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) __PYX_ERR(1, 1, __pyx_L1_error)
65185 
65186  /* "(tree fragment)":3
65187  * def __reduce_cython__(self):
65188  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
65189  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65190  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
65191  */
65192  __pyx_tuple__145 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(1, 3, __pyx_L1_error)
65193  __Pyx_GOTREF(__pyx_tuple__145);
65194  __Pyx_GIVEREF(__pyx_tuple__145);
65195  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(1, 3, __pyx_L1_error)
65196 
65197  /* "WaveTools.py":1299
65198  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
65199  *
65200  * def eta(self, x, t): # <<<<<<<<<<<<<<
65201  * """Calculates free surface elevation (RandomWaves class)
65202  * Parameters
65203  */
65204  __pyx_tuple__147 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__147)) __PYX_ERR(0, 1299, __pyx_L1_error)
65205  __Pyx_GOTREF(__pyx_tuple__147);
65206  __Pyx_GIVEREF(__pyx_tuple__147);
65207  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 1299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) __PYX_ERR(0, 1299, __pyx_L1_error)
65208 
65209  /* "WaveTools.py":1323
65210  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
65211  *
65212  * def u(self, x, t): # <<<<<<<<<<<<<<
65213  * """Calculates wave velocity vector (RandomWaves class)
65214  * Parameters
65215  */
65216  __pyx_tuple__149 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(0, 1323, __pyx_L1_error)
65217  __Pyx_GOTREF(__pyx_tuple__149);
65218  __Pyx_GIVEREF(__pyx_tuple__149);
65219  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 1323, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) __PYX_ERR(0, 1323, __pyx_L1_error)
65220 
65221  /* "WaveTools.py":1351
65222  *
65223  * return U
65224  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
65225  * """Writes a timeseries of the free-surface elevation
65226  *
65227  */
65228  __pyx_tuple__151 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_Tstart, __pyx_n_s_Tend, __pyx_n_s_x0, __pyx_n_s_fname, __pyx_n_s_Lgen, __pyx_n_s_dt, __pyx_n_s_Tlag, __pyx_n_s_j, __pyx_n_s_Np, __pyx_n_s_time, __pyx_n_s_etaR, __pyx_n_s_jj, __pyx_n_s_series); if (unlikely(!__pyx_tuple__151)) __PYX_ERR(0, 1351, __pyx_L1_error)
65229  __Pyx_GOTREF(__pyx_tuple__151);
65230  __Pyx_GIVEREF(__pyx_tuple__151);
65231  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(6, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_writeEtaSeries, 1351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) __PYX_ERR(0, 1351, __pyx_L1_error)
65232 
65233  /* "(tree fragment)":1
65234  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65235  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65236  * def __setstate_cython__(self, __pyx_state):
65237  */
65238  __pyx_tuple__153 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__153)) __PYX_ERR(1, 1, __pyx_L1_error)
65239  __Pyx_GOTREF(__pyx_tuple__153);
65240  __Pyx_GIVEREF(__pyx_tuple__153);
65241  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) __PYX_ERR(1, 1, __pyx_L1_error)
65242 
65243  /* "(tree fragment)":3
65244  * def __reduce_cython__(self):
65245  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65246  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65247  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65248  */
65249  __pyx_tuple__155 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__155)) __PYX_ERR(1, 3, __pyx_L1_error)
65250  __Pyx_GOTREF(__pyx_tuple__155);
65251  __Pyx_GIVEREF(__pyx_tuple__155);
65252  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) __PYX_ERR(1, 3, __pyx_L1_error)
65253 
65254  /* "WaveTools.py":1557
65255  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
65256  *
65257  * def eta(self, x, t): # <<<<<<<<<<<<<<
65258  * """Calculates free surface elevation (RandomWaves class)
65259  * Parameters
65260  */
65261  __pyx_tuple__157 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__157)) __PYX_ERR(0, 1557, __pyx_L1_error)
65262  __Pyx_GOTREF(__pyx_tuple__157);
65263  __Pyx_GIVEREF(__pyx_tuple__157);
65264  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 1557, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) __PYX_ERR(0, 1557, __pyx_L1_error)
65265 
65266  /* "WaveTools.py":1581
65267  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
65268  *
65269  * def u(self, x, t): # <<<<<<<<<<<<<<
65270  * """Calculates wave velocity vector (RandomWaves class)
65271  * Parameters
65272  */
65273  __pyx_tuple__159 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__159)) __PYX_ERR(0, 1581, __pyx_L1_error)
65274  __Pyx_GOTREF(__pyx_tuple__159);
65275  __Pyx_GIVEREF(__pyx_tuple__159);
65276  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 1581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) __PYX_ERR(0, 1581, __pyx_L1_error)
65277 
65278  /* "WaveTools.py":1609
65279  *
65280  * return U
65281  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
65282  * """Writes a timeseries of the free-surface elevation
65283  *
65284  */
65285  __pyx_tuple__161 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_Tstart, __pyx_n_s_Tend, __pyx_n_s_x0, __pyx_n_s_fname, __pyx_n_s_Lgen, __pyx_n_s_dt, __pyx_n_s_Tlag, __pyx_n_s_j, __pyx_n_s_Np, __pyx_n_s_time, __pyx_n_s_etaR, __pyx_n_s_jj, __pyx_n_s_series); if (unlikely(!__pyx_tuple__161)) __PYX_ERR(0, 1609, __pyx_L1_error)
65286  __Pyx_GOTREF(__pyx_tuple__161);
65287  __Pyx_GIVEREF(__pyx_tuple__161);
65288  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(6, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_writeEtaSeries, 1609, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) __PYX_ERR(0, 1609, __pyx_L1_error)
65289 
65290  /* "(tree fragment)":1
65291  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65292  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65293  * def __setstate_cython__(self, __pyx_state):
65294  */
65295  __pyx_tuple__163 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__163)) __PYX_ERR(1, 1, __pyx_L1_error)
65296  __Pyx_GOTREF(__pyx_tuple__163);
65297  __Pyx_GIVEREF(__pyx_tuple__163);
65298  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) __PYX_ERR(1, 1, __pyx_L1_error)
65299 
65300  /* "(tree fragment)":3
65301  * def __reduce_cython__(self):
65302  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65303  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65304  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65305  */
65306  __pyx_tuple__165 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__165)) __PYX_ERR(1, 3, __pyx_L1_error)
65307  __Pyx_GOTREF(__pyx_tuple__165);
65308  __Pyx_GIVEREF(__pyx_tuple__165);
65309  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) __PYX_ERR(1, 3, __pyx_L1_error)
65310 
65311  /* "WaveTools.py":1799
65312  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast)
65313  *
65314  * def eta(self, x, t): # <<<<<<<<<<<<<<
65315  * """Calculates free surface elevation (RandomWaves class)
65316  * Parameters
65317  */
65318  __pyx_tuple__167 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__167)) __PYX_ERR(0, 1799, __pyx_L1_error)
65319  __Pyx_GOTREF(__pyx_tuple__167);
65320  __Pyx_GIVEREF(__pyx_tuple__167);
65321  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 1799, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) __PYX_ERR(0, 1799, __pyx_L1_error)
65322 
65323  /* "WaveTools.py":1824
65324  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast)
65325  *
65326  * def u(self, x, t): # <<<<<<<<<<<<<<
65327  * """Calculates wave velocity vector (RandomWaves class)
65328  * Parameters
65329  */
65330  __pyx_tuple__169 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__169)) __PYX_ERR(0, 1824, __pyx_L1_error)
65331  __Pyx_GOTREF(__pyx_tuple__169);
65332  __Pyx_GIVEREF(__pyx_tuple__169);
65333  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 1824, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) __PYX_ERR(0, 1824, __pyx_L1_error)
65334 
65335  /* "(tree fragment)":1
65336  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65337  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65338  * def __setstate_cython__(self, __pyx_state):
65339  */
65340  __pyx_tuple__171 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__171)) __PYX_ERR(1, 1, __pyx_L1_error)
65341  __Pyx_GOTREF(__pyx_tuple__171);
65342  __Pyx_GIVEREF(__pyx_tuple__171);
65343  __pyx_codeobj__172 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__172)) __PYX_ERR(1, 1, __pyx_L1_error)
65344 
65345  /* "(tree fragment)":3
65346  * def __reduce_cython__(self):
65347  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65348  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65349  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65350  */
65351  __pyx_tuple__173 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__173)) __PYX_ERR(1, 3, __pyx_L1_error)
65352  __Pyx_GOTREF(__pyx_tuple__173);
65353  __Pyx_GIVEREF(__pyx_tuple__173);
65354  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) __PYX_ERR(1, 3, __pyx_L1_error)
65355 
65356  /* "WaveTools.py":2036
65357  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast)
65358  *
65359  * def eta(self, x, t): # <<<<<<<<<<<<<<
65360  * """Calculates free surface elevation (RandomWaves class)
65361  * Parameters
65362  */
65363  __pyx_tuple__175 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__175)) __PYX_ERR(0, 2036, __pyx_L1_error)
65364  __Pyx_GOTREF(__pyx_tuple__175);
65365  __Pyx_GIVEREF(__pyx_tuple__175);
65366  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 2036, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(0, 2036, __pyx_L1_error)
65367 
65368  /* "WaveTools.py":2061
65369  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
65370  *
65371  * def u(self, x, t): # <<<<<<<<<<<<<<
65372  * """Calculates wave velocity vector (RandomWaves class)
65373  * Parameters
65374  */
65375  __pyx_tuple__177 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__177)) __PYX_ERR(0, 2061, __pyx_L1_error)
65376  __Pyx_GOTREF(__pyx_tuple__177);
65377  __Pyx_GIVEREF(__pyx_tuple__177);
65378  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 2061, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) __PYX_ERR(0, 2061, __pyx_L1_error)
65379 
65380  /* "(tree fragment)":1
65381  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65382  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65383  * def __setstate_cython__(self, __pyx_state):
65384  */
65385  __pyx_tuple__179 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__179)) __PYX_ERR(1, 1, __pyx_L1_error)
65386  __Pyx_GOTREF(__pyx_tuple__179);
65387  __Pyx_GIVEREF(__pyx_tuple__179);
65388  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) __PYX_ERR(1, 1, __pyx_L1_error)
65389 
65390  /* "(tree fragment)":3
65391  * def __reduce_cython__(self):
65392  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65393  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65394  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
65395  */
65396  __pyx_tuple__181 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__181)) __PYX_ERR(1, 3, __pyx_L1_error)
65397  __Pyx_GOTREF(__pyx_tuple__181);
65398  __Pyx_GIVEREF(__pyx_tuple__181);
65399  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) __PYX_ERR(1, 3, __pyx_L1_error)
65400 
65401  /* "WaveTools.py":2459
65402  * self._cpp_u = self._cpp_uWindow
65403  *
65404  * def windOut(self): # <<<<<<<<<<<<<<
65405  * return {"TWindow":self.Twindow,"TOverlap":self.Toverlap,"Tlag":self.Tlag, "rec_direct":self.rec_direct}
65406  *
65407  */
65408  __pyx_tuple__183 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__183)) __PYX_ERR(0, 2459, __pyx_L1_error)
65409  __Pyx_GOTREF(__pyx_tuple__183);
65410  __Pyx_GIVEREF(__pyx_tuple__183);
65411  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_windOut, 2459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) __PYX_ERR(0, 2459, __pyx_L1_error)
65412 
65413  /* "WaveTools.py":2468
65414  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
65415  *
65416  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
65417  *
65418  * """Calculates free surface elevation(Timeseries class-direct method
65419  */
65420  __pyx_tuple__185 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__185)) __PYX_ERR(0, 2468, __pyx_L1_error)
65421  __Pyx_GOTREF(__pyx_tuple__185);
65422  __Pyx_GIVEREF(__pyx_tuple__185);
65423  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_etaDirect, 2468, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(0, 2468, __pyx_L1_error)
65424 
65425  /* "WaveTools.py":2490
65426  * return self._cpp_etaDirect(xx,t)
65427  *
65428  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
65429  * """Calculates wave velocity vector (Timeseries class-direct method)
65430  * Parameters
65431  */
65432  __pyx_tuple__187 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__187)) __PYX_ERR(0, 2490, __pyx_L1_error)
65433  __Pyx_GOTREF(__pyx_tuple__187);
65434  __Pyx_GIVEREF(__pyx_tuple__187);
65435  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_uDirect, 2490, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(0, 2490, __pyx_L1_error)
65436 
65437  /* "WaveTools.py":2519
65438  * return U
65439  *
65440  * def findWindow(self,t): # <<<<<<<<<<<<<<
65441  * """Returns the current spectral window in TimeSeries class."
65442  *
65443  */
65444  __pyx_tuple__189 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_t); if (unlikely(!__pyx_tuple__189)) __PYX_ERR(0, 2519, __pyx_L1_error)
65445  __Pyx_GOTREF(__pyx_tuple__189);
65446  __Pyx_GIVEREF(__pyx_tuple__189);
65447  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_findWindow, 2519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(0, 2519, __pyx_L1_error)
65448 
65449  /* "WaveTools.py":2544
65450  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
65451  *
65452  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
65453  * """Calculates free surface elevation(Timeseries class-window method
65454  * Parameters
65455  */
65456  __pyx_tuple__191 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__191)) __PYX_ERR(0, 2544, __pyx_L1_error)
65457  __Pyx_GOTREF(__pyx_tuple__191);
65458  __Pyx_GIVEREF(__pyx_tuple__191);
65459  __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__191, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_etaWindow, 2544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(0, 2544, __pyx_L1_error)
65460 
65461  /* "WaveTools.py":2566
65462  *
65463  *
65464  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
65465  * """Calculates wave velocity vector (Timeseries class-window method)
65466  * Parameters
65467  */
65468  __pyx_tuple__193 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx, __pyx_n_s_cppU, __pyx_n_s_ii, __pyx_n_s_U); if (unlikely(!__pyx_tuple__193)) __PYX_ERR(0, 2566, __pyx_L1_error)
65469  __Pyx_GOTREF(__pyx_tuple__193);
65470  __Pyx_GIVEREF(__pyx_tuple__193);
65471  __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__193, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_uWindow, 2566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(0, 2566, __pyx_L1_error)
65472 
65473  /* "(tree fragment)":1
65474  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65475  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
65476  * def __setstate_cython__(self, __pyx_state):
65477  */
65478  __pyx_tuple__195 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__195)) __PYX_ERR(1, 1, __pyx_L1_error)
65479  __Pyx_GOTREF(__pyx_tuple__195);
65480  __Pyx_GIVEREF(__pyx_tuple__195);
65481  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__195, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(1, 1, __pyx_L1_error)
65482 
65483  /* "(tree fragment)":3
65484  * def __reduce_cython__(self):
65485  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
65486  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65487  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
65488  */
65489  __pyx_tuple__197 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__197)) __PYX_ERR(1, 3, __pyx_L1_error)
65490  __Pyx_GOTREF(__pyx_tuple__197);
65491  __Pyx_GIVEREF(__pyx_tuple__197);
65492  __pyx_codeobj__198 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__197, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(1, 3, __pyx_L1_error)
65493 
65494  /* "WaveTools.py":2596
65495  *
65496  *
65497  * class RandomWavesFast(object): # <<<<<<<<<<<<<<
65498  * """
65499  * This class is used for generating plane random waves in an optimised manner
65500  */
65501  __pyx_tuple__199 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__199)) __PYX_ERR(0, 2596, __pyx_L1_error)
65502  __Pyx_GOTREF(__pyx_tuple__199);
65503  __Pyx_GIVEREF(__pyx_tuple__199);
65504 
65505  /* "WaveTools.py":2647
65506  * """
65507  *
65508  * def __init__(self, # <<<<<<<<<<<<<<
65509  * Tstart,
65510  * Tend,
65511  */
65512  __pyx_tuple__200 = PyTuple_Pack(35, __pyx_n_s_self, __pyx_n_s_Tstart, __pyx_n_s_Tend, __pyx_n_s_x0, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spectral_params, __pyx_n_s_phi, __pyx_n_s_Lgen, __pyx_n_s_Nwaves, __pyx_n_s_Nfreq, __pyx_n_s_checkAcc, __pyx_n_s_fast, __pyx_n_s_RW, __pyx_n_s_cutoff_win, __pyx_n_s_overl, __pyx_n_s_fname, __pyx_n_s_duration, __pyx_n_s_Tm, __pyx_n_s_Nwaves_tot, __pyx_n_s_TS, __pyx_n_s_cut, __pyx_n_s_ts, __pyx_n_s_te, __pyx_n_s_i1, __pyx_n_s_i2, __pyx_n_s_errors, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(0, 2647, __pyx_L1_error)
65513  __Pyx_GOTREF(__pyx_tuple__200);
65514  __Pyx_GIVEREF(__pyx_tuple__200);
65515  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(20, 0, 35, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_init, 2647, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(0, 2647, __pyx_L1_error)
65516  __pyx_tuple__202 = PyTuple_Pack(7, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)__pyx_int_15), ((PyObject *)__pyx_int_32), ((PyObject *)Py_True), ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(0, 2647, __pyx_L1_error)
65517  __Pyx_GOTREF(__pyx_tuple__202);
65518  __Pyx_GIVEREF(__pyx_tuple__202);
65519 
65520  /* "WaveTools.py":2750
65521  * self.windOut = TS.windOut
65522  *
65523  * def printOut(self): # <<<<<<<<<<<<<<
65524  * """Prints some properties of the time series - ONLY FOR TESTING
65525  *
65526  */
65527  __pyx_tuple__203 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__203)) __PYX_ERR(0, 2750, __pyx_L1_error)
65528  __Pyx_GOTREF(__pyx_tuple__203);
65529  __Pyx_GIVEREF(__pyx_tuple__203);
65530  __pyx_codeobj__204 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_printOut, 2750, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(0, 2750, __pyx_L1_error)
65531 
65532  /* "WaveTools.py":2861
65533  * def _cpp_eta_2ndOrder(self,x,t):
65534  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast)
65535  * def eta_2ndOrder(self,x,t): # <<<<<<<<<<<<<<
65536  * """Calculates the free surface elevation for 2nd-order terms
65537  *
65538  */
65539  __pyx_tuple__205 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__205)) __PYX_ERR(0, 2861, __pyx_L1_error)
65540  __Pyx_GOTREF(__pyx_tuple__205);
65541  __Pyx_GIVEREF(__pyx_tuple__205);
65542  __pyx_codeobj__206 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__205, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta_2ndOrder, 2861, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) __PYX_ERR(0, 2861, __pyx_L1_error)
65543 
65544  /* "WaveTools.py":2899
65545  *
65546  * #higher harmonics
65547  * def eta_short(self,x,t): # <<<<<<<<<<<<<<
65548  * """Calculates the free surface elevation for higher-order terms
65549  *
65550  */
65551  __pyx_tuple__207 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__207)) __PYX_ERR(0, 2899, __pyx_L1_error)
65552  __Pyx_GOTREF(__pyx_tuple__207);
65553  __Pyx_GIVEREF(__pyx_tuple__207);
65554  __pyx_codeobj__208 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__207, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta_short, 2899, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__208)) __PYX_ERR(0, 2899, __pyx_L1_error)
65555 
65556  /* "WaveTools.py":2940
65557  *
65558  * #lower harmonics
65559  * def eta_long(self,x,t): # <<<<<<<<<<<<<<
65560  * """Calculates the free surface elevation for lower-order terms
65561  *
65562  */
65563  __pyx_tuple__209 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_xx); if (unlikely(!__pyx_tuple__209)) __PYX_ERR(0, 2940, __pyx_L1_error)
65564  __Pyx_GOTREF(__pyx_tuple__209);
65565  __Pyx_GIVEREF(__pyx_tuple__209);
65566  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta_long, 2940, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) __PYX_ERR(0, 2940, __pyx_L1_error)
65567 
65568  /* "WaveTools.py":2979
65569  *
65570  * #set-up calculation
65571  * def eta_setUp(self,x,t): # <<<<<<<<<<<<<<
65572  * """Calculates the free surface elevation set up
65573  *
65574  */
65575  __pyx_tuple__211 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_EtasetUp, __pyx_n_s_i, __pyx_n_s_wwi_setUp); if (unlikely(!__pyx_tuple__211)) __PYX_ERR(0, 2979, __pyx_L1_error)
65576  __Pyx_GOTREF(__pyx_tuple__211);
65577  __Pyx_GIVEREF(__pyx_tuple__211);
65578  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__211, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta_setUp, 2979, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(0, 2979, __pyx_L1_error)
65579 
65580  /* "WaveTools.py":3008
65581  *
65582  * #overall free surface elevation
65583  * def eta_overall(self,x,t,setUp=False): # <<<<<<<<<<<<<<
65584  * """Calculates the free surface elevation with 2nd order corrections
65585  *
65586  */
65587  __pyx_tuple__213 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_setUp, __pyx_n_s_xx, __pyx_n_s_Etaoverall); if (unlikely(!__pyx_tuple__213)) __PYX_ERR(0, 3008, __pyx_L1_error)
65588  __Pyx_GOTREF(__pyx_tuple__213);
65589  __Pyx_GIVEREF(__pyx_tuple__213);
65590  __pyx_codeobj__214 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__213, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta_overall, 3008, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__214)) __PYX_ERR(0, 3008, __pyx_L1_error)
65591 
65592  /* "WaveTools.py":3037
65593  *
65594  *
65595  * def writeEtaSeries(self,Tstart,Tend,dt,x0,fname, mode="all",setUp=False, Lgen=np.zeros(3,)): # <<<<<<<<<<<<<<
65596  * """Writes a timeseries of the free-surface elevation
65597  *
65598  */
65599  __pyx_tuple__215 = PyTuple_Pack(1, __pyx_int_3); if (unlikely(!__pyx_tuple__215)) __PYX_ERR(0, 3037, __pyx_L1_error)
65600  __Pyx_GOTREF(__pyx_tuple__215);
65601  __Pyx_GIVEREF(__pyx_tuple__215);
65602  __pyx_tuple__216 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_Tstart, __pyx_n_s_Tend, __pyx_n_s_dt, __pyx_n_s_x0, __pyx_n_s_fname, __pyx_n_s_mode, __pyx_n_s_setUp, __pyx_n_s_Lgen, __pyx_n_s_Tlag, __pyx_n_s_j, __pyx_n_s_Nseries, __pyx_n_s_timelst, __pyx_n_s_series, __pyx_n_s_i, __pyx_n_s_time, __pyx_n_s_delimiter); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(0, 3037, __pyx_L1_error)
65603  __Pyx_GOTREF(__pyx_tuple__216);
65604  __Pyx_GIVEREF(__pyx_tuple__216);
65605  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(9, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_writeEtaSeries, 3037, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(0, 3037, __pyx_L1_error)
65606 
65607  /* "WaveTools.py":3104
65608  * return series
65609  *
65610  * def wtError(self,x,t): # <<<<<<<<<<<<<<
65611  * """Raises error for using RandomNLWavesFast class instead
65612  *
65613  */
65614  __pyx_tuple__218 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(0, 3104, __pyx_L1_error)
65615  __Pyx_GOTREF(__pyx_tuple__218);
65616  __Pyx_GIVEREF(__pyx_tuple__218);
65617  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_wtError, 3104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(0, 3104, __pyx_L1_error)
65618 
65619  /* "(tree fragment)":1
65620  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
65621  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
65622  * def __setstate_cython__(self, __pyx_state):
65623  */
65624  __pyx_tuple__220 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(1, 1, __pyx_L1_error)
65625  __Pyx_GOTREF(__pyx_tuple__220);
65626  __Pyx_GIVEREF(__pyx_tuple__220);
65627  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__220, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(1, 1, __pyx_L1_error)
65628 
65629  /* "(tree fragment)":3
65630  * def __reduce_cython__(self):
65631  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
65632  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
65633  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
65634  */
65635  __pyx_tuple__222 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(1, 3, __pyx_L1_error)
65636  __Pyx_GOTREF(__pyx_tuple__222);
65637  __Pyx_GIVEREF(__pyx_tuple__222);
65638  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(1, 3, __pyx_L1_error)
65639 
65640  /* "WaveTools.py":3130
65641  *
65642  *
65643  * class RandomNLWavesFast(object): # <<<<<<<<<<<<<<
65644  * """
65645  * This class is used for generating plane random waves with 2ns order correction in an optimised manner
65646  */
65647  __pyx_tuple__224 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(0, 3130, __pyx_L1_error)
65648  __Pyx_GOTREF(__pyx_tuple__224);
65649  __Pyx_GIVEREF(__pyx_tuple__224);
65650 
65651  /* "WaveTools.py":3180
65652  * Switch for enabling optimised functions
65653  * """
65654  * def __init__(self, # <<<<<<<<<<<<<<
65655  * Tstart,
65656  * Tend,
65657  */
65658  __pyx_tuple__225 = PyTuple_Pack(35, __pyx_n_s_self, __pyx_n_s_Tstart, __pyx_n_s_Tend, __pyx_n_s_x0, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spectral_params, __pyx_n_s_phi, __pyx_n_s_Lgen, __pyx_n_s_Nwaves, __pyx_n_s_Nfreq, __pyx_n_s_NLongW, __pyx_n_s_fast, __pyx_n_s_aR, __pyx_n_s_aRN, __pyx_n_s_Tmax, __pyx_n_s_modes, __pyx_n_s_periods, __pyx_n_s_ii, __pyx_n_s_mode, __pyx_n_s_fname, __pyx_n_s_dt, __pyx_n_s_series, __pyx_n_s_Tstart_temp, __pyx_n_s_cutoff, __pyx_n_s_Nwaves_tot, __pyx_n_s_Nwind, __pyx_n_s_rec_d); if (unlikely(!__pyx_tuple__225)) __PYX_ERR(0, 3180, __pyx_L1_error)
65659  __Pyx_GOTREF(__pyx_tuple__225);
65660  __Pyx_GIVEREF(__pyx_tuple__225);
65661  __pyx_codeobj__226 = (PyObject*)__Pyx_PyCode_New(20, 0, 35, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_init, 3180, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__226)) __PYX_ERR(0, 3180, __pyx_L1_error)
65662 
65663  /* "WaveTools.py":3249
65664  *
65665  *
65666  * def eta(self,x,t): # <<<<<<<<<<<<<<
65667  * """Calculates free surface elevation (RandomNLWavesFast class)
65668  * Parameters
65669  */
65670  __pyx_tuple__227 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_etaR); if (unlikely(!__pyx_tuple__227)) __PYX_ERR(0, 3249, __pyx_L1_error)
65671  __Pyx_GOTREF(__pyx_tuple__227);
65672  __Pyx_GIVEREF(__pyx_tuple__227);
65673  __pyx_codeobj__228 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 3249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__228)) __PYX_ERR(0, 3249, __pyx_L1_error)
65674 
65675  /* "WaveTools.py":3268
65676  *
65677  *
65678  * def u(self,x,t): # <<<<<<<<<<<<<<
65679  * """Calculates wave velocity vector (RandomNLWavesFast class)
65680  * Parameters
65681  */
65682  __pyx_tuple__229 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_uR); if (unlikely(!__pyx_tuple__229)) __PYX_ERR(0, 3268, __pyx_L1_error)
65683  __Pyx_GOTREF(__pyx_tuple__229);
65684  __Pyx_GIVEREF(__pyx_tuple__229);
65685  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__229, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 3268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(0, 3268, __pyx_L1_error)
65686 
65687  /* "WaveTools.py":3286
65688  * return uR
65689  *
65690  * class CombineWaves(object): # <<<<<<<<<<<<<<
65691  * """
65692  * This class is used for combining multiple waveTools classes, thus allowing for the generation of complex wave conditions
65693  */
65694  __pyx_tuple__231 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__231)) __PYX_ERR(0, 3286, __pyx_L1_error)
65695  __Pyx_GOTREF(__pyx_tuple__231);
65696  __Pyx_GIVEREF(__pyx_tuple__231);
65697 
65698  /* "WaveTools.py":3295
65699  * List of wave classes
65700  * """
65701  * def __init__(self,waveList): # <<<<<<<<<<<<<<
65702  * try:
65703  * for condition in waveList:
65704  */
65705  __pyx_tuple__232 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_waveList, __pyx_n_s_condition, __pyx_n_s_etaCheck, __pyx_n_s_uCheck); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(0, 3295, __pyx_L1_error)
65706  __Pyx_GOTREF(__pyx_tuple__232);
65707  __Pyx_GIVEREF(__pyx_tuple__232);
65708  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_init, 3295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(0, 3295, __pyx_L1_error)
65709 
65710  /* "WaveTools.py":3310
65711  * self.waveList = waveList
65712  * self.mwl = waveList[0].mwl
65713  * def eta(self,x,t): # <<<<<<<<<<<<<<
65714  * """
65715  * Calculates free surface elevation (combineWaves class)
65716  */
65717  __pyx_tuple__234 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_eta, __pyx_n_s_cond); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(0, 3310, __pyx_L1_error)
65718  __Pyx_GOTREF(__pyx_tuple__234);
65719  __Pyx_GIVEREF(__pyx_tuple__234);
65720  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_eta, 3310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(0, 3310, __pyx_L1_error)
65721 
65722  /* "WaveTools.py":3331
65723  * return eta
65724  *
65725  * def u(self,x,t): # <<<<<<<<<<<<<<
65726  * """
65727  * Calculates wave particle velocity (combineWaves class)
65728  */
65729  __pyx_tuple__236 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_u, __pyx_n_s_cond); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(0, 3331, __pyx_L1_error)
65730  __Pyx_GOTREF(__pyx_tuple__236);
65731  __Pyx_GIVEREF(__pyx_tuple__236);
65732  __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_WaveTools_py, __pyx_n_s_u, 3331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(0, 3331, __pyx_L1_error)
65733 
65734  /* "(tree fragment)":1
65735  * def __pyx_unpickle_SteadyCurrent(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
65736  * cdef object __pyx_PickleError
65737  * cdef object __pyx_result
65738  */
65739  __pyx_tuple__238 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(1, 1, __pyx_L1_error)
65740  __Pyx_GOTREF(__pyx_tuple__238);
65741  __Pyx_GIVEREF(__pyx_tuple__238);
65742  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SteadyCurrent, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(1, 1, __pyx_L1_error)
65743  __pyx_tuple__240 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__240)) __PYX_ERR(1, 1, __pyx_L1_error)
65744  __Pyx_GOTREF(__pyx_tuple__240);
65745  __Pyx_GIVEREF(__pyx_tuple__240);
65746  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__240, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_SolitaryWave, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(1, 1, __pyx_L1_error)
65747  __Pyx_RefNannyFinishContext();
65748  return 0;
65749  __pyx_L1_error:;
65750  __Pyx_RefNannyFinishContext();
65751  return -1;
65752 }
65753 
65754 static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
65755  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 2, __pyx_L1_error);
65756  __pyx_float_0_ = PyFloat_FromDouble(0.); if (unlikely(!__pyx_float_0_)) __PYX_ERR(0, 2, __pyx_L1_error)
65757  __pyx_float_1_ = PyFloat_FromDouble(1.); if (unlikely(!__pyx_float_1_)) __PYX_ERR(0, 2, __pyx_L1_error)
65758  __pyx_float_2_ = PyFloat_FromDouble(2.); if (unlikely(!__pyx_float_2_)) __PYX_ERR(0, 2, __pyx_L1_error)
65759  __pyx_float_4_ = PyFloat_FromDouble(4.); if (unlikely(!__pyx_float_4_)) __PYX_ERR(0, 2, __pyx_L1_error)
65760  __pyx_float_0_1 = PyFloat_FromDouble(0.1); if (unlikely(!__pyx_float_0_1)) __PYX_ERR(0, 2, __pyx_L1_error)
65761  __pyx_float_0_2 = PyFloat_FromDouble(0.2); if (unlikely(!__pyx_float_0_2)) __PYX_ERR(0, 2, __pyx_L1_error)
65762  __pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) __PYX_ERR(0, 2, __pyx_L1_error)
65763  __pyx_float_0_7 = PyFloat_FromDouble(0.7); if (unlikely(!__pyx_float_0_7)) __PYX_ERR(0, 2, __pyx_L1_error)
65764  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65765  __pyx_float_1_1 = PyFloat_FromDouble(1.1); if (unlikely(!__pyx_float_1_1)) __PYX_ERR(0, 2, __pyx_L1_error)
65766  __pyx_float_1_5 = PyFloat_FromDouble(1.5); if (unlikely(!__pyx_float_1_5)) __PYX_ERR(0, 2, __pyx_L1_error)
65767  __pyx_float_1_9 = PyFloat_FromDouble(1.9); if (unlikely(!__pyx_float_1_9)) __PYX_ERR(0, 2, __pyx_L1_error)
65768  __pyx_float_10_ = PyFloat_FromDouble(10.); if (unlikely(!__pyx_float_10_)) __PYX_ERR(0, 2, __pyx_L1_error)
65769  __pyx_float_16_ = PyFloat_FromDouble(16.); if (unlikely(!__pyx_float_16_)) __PYX_ERR(0, 2, __pyx_L1_error)
65770  __pyx_float_2_0 = PyFloat_FromDouble(2.0); if (unlikely(!__pyx_float_2_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65771  __pyx_float_3_0 = PyFloat_FromDouble(3.0); if (unlikely(!__pyx_float_3_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65772  __pyx_float_3_3 = PyFloat_FromDouble(3.3); if (unlikely(!__pyx_float_3_3)) __PYX_ERR(0, 2, __pyx_L1_error)
65773  __pyx_float_4_0 = PyFloat_FromDouble(4.0); if (unlikely(!__pyx_float_4_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65774  __pyx_float_5_0 = PyFloat_FromDouble(5.0); if (unlikely(!__pyx_float_5_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65775  __pyx_float_50_ = PyFloat_FromDouble(50.); if (unlikely(!__pyx_float_50_)) __PYX_ERR(0, 2, __pyx_L1_error)
65776  __pyx_float_0_01 = PyFloat_FromDouble(0.01); if (unlikely(!__pyx_float_0_01)) __PYX_ERR(0, 2, __pyx_L1_error)
65777  __pyx_float_0_07 = PyFloat_FromDouble(0.07); if (unlikely(!__pyx_float_0_07)) __PYX_ERR(0, 2, __pyx_L1_error)
65778  __pyx_float_0_09 = PyFloat_FromDouble(0.09); if (unlikely(!__pyx_float_0_09)) __PYX_ERR(0, 2, __pyx_L1_error)
65779  __pyx_float_0_23 = PyFloat_FromDouble(0.23); if (unlikely(!__pyx_float_0_23)) __PYX_ERR(0, 2, __pyx_L1_error)
65780  __pyx_float_16_0 = PyFloat_FromDouble(16.0); if (unlikely(!__pyx_float_16_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65781  __pyx_float_9_81 = PyFloat_FromDouble(9.81); if (unlikely(!__pyx_float_9_81)) __PYX_ERR(0, 2, __pyx_L1_error)
65782  __pyx_float_0_185 = PyFloat_FromDouble(0.185); if (unlikely(!__pyx_float_0_185)) __PYX_ERR(0, 2, __pyx_L1_error)
65783  __pyx_float_1eneg_05 = PyFloat_FromDouble(1e-05); if (unlikely(!__pyx_float_1eneg_05)) __PYX_ERR(0, 2, __pyx_L1_error)
65784  __pyx_float_1eneg_10 = PyFloat_FromDouble(1e-10); if (unlikely(!__pyx_float_1eneg_10)) __PYX_ERR(0, 2, __pyx_L1_error)
65785  __pyx_float_0_0336 = PyFloat_FromDouble(0.0336); if (unlikely(!__pyx_float_0_0336)) __PYX_ERR(0, 2, __pyx_L1_error)
65786  __pyx_float_neg_2_5 = PyFloat_FromDouble(-2.5); if (unlikely(!__pyx_float_neg_2_5)) __PYX_ERR(0, 2, __pyx_L1_error)
65787  __pyx_float_neg_5_0 = PyFloat_FromDouble(-5.0); if (unlikely(!__pyx_float_neg_5_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65788  __pyx_float_neg_1_25 = PyFloat_FromDouble(-1.25); if (unlikely(!__pyx_float_neg_1_25)) __PYX_ERR(0, 2, __pyx_L1_error)
65789  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 2, __pyx_L1_error)
65790  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 2, __pyx_L1_error)
65791  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 2, __pyx_L1_error)
65792  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 2, __pyx_L1_error)
65793  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 2, __pyx_L1_error)
65794  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 2, __pyx_L1_error)
65795  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) __PYX_ERR(0, 2, __pyx_L1_error)
65796  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) __PYX_ERR(0, 2, __pyx_L1_error)
65797  __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 2, __pyx_L1_error)
65798  __pyx_int_20 = PyInt_FromLong(20); if (unlikely(!__pyx_int_20)) __PYX_ERR(0, 2, __pyx_L1_error)
65799  __pyx_int_32 = PyInt_FromLong(32); if (unlikely(!__pyx_int_32)) __PYX_ERR(0, 2, __pyx_L1_error)
65800  __pyx_int_40 = PyInt_FromLong(40); if (unlikely(!__pyx_int_40)) __PYX_ERR(0, 2, __pyx_L1_error)
65801  __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) __PYX_ERR(0, 2, __pyx_L1_error)
65802  __pyx_int_999 = PyInt_FromLong(999); if (unlikely(!__pyx_int_999)) __PYX_ERR(0, 2, __pyx_L1_error)
65803  __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) __PYX_ERR(0, 2, __pyx_L1_error)
65804  __pyx_int_68501386 = PyInt_FromLong(68501386L); if (unlikely(!__pyx_int_68501386)) __PYX_ERR(0, 2, __pyx_L1_error)
65805  __pyx_int_114894826 = PyInt_FromLong(114894826L); if (unlikely(!__pyx_int_114894826)) __PYX_ERR(0, 2, __pyx_L1_error)
65806  __pyx_int_161707632 = PyInt_FromLong(161707632L); if (unlikely(!__pyx_int_161707632)) __PYX_ERR(0, 2, __pyx_L1_error)
65807  __pyx_int_235956263 = PyInt_FromLong(235956263L); if (unlikely(!__pyx_int_235956263)) __PYX_ERR(0, 2, __pyx_L1_error)
65808  __pyx_int_237135047 = PyInt_FromLong(237135047L); if (unlikely(!__pyx_int_237135047)) __PYX_ERR(0, 2, __pyx_L1_error)
65809  __pyx_int_247220107 = PyInt_FromLong(247220107L); if (unlikely(!__pyx_int_247220107)) __PYX_ERR(0, 2, __pyx_L1_error)
65810  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 2, __pyx_L1_error)
65811  __pyx_int_neg_4 = PyInt_FromLong(-4); if (unlikely(!__pyx_int_neg_4)) __PYX_ERR(0, 2, __pyx_L1_error)
65812  return 0;
65813  __pyx_L1_error:;
65814  return -1;
65815 }
65816 
65817 static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
65818 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
65819 static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
65820 static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
65821 static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
65822 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
65823 static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
65824 
65825 static int __Pyx_modinit_global_init_code(void) {
65826  __Pyx_RefNannyDeclarations
65827  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
65828  /*--- Global init code ---*/
65829  __Pyx_RefNannyFinishContext();
65830  return 0;
65831 }
65832 
65833 static int __Pyx_modinit_variable_export_code(void) {
65834  __Pyx_RefNannyDeclarations
65835  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
65836  /*--- Variable export code ---*/
65837  __Pyx_RefNannyFinishContext();
65838  return 0;
65839 }
65840 
65841 static int __Pyx_modinit_function_export_code(void) {
65842  __Pyx_RefNannyDeclarations
65843  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
65844  /*--- Function export code ---*/
65845  __Pyx_RefNannyFinishContext();
65846  return 0;
65847 }
65848 
65849 static int __Pyx_modinit_type_init_code(void) {
65850  __Pyx_RefNannyDeclarations
65851  int __pyx_lineno = 0;
65852  const char *__pyx_filename = NULL;
65853  int __pyx_clineno = 0;
65854  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
65855  /*--- Type init code ---*/
65856  if (PyType_Ready(&__pyx_type_9WaveTools_SteadyCurrent) < 0) __PYX_ERR(0, 706, __pyx_L1_error)
65857  #if PY_VERSION_HEX < 0x030800B1
65858  __pyx_type_9WaveTools_SteadyCurrent.tp_print = 0;
65859  #endif
65860  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_SteadyCurrent.tp_dictoffset && __pyx_type_9WaveTools_SteadyCurrent.tp_getattro == PyObject_GenericGetAttr)) {
65861  __pyx_type_9WaveTools_SteadyCurrent.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65862  }
65863  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SteadyCurrent, (PyObject *)&__pyx_type_9WaveTools_SteadyCurrent) < 0) __PYX_ERR(0, 706, __pyx_L1_error)
65864  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_SteadyCurrent) < 0) __PYX_ERR(0, 706, __pyx_L1_error)
65865  __pyx_ptype_9WaveTools_SteadyCurrent = &__pyx_type_9WaveTools_SteadyCurrent;
65866  if (PyType_Ready(&__pyx_type_9WaveTools_SolitaryWave) < 0) __PYX_ERR(0, 776, __pyx_L1_error)
65867  #if PY_VERSION_HEX < 0x030800B1
65868  __pyx_type_9WaveTools_SolitaryWave.tp_print = 0;
65869  #endif
65870  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_SolitaryWave.tp_dictoffset && __pyx_type_9WaveTools_SolitaryWave.tp_getattro == PyObject_GenericGetAttr)) {
65871  __pyx_type_9WaveTools_SolitaryWave.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65872  }
65873  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SolitaryWave, (PyObject *)&__pyx_type_9WaveTools_SolitaryWave) < 0) __PYX_ERR(0, 776, __pyx_L1_error)
65874  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_SolitaryWave) < 0) __PYX_ERR(0, 776, __pyx_L1_error)
65875  __pyx_ptype_9WaveTools_SolitaryWave = &__pyx_type_9WaveTools_SolitaryWave;
65876  __pyx_vtabptr_9WaveTools_MonochromaticWaves = &__pyx_vtable_9WaveTools_MonochromaticWaves;
65877  __pyx_vtable_9WaveTools_MonochromaticWaves.etaLinear = (double (*)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double))__pyx_f_9WaveTools_18MonochromaticWaves_etaLinear;
65878  __pyx_vtable_9WaveTools_MonochromaticWaves.etaFenton = (double (*)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double))__pyx_f_9WaveTools_18MonochromaticWaves_etaFenton;
65879  __pyx_vtable_9WaveTools_MonochromaticWaves.uLinear = (void (*)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double))__pyx_f_9WaveTools_18MonochromaticWaves_uLinear;
65880  __pyx_vtable_9WaveTools_MonochromaticWaves.uFenton = (void (*)(struct __pyx_obj_9WaveTools_MonochromaticWaves *, double *, double *, double))__pyx_f_9WaveTools_18MonochromaticWaves_uFenton;
65881  if (PyType_Ready(&__pyx_type_9WaveTools_MonochromaticWaves) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
65882  #if PY_VERSION_HEX < 0x030800B1
65883  __pyx_type_9WaveTools_MonochromaticWaves.tp_print = 0;
65884  #endif
65885  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_MonochromaticWaves.tp_dictoffset && __pyx_type_9WaveTools_MonochromaticWaves.tp_getattro == PyObject_GenericGetAttr)) {
65886  __pyx_type_9WaveTools_MonochromaticWaves.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65887  }
65888  if (__Pyx_SetVtable(__pyx_type_9WaveTools_MonochromaticWaves.tp_dict, __pyx_vtabptr_9WaveTools_MonochromaticWaves) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
65889  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MonochromaticWaves, (PyObject *)&__pyx_type_9WaveTools_MonochromaticWaves) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
65890  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_MonochromaticWaves) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
65891  __pyx_ptype_9WaveTools_MonochromaticWaves = &__pyx_type_9WaveTools_MonochromaticWaves;
65892  __pyx_vtabptr_9WaveTools_NewWave = &__pyx_vtable_9WaveTools_NewWave;
65893  __pyx_vtable_9WaveTools_NewWave._cpp_eta = (double (*)(struct __pyx_obj_9WaveTools_NewWave *, double *, double))__pyx_f_9WaveTools_7NewWave__cpp_eta;
65894  __pyx_vtable_9WaveTools_NewWave._cpp_u = (void (*)(struct __pyx_obj_9WaveTools_NewWave *, double *, double *, double))__pyx_f_9WaveTools_7NewWave__cpp_u;
65895  if (PyType_Ready(&__pyx_type_9WaveTools_NewWave) < 0) __PYX_ERR(0, 1165, __pyx_L1_error)
65896  #if PY_VERSION_HEX < 0x030800B1
65897  __pyx_type_9WaveTools_NewWave.tp_print = 0;
65898  #endif
65899  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_NewWave.tp_dictoffset && __pyx_type_9WaveTools_NewWave.tp_getattro == PyObject_GenericGetAttr)) {
65900  __pyx_type_9WaveTools_NewWave.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65901  }
65902  if (__Pyx_SetVtable(__pyx_type_9WaveTools_NewWave.tp_dict, __pyx_vtabptr_9WaveTools_NewWave) < 0) __PYX_ERR(0, 1165, __pyx_L1_error)
65903  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NewWave, (PyObject *)&__pyx_type_9WaveTools_NewWave) < 0) __PYX_ERR(0, 1165, __pyx_L1_error)
65904  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_NewWave) < 0) __PYX_ERR(0, 1165, __pyx_L1_error)
65905  __pyx_ptype_9WaveTools_NewWave = &__pyx_type_9WaveTools_NewWave;
65906  __pyx_vtabptr_9WaveTools_RandomWaves = &__pyx_vtable_9WaveTools_RandomWaves;
65907  __pyx_vtable_9WaveTools_RandomWaves._cpp_eta = (double (*)(struct __pyx_obj_9WaveTools_RandomWaves *, double *, double))__pyx_f_9WaveTools_11RandomWaves__cpp_eta;
65908  __pyx_vtable_9WaveTools_RandomWaves._cpp_u = (void (*)(struct __pyx_obj_9WaveTools_RandomWaves *, double *, double *, double))__pyx_f_9WaveTools_11RandomWaves__cpp_u;
65909  if (PyType_Ready(&__pyx_type_9WaveTools_RandomWaves) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
65910  #if PY_VERSION_HEX < 0x030800B1
65911  __pyx_type_9WaveTools_RandomWaves.tp_print = 0;
65912  #endif
65913  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_RandomWaves.tp_dictoffset && __pyx_type_9WaveTools_RandomWaves.tp_getattro == PyObject_GenericGetAttr)) {
65914  __pyx_type_9WaveTools_RandomWaves.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65915  }
65916  if (__Pyx_SetVtable(__pyx_type_9WaveTools_RandomWaves.tp_dict, __pyx_vtabptr_9WaveTools_RandomWaves) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
65917  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RandomWaves, (PyObject *)&__pyx_type_9WaveTools_RandomWaves) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
65918  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_RandomWaves) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
65919  __pyx_ptype_9WaveTools_RandomWaves = &__pyx_type_9WaveTools_RandomWaves;
65920  __pyx_vtabptr_9WaveTools_MultiSpectraRandomWaves = &__pyx_vtable_9WaveTools_MultiSpectraRandomWaves;
65921  __pyx_vtable_9WaveTools_MultiSpectraRandomWaves._cpp_eta = (double (*)(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *, double *, double))__pyx_f_9WaveTools_23MultiSpectraRandomWaves__cpp_eta;
65922  __pyx_vtable_9WaveTools_MultiSpectraRandomWaves._cpp_u = (void (*)(struct __pyx_obj_9WaveTools_MultiSpectraRandomWaves *, double *, double *, double))__pyx_f_9WaveTools_23MultiSpectraRandomWaves__cpp_u;
65923  if (PyType_Ready(&__pyx_type_9WaveTools_MultiSpectraRandomWaves) < 0) __PYX_ERR(0, 1658, __pyx_L1_error)
65924  #if PY_VERSION_HEX < 0x030800B1
65925  __pyx_type_9WaveTools_MultiSpectraRandomWaves.tp_print = 0;
65926  #endif
65927  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_MultiSpectraRandomWaves.tp_dictoffset && __pyx_type_9WaveTools_MultiSpectraRandomWaves.tp_getattro == PyObject_GenericGetAttr)) {
65928  __pyx_type_9WaveTools_MultiSpectraRandomWaves.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65929  }
65930  if (__Pyx_SetVtable(__pyx_type_9WaveTools_MultiSpectraRandomWaves.tp_dict, __pyx_vtabptr_9WaveTools_MultiSpectraRandomWaves) < 0) __PYX_ERR(0, 1658, __pyx_L1_error)
65931  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MultiSpectraRandomWaves, (PyObject *)&__pyx_type_9WaveTools_MultiSpectraRandomWaves) < 0) __PYX_ERR(0, 1658, __pyx_L1_error)
65932  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_MultiSpectraRandomWaves) < 0) __PYX_ERR(0, 1658, __pyx_L1_error)
65933  __pyx_ptype_9WaveTools_MultiSpectraRandomWaves = &__pyx_type_9WaveTools_MultiSpectraRandomWaves;
65934  __pyx_vtabptr_9WaveTools_DirectionalWaves = &__pyx_vtable_9WaveTools_DirectionalWaves;
65935  __pyx_vtable_9WaveTools_DirectionalWaves._cpp_eta = (double (*)(struct __pyx_obj_9WaveTools_DirectionalWaves *, double *, double))__pyx_f_9WaveTools_16DirectionalWaves__cpp_eta;
65936  __pyx_vtable_9WaveTools_DirectionalWaves._cpp_u = (void (*)(struct __pyx_obj_9WaveTools_DirectionalWaves *, double *, double *, double))__pyx_f_9WaveTools_16DirectionalWaves__cpp_u;
65937  if (PyType_Ready(&__pyx_type_9WaveTools_DirectionalWaves) < 0) __PYX_ERR(0, 1853, __pyx_L1_error)
65938  #if PY_VERSION_HEX < 0x030800B1
65939  __pyx_type_9WaveTools_DirectionalWaves.tp_print = 0;
65940  #endif
65941  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_DirectionalWaves.tp_dictoffset && __pyx_type_9WaveTools_DirectionalWaves.tp_getattro == PyObject_GenericGetAttr)) {
65942  __pyx_type_9WaveTools_DirectionalWaves.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65943  }
65944  if (__Pyx_SetVtable(__pyx_type_9WaveTools_DirectionalWaves.tp_dict, __pyx_vtabptr_9WaveTools_DirectionalWaves) < 0) __PYX_ERR(0, 1853, __pyx_L1_error)
65945  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DirectionalWaves, (PyObject *)&__pyx_type_9WaveTools_DirectionalWaves) < 0) __PYX_ERR(0, 1853, __pyx_L1_error)
65946  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_DirectionalWaves) < 0) __PYX_ERR(0, 1853, __pyx_L1_error)
65947  __pyx_ptype_9WaveTools_DirectionalWaves = &__pyx_type_9WaveTools_DirectionalWaves;
65948  __pyx_vtabptr_9WaveTools_TimeSeries = &__pyx_vtable_9WaveTools_TimeSeries;
65949  __pyx_vtable_9WaveTools_TimeSeries._cpp_etaDirect = (double (*)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double))__pyx_f_9WaveTools_10TimeSeries__cpp_etaDirect;
65950  __pyx_vtable_9WaveTools_TimeSeries._cpp_etaWindow = (double (*)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double))__pyx_f_9WaveTools_10TimeSeries__cpp_etaWindow;
65951  __pyx_vtable_9WaveTools_TimeSeries._cpp_uDirect = (void (*)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double))__pyx_f_9WaveTools_10TimeSeries__cpp_uDirect;
65952  __pyx_vtable_9WaveTools_TimeSeries._cpp_uWindow = (void (*)(struct __pyx_obj_9WaveTools_TimeSeries *, double *, double *, double))__pyx_f_9WaveTools_10TimeSeries__cpp_uWindow;
65953  if (PyType_Ready(&__pyx_type_9WaveTools_TimeSeries) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
65954  #if PY_VERSION_HEX < 0x030800B1
65955  __pyx_type_9WaveTools_TimeSeries.tp_print = 0;
65956  #endif
65957  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_TimeSeries.tp_dictoffset && __pyx_type_9WaveTools_TimeSeries.tp_getattro == PyObject_GenericGetAttr)) {
65958  __pyx_type_9WaveTools_TimeSeries.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65959  }
65960  if (__Pyx_SetVtable(__pyx_type_9WaveTools_TimeSeries.tp_dict, __pyx_vtabptr_9WaveTools_TimeSeries) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
65961  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TimeSeries, (PyObject *)&__pyx_type_9WaveTools_TimeSeries) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
65962  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_TimeSeries) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
65963  __pyx_ptype_9WaveTools_TimeSeries = &__pyx_type_9WaveTools_TimeSeries;
65964  __pyx_vtabptr_9WaveTools_RandomNLWaves = &__pyx_vtable_9WaveTools_RandomNLWaves;
65965  __pyx_vtable_9WaveTools_RandomNLWaves._cpp_eta_2ndOrder = (double (*)(struct __pyx_obj_9WaveTools_RandomNLWaves *, double *, double))__pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_2ndOrder;
65966  __pyx_vtable_9WaveTools_RandomNLWaves._cpp_eta_short = (double (*)(struct __pyx_obj_9WaveTools_RandomNLWaves *, double *, double))__pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_short;
65967  __pyx_vtable_9WaveTools_RandomNLWaves._cpp_eta_long = (double (*)(struct __pyx_obj_9WaveTools_RandomNLWaves *, double *, double))__pyx_f_9WaveTools_13RandomNLWaves__cpp_eta_long;
65968  if (PyType_Ready(&__pyx_type_9WaveTools_RandomNLWaves) < 0) __PYX_ERR(0, 2764, __pyx_L1_error)
65969  #if PY_VERSION_HEX < 0x030800B1
65970  __pyx_type_9WaveTools_RandomNLWaves.tp_print = 0;
65971  #endif
65972  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools_RandomNLWaves.tp_dictoffset && __pyx_type_9WaveTools_RandomNLWaves.tp_getattro == PyObject_GenericGetAttr)) {
65973  __pyx_type_9WaveTools_RandomNLWaves.tp_getattro = __Pyx_PyObject_GenericGetAttr;
65974  }
65975  if (__Pyx_SetVtable(__pyx_type_9WaveTools_RandomNLWaves.tp_dict, __pyx_vtabptr_9WaveTools_RandomNLWaves) < 0) __PYX_ERR(0, 2764, __pyx_L1_error)
65976  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RandomNLWaves, (PyObject *)&__pyx_type_9WaveTools_RandomNLWaves) < 0) __PYX_ERR(0, 2764, __pyx_L1_error)
65977  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_9WaveTools_RandomNLWaves) < 0) __PYX_ERR(0, 2764, __pyx_L1_error)
65978  __pyx_ptype_9WaveTools_RandomNLWaves = &__pyx_type_9WaveTools_RandomNLWaves;
65979  if (PyType_Ready(&__pyx_type_9WaveTools___pyx_scope_struct____cinit__) < 0) __PYX_ERR(0, 1204, __pyx_L1_error)
65980  #if PY_VERSION_HEX < 0x030800B1
65981  __pyx_type_9WaveTools___pyx_scope_struct____cinit__.tp_print = 0;
65982  #endif
65983  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools___pyx_scope_struct____cinit__.tp_dictoffset && __pyx_type_9WaveTools___pyx_scope_struct____cinit__.tp_getattro == PyObject_GenericGetAttr)) {
65984  __pyx_type_9WaveTools___pyx_scope_struct____cinit__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
65985  }
65986  __pyx_ptype_9WaveTools___pyx_scope_struct____cinit__ = &__pyx_type_9WaveTools___pyx_scope_struct____cinit__;
65987  if (PyType_Ready(&__pyx_type_9WaveTools___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(0, 1268, __pyx_L1_error)
65988  #if PY_VERSION_HEX < 0x030800B1
65989  __pyx_type_9WaveTools___pyx_scope_struct_1_genexpr.tp_print = 0;
65990  #endif
65991  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_9WaveTools___pyx_scope_struct_1_genexpr.tp_dictoffset && __pyx_type_9WaveTools___pyx_scope_struct_1_genexpr.tp_getattro == PyObject_GenericGetAttr)) {
65992  __pyx_type_9WaveTools___pyx_scope_struct_1_genexpr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
65993  }
65994  __pyx_ptype_9WaveTools___pyx_scope_struct_1_genexpr = &__pyx_type_9WaveTools___pyx_scope_struct_1_genexpr;
65995  __Pyx_RefNannyFinishContext();
65996  return 0;
65997  __pyx_L1_error:;
65998  __Pyx_RefNannyFinishContext();
65999  return -1;
66000 }
66001 
66002 static int __Pyx_modinit_type_import_code(void) {
66003  __Pyx_RefNannyDeclarations
66004  PyObject *__pyx_t_1 = NULL;
66005  int __pyx_lineno = 0;
66006  const char *__pyx_filename = NULL;
66007  int __pyx_clineno = 0;
66008  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
66009  /*--- Type import code ---*/
66010  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 9, __pyx_L1_error)
66011  __Pyx_GOTREF(__pyx_t_1);
66012  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
66013  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
66014  sizeof(PyTypeObject),
66015  #else
66016  sizeof(PyHeapTypeObject),
66017  #endif
66018  __Pyx_ImportType_CheckSize_Warn);
66019  if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(4, 9, __pyx_L1_error)
66020  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66021  __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 200, __pyx_L1_error)
66022  __Pyx_GOTREF(__pyx_t_1);
66023  __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
66024  if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(3, 200, __pyx_L1_error)
66025  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore);
66026  if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(3, 223, __pyx_L1_error)
66027  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore);
66028  if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(3, 227, __pyx_L1_error)
66029  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
66030  if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(3, 239, __pyx_L1_error)
66031  __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66032  if (!__pyx_ptype_5numpy_generic) __PYX_ERR(3, 771, __pyx_L1_error)
66033  __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66034  if (!__pyx_ptype_5numpy_number) __PYX_ERR(3, 773, __pyx_L1_error)
66035  __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66036  if (!__pyx_ptype_5numpy_integer) __PYX_ERR(3, 775, __pyx_L1_error)
66037  __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66038  if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(3, 777, __pyx_L1_error)
66039  __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66040  if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(3, 779, __pyx_L1_error)
66041  __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66042  if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(3, 781, __pyx_L1_error)
66043  __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66044  if (!__pyx_ptype_5numpy_floating) __PYX_ERR(3, 783, __pyx_L1_error)
66045  __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66046  if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(3, 785, __pyx_L1_error)
66047  __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66048  if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(3, 787, __pyx_L1_error)
66049  __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
66050  if (!__pyx_ptype_5numpy_character) __PYX_ERR(3, 789, __pyx_L1_error)
66051  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore);
66052  if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(3, 827, __pyx_L1_error)
66053  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66054  __Pyx_RefNannyFinishContext();
66055  return 0;
66056  __pyx_L1_error:;
66057  __Pyx_XDECREF(__pyx_t_1);
66058  __Pyx_RefNannyFinishContext();
66059  return -1;
66060 }
66061 
66062 static int __Pyx_modinit_variable_import_code(void) {
66063  __Pyx_RefNannyDeclarations
66064  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
66065  /*--- Variable import code ---*/
66066  __Pyx_RefNannyFinishContext();
66067  return 0;
66068 }
66069 
66070 static int __Pyx_modinit_function_import_code(void) {
66071  __Pyx_RefNannyDeclarations
66072  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
66073  /*--- Function import code ---*/
66074  __Pyx_RefNannyFinishContext();
66075  return 0;
66076 }
66077 
66078 
66079 #ifndef CYTHON_NO_PYINIT_EXPORT
66080 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
66081 #elif PY_MAJOR_VERSION < 3
66082 #ifdef __cplusplus
66083 #define __Pyx_PyMODINIT_FUNC extern "C" void
66084 #else
66085 #define __Pyx_PyMODINIT_FUNC void
66086 #endif
66087 #else
66088 #ifdef __cplusplus
66089 #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
66090 #else
66091 #define __Pyx_PyMODINIT_FUNC PyObject *
66092 #endif
66093 #endif
66094 
66095 
66096 #if PY_MAJOR_VERSION < 3
66097 __Pyx_PyMODINIT_FUNC initWaveTools(void) CYTHON_SMALL_CODE; /*proto*/
66098 __Pyx_PyMODINIT_FUNC initWaveTools(void)
66099 #else
66100 __Pyx_PyMODINIT_FUNC PyInit_WaveTools(void) CYTHON_SMALL_CODE; /*proto*/
66101 __Pyx_PyMODINIT_FUNC PyInit_WaveTools(void)
66102 #if CYTHON_PEP489_MULTI_PHASE_INIT
66103 {
66104  return PyModuleDef_Init(&__pyx_moduledef);
66105 }
66106 static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
66107  #if PY_VERSION_HEX >= 0x030700A1
66108  static PY_INT64_T main_interpreter_id = -1;
66109  PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
66110  if (main_interpreter_id == -1) {
66111  main_interpreter_id = current_id;
66112  return (unlikely(current_id == -1)) ? -1 : 0;
66113  } else if (unlikely(main_interpreter_id != current_id))
66114  #else
66115  static PyInterpreterState *main_interpreter = NULL;
66116  PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
66117  if (!main_interpreter) {
66118  main_interpreter = current_interpreter;
66119  } else if (unlikely(main_interpreter != current_interpreter))
66120  #endif
66121  {
66122  PyErr_SetString(
66123  PyExc_ImportError,
66124  "Interpreter change detected - this module can only be loaded into one interpreter per process.");
66125  return -1;
66126  }
66127  return 0;
66128 }
66129 static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
66130  PyObject *value = PyObject_GetAttrString(spec, from_name);
66131  int result = 0;
66132  if (likely(value)) {
66133  if (allow_none || value != Py_None) {
66134  result = PyDict_SetItemString(moddict, to_name, value);
66135  }
66136  Py_DECREF(value);
66137  } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
66138  PyErr_Clear();
66139  } else {
66140  result = -1;
66141  }
66142  return result;
66143 }
66144 static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
66145  PyObject *module = NULL, *moddict, *modname;
66146  if (__Pyx_check_single_interpreter())
66147  return NULL;
66148  if (__pyx_m)
66149  return __Pyx_NewRef(__pyx_m);
66150  modname = PyObject_GetAttrString(spec, "name");
66151  if (unlikely(!modname)) goto bad;
66152  module = PyModule_NewObject(modname);
66153  Py_DECREF(modname);
66154  if (unlikely(!module)) goto bad;
66155  moddict = PyModule_GetDict(module);
66156  if (unlikely(!moddict)) goto bad;
66157  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
66158  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
66159  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
66160  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
66161  return module;
66162 bad:
66163  Py_XDECREF(module);
66164  return NULL;
66165 }
66166 
66167 
66168 static CYTHON_SMALL_CODE int __pyx_pymod_exec_WaveTools(PyObject *__pyx_pyinit_module)
66169 #endif
66170 #endif
66171 {
66172  PyObject *__pyx_t_1 = NULL;
66173  PyObject *__pyx_t_2 = NULL;
66174  PyObject *__pyx_t_3 = NULL;
66175  PyObject *__pyx_t_4 = NULL;
66176  PyObject *__pyx_t_5 = NULL;
66177  PyObject *__pyx_t_6 = NULL;
66178  int __pyx_lineno = 0;
66179  const char *__pyx_filename = NULL;
66180  int __pyx_clineno = 0;
66181  __Pyx_RefNannyDeclarations
66182  #if CYTHON_PEP489_MULTI_PHASE_INIT
66183  if (__pyx_m) {
66184  if (__pyx_m == __pyx_pyinit_module) return 0;
66185  PyErr_SetString(PyExc_RuntimeError, "Module 'WaveTools' has already been imported. Re-initialisation is not supported.");
66186  return -1;
66187  }
66188  #elif PY_MAJOR_VERSION >= 3
66189  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
66190  #endif
66191  #if CYTHON_REFNANNY
66192 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
66193 if (!__Pyx_RefNanny) {
66194  PyErr_Clear();
66195  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
66196  if (!__Pyx_RefNanny)
66197  Py_FatalError("failed to import 'refnanny' module");
66198 }
66199 #endif
66200  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_WaveTools(void)", 0);
66201  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66202  #ifdef __Pxy_PyFrame_Initialize_Offsets
66203  __Pxy_PyFrame_Initialize_Offsets();
66204  #endif
66205  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 2, __pyx_L1_error)
66206  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 2, __pyx_L1_error)
66207  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 2, __pyx_L1_error)
66208  #ifdef __Pyx_CyFunction_USED
66209  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66210  #endif
66211  #ifdef __Pyx_FusedFunction_USED
66212  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66213  #endif
66214  #ifdef __Pyx_Coroutine_USED
66215  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66216  #endif
66217  #ifdef __Pyx_Generator_USED
66218  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66219  #endif
66220  #ifdef __Pyx_AsyncGen_USED
66221  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66222  #endif
66223  #ifdef __Pyx_StopAsyncIteration_USED
66224  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66225  #endif
66226  /*--- Library function declarations ---*/
66227  /*--- Threads initialization code ---*/
66228  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
66229  PyEval_InitThreads();
66230  #endif
66231  /*--- Module creation code ---*/
66232  #if CYTHON_PEP489_MULTI_PHASE_INIT
66233  __pyx_m = __pyx_pyinit_module;
66234  Py_INCREF(__pyx_m);
66235  #else
66236  #if PY_MAJOR_VERSION < 3
66237  __pyx_m = Py_InitModule4("WaveTools", __pyx_methods, __pyx_k_Tools_for_working_with_water_wav, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
66238  #else
66239  __pyx_m = PyModule_Create(&__pyx_moduledef);
66240  #endif
66241  if (unlikely(!__pyx_m)) __PYX_ERR(0, 2, __pyx_L1_error)
66242  #endif
66243  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 2, __pyx_L1_error)
66244  Py_INCREF(__pyx_d);
66245  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 2, __pyx_L1_error)
66246  Py_INCREF(__pyx_b);
66247  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 2, __pyx_L1_error)
66248  Py_INCREF(__pyx_cython_runtime);
66249  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 2, __pyx_L1_error);
66250  /*--- Initialize various global constants etc. ---*/
66251  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66252  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
66253  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66254  #endif
66255  if (__pyx_module_is_main_WaveTools) {
66256  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66257  }
66258  #if PY_MAJOR_VERSION >= 3
66259  {
66260  PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 2, __pyx_L1_error)
66261  if (!PyDict_GetItemString(modules, "WaveTools")) {
66262  if (unlikely(PyDict_SetItemString(modules, "WaveTools", __pyx_m) < 0)) __PYX_ERR(0, 2, __pyx_L1_error)
66263  }
66264  }
66265  #endif
66266  /*--- Builtin init code ---*/
66267  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66268  /*--- Constants init code ---*/
66269  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66270  /*--- Global type/function init code ---*/
66271  (void)__Pyx_modinit_global_init_code();
66272  (void)__Pyx_modinit_variable_export_code();
66273  (void)__Pyx_modinit_function_export_code();
66274  if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 2, __pyx_L1_error)
66275  if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 2, __pyx_L1_error)
66276  (void)__Pyx_modinit_variable_import_code();
66277  (void)__Pyx_modinit_function_import_code();
66278  /*--- Execution code ---*/
66279  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
66280  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 2, __pyx_L1_error)
66281  #endif
66282 
66283  /* "WaveTools.py":13
66284  * from __future__ import division
66285  *
66286  * from builtins import str # <<<<<<<<<<<<<<
66287  * from builtins import zip
66288  * from builtins import range
66289  */
66290  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
66291  __Pyx_GOTREF(__pyx_t_1);
66292  __Pyx_INCREF(__pyx_n_s_str);
66293  __Pyx_GIVEREF(__pyx_n_s_str);
66294  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_str);
66295  __pyx_t_2 = __Pyx_Import(__pyx_n_s_builtins, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error)
66296  __Pyx_GOTREF(__pyx_t_2);
66297  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66298  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
66299  __Pyx_GOTREF(__pyx_t_1);
66300  if (PyDict_SetItem(__pyx_d, __pyx_n_s_str, __pyx_t_1) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
66301  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66302  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66303 
66304  /* "WaveTools.py":14
66305  *
66306  * from builtins import str
66307  * from builtins import zip # <<<<<<<<<<<<<<
66308  * from builtins import range
66309  * #from builtins import object
66310  */
66311  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)
66312  __Pyx_GOTREF(__pyx_t_2);
66313  __Pyx_INCREF(__pyx_n_s_zip);
66314  __Pyx_GIVEREF(__pyx_n_s_zip);
66315  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_zip);
66316  __pyx_t_1 = __Pyx_Import(__pyx_n_s_builtins, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error)
66317  __Pyx_GOTREF(__pyx_t_1);
66318  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66319  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_zip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)
66320  __Pyx_GOTREF(__pyx_t_2);
66321  if (PyDict_SetItem(__pyx_d, __pyx_n_s_zip, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
66322  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66323  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66324 
66325  /* "WaveTools.py":15
66326  * from builtins import str
66327  * from builtins import zip
66328  * from builtins import range # <<<<<<<<<<<<<<
66329  * #from builtins import object
66330  * from past.utils import old_div
66331  */
66332  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
66333  __Pyx_GOTREF(__pyx_t_1);
66334  __Pyx_INCREF(__pyx_n_s_range);
66335  __Pyx_GIVEREF(__pyx_n_s_range);
66336  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_range);
66337  __pyx_t_2 = __Pyx_Import(__pyx_n_s_builtins, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error)
66338  __Pyx_GOTREF(__pyx_t_2);
66339  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66340  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
66341  __Pyx_GOTREF(__pyx_t_1);
66342  if (PyDict_SetItem(__pyx_d, __pyx_n_s_range, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
66343  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66344  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66345 
66346  /* "WaveTools.py":17
66347  * from builtins import range
66348  * #from builtins import object
66349  * from past.utils import old_div # <<<<<<<<<<<<<<
66350  * import cython
66351  * import numpy as np
66352  */
66353  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
66354  __Pyx_GOTREF(__pyx_t_2);
66355  __Pyx_INCREF(__pyx_n_s_old_div);
66356  __Pyx_GIVEREF(__pyx_n_s_old_div);
66357  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_old_div);
66358  __pyx_t_1 = __Pyx_Import(__pyx_n_s_past_utils, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error)
66359  __Pyx_GOTREF(__pyx_t_1);
66360  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66361  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_old_div); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error)
66362  __Pyx_GOTREF(__pyx_t_2);
66363  if (PyDict_SetItem(__pyx_d, __pyx_n_s_old_div, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L1_error)
66364  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66365  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66366 
66367  /* "WaveTools.py":19
66368  * from past.utils import old_div
66369  * import cython
66370  * import numpy as np # <<<<<<<<<<<<<<
66371  * import cmath as cmat
66372  * from .Profiling import logEvent, logFile
66373  */
66374  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
66375  __Pyx_GOTREF(__pyx_t_1);
66376  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
66377  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66378 
66379  /* "WaveTools.py":20
66380  * import cython
66381  * import numpy as np
66382  * import cmath as cmat # <<<<<<<<<<<<<<
66383  * from .Profiling import logEvent, logFile
66384  * from proteus import Comm
66385  */
66386  __pyx_t_1 = __Pyx_Import(__pyx_n_s_cmath, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error)
66387  __Pyx_GOTREF(__pyx_t_1);
66388  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cmat, __pyx_t_1) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
66389  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66390 
66391  /* "WaveTools.py":21
66392  * import numpy as np
66393  * import cmath as cmat
66394  * from .Profiling import logEvent, logFile # <<<<<<<<<<<<<<
66395  * from proteus import Comm
66396  * import time as tt
66397  */
66398  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
66399  __Pyx_GOTREF(__pyx_t_1);
66400  __Pyx_INCREF(__pyx_n_s_logEvent);
66401  __Pyx_GIVEREF(__pyx_n_s_logEvent);
66402  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_logEvent);
66403  __Pyx_INCREF(__pyx_n_s_logFile);
66404  __Pyx_GIVEREF(__pyx_n_s_logFile);
66405  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_logFile);
66406  __pyx_t_2 = __Pyx_Import(__pyx_n_s_Profiling, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
66407  __Pyx_GOTREF(__pyx_t_2);
66408  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66409  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
66410  __Pyx_GOTREF(__pyx_t_1);
66411  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logEvent, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
66412  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66413  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_logFile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
66414  __Pyx_GOTREF(__pyx_t_1);
66415  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logFile, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
66416  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66417  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66418 
66419  /* "WaveTools.py":22
66420  * import cmath as cmat
66421  * from .Profiling import logEvent, logFile
66422  * from proteus import Comm # <<<<<<<<<<<<<<
66423  * import time as tt
66424  * import sys as sys
66425  */
66426  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
66427  __Pyx_GOTREF(__pyx_t_2);
66428  __Pyx_INCREF(__pyx_n_s_Comm);
66429  __Pyx_GIVEREF(__pyx_n_s_Comm);
66430  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Comm);
66431  __pyx_t_1 = __Pyx_Import(__pyx_n_s_proteus, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
66432  __Pyx_GOTREF(__pyx_t_1);
66433  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66434  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
66435  __Pyx_GOTREF(__pyx_t_2);
66436  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Comm, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
66437  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66438  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66439 
66440  /* "WaveTools.py":23
66441  * from .Profiling import logEvent, logFile
66442  * from proteus import Comm
66443  * import time as tt # <<<<<<<<<<<<<<
66444  * import sys as sys
66445  *
66446  */
66447  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
66448  __Pyx_GOTREF(__pyx_t_1);
66449  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tt, __pyx_t_1) < 0) __PYX_ERR(0, 23, __pyx_L1_error)
66450  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66451 
66452  /* "WaveTools.py":24
66453  * from proteus import Comm
66454  * import time as tt
66455  * import sys as sys # <<<<<<<<<<<<<<
66456  *
66457  * __all__ = ['SteadyCurrent',
66458  */
66459  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)
66460  __Pyx_GOTREF(__pyx_t_1);
66461  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
66462  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66463 
66464  /* "WaveTools.py":26
66465  * import sys as sys
66466  *
66467  * __all__ = ['SteadyCurrent', # <<<<<<<<<<<<<<
66468  * 'SolitaryWave',
66469  * 'MonochromaticWaves',
66470  */
66471  __pyx_t_1 = PyList_New(39); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
66472  __Pyx_GOTREF(__pyx_t_1);
66473  __Pyx_INCREF(__pyx_n_s_SteadyCurrent);
66474  __Pyx_GIVEREF(__pyx_n_s_SteadyCurrent);
66475  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_SteadyCurrent);
66476  __Pyx_INCREF(__pyx_n_s_SolitaryWave);
66477  __Pyx_GIVEREF(__pyx_n_s_SolitaryWave);
66478  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_SolitaryWave);
66479  __Pyx_INCREF(__pyx_n_s_MonochromaticWaves);
66480  __Pyx_GIVEREF(__pyx_n_s_MonochromaticWaves);
66481  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_MonochromaticWaves);
66482  __Pyx_INCREF(__pyx_n_s_NewWave);
66483  __Pyx_GIVEREF(__pyx_n_s_NewWave);
66484  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_NewWave);
66485  __Pyx_INCREF(__pyx_n_s_RandomWaves);
66486  __Pyx_GIVEREF(__pyx_n_s_RandomWaves);
66487  PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_RandomWaves);
66488  __Pyx_INCREF(__pyx_n_s_MultiSpectraRandomWaves);
66489  __Pyx_GIVEREF(__pyx_n_s_MultiSpectraRandomWaves);
66490  PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_MultiSpectraRandomWaves);
66491  __Pyx_INCREF(__pyx_n_s_DirectionalWaves);
66492  __Pyx_GIVEREF(__pyx_n_s_DirectionalWaves);
66493  PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_DirectionalWaves);
66494  __Pyx_INCREF(__pyx_n_s_TimeSeries);
66495  __Pyx_GIVEREF(__pyx_n_s_TimeSeries);
66496  PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_s_TimeSeries);
66497  __Pyx_INCREF(__pyx_n_s_RandomWavesFast);
66498  __Pyx_GIVEREF(__pyx_n_s_RandomWavesFast);
66499  PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_s_RandomWavesFast);
66500  __Pyx_INCREF(__pyx_n_s_RandomNLWaves);
66501  __Pyx_GIVEREF(__pyx_n_s_RandomNLWaves);
66502  PyList_SET_ITEM(__pyx_t_1, 9, __pyx_n_s_RandomNLWaves);
66503  __Pyx_INCREF(__pyx_n_s_RandomNLWavesFast);
66504  __Pyx_GIVEREF(__pyx_n_s_RandomNLWavesFast);
66505  PyList_SET_ITEM(__pyx_t_1, 10, __pyx_n_s_RandomNLWavesFast);
66506  __Pyx_INCREF(__pyx_n_s_CombineWaves);
66507  __Pyx_GIVEREF(__pyx_n_s_CombineWaves);
66508  PyList_SET_ITEM(__pyx_t_1, 11, __pyx_n_s_CombineWaves);
66509  __Pyx_INCREF(__pyx_n_s_fastcos_test);
66510  __Pyx_GIVEREF(__pyx_n_s_fastcos_test);
66511  PyList_SET_ITEM(__pyx_t_1, 12, __pyx_n_s_fastcos_test);
66512  __Pyx_INCREF(__pyx_n_s_fastcosh_test);
66513  __Pyx_GIVEREF(__pyx_n_s_fastcosh_test);
66514  PyList_SET_ITEM(__pyx_t_1, 13, __pyx_n_s_fastcosh_test);
66515  __Pyx_INCREF(__pyx_n_s_fastsinh_test);
66516  __Pyx_GIVEREF(__pyx_n_s_fastsinh_test);
66517  PyList_SET_ITEM(__pyx_t_1, 14, __pyx_n_s_fastsinh_test);
66518  __Pyx_INCREF(__pyx_n_s_coshkzd_test);
66519  __Pyx_GIVEREF(__pyx_n_s_coshkzd_test);
66520  PyList_SET_ITEM(__pyx_t_1, 15, __pyx_n_s_coshkzd_test);
66521  __Pyx_INCREF(__pyx_n_s_sinhkzd_test);
66522  __Pyx_GIVEREF(__pyx_n_s_sinhkzd_test);
66523  PyList_SET_ITEM(__pyx_t_1, 16, __pyx_n_s_sinhkzd_test);
66524  __Pyx_INCREF(__pyx_n_s_loadExistingFunction);
66525  __Pyx_GIVEREF(__pyx_n_s_loadExistingFunction);
66526  PyList_SET_ITEM(__pyx_t_1, 17, __pyx_n_s_loadExistingFunction);
66527  __Pyx_INCREF(__pyx_n_s_setVertDir);
66528  __Pyx_GIVEREF(__pyx_n_s_setVertDir);
66529  PyList_SET_ITEM(__pyx_t_1, 18, __pyx_n_s_setVertDir);
66530  __Pyx_INCREF(__pyx_n_s_loadExistingFunction);
66531  __Pyx_GIVEREF(__pyx_n_s_loadExistingFunction);
66532  PyList_SET_ITEM(__pyx_t_1, 19, __pyx_n_s_loadExistingFunction);
66533  __Pyx_INCREF(__pyx_n_s_setVertDir);
66534  __Pyx_GIVEREF(__pyx_n_s_setVertDir);
66535  PyList_SET_ITEM(__pyx_t_1, 20, __pyx_n_s_setVertDir);
66536  __Pyx_INCREF(__pyx_n_s_setDirVector);
66537  __Pyx_GIVEREF(__pyx_n_s_setDirVector);
66538  PyList_SET_ITEM(__pyx_t_1, 21, __pyx_n_s_setDirVector);
66539  __Pyx_INCREF(__pyx_n_s_dirCheck);
66540  __Pyx_GIVEREF(__pyx_n_s_dirCheck);
66541  PyList_SET_ITEM(__pyx_t_1, 22, __pyx_n_s_dirCheck);
66542  __Pyx_INCREF(__pyx_n_s_reduceToIntervals);
66543  __Pyx_GIVEREF(__pyx_n_s_reduceToIntervals);
66544  PyList_SET_ITEM(__pyx_t_1, 23, __pyx_n_s_reduceToIntervals);
66545  __Pyx_INCREF(__pyx_n_s_returnRectangles);
66546  __Pyx_GIVEREF(__pyx_n_s_returnRectangles);
66547  PyList_SET_ITEM(__pyx_t_1, 24, __pyx_n_s_returnRectangles);
66548  __Pyx_INCREF(__pyx_n_s_returnRectangles3D);
66549  __Pyx_GIVEREF(__pyx_n_s_returnRectangles3D);
66550  PyList_SET_ITEM(__pyx_t_1, 25, __pyx_n_s_returnRectangles3D);
66551  __Pyx_INCREF(__pyx_n_s_normIntegral);
66552  __Pyx_GIVEREF(__pyx_n_s_normIntegral);
66553  PyList_SET_ITEM(__pyx_t_1, 26, __pyx_n_s_normIntegral);
66554  __Pyx_INCREF(__pyx_n_s_eta_mode);
66555  __Pyx_GIVEREF(__pyx_n_s_eta_mode);
66556  PyList_SET_ITEM(__pyx_t_1, 27, __pyx_n_s_eta_mode);
66557  __Pyx_INCREF(__pyx_n_s_Udrift);
66558  __Pyx_GIVEREF(__pyx_n_s_Udrift);
66559  PyList_SET_ITEM(__pyx_t_1, 28, __pyx_n_s_Udrift);
66560  __Pyx_INCREF(__pyx_n_s_vel_mode);
66561  __Pyx_GIVEREF(__pyx_n_s_vel_mode);
66562  PyList_SET_ITEM(__pyx_t_1, 29, __pyx_n_s_vel_mode);
66563  __Pyx_INCREF(__pyx_n_s_sigma);
66564  __Pyx_GIVEREF(__pyx_n_s_sigma);
66565  PyList_SET_ITEM(__pyx_t_1, 30, __pyx_n_s_sigma);
66566  __Pyx_INCREF(__pyx_n_s_JONSWAP);
66567  __Pyx_GIVEREF(__pyx_n_s_JONSWAP);
66568  PyList_SET_ITEM(__pyx_t_1, 31, __pyx_n_s_JONSWAP);
66569  __Pyx_INCREF(__pyx_n_s_PM_mod);
66570  __Pyx_GIVEREF(__pyx_n_s_PM_mod);
66571  PyList_SET_ITEM(__pyx_t_1, 32, __pyx_n_s_PM_mod);
66572  __Pyx_INCREF(__pyx_n_s_cos2s);
66573  __Pyx_GIVEREF(__pyx_n_s_cos2s);
66574  PyList_SET_ITEM(__pyx_t_1, 33, __pyx_n_s_cos2s);
66575  __Pyx_INCREF(__pyx_n_s_mitsuyasu);
66576  __Pyx_GIVEREF(__pyx_n_s_mitsuyasu);
66577  PyList_SET_ITEM(__pyx_t_1, 34, __pyx_n_s_mitsuyasu);
66578  __Pyx_INCREF(__pyx_n_s_dispersion);
66579  __Pyx_GIVEREF(__pyx_n_s_dispersion);
66580  PyList_SET_ITEM(__pyx_t_1, 35, __pyx_n_s_dispersion);
66581  __Pyx_INCREF(__pyx_n_s_tophat);
66582  __Pyx_GIVEREF(__pyx_n_s_tophat);
66583  PyList_SET_ITEM(__pyx_t_1, 36, __pyx_n_s_tophat);
66584  __Pyx_INCREF(__pyx_n_s_costap);
66585  __Pyx_GIVEREF(__pyx_n_s_costap);
66586  PyList_SET_ITEM(__pyx_t_1, 37, __pyx_n_s_costap);
66587  __Pyx_INCREF(__pyx_n_s_decompose_tseries);
66588  __Pyx_GIVEREF(__pyx_n_s_decompose_tseries);
66589  PyList_SET_ITEM(__pyx_t_1, 38, __pyx_n_s_decompose_tseries);
66590  if (PyDict_SetItem(__pyx_d, __pyx_n_s_all_2, __pyx_t_1) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
66591  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66592 
66593  /* "WaveTools.py":67
66594  *
66595  *
66596  * def fastcos_test(phase,sinus=False): # <<<<<<<<<<<<<<
66597  * """Fast cosine function with Taylor approximation - TO BE USED FOR TESTING"
66598  * Parameters
66599  */
66600  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_1fastcos_test, 0, __pyx_n_s_fastcos_test, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
66601  __Pyx_GOTREF(__pyx_t_1);
66602  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__62);
66603  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fastcos_test, __pyx_t_1) < 0) __PYX_ERR(0, 67, __pyx_L1_error)
66604  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66605 
66606  /* "WaveTools.py":84
66607  * phase = old_div(np.pi,2.) - phase
66608  * return fastcos(phase,True)
66609  * def fastcosh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
66610  * """Fast hyperbolic cosine function with Taylor approximation - TO BE USED FOR TESTING"
66611  * Parameters
66612  */
66613  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_3fastcosh_test, 0, __pyx_n_s_fastcosh_test, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error)
66614  __Pyx_GOTREF(__pyx_t_1);
66615  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__65);
66616  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fastcosh_test, __pyx_t_1) < 0) __PYX_ERR(0, 84, __pyx_L1_error)
66617  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66618 
66619  /* "WaveTools.py":100
66620  * fastcosh(xx,k,Z,fast)
66621  * return xx[0]
66622  * def fastsinh_test(k,Z,fast=True): # <<<<<<<<<<<<<<
66623  * """Fast hyperbolic sine function with Taylor approximation - TO BE USED FOR TESTING"
66624  * Parameters
66625  */
66626  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_5fastsinh_test, 0, __pyx_n_s_fastsinh_test, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
66627  __Pyx_GOTREF(__pyx_t_1);
66628  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__68);
66629  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fastsinh_test, __pyx_t_1) < 0) __PYX_ERR(0, 100, __pyx_L1_error)
66630  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66631 
66632  /* "WaveTools.py":118
66633  *
66634  *
66635  * def coshkzd_test(k,Z,d, fast=True): # <<<<<<<<<<<<<<
66636  * """Calculation of u horizontal profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
66637  * and hyp trig relation cosh(a+b) = cosha*coshb+sinha*sinhb
66638  */
66639  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_7coshkzd_test, 0, __pyx_n_s_coshkzd_test, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
66640  __Pyx_GOTREF(__pyx_t_1);
66641  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__71);
66642  if (PyDict_SetItem(__pyx_d, __pyx_n_s_coshkzd_test, __pyx_t_1) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
66643  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66644 
66645  /* "WaveTools.py":140
66646  * return 0.
66647  *
66648  * def sinhkzd_test(k,Z,d,fast=True): # <<<<<<<<<<<<<<
66649  * """Calculation of v vertical profile cosh(k(d+Z))/sinh(kd) using fast appoximaitons
66650  * and hyp trig relation sinh(a+b) = sinha*coshb+cosha*sinhb
66651  */
66652  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_9sinhkzd_test, 0, __pyx_n_s_sinhkzd_test, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
66653  __Pyx_GOTREF(__pyx_t_1);
66654  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__74);
66655  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sinhkzd_test, __pyx_t_1) < 0) __PYX_ERR(0, 140, __pyx_L1_error)
66656  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66657 
66658  /* "WaveTools.py":163
66659  * return 0.
66660  *
66661  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
66662  * """Checks if a function name is known function and returns it
66663  *
66664  */
66665  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_11loadExistingFunction, 0, __pyx_n_s_loadExistingFunction, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
66666  __Pyx_GOTREF(__pyx_t_1);
66667  if (PyDict_SetItem(__pyx_d, __pyx_n_s_loadExistingFunction, __pyx_t_1) < 0) __PYX_ERR(0, 163, __pyx_L1_error)
66668  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66669 
66670  /* "WaveTools.py":198
66671  *
66672  *
66673  * def setVertDir(g): # <<<<<<<<<<<<<<
66674  * """ Returns the unit vector for the vertical direction
66675  *
66676  */
66677  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13setVertDir, 0, __pyx_n_s_setVertDir, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error)
66678  __Pyx_GOTREF(__pyx_t_1);
66679  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setVertDir, __pyx_t_1) < 0) __PYX_ERR(0, 198, __pyx_L1_error)
66680  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66681 
66682  /* "WaveTools.py":216
66683  *
66684  *
66685  * def setDirVector(vector): # <<<<<<<<<<<<<<
66686  * """ Returns the direction of a vector in the form of a unit vector
66687  *
66688  */
66689  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_15setDirVector, 0, __pyx_n_s_setDirVector, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
66690  __Pyx_GOTREF(__pyx_t_1);
66691  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setDirVector, __pyx_t_1) < 0) __PYX_ERR(0, 216, __pyx_L1_error)
66692  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66693 
66694  /* "WaveTools.py":231
66695  * return old_div(vector,(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2)))
66696  *
66697  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
66698  * """ Checks if two vectors are vertical raises SystemError if True
66699  *
66700  */
66701  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_17dirCheck, 0, __pyx_n_s_dirCheck, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
66702  __Pyx_GOTREF(__pyx_t_1);
66703  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dirCheck, __pyx_t_1) < 0) __PYX_ERR(0, 231, __pyx_L1_error)
66704  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66705 
66706  /* "WaveTools.py":258
66707  * else:
66708  * return None
66709  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
66710  * """ Prepares the x-axis array with N elements for numerical integration
66711  *
66712  */
66713  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_19reduceToIntervals, 0, __pyx_n_s_reduceToIntervals, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
66714  __Pyx_GOTREF(__pyx_t_1);
66715  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduceToIntervals, __pyx_t_1) < 0) __PYX_ERR(0, 258, __pyx_L1_error)
66716  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66717 
66718  /* "WaveTools.py":279
66719  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
66720  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
66721  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
66722  * """ Returns 2D discrete integral array using the rectangle method
66723  *
66724  */
66725  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_21returnRectangles, 0, __pyx_n_s_returnRectangles, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error)
66726  __Pyx_GOTREF(__pyx_t_1);
66727  if (PyDict_SetItem(__pyx_d, __pyx_n_s_returnRectangles, __pyx_t_1) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
66728  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66729 
66730  /* "WaveTools.py":299
66731  * """
66732  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
66733  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
66734  * """ Returns 3D discrete integrals using the rectangle method
66735  *
66736  */
66737  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_23returnRectangles3D, 0, __pyx_n_s_returnRectangles3D, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
66738  __Pyx_GOTREF(__pyx_t_1);
66739  if (PyDict_SetItem(__pyx_d, __pyx_n_s_returnRectangles3D, __pyx_t_1) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
66740  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66741 
66742  /* "WaveTools.py":326
66743  * ai[:,jj] *= (x[1:]-x[:-1])
66744  * return ai
66745  * def normIntegral(f,dom): # <<<<<<<<<<<<<<
66746  * """Returns a normalised 2D function
66747  *
66748  */
66749  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_25normIntegral, 0, __pyx_n_s_normIntegral, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error)
66750  __Pyx_GOTREF(__pyx_t_1);
66751  if (PyDict_SetItem(__pyx_d, __pyx_n_s_normIntegral, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error)
66752  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66753 
66754  /* "WaveTools.py":349
66755  *
66756  *
66757  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
66758  * """Calculates the free surface elevation for a single frequency mode
66759  *
66760  */
66761  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_27eta_mode, 0, __pyx_n_s_eta_mode, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error)
66762  __Pyx_GOTREF(__pyx_t_1);
66763  if (PyDict_SetItem(__pyx_d, __pyx_n_s_eta_mode, __pyx_t_1) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
66764  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66765 
66766  /* "WaveTools.py":375
66767  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
66768  * return amplitude*cos(phase)
66769  * def Udrift(amp,gAbs,c,d): # <<<<<<<<<<<<<<
66770  * """Calculates the 2nd order Stokes drift for a linear mode
66771  *
66772  */
66773  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_29Udrift, 0, __pyx_n_s_Udrift, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 375, __pyx_L1_error)
66774  __Pyx_GOTREF(__pyx_t_1);
66775  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Udrift, __pyx_t_1) < 0) __PYX_ERR(0, 375, __pyx_L1_error)
66776  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66777 
66778  /* "WaveTools.py":397
66779  * return 0.5*gAbs*amp*amp/c/d
66780  *
66781  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, vDir, gAbs): # <<<<<<<<<<<<<<
66782  * """Calculates the wave velocity components for a single frequency mode
66783  *
66784  */
66785  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_31vel_mode, 0, __pyx_n_s_vel_mode, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
66786  __Pyx_GOTREF(__pyx_t_1);
66787  if (PyDict_SetItem(__pyx_d, __pyx_n_s_vel_mode, __pyx_t_1) < 0) __PYX_ERR(0, 397, __pyx_L1_error)
66788  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66789 
66790  /* "WaveTools.py":447
66791  *
66792  *
66793  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
66794  * """Calculates sigma function for JONSWAP spectrum
66795  *
66796  */
66797  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_33sigma, 0, __pyx_n_s_sigma, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error)
66798  __Pyx_GOTREF(__pyx_t_1);
66799  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sigma, __pyx_t_1) < 0) __PYX_ERR(0, 447, __pyx_L1_error)
66800  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66801 
66802  /* "WaveTools.py":466
66803  * return sigmaReturn
66804  *
66805  * def custom(): # <<<<<<<<<<<<<<
66806  * pass
66807  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None):
66808  */
66809  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_35custom, 0, __pyx_n_s_custom, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error)
66810  __Pyx_GOTREF(__pyx_t_1);
66811  if (PyDict_SetItem(__pyx_d, __pyx_n_s_custom, __pyx_t_1) < 0) __PYX_ERR(0, 466, __pyx_L1_error)
66812  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66813 
66814  /* "WaveTools.py":468
66815  * def custom():
66816  * pass
66817  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
66818  * """Calculates the JONSWAP frequency spectrum (Goda 2009)
66819  *
66820  */
66821  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_37JONSWAP, 0, __pyx_n_s_JONSWAP, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 468, __pyx_L1_error)
66822  __Pyx_GOTREF(__pyx_t_1);
66823  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__102);
66824  if (PyDict_SetItem(__pyx_d, __pyx_n_s_JONSWAP, __pyx_t_1) < 0) __PYX_ERR(0, 468, __pyx_L1_error)
66825  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66826 
66827  /* "WaveTools.py":508
66828  * return tma * bj*(Hs**2)*(old_div(1.,((Tp**4) *(f**5))))*np.exp(-1.25*(old_div(1.,(Tp*f)**(4.))))*(gamma**r)
66829  *
66830  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
66831  * """Calculates the Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
66832  *
66833  */
66834  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_39PM_mod, 0, __pyx_n_s_PM_mod, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error)
66835  __Pyx_GOTREF(__pyx_t_1);
66836  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PM_mod, __pyx_t_1) < 0) __PYX_ERR(0, 508, __pyx_L1_error)
66837  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66838 
66839  /* "WaveTools.py":532
66840  * return (old_div(5.0,16.0))*Hs**2*(old_div(f0**4,f**5))*np.exp((old_div(-5.0,4.0))*(old_div(f0,f))**4)
66841  *
66842  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
66843  * """Calculates the cos-2s directional spreading function
66844  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
66845  */
66846  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_41cos2s, 0, __pyx_n_s_cos2s, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error)
66847  __Pyx_GOTREF(__pyx_t_1);
66848  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__107);
66849  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cos2s, __pyx_t_1) < 0) __PYX_ERR(0, 532, __pyx_L1_error)
66850  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66851 
66852  /* "WaveTools.py":554
66853  * fun[:,ii] = np.cos(old_div(theta,2))**(2*s)
66854  * return fun
66855  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
66856  * """The cos2s wave directional spread with wave frequency dependency
66857  *
66858  */
66859  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_43mitsuyasu, 0, __pyx_n_s_mitsuyasu, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
66860  __Pyx_GOTREF(__pyx_t_1);
66861  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__110);
66862  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mitsuyasu, __pyx_t_1) < 0) __PYX_ERR(0, 554, __pyx_L1_error)
66863  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66864 
66865  /* "WaveTools.py":588
66866  *
66867  *
66868  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
66869  * """Calculates the wave number for single or multiple frequencies using linear dispersion relation.
66870  *
66871  */
66872  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_45dispersion, 0, __pyx_n_s_dispersion, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
66873  __Pyx_GOTREF(__pyx_t_1);
66874  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__113);
66875  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dispersion, __pyx_t_1) < 0) __PYX_ERR(0, 588, __pyx_L1_error)
66876  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66877 
66878  /* "WaveTools.py":617
66879  *
66880  *
66881  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
66882  * """ Calculates and returns a top hat filter array
66883  *
66884  */
66885  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_47tophat, 0, __pyx_n_s_tophat, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__115)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
66886  __Pyx_GOTREF(__pyx_t_1);
66887  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tophat, __pyx_t_1) < 0) __PYX_ERR(0, 617, __pyx_L1_error)
66888  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66889 
66890  /* "WaveTools.py":637
66891  * return a
66892  *
66893  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
66894  * """ Calculates and returns a top hat filter array
66895  *
66896  */
66897  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_49costap, 0, __pyx_n_s_costap, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__117)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
66898  __Pyx_GOTREF(__pyx_t_1);
66899  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__118);
66900  if (PyDict_SetItem(__pyx_d, __pyx_n_s_costap, __pyx_t_1) < 0) __PYX_ERR(0, 637, __pyx_L1_error)
66901  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66902 
66903  /* "WaveTools.py":660
66904  * return wind
66905  *
66906  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
66907  * """ Performs spectral analysis and calculates angular frequency components, amplitude, phase and mean level power
66908  * of a time series with constant sampling.
66909  */
66910  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_51decompose_tseries, 0, __pyx_n_s_decompose_tseries, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__120)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
66911  __Pyx_GOTREF(__pyx_t_1);
66912  if (PyDict_SetItem(__pyx_d, __pyx_n_s_decompose_tseries, __pyx_t_1) < 0) __PYX_ERR(0, 660, __pyx_L1_error)
66913  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66914 
66915  /* "WaveTools.py":736
66916  * self.ramp = rampTime
66917  *
66918  * def eta(self,x,t): # <<<<<<<<<<<<<<
66919  * """Calculates free surface elevation (SolitaryWave class)
66920  * Parameters
66921  */
66922  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13SteadyCurrent_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SteadyCurrent_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__122)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error)
66923  __Pyx_GOTREF(__pyx_t_1);
66924  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SteadyCurrent->tp_dict, __pyx_n_s_eta, __pyx_t_1) < 0) __PYX_ERR(0, 736, __pyx_L1_error)
66925  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66926  PyType_Modified(__pyx_ptype_9WaveTools_SteadyCurrent);
66927 
66928  /* "WaveTools.py":752
66929  * """
66930  * return 0.
66931  * def u(self,x,t): # <<<<<<<<<<<<<<
66932  * """Calculates wave velocity vector (SolitaryWave class).
66933  * Parameters
66934  */
66935  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13SteadyCurrent_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SteadyCurrent_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__124)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
66936  __Pyx_GOTREF(__pyx_t_1);
66937  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SteadyCurrent->tp_dict, __pyx_n_s_u, __pyx_t_1) < 0) __PYX_ERR(0, 752, __pyx_L1_error)
66938  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66939  PyType_Modified(__pyx_ptype_9WaveTools_SteadyCurrent);
66940 
66941  /* "(tree fragment)":1
66942  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
66943  * cdef tuple state
66944  * cdef object _dict
66945  */
66946  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13SteadyCurrent_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SteadyCurrent___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
66947  __Pyx_GOTREF(__pyx_t_1);
66948  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SteadyCurrent->tp_dict, __pyx_n_s_reduce_cython, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
66949  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66950  PyType_Modified(__pyx_ptype_9WaveTools_SteadyCurrent);
66951 
66952  /* "(tree fragment)":16
66953  * else:
66954  * return __pyx_unpickle_SteadyCurrent, (type(self), 0xe2264c7, state)
66955  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
66956  * __pyx_unpickle_SteadyCurrent__set_state(self, __pyx_state)
66957  */
66958  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13SteadyCurrent_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SteadyCurrent___setstate_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 16, __pyx_L1_error)
66959  __Pyx_GOTREF(__pyx_t_1);
66960  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SteadyCurrent->tp_dict, __pyx_n_s_setstate_cython, __pyx_t_1) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
66961  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66962  PyType_Modified(__pyx_ptype_9WaveTools_SteadyCurrent);
66963 
66964  /* "WaveTools.py":804
66965  * g,
66966  * waveDir,
66967  * trans = np.zeros(3,"d"), # <<<<<<<<<<<<<<
66968  * fast = True):
66969  *
66970  */
66971  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 804, __pyx_L1_error)
66972  __Pyx_GOTREF(__pyx_t_1);
66973  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error)
66974  __Pyx_GOTREF(__pyx_t_2);
66975  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66976  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__129, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 804, __pyx_L1_error)
66977  __Pyx_GOTREF(__pyx_t_1);
66978  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
66979  __pyx_k__12 = __pyx_t_1;
66980  __Pyx_GIVEREF(__pyx_t_1);
66981  __pyx_t_1 = 0;
66982 
66983  /* "WaveTools.py":823
66984  * dirCheck(self.waveDir,self.vDir)
66985  *
66986  * def eta(self,x,t): # <<<<<<<<<<<<<<
66987  * """Calculates free surface elevation (SolitaryWave class)
66988  * Parameters
66989  */
66990  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12SolitaryWave_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SolitaryWave_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L1_error)
66991  __Pyx_GOTREF(__pyx_t_1);
66992  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SolitaryWave->tp_dict, __pyx_n_s_eta, __pyx_t_1) < 0) __PYX_ERR(0, 823, __pyx_L1_error)
66993  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
66994  PyType_Modified(__pyx_ptype_9WaveTools_SolitaryWave);
66995 
66996  /* "WaveTools.py":841
66997  * a1 = self.K*phase
66998  * return self.H*1.0/ cosh(a1)**2
66999  * def u(self,x,t): # <<<<<<<<<<<<<<
67000  * """Calculates wave velocity vector (SolitaryWave class).
67001  * Parameters
67002  */
67003  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12SolitaryWave_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SolitaryWave_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
67004  __Pyx_GOTREF(__pyx_t_1);
67005  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SolitaryWave->tp_dict, __pyx_n_s_u, __pyx_t_1) < 0) __PYX_ERR(0, 841, __pyx_L1_error)
67006  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67007  PyType_Modified(__pyx_ptype_9WaveTools_SolitaryWave);
67008 
67009  /* "(tree fragment)":1
67010  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67011  * cdef tuple state
67012  * cdef object _dict
67013  */
67014  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12SolitaryWave_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SolitaryWave___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
67015  __Pyx_GOTREF(__pyx_t_1);
67016  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SolitaryWave->tp_dict, __pyx_n_s_reduce_cython, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67017  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67018  PyType_Modified(__pyx_ptype_9WaveTools_SolitaryWave);
67019 
67020  /* "(tree fragment)":16
67021  * else:
67022  * return __pyx_unpickle_SolitaryWave, (type(self), 0x9a37670, state)
67023  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67024  * __pyx_unpickle_SolitaryWave__set_state(self, __pyx_state)
67025  */
67026  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12SolitaryWave_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SolitaryWave___setstate_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 16, __pyx_L1_error)
67027  __Pyx_GOTREF(__pyx_t_1);
67028  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_SolitaryWave->tp_dict, __pyx_n_s_setstate_cython, __pyx_t_1) < 0) __PYX_ERR(1, 16, __pyx_L1_error)
67029  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67030  PyType_Modified(__pyx_ptype_9WaveTools_SolitaryWave);
67031 
67032  /* "WaveTools.py":952
67033  * autoFenton=True,
67034  * autoFentonOpts=None,
67035  * Ycoeff = np.zeros(1000,), # <<<<<<<<<<<<<<
67036  * Bcoeff =np.zeros(1000,),
67037  * Nf = 1000,
67038  */
67039  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L1_error)
67040  __Pyx_GOTREF(__pyx_t_1);
67041  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 952, __pyx_L1_error)
67042  __Pyx_GOTREF(__pyx_t_2);
67043  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67044  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__138, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L1_error)
67045  __Pyx_GOTREF(__pyx_t_1);
67046  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67047  __pyx_k__13 = __pyx_t_1;
67048  __Pyx_GIVEREF(__pyx_t_1);
67049  __pyx_t_1 = 0;
67050 
67051  /* "WaveTools.py":953
67052  * autoFentonOpts=None,
67053  * Ycoeff = np.zeros(1000,),
67054  * Bcoeff =np.zeros(1000,), # <<<<<<<<<<<<<<
67055  * Nf = 1000,
67056  * meanVelocity = np.array([0.,0,0.]),
67057  */
67058  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 953, __pyx_L1_error)
67059  __Pyx_GOTREF(__pyx_t_1);
67060  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 953, __pyx_L1_error)
67061  __Pyx_GOTREF(__pyx_t_2);
67062  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67063  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__138, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 953, __pyx_L1_error)
67064  __Pyx_GOTREF(__pyx_t_1);
67065  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67066  __pyx_k__14 = __pyx_t_1;
67067  __Pyx_GIVEREF(__pyx_t_1);
67068  __pyx_t_1 = 0;
67069 
67070  /* "WaveTools.py":955
67071  * Bcoeff =np.zeros(1000,),
67072  * Nf = 1000,
67073  * meanVelocity = np.array([0.,0,0.]), # <<<<<<<<<<<<<<
67074  * phi0 = 0.,
67075  * fast = True):
67076  */
67077  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 955, __pyx_L1_error)
67078  __Pyx_GOTREF(__pyx_t_1);
67079  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 955, __pyx_L1_error)
67080  __Pyx_GOTREF(__pyx_t_2);
67081  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67082  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 955, __pyx_L1_error)
67083  __Pyx_GOTREF(__pyx_t_1);
67084  __Pyx_INCREF(__pyx_float_0_);
67085  __Pyx_GIVEREF(__pyx_float_0_);
67086  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_);
67087  __Pyx_INCREF(__pyx_int_0);
67088  __Pyx_GIVEREF(__pyx_int_0);
67089  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_0);
67090  __Pyx_INCREF(__pyx_float_0_);
67091  __Pyx_GIVEREF(__pyx_float_0_);
67092  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_float_0_);
67093  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 955, __pyx_L1_error)
67094  __Pyx_GOTREF(__pyx_t_3);
67095  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67096  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67097  __pyx_k__15 = __pyx_t_3;
67098  __Pyx_GIVEREF(__pyx_t_3);
67099  __pyx_t_3 = 0;
67100 
67101  /* "WaveTools.py":1106
67102  * __cpp_uFenton(U,x, t, self.kDir_,self.k,self.omega,self.phi0,self.amplitude,self.mwl, self.depth, self.gAbs,self.Nf, self.Bcoeff_, self.mV_,self.waveDir_,self.vDir_, self.tanhF_, self.fast)
67103  *
67104  * def eta(self,x,t): # <<<<<<<<<<<<<<
67105  * """Calculates free surface elevation (MonochromaticWaves class)
67106  * Parameters
67107  */
67108  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_18MonochromaticWaves_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MonochromaticWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1106, __pyx_L1_error)
67109  __Pyx_GOTREF(__pyx_t_3);
67110  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_MonochromaticWaves->tp_dict, __pyx_n_s_eta, __pyx_t_3) < 0) __PYX_ERR(0, 1106, __pyx_L1_error)
67111  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67112  PyType_Modified(__pyx_ptype_9WaveTools_MonochromaticWaves);
67113 
67114  /* "WaveTools.py":1130
67115  * return self.etaFenton(xx,t)
67116  *
67117  * def u(self,x,t): # <<<<<<<<<<<<<<
67118  * """Calculates wave velocity vector (MonochromaticWaves class).
67119  * Parameters
67120  */
67121  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_18MonochromaticWaves_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MonochromaticWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1130, __pyx_L1_error)
67122  __Pyx_GOTREF(__pyx_t_3);
67123  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_MonochromaticWaves->tp_dict, __pyx_n_s_u, __pyx_t_3) < 0) __PYX_ERR(0, 1130, __pyx_L1_error)
67124  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67125  PyType_Modified(__pyx_ptype_9WaveTools_MonochromaticWaves);
67126 
67127  /* "(tree fragment)":1
67128  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67129  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
67130  * def __setstate_cython__(self, __pyx_state):
67131  */
67132  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_18MonochromaticWaves_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MonochromaticWaves___reduce_cyth, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
67133  __Pyx_GOTREF(__pyx_t_3);
67134  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67135  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67136 
67137  /* "(tree fragment)":3
67138  * def __reduce_cython__(self):
67139  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
67140  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67141  * raise TypeError("self.Bcoeff_,self.Ycoeff_,self._cpp_eta,self._cpp_u,self.kDir_,self.mV_,self.tanhF_,self.vDir_,self.waveDir_ cannot be converted to a Python object for pickling")
67142  */
67143  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_18MonochromaticWaves_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MonochromaticWaves___setstate_cy, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
67144  __Pyx_GOTREF(__pyx_t_3);
67145  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67146  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67147 
67148  /* "WaveTools.py":1216
67149  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
67150  * crestFocus=True,
67151  * xfocus=np.array([0.,0.,0]), # <<<<<<<<<<<<<<
67152  * tfocus=0.,
67153  * fast = True,
67154  */
67155  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1216, __pyx_L1_error)
67156  __Pyx_GOTREF(__pyx_t_3);
67157  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L1_error)
67158  __Pyx_GOTREF(__pyx_t_1);
67159  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67160  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1216, __pyx_L1_error)
67161  __Pyx_GOTREF(__pyx_t_3);
67162  __Pyx_INCREF(__pyx_float_0_);
67163  __Pyx_GIVEREF(__pyx_float_0_);
67164  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_float_0_);
67165  __Pyx_INCREF(__pyx_float_0_);
67166  __Pyx_GIVEREF(__pyx_float_0_);
67167  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_float_0_);
67168  __Pyx_INCREF(__pyx_int_0);
67169  __Pyx_GIVEREF(__pyx_int_0);
67170  PyList_SET_ITEM(__pyx_t_3, 2, __pyx_int_0);
67171  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L1_error)
67172  __Pyx_GOTREF(__pyx_t_2);
67173  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67174  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67175  __pyx_k__22 = __pyx_t_2;
67176  __Pyx_GIVEREF(__pyx_t_2);
67177  __pyx_t_2 = 0;
67178 
67179  /* "WaveTools.py":1299
67180  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
67181  *
67182  * def eta(self, x, t): # <<<<<<<<<<<<<<
67183  * """Calculates free surface elevation (RandomWaves class)
67184  * Parameters
67185  */
67186  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_7NewWave_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NewWave_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error)
67187  __Pyx_GOTREF(__pyx_t_2);
67188  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_NewWave->tp_dict, __pyx_n_s_eta, __pyx_t_2) < 0) __PYX_ERR(0, 1299, __pyx_L1_error)
67189  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67190  PyType_Modified(__pyx_ptype_9WaveTools_NewWave);
67191 
67192  /* "WaveTools.py":1323
67193  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
67194  *
67195  * def u(self, x, t): # <<<<<<<<<<<<<<
67196  * """Calculates wave velocity vector (RandomWaves class)
67197  * Parameters
67198  */
67199  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_7NewWave_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NewWave_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error)
67200  __Pyx_GOTREF(__pyx_t_2);
67201  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_NewWave->tp_dict, __pyx_n_s_u, __pyx_t_2) < 0) __PYX_ERR(0, 1323, __pyx_L1_error)
67202  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67203  PyType_Modified(__pyx_ptype_9WaveTools_NewWave);
67204 
67205  /* "WaveTools.py":1351
67206  *
67207  * return U
67208  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
67209  * """Writes a timeseries of the free-surface elevation
67210  *
67211  */
67212  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1351, __pyx_L1_error)
67213  __Pyx_GOTREF(__pyx_t_2);
67214  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1351, __pyx_L1_error)
67215  __Pyx_GOTREF(__pyx_t_3);
67216  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67217  __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1351, __pyx_L1_error)
67218  __Pyx_GOTREF(__pyx_t_2);
67219  __Pyx_INCREF(__pyx_float_0_);
67220  __Pyx_GIVEREF(__pyx_float_0_);
67221  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_0_);
67222  __Pyx_INCREF(__pyx_int_0);
67223  __Pyx_GIVEREF(__pyx_int_0);
67224  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_int_0);
67225  __Pyx_INCREF(__pyx_int_0);
67226  __Pyx_GIVEREF(__pyx_int_0);
67227  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_int_0);
67228  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error)
67229  __Pyx_GOTREF(__pyx_t_1);
67230  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67231  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67232  __pyx_k__24 = __pyx_t_1;
67233  __Pyx_GIVEREF(__pyx_t_1);
67234  __pyx_t_1 = 0;
67235  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_7NewWave_7writeEtaSeries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NewWave_writeEtaSeries, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error)
67236  __Pyx_GOTREF(__pyx_t_1);
67237  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_NewWave->tp_dict, __pyx_n_s_writeEtaSeries, __pyx_t_1) < 0) __PYX_ERR(0, 1351, __pyx_L1_error)
67238  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67239  PyType_Modified(__pyx_ptype_9WaveTools_NewWave);
67240 
67241  /* "(tree fragment)":1
67242  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67243  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67244  * def __setstate_cython__(self, __pyx_state):
67245  */
67246  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_7NewWave_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NewWave___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error)
67247  __Pyx_GOTREF(__pyx_t_1);
67248  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67249  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67250 
67251  /* "(tree fragment)":3
67252  * def __reduce_cython__(self):
67253  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67254  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67255  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67256  */
67257  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_7NewWave_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NewWave___setstate_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3, __pyx_L1_error)
67258  __Pyx_GOTREF(__pyx_t_1);
67259  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_1) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67260  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67261 
67262  /* "WaveTools.py":1557
67263  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.N, self.fast)
67264  *
67265  * def eta(self, x, t): # <<<<<<<<<<<<<<
67266  * """Calculates free surface elevation (RandomWaves class)
67267  * Parameters
67268  */
67269  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_11RandomWaves_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L1_error)
67270  __Pyx_GOTREF(__pyx_t_1);
67271  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomWaves->tp_dict, __pyx_n_s_eta, __pyx_t_1) < 0) __PYX_ERR(0, 1557, __pyx_L1_error)
67272  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67273  PyType_Modified(__pyx_ptype_9WaveTools_RandomWaves);
67274 
67275  /* "WaveTools.py":1581
67276  * __cpp_uRandom(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.N, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
67277  *
67278  * def u(self, x, t): # <<<<<<<<<<<<<<
67279  * """Calculates wave velocity vector (RandomWaves class)
67280  * Parameters
67281  */
67282  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_11RandomWaves_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1581, __pyx_L1_error)
67283  __Pyx_GOTREF(__pyx_t_1);
67284  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomWaves->tp_dict, __pyx_n_s_u, __pyx_t_1) < 0) __PYX_ERR(0, 1581, __pyx_L1_error)
67285  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67286  PyType_Modified(__pyx_ptype_9WaveTools_RandomWaves);
67287 
67288  /* "WaveTools.py":1609
67289  *
67290  * return U
67291  * def writeEtaSeries(self,Tstart,Tend,x0,fname,Lgen= np.array([0.,0,0])): # <<<<<<<<<<<<<<
67292  * """Writes a timeseries of the free-surface elevation
67293  *
67294  */
67295  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error)
67296  __Pyx_GOTREF(__pyx_t_1);
67297  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error)
67298  __Pyx_GOTREF(__pyx_t_2);
67299  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67300  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error)
67301  __Pyx_GOTREF(__pyx_t_1);
67302  __Pyx_INCREF(__pyx_float_0_);
67303  __Pyx_GIVEREF(__pyx_float_0_);
67304  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_);
67305  __Pyx_INCREF(__pyx_int_0);
67306  __Pyx_GIVEREF(__pyx_int_0);
67307  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_0);
67308  __Pyx_INCREF(__pyx_int_0);
67309  __Pyx_GIVEREF(__pyx_int_0);
67310  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_int_0);
67311  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1609, __pyx_L1_error)
67312  __Pyx_GOTREF(__pyx_t_3);
67313  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67314  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67315  __pyx_k__29 = __pyx_t_3;
67316  __Pyx_GIVEREF(__pyx_t_3);
67317  __pyx_t_3 = 0;
67318  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_11RandomWaves_7writeEtaSeries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomWaves_writeEtaSeries, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1609, __pyx_L1_error)
67319  __Pyx_GOTREF(__pyx_t_3);
67320  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomWaves->tp_dict, __pyx_n_s_writeEtaSeries, __pyx_t_3) < 0) __PYX_ERR(0, 1609, __pyx_L1_error)
67321  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67322  PyType_Modified(__pyx_ptype_9WaveTools_RandomWaves);
67323 
67324  /* "(tree fragment)":1
67325  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67326  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67327  * def __setstate_cython__(self, __pyx_state):
67328  */
67329  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_11RandomWaves_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomWaves___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
67330  __Pyx_GOTREF(__pyx_t_3);
67331  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67332  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67333 
67334  /* "(tree fragment)":3
67335  * def __reduce_cython__(self):
67336  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67337  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67338  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67339  */
67340  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_11RandomWaves_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomWaves___setstate_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
67341  __Pyx_GOTREF(__pyx_t_3);
67342  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67343  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67344 
67345  /* "WaveTools.py":1799
67346  * return __cpp_etaRandom(x,t,self.kDirM_, self.omegaM_,self.phiM_,self.aiM_, self.Nall,self.fast)
67347  *
67348  * def eta(self, x, t): # <<<<<<<<<<<<<<
67349  * """Calculates free surface elevation (RandomWaves class)
67350  * Parameters
67351  */
67352  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MultiSpectraRandomWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1799, __pyx_L1_error)
67353  __Pyx_GOTREF(__pyx_t_3);
67354  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_MultiSpectraRandomWaves->tp_dict, __pyx_n_s_eta, __pyx_t_3) < 0) __PYX_ERR(0, 1799, __pyx_L1_error)
67355  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67356  PyType_Modified(__pyx_ptype_9WaveTools_MultiSpectraRandomWaves);
67357 
67358  /* "WaveTools.py":1824
67359  * __cpp_uDir(U, x,t,self.kDirM_, self.kiM_, self.omegaM_,self.phiM_,self.aiM_,self.mwl,self.depth, self.Nall, self.waveDirM_, self.vDir_, self.tanhM_, self.gAbs, self.fast)
67360  *
67361  * def u(self, x, t): # <<<<<<<<<<<<<<
67362  * """Calculates wave velocity vector (RandomWaves class)
67363  * Parameters
67364  */
67365  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MultiSpectraRandomWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1824, __pyx_L1_error)
67366  __Pyx_GOTREF(__pyx_t_3);
67367  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_MultiSpectraRandomWaves->tp_dict, __pyx_n_s_u, __pyx_t_3) < 0) __PYX_ERR(0, 1824, __pyx_L1_error)
67368  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67369  PyType_Modified(__pyx_ptype_9WaveTools_MultiSpectraRandomWaves);
67370 
67371  /* "(tree fragment)":1
67372  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67373  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67374  * def __setstate_cython__(self, __pyx_state):
67375  */
67376  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MultiSpectraRandomWaves___reduce, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__172)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
67377  __Pyx_GOTREF(__pyx_t_3);
67378  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67379  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67380 
67381  /* "(tree fragment)":3
67382  * def __reduce_cython__(self):
67383  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67384  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67385  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67386  */
67387  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MultiSpectraRandomWaves___setsta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
67388  __Pyx_GOTREF(__pyx_t_3);
67389  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67390  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67391 
67392  /* "WaveTools.py":2036
67393  * return __cpp_etaRandom(x,t,self.kDir_, self.omega_,self.phi_,self.ai_, self.Nall, self.fast)
67394  *
67395  * def eta(self, x, t): # <<<<<<<<<<<<<<
67396  * """Calculates free surface elevation (RandomWaves class)
67397  * Parameters
67398  */
67399  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_16DirectionalWaves_3eta, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DirectionalWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2036, __pyx_L1_error)
67400  __Pyx_GOTREF(__pyx_t_3);
67401  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_DirectionalWaves->tp_dict, __pyx_n_s_eta, __pyx_t_3) < 0) __PYX_ERR(0, 2036, __pyx_L1_error)
67402  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67403  PyType_Modified(__pyx_ptype_9WaveTools_DirectionalWaves);
67404 
67405  /* "WaveTools.py":2061
67406  * __cpp_uDir(U, x,t,self.kDir_, self.ki_, self.omega_,self.phi_,self.ai_,self.mwl,self.depth, self.Nall, self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
67407  *
67408  * def u(self, x, t): # <<<<<<<<<<<<<<
67409  * """Calculates wave velocity vector (RandomWaves class)
67410  * Parameters
67411  */
67412  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_16DirectionalWaves_5u, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DirectionalWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2061, __pyx_L1_error)
67413  __Pyx_GOTREF(__pyx_t_3);
67414  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_DirectionalWaves->tp_dict, __pyx_n_s_u, __pyx_t_3) < 0) __PYX_ERR(0, 2061, __pyx_L1_error)
67415  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67416  PyType_Modified(__pyx_ptype_9WaveTools_DirectionalWaves);
67417 
67418  /* "(tree fragment)":1
67419  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67420  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67421  * def __setstate_cython__(self, __pyx_state):
67422  */
67423  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_16DirectionalWaves_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DirectionalWaves___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
67424  __Pyx_GOTREF(__pyx_t_3);
67425  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67426  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67427 
67428  /* "(tree fragment)":3
67429  * def __reduce_cython__(self):
67430  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67431  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67432  * raise TypeError("no default __reduce__ due to non-trivial __cinit__")
67433  */
67434  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_16DirectionalWaves_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DirectionalWaves___setstate_cyth, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
67435  __Pyx_GOTREF(__pyx_t_3);
67436  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67437  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67438 
67439  /* "WaveTools.py":2148
67440  * arrayData = False,
67441  * seriesArray = None,
67442  * Lgen = np.array([0.,0.,0]), # <<<<<<<<<<<<<<
67443  * fast = True
67444  * ):
67445  */
67446  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2148, __pyx_L1_error)
67447  __Pyx_GOTREF(__pyx_t_3);
67448  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2148, __pyx_L1_error)
67449  __Pyx_GOTREF(__pyx_t_1);
67450  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67451  __pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2148, __pyx_L1_error)
67452  __Pyx_GOTREF(__pyx_t_3);
67453  __Pyx_INCREF(__pyx_float_0_);
67454  __Pyx_GIVEREF(__pyx_float_0_);
67455  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_float_0_);
67456  __Pyx_INCREF(__pyx_float_0_);
67457  __Pyx_GIVEREF(__pyx_float_0_);
67458  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_float_0_);
67459  __Pyx_INCREF(__pyx_int_0);
67460  __Pyx_GIVEREF(__pyx_int_0);
67461  PyList_SET_ITEM(__pyx_t_3, 2, __pyx_int_0);
67462  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2148, __pyx_L1_error)
67463  __Pyx_GOTREF(__pyx_t_2);
67464  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67465  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67466  __pyx_k__40 = __pyx_t_2;
67467  __Pyx_GIVEREF(__pyx_t_2);
67468  __pyx_t_2 = 0;
67469 
67470  /* "WaveTools.py":2459
67471  * self._cpp_u = self._cpp_uWindow
67472  *
67473  * def windOut(self): # <<<<<<<<<<<<<<
67474  * return {"TWindow":self.Twindow,"TOverlap":self.Toverlap,"Tlag":self.Tlag, "rec_direct":self.rec_direct}
67475  *
67476  */
67477  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_3windOut, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries_windOut, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__184)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2459, __pyx_L1_error)
67478  __Pyx_GOTREF(__pyx_t_2);
67479  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_TimeSeries->tp_dict, __pyx_n_s_windOut, __pyx_t_2) < 0) __PYX_ERR(0, 2459, __pyx_L1_error)
67480  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67481  PyType_Modified(__pyx_ptype_9WaveTools_TimeSeries);
67482 
67483  /* "WaveTools.py":2468
67484  * __cpp_uDirect(U,x,self.x0_,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
67485  *
67486  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
67487  *
67488  * """Calculates free surface elevation(Timeseries class-direct method
67489  */
67490  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_5etaDirect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries_etaDirect, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2468, __pyx_L1_error)
67491  __Pyx_GOTREF(__pyx_t_2);
67492  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_TimeSeries->tp_dict, __pyx_n_s_etaDirect, __pyx_t_2) < 0) __PYX_ERR(0, 2468, __pyx_L1_error)
67493  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67494  PyType_Modified(__pyx_ptype_9WaveTools_TimeSeries);
67495 
67496  /* "WaveTools.py":2490
67497  * return self._cpp_etaDirect(xx,t)
67498  *
67499  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
67500  * """Calculates wave velocity vector (Timeseries class-direct method)
67501  * Parameters
67502  */
67503  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_7uDirect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries_uDirect, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2490, __pyx_L1_error)
67504  __Pyx_GOTREF(__pyx_t_2);
67505  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_TimeSeries->tp_dict, __pyx_n_s_uDirect, __pyx_t_2) < 0) __PYX_ERR(0, 2490, __pyx_L1_error)
67506  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67507  PyType_Modified(__pyx_ptype_9WaveTools_TimeSeries);
67508 
67509  /* "WaveTools.py":2519
67510  * return U
67511  *
67512  * def findWindow(self,t): # <<<<<<<<<<<<<<
67513  * """Returns the current spectral window in TimeSeries class."
67514  *
67515  */
67516  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_9findWindow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries_findWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2519, __pyx_L1_error)
67517  __Pyx_GOTREF(__pyx_t_2);
67518  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_TimeSeries->tp_dict, __pyx_n_s_findWindow, __pyx_t_2) < 0) __PYX_ERR(0, 2519, __pyx_L1_error)
67519  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67520  PyType_Modified(__pyx_ptype_9WaveTools_TimeSeries);
67521 
67522  /* "WaveTools.py":2544
67523  * __cpp_uWindow(U,x,self.x0_,t,self.T0_,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.mwl,self.depth,self.Nf,Nw,self.waveDir_, self.vDir_, self.tanh_, self.gAbs, self.fast)
67524  *
67525  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
67526  * """Calculates free surface elevation(Timeseries class-window method
67527  * Parameters
67528  */
67529  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_11etaWindow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries_etaWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__192)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2544, __pyx_L1_error)
67530  __Pyx_GOTREF(__pyx_t_2);
67531  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_TimeSeries->tp_dict, __pyx_n_s_etaWindow, __pyx_t_2) < 0) __PYX_ERR(0, 2544, __pyx_L1_error)
67532  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67533  PyType_Modified(__pyx_ptype_9WaveTools_TimeSeries);
67534 
67535  /* "WaveTools.py":2566
67536  *
67537  *
67538  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
67539  * """Calculates wave velocity vector (Timeseries class-window method)
67540  * Parameters
67541  */
67542  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_13uWindow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries_uWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__194)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2566, __pyx_L1_error)
67543  __Pyx_GOTREF(__pyx_t_2);
67544  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_TimeSeries->tp_dict, __pyx_n_s_uWindow, __pyx_t_2) < 0) __PYX_ERR(0, 2566, __pyx_L1_error)
67545  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67546  PyType_Modified(__pyx_ptype_9WaveTools_TimeSeries);
67547 
67548  /* "(tree fragment)":1
67549  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67550  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
67551  * def __setstate_cython__(self, __pyx_state):
67552  */
67553  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__196)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
67554  __Pyx_GOTREF(__pyx_t_2);
67555  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67556  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67557 
67558  /* "(tree fragment)":3
67559  * def __reduce_cython__(self):
67560  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
67561  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67562  * raise TypeError("self.T0_,self._cpp_eta,self._cpp_u,self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.tanh_,self.vDir_,self.waveDir_,self.whand_ cannot be converted to a Python object for pickling")
67563  */
67564  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_10TimeSeries_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_TimeSeries___setstate_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__198)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
67565  __Pyx_GOTREF(__pyx_t_2);
67566  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67567  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67568 
67569  /* "WaveTools.py":2596
67570  *
67571  *
67572  * class RandomWavesFast(object): # <<<<<<<<<<<<<<
67573  * """
67574  * This class is used for generating plane random waves in an optimised manner
67575  */
67576  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__199); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2596, __pyx_L1_error)
67577  __Pyx_GOTREF(__pyx_t_2);
67578  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__199, __pyx_n_s_RandomWavesFast, __pyx_n_s_RandomWavesFast, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_This_class_is_used_for_generati); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2596, __pyx_L1_error)
67579  __Pyx_GOTREF(__pyx_t_3);
67580 
67581  /* "WaveTools.py":2647
67582  * """
67583  *
67584  * def __init__(self, # <<<<<<<<<<<<<<
67585  * Tstart,
67586  * Tend,
67587  */
67588  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_15RandomWavesFast_1__init__, 0, __pyx_n_s_RandomWavesFast___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2647, __pyx_L1_error)
67589  __Pyx_GOTREF(__pyx_t_1);
67590  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__202);
67591  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 2647, __pyx_L1_error)
67592  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67593 
67594  /* "WaveTools.py":2750
67595  * self.windOut = TS.windOut
67596  *
67597  * def printOut(self): # <<<<<<<<<<<<<<
67598  * """Prints some properties of the time series - ONLY FOR TESTING
67599  *
67600  */
67601  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_15RandomWavesFast_3printOut, 0, __pyx_n_s_RandomWavesFast_printOut, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2750, __pyx_L1_error)
67602  __Pyx_GOTREF(__pyx_t_1);
67603  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_printOut, __pyx_t_1) < 0) __PYX_ERR(0, 2750, __pyx_L1_error)
67604  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67605 
67606  /* "WaveTools.py":2596
67607  *
67608  *
67609  * class RandomWavesFast(object): # <<<<<<<<<<<<<<
67610  * """
67611  * This class is used for generating plane random waves in an optimised manner
67612  */
67613  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RandomWavesFast, __pyx_tuple__199, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2596, __pyx_L1_error)
67614  __Pyx_GOTREF(__pyx_t_1);
67615  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RandomWavesFast, __pyx_t_1) < 0) __PYX_ERR(0, 2596, __pyx_L1_error)
67616  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67617  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67618  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67619 
67620  /* "WaveTools.py":2861
67621  * def _cpp_eta_2ndOrder(self,x,t):
67622  * return __cpp_eta2nd(x,t,self.kDir_,self.ki_,self.omega_,self.phi_,self.ai_,self.N,self.sinhKd_,self.tanhKd_, self.fast)
67623  * def eta_2ndOrder(self,x,t): # <<<<<<<<<<<<<<
67624  * """Calculates the free surface elevation for 2nd-order terms
67625  *
67626  */
67627  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_3eta_2ndOrder, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_eta_2ndOrder, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2861, __pyx_L1_error)
67628  __Pyx_GOTREF(__pyx_t_2);
67629  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_eta_2ndOrder, __pyx_t_2) < 0) __PYX_ERR(0, 2861, __pyx_L1_error)
67630  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67631  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67632 
67633  /* "WaveTools.py":2899
67634  *
67635  * #higher harmonics
67636  * def eta_short(self,x,t): # <<<<<<<<<<<<<<
67637  * """Calculates the free surface elevation for higher-order terms
67638  *
67639  */
67640  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_5eta_short, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_eta_short, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__208)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2899, __pyx_L1_error)
67641  __Pyx_GOTREF(__pyx_t_2);
67642  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_eta_short, __pyx_t_2) < 0) __PYX_ERR(0, 2899, __pyx_L1_error)
67643  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67644  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67645 
67646  /* "WaveTools.py":2940
67647  *
67648  * #lower harmonics
67649  * def eta_long(self,x,t): # <<<<<<<<<<<<<<
67650  * """Calculates the free surface elevation for lower-order terms
67651  *
67652  */
67653  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_7eta_long, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_eta_long, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2940, __pyx_L1_error)
67654  __Pyx_GOTREF(__pyx_t_2);
67655  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_eta_long, __pyx_t_2) < 0) __PYX_ERR(0, 2940, __pyx_L1_error)
67656  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67657  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67658 
67659  /* "WaveTools.py":2979
67660  *
67661  * #set-up calculation
67662  * def eta_setUp(self,x,t): # <<<<<<<<<<<<<<
67663  * """Calculates the free surface elevation set up
67664  *
67665  */
67666  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_9eta_setUp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_eta_setUp, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2979, __pyx_L1_error)
67667  __Pyx_GOTREF(__pyx_t_2);
67668  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_eta_setUp, __pyx_t_2) < 0) __PYX_ERR(0, 2979, __pyx_L1_error)
67669  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67670  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67671 
67672  /* "WaveTools.py":3008
67673  *
67674  * #overall free surface elevation
67675  * def eta_overall(self,x,t,setUp=False): # <<<<<<<<<<<<<<
67676  * """Calculates the free surface elevation with 2nd order corrections
67677  *
67678  */
67679  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_11eta_overall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_eta_overall, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__214)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3008, __pyx_L1_error)
67680  __Pyx_GOTREF(__pyx_t_2);
67681  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_eta_overall, __pyx_t_2) < 0) __PYX_ERR(0, 3008, __pyx_L1_error)
67682  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67683  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67684 
67685  /* "WaveTools.py":3037
67686  *
67687  *
67688  * def writeEtaSeries(self,Tstart,Tend,dt,x0,fname, mode="all",setUp=False, Lgen=np.zeros(3,)): # <<<<<<<<<<<<<<
67689  * """Writes a timeseries of the free-surface elevation
67690  *
67691  */
67692  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3037, __pyx_L1_error)
67693  __Pyx_GOTREF(__pyx_t_2);
67694  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3037, __pyx_L1_error)
67695  __Pyx_GOTREF(__pyx_t_3);
67696  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67697  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__215, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3037, __pyx_L1_error)
67698  __Pyx_GOTREF(__pyx_t_2);
67699  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67700  __pyx_k__51 = __pyx_t_2;
67701  __Pyx_GIVEREF(__pyx_t_2);
67702  __pyx_t_2 = 0;
67703  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_13writeEtaSeries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_writeEtaSeries, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3037, __pyx_L1_error)
67704  __Pyx_GOTREF(__pyx_t_2);
67705  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_writeEtaSeries, __pyx_t_2) < 0) __PYX_ERR(0, 3037, __pyx_L1_error)
67706  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67707  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67708 
67709  /* "WaveTools.py":3104
67710  * return series
67711  *
67712  * def wtError(self,x,t): # <<<<<<<<<<<<<<
67713  * """Raises error for using RandomNLWavesFast class instead
67714  *
67715  */
67716  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_15wtError, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves_wtError, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3104, __pyx_L1_error)
67717  __Pyx_GOTREF(__pyx_t_2);
67718  if (PyDict_SetItem((PyObject *)__pyx_ptype_9WaveTools_RandomNLWaves->tp_dict, __pyx_n_s_wtError, __pyx_t_2) < 0) __PYX_ERR(0, 3104, __pyx_L1_error)
67719  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67720  PyType_Modified(__pyx_ptype_9WaveTools_RandomNLWaves);
67721 
67722  /* "(tree fragment)":1
67723  * def __reduce_cython__(self): # <<<<<<<<<<<<<<
67724  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
67725  * def __setstate_cython__(self, __pyx_state):
67726  */
67727  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_17__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves___reduce_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
67728  __Pyx_GOTREF(__pyx_t_2);
67729  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67730  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67731 
67732  /* "(tree fragment)":3
67733  * def __reduce_cython__(self):
67734  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
67735  * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<<
67736  * raise TypeError("self.ai_,self.kDir_,self.ki_,self.omega_,self.phi_,self.sinhKd_,self.tanhKd_ cannot be converted to a Python object for pickling")
67737  */
67738  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_13RandomNLWaves_19__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RandomNLWaves___setstate_cython, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
67739  __Pyx_GOTREF(__pyx_t_2);
67740  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
67741  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67742 
67743  /* "WaveTools.py":3130
67744  *
67745  *
67746  * class RandomNLWavesFast(object): # <<<<<<<<<<<<<<
67747  * """
67748  * This class is used for generating plane random waves with 2ns order correction in an optimised manner
67749  */
67750  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__224); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3130, __pyx_L1_error)
67751  __Pyx_GOTREF(__pyx_t_2);
67752  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__224, __pyx_n_s_RandomNLWavesFast, __pyx_n_s_RandomNLWavesFast, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_This_class_is_used_for_generati_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3130, __pyx_L1_error)
67753  __Pyx_GOTREF(__pyx_t_3);
67754 
67755  /* "WaveTools.py":3180
67756  * Switch for enabling optimised functions
67757  * """
67758  * def __init__(self, # <<<<<<<<<<<<<<
67759  * Tstart,
67760  * Tend,
67761  */
67762  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_17RandomNLWavesFast_1__init__, 0, __pyx_n_s_RandomNLWavesFast___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__226)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3180, __pyx_L1_error)
67763  __Pyx_GOTREF(__pyx_t_1);
67764  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_1, sizeof(__pyx_defaults), 1)) __PYX_ERR(0, 3180, __pyx_L1_error)
67765 
67766  /* "WaveTools.py":3195
67767  * spectral_params=None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
67768  * phi=None,
67769  * Lgen = np.array([0.,0.,0.]), #array of component phases # <<<<<<<<<<<<<<
67770  * Nwaves = 15,
67771  * Nfreq = 32,
67772  */
67773  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3195, __pyx_L1_error)
67774  __Pyx_GOTREF(__pyx_t_4);
67775  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3195, __pyx_L1_error)
67776  __Pyx_GOTREF(__pyx_t_5);
67777  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
67778  __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3195, __pyx_L1_error)
67779  __Pyx_GOTREF(__pyx_t_4);
67780  __Pyx_INCREF(__pyx_float_0_);
67781  __Pyx_GIVEREF(__pyx_float_0_);
67782  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_float_0_);
67783  __Pyx_INCREF(__pyx_float_0_);
67784  __Pyx_GIVEREF(__pyx_float_0_);
67785  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_float_0_);
67786  __Pyx_INCREF(__pyx_float_0_);
67787  __Pyx_GIVEREF(__pyx_float_0_);
67788  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_float_0_);
67789  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3195, __pyx_L1_error)
67790  __Pyx_GOTREF(__pyx_t_6);
67791  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
67792  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
67793  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_1)->__pyx_arg_Lgen = __pyx_t_6;
67794  __Pyx_GIVEREF(__pyx_t_6);
67795  __pyx_t_6 = 0;
67796  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_1, __pyx_pf_9WaveTools_56__defaults__);
67797  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 3180, __pyx_L1_error)
67798  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67799 
67800  /* "WaveTools.py":3249
67801  *
67802  *
67803  * def eta(self,x,t): # <<<<<<<<<<<<<<
67804  * """Calculates free surface elevation (RandomNLWavesFast class)
67805  * Parameters
67806  */
67807  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_17RandomNLWavesFast_3eta, 0, __pyx_n_s_RandomNLWavesFast_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__228)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3249, __pyx_L1_error)
67808  __Pyx_GOTREF(__pyx_t_1);
67809  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_eta, __pyx_t_1) < 0) __PYX_ERR(0, 3249, __pyx_L1_error)
67810  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67811 
67812  /* "WaveTools.py":3268
67813  *
67814  *
67815  * def u(self,x,t): # <<<<<<<<<<<<<<
67816  * """Calculates wave velocity vector (RandomNLWavesFast class)
67817  * Parameters
67818  */
67819  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_17RandomNLWavesFast_5u, 0, __pyx_n_s_RandomNLWavesFast_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __pyx_L1_error)
67820  __Pyx_GOTREF(__pyx_t_1);
67821  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_u, __pyx_t_1) < 0) __PYX_ERR(0, 3268, __pyx_L1_error)
67822  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67823 
67824  /* "WaveTools.py":3130
67825  *
67826  *
67827  * class RandomNLWavesFast(object): # <<<<<<<<<<<<<<
67828  * """
67829  * This class is used for generating plane random waves with 2ns order correction in an optimised manner
67830  */
67831  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RandomNLWavesFast, __pyx_tuple__224, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3130, __pyx_L1_error)
67832  __Pyx_GOTREF(__pyx_t_1);
67833  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RandomNLWavesFast, __pyx_t_1) < 0) __PYX_ERR(0, 3130, __pyx_L1_error)
67834  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67835  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67836  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67837 
67838  /* "WaveTools.py":3286
67839  * return uR
67840  *
67841  * class CombineWaves(object): # <<<<<<<<<<<<<<
67842  * """
67843  * This class is used for combining multiple waveTools classes, thus allowing for the generation of complex wave conditions
67844  */
67845  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__231); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3286, __pyx_L1_error)
67846  __Pyx_GOTREF(__pyx_t_2);
67847  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_tuple__231, __pyx_n_s_CombineWaves, __pyx_n_s_CombineWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_This_class_is_used_for_combinin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error)
67848  __Pyx_GOTREF(__pyx_t_3);
67849 
67850  /* "WaveTools.py":3295
67851  * List of wave classes
67852  * """
67853  * def __init__(self,waveList): # <<<<<<<<<<<<<<
67854  * try:
67855  * for condition in waveList:
67856  */
67857  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12CombineWaves_1__init__, 0, __pyx_n_s_CombineWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3295, __pyx_L1_error)
67858  __Pyx_GOTREF(__pyx_t_1);
67859  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 3295, __pyx_L1_error)
67860  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67861 
67862  /* "WaveTools.py":3310
67863  * self.waveList = waveList
67864  * self.mwl = waveList[0].mwl
67865  * def eta(self,x,t): # <<<<<<<<<<<<<<
67866  * """
67867  * Calculates free surface elevation (combineWaves class)
67868  */
67869  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12CombineWaves_3eta, 0, __pyx_n_s_CombineWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3310, __pyx_L1_error)
67870  __Pyx_GOTREF(__pyx_t_1);
67871  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_eta, __pyx_t_1) < 0) __PYX_ERR(0, 3310, __pyx_L1_error)
67872  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67873 
67874  /* "WaveTools.py":3331
67875  * return eta
67876  *
67877  * def u(self,x,t): # <<<<<<<<<<<<<<
67878  * """
67879  * Calculates wave particle velocity (combineWaves class)
67880  */
67881  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_12CombineWaves_5u, 0, __pyx_n_s_CombineWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3331, __pyx_L1_error)
67882  __Pyx_GOTREF(__pyx_t_1);
67883  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_u, __pyx_t_1) < 0) __PYX_ERR(0, 3331, __pyx_L1_error)
67884  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67885 
67886  /* "WaveTools.py":3286
67887  * return uR
67888  *
67889  * class CombineWaves(object): # <<<<<<<<<<<<<<
67890  * """
67891  * This class is used for combining multiple waveTools classes, thus allowing for the generation of complex wave conditions
67892  */
67893  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_CombineWaves, __pyx_tuple__231, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3286, __pyx_L1_error)
67894  __Pyx_GOTREF(__pyx_t_1);
67895  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CombineWaves, __pyx_t_1) < 0) __PYX_ERR(0, 3286, __pyx_L1_error)
67896  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
67897  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
67898  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67899 
67900  /* "(tree fragment)":1
67901  * def __pyx_unpickle_SteadyCurrent(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
67902  * cdef object __pyx_PickleError
67903  * cdef object __pyx_result
67904  */
67905  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_53__pyx_unpickle_SteadyCurrent, 0, __pyx_n_s_pyx_unpickle_SteadyCurrent, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
67906  __Pyx_GOTREF(__pyx_t_2);
67907  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SteadyCurrent, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67908  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67909 
67910  /* "(tree fragment)":11
67911  * __pyx_unpickle_SteadyCurrent__set_state(<SteadyCurrent> __pyx_result, __pyx_state)
67912  * return __pyx_result
67913  * cdef __pyx_unpickle_SteadyCurrent__set_state(SteadyCurrent __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<<
67914  * __pyx_result.U = __pyx_state[0]; __pyx_result.mwl = __pyx_state[1]; __pyx_result.ramp = __pyx_state[2]
67915  * if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
67916  */
67917  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9WaveTools_55__pyx_unpickle_SolitaryWave, 0, __pyx_n_s_pyx_unpickle_SolitaryWave, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
67918  __Pyx_GOTREF(__pyx_t_2);
67919  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_SolitaryWave, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
67920  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67921 
67922  /* "WaveTools.py":2
67923  *
67924  * """Tools for working with water waves. # <<<<<<<<<<<<<<
67925  *
67926  * The primary objective of this module is to provide solutions (exact and
67927  */
67928  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error)
67929  __Pyx_GOTREF(__pyx_t_2);
67930  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
67931  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
67932 
67933  /* "carray.to_py":124
67934  *
67935  * @cname("__Pyx_carray_to_tuple_double")
67936  * cdef inline tuple __Pyx_carray_to_tuple_double(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<<
67937  * cdef size_t i
67938  * cdef object value
67939  */
67940 
67941  /*--- Wrapped vars code ---*/
67942 
67943  goto __pyx_L0;
67944  __pyx_L1_error:;
67945  __Pyx_XDECREF(__pyx_t_1);
67946  __Pyx_XDECREF(__pyx_t_2);
67947  __Pyx_XDECREF(__pyx_t_3);
67948  __Pyx_XDECREF(__pyx_t_4);
67949  __Pyx_XDECREF(__pyx_t_5);
67950  __Pyx_XDECREF(__pyx_t_6);
67951  if (__pyx_m) {
67952  if (__pyx_d) {
67953  __Pyx_AddTraceback("init WaveTools", __pyx_clineno, __pyx_lineno, __pyx_filename);
67954  }
67955  Py_CLEAR(__pyx_m);
67956  } else if (!PyErr_Occurred()) {
67957  PyErr_SetString(PyExc_ImportError, "init WaveTools");
67958  }
67959  __pyx_L0:;
67960  __Pyx_RefNannyFinishContext();
67961  #if CYTHON_PEP489_MULTI_PHASE_INIT
67962  return (__pyx_m != NULL) ? 0 : -1;
67963  #elif PY_MAJOR_VERSION >= 3
67964  return __pyx_m;
67965  #else
67966  return;
67967  #endif
67968 }
67969 
67970 /* --- Runtime support code --- */
67971 /* Refnanny */
67972 #if CYTHON_REFNANNY
67973 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
67974  PyObject *m = NULL, *p = NULL;
67975  void *r = NULL;
67976  m = PyImport_ImportModule(modname);
67977  if (!m) goto end;
67978  p = PyObject_GetAttrString(m, "RefNannyAPI");
67979  if (!p) goto end;
67980  r = PyLong_AsVoidPtr(p);
67981 end:
67982  Py_XDECREF(p);
67983  Py_XDECREF(m);
67984  return (__Pyx_RefNannyAPIStruct *)r;
67985 }
67986 #endif
67987 
67988 /* PyObjectGetAttrStr */
67989 #if CYTHON_USE_TYPE_SLOTS
67990 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
67991  PyTypeObject* tp = Py_TYPE(obj);
67992  if (likely(tp->tp_getattro))
67993  return tp->tp_getattro(obj, attr_name);
67994 #if PY_MAJOR_VERSION < 3
67995  if (likely(tp->tp_getattr))
67996  return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
67997 #endif
67998  return PyObject_GetAttr(obj, attr_name);
67999 }
68000 #endif
68001 
68002 /* GetBuiltinName */
68003 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
68004  PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
68005  if (unlikely(!result)) {
68006  PyErr_Format(PyExc_NameError,
68007 #if PY_MAJOR_VERSION >= 3
68008  "name '%U' is not defined", name);
68009 #else
68010  "name '%.200s' is not defined", PyString_AS_STRING(name));
68011 #endif
68012  }
68013  return result;
68014 }
68015 
68016 /* RaiseDoubleKeywords */
68017 static void __Pyx_RaiseDoubleKeywordsError(
68018  const char* func_name,
68019  PyObject* kw_name)
68020 {
68021  PyErr_Format(PyExc_TypeError,
68022  #if PY_MAJOR_VERSION >= 3
68023  "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
68024  #else
68025  "%s() got multiple values for keyword argument '%s'", func_name,
68026  PyString_AsString(kw_name));
68027  #endif
68028 }
68029 
68030 /* ParseKeywords */
68031 static int __Pyx_ParseOptionalKeywords(
68032  PyObject *kwds,
68033  PyObject **argnames[],
68034  PyObject *kwds2,
68035  PyObject *values[],
68036  Py_ssize_t num_pos_args,
68037  const char* function_name)
68038 {
68039  PyObject *key = 0, *value = 0;
68040  Py_ssize_t pos = 0;
68041  PyObject*** name;
68042  PyObject*** first_kw_arg = argnames + num_pos_args;
68043  while (PyDict_Next(kwds, &pos, &key, &value)) {
68044  name = first_kw_arg;
68045  while (*name && (**name != key)) name++;
68046  if (*name) {
68047  values[name-argnames] = value;
68048  continue;
68049  }
68050  name = first_kw_arg;
68051  #if PY_MAJOR_VERSION < 3
68052  if (likely(PyString_Check(key))) {
68053  while (*name) {
68054  if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
68055  && _PyString_Eq(**name, key)) {
68056  values[name-argnames] = value;
68057  break;
68058  }
68059  name++;
68060  }
68061  if (*name) continue;
68062  else {
68063  PyObject*** argname = argnames;
68064  while (argname != first_kw_arg) {
68065  if ((**argname == key) || (
68066  (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
68067  && _PyString_Eq(**argname, key))) {
68068  goto arg_passed_twice;
68069  }
68070  argname++;
68071  }
68072  }
68073  } else
68074  #endif
68075  if (likely(PyUnicode_Check(key))) {
68076  while (*name) {
68077  int cmp = (**name == key) ? 0 :
68078  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
68079  (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
68080  #endif
68081  PyUnicode_Compare(**name, key);
68082  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
68083  if (cmp == 0) {
68084  values[name-argnames] = value;
68085  break;
68086  }
68087  name++;
68088  }
68089  if (*name) continue;
68090  else {
68091  PyObject*** argname = argnames;
68092  while (argname != first_kw_arg) {
68093  int cmp = (**argname == key) ? 0 :
68094  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
68095  (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
68096  #endif
68097  PyUnicode_Compare(**argname, key);
68098  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
68099  if (cmp == 0) goto arg_passed_twice;
68100  argname++;
68101  }
68102  }
68103  } else
68104  goto invalid_keyword_type;
68105  if (kwds2) {
68106  if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
68107  } else {
68108  goto invalid_keyword;
68109  }
68110  }
68111  return 0;
68112 arg_passed_twice:
68113  __Pyx_RaiseDoubleKeywordsError(function_name, key);
68114  goto bad;
68115 invalid_keyword_type:
68116  PyErr_Format(PyExc_TypeError,
68117  "%.200s() keywords must be strings", function_name);
68118  goto bad;
68119 invalid_keyword:
68120  PyErr_Format(PyExc_TypeError,
68121  #if PY_MAJOR_VERSION < 3
68122  "%.200s() got an unexpected keyword argument '%.200s'",
68123  function_name, PyString_AsString(key));
68124  #else
68125  "%s() got an unexpected keyword argument '%U'",
68126  function_name, key);
68127  #endif
68128 bad:
68129  return -1;
68130 }
68131 
68132 /* RaiseArgTupleInvalid */
68133 static void __Pyx_RaiseArgtupleInvalid(
68134  const char* func_name,
68135  int exact,
68136  Py_ssize_t num_min,
68137  Py_ssize_t num_max,
68138  Py_ssize_t num_found)
68139 {
68140  Py_ssize_t num_expected;
68141  const char *more_or_less;
68142  if (num_found < num_min) {
68143  num_expected = num_min;
68144  more_or_less = "at least";
68145  } else {
68146  num_expected = num_max;
68147  more_or_less = "at most";
68148  }
68149  if (exact) {
68150  more_or_less = "exactly";
68151  }
68152  PyErr_Format(PyExc_TypeError,
68153  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
68154  func_name, more_or_less, num_expected,
68155  (num_expected == 1) ? "" : "s", num_found);
68156 }
68157 
68158 /* PyDictVersioning */
68159 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
68160 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
68161  PyObject *dict = Py_TYPE(obj)->tp_dict;
68162  return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
68163 }
68164 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
68165  PyObject **dictptr = NULL;
68166  Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
68167  if (offset) {
68168 #if CYTHON_COMPILING_IN_CPYTHON
68169  dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
68170 #else
68171  dictptr = _PyObject_GetDictPtr(obj);
68172 #endif
68173  }
68174  return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
68175 }
68176 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
68177  PyObject *dict = Py_TYPE(obj)->tp_dict;
68178  if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
68179  return 0;
68180  return obj_dict_version == __Pyx_get_object_dict_version(obj);
68181 }
68182 #endif
68183 
68184 /* GetModuleGlobalName */
68185 #if CYTHON_USE_DICT_VERSIONS
68186 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
68187 #else
68188 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
68189 #endif
68190 {
68191  PyObject *result;
68192 #if !CYTHON_AVOID_BORROWED_REFS
68193 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
68194  result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
68195  __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
68196  if (likely(result)) {
68197  return __Pyx_NewRef(result);
68198  } else if (unlikely(PyErr_Occurred())) {
68199  return NULL;
68200  }
68201 #else
68202  result = PyDict_GetItem(__pyx_d, name);
68203  __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
68204  if (likely(result)) {
68205  return __Pyx_NewRef(result);
68206  }
68207 #endif
68208 #else
68209  result = PyObject_GetItem(__pyx_d, name);
68210  __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
68211  if (likely(result)) {
68212  return __Pyx_NewRef(result);
68213  }
68214  PyErr_Clear();
68215 #endif
68216  return __Pyx_GetBuiltinName(name);
68217 }
68218 
68219 /* PyFunctionFastCall */
68220 #if CYTHON_FAST_PYCALL
68221 static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
68222  PyObject *globals) {
68223  PyFrameObject *f;
68224  PyThreadState *tstate = __Pyx_PyThreadState_Current;
68225  PyObject **fastlocals;
68226  Py_ssize_t i;
68227  PyObject *result;
68228  assert(globals != NULL);
68229  /* XXX Perhaps we should create a specialized
68230  PyFrame_New() that doesn't take locals, but does
68231  take builtins without sanity checking them.
68232  */
68233  assert(tstate != NULL);
68234  f = PyFrame_New(tstate, co, globals, NULL);
68235  if (f == NULL) {
68236  return NULL;
68237  }
68238  fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
68239  for (i = 0; i < na; i++) {
68240  Py_INCREF(*args);
68241  fastlocals[i] = *args++;
68242  }
68243  result = PyEval_EvalFrameEx(f,0);
68244  ++tstate->recursion_depth;
68245  Py_DECREF(f);
68246  --tstate->recursion_depth;
68247  return result;
68248 }
68249 #if 1 || PY_VERSION_HEX < 0x030600B1
68250 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
68251  PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
68252  PyObject *globals = PyFunction_GET_GLOBALS(func);
68253  PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
68254  PyObject *closure;
68255 #if PY_MAJOR_VERSION >= 3
68256  PyObject *kwdefs;
68257 #endif
68258  PyObject *kwtuple, **k;
68259  PyObject **d;
68260  Py_ssize_t nd;
68261  Py_ssize_t nk;
68262  PyObject *result;
68263  assert(kwargs == NULL || PyDict_Check(kwargs));
68264  nk = kwargs ? PyDict_Size(kwargs) : 0;
68265  if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
68266  return NULL;
68267  }
68268  if (
68269 #if PY_MAJOR_VERSION >= 3
68270  co->co_kwonlyargcount == 0 &&
68271 #endif
68272  likely(kwargs == NULL || nk == 0) &&
68273  co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
68274  if (argdefs == NULL && co->co_argcount == nargs) {
68275  result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
68276  goto done;
68277  }
68278  else if (nargs == 0 && argdefs != NULL
68279  && co->co_argcount == Py_SIZE(argdefs)) {
68280  /* function called with no arguments, but all parameters have
68281  a default value: use default values as arguments .*/
68282  args = &PyTuple_GET_ITEM(argdefs, 0);
68283  result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
68284  goto done;
68285  }
68286  }
68287  if (kwargs != NULL) {
68288  Py_ssize_t pos, i;
68289  kwtuple = PyTuple_New(2 * nk);
68290  if (kwtuple == NULL) {
68291  result = NULL;
68292  goto done;
68293  }
68294  k = &PyTuple_GET_ITEM(kwtuple, 0);
68295  pos = i = 0;
68296  while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
68297  Py_INCREF(k[i]);
68298  Py_INCREF(k[i+1]);
68299  i += 2;
68300  }
68301  nk = i / 2;
68302  }
68303  else {
68304  kwtuple = NULL;
68305  k = NULL;
68306  }
68307  closure = PyFunction_GET_CLOSURE(func);
68308 #if PY_MAJOR_VERSION >= 3
68309  kwdefs = PyFunction_GET_KW_DEFAULTS(func);
68310 #endif
68311  if (argdefs != NULL) {
68312  d = &PyTuple_GET_ITEM(argdefs, 0);
68313  nd = Py_SIZE(argdefs);
68314  }
68315  else {
68316  d = NULL;
68317  nd = 0;
68318  }
68319 #if PY_MAJOR_VERSION >= 3
68320  result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
68321  args, (int)nargs,
68322  k, (int)nk,
68323  d, (int)nd, kwdefs, closure);
68324 #else
68325  result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
68326  args, (int)nargs,
68327  k, (int)nk,
68328  d, (int)nd, closure);
68329 #endif
68330  Py_XDECREF(kwtuple);
68331 done:
68332  Py_LeaveRecursiveCall();
68333  return result;
68334 }
68335 #endif
68336 #endif
68337 
68338 /* PyCFunctionFastCall */
68339 #if CYTHON_FAST_PYCCALL
68340 static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
68341  PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
68342  PyCFunction meth = PyCFunction_GET_FUNCTION(func);
68343  PyObject *self = PyCFunction_GET_SELF(func);
68344  int flags = PyCFunction_GET_FLAGS(func);
68345  assert(PyCFunction_Check(func));
68346  assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
68347  assert(nargs >= 0);
68348  assert(nargs == 0 || args != NULL);
68349  /* _PyCFunction_FastCallDict() must not be called with an exception set,
68350  because it may clear it (directly or indirectly) and so the
68351  caller loses its exception */
68352  assert(!PyErr_Occurred());
68353  if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
68354  return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
68355  } else {
68356  return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
68357  }
68358 }
68359 #endif
68360 
68361 /* PyObjectCall */
68362 #if CYTHON_COMPILING_IN_CPYTHON
68363 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
68364  PyObject *result;
68365  ternaryfunc call = Py_TYPE(func)->tp_call;
68366  if (unlikely(!call))
68367  return PyObject_Call(func, arg, kw);
68368  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
68369  return NULL;
68370  result = (*call)(func, arg, kw);
68371  Py_LeaveRecursiveCall();
68372  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
68373  PyErr_SetString(
68374  PyExc_SystemError,
68375  "NULL result without error in PyObject_Call");
68376  }
68377  return result;
68378 }
68379 #endif
68380 
68381 /* PyObjectCall2Args */
68382 static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
68383  PyObject *args, *result = NULL;
68384  #if CYTHON_FAST_PYCALL
68385  if (PyFunction_Check(function)) {
68386  PyObject *args[2] = {arg1, arg2};
68387  return __Pyx_PyFunction_FastCall(function, args, 2);
68388  }
68389  #endif
68390  #if CYTHON_FAST_PYCCALL
68391  if (__Pyx_PyFastCFunction_Check(function)) {
68392  PyObject *args[2] = {arg1, arg2};
68393  return __Pyx_PyCFunction_FastCall(function, args, 2);
68394  }
68395  #endif
68396  args = PyTuple_New(2);
68397  if (unlikely(!args)) goto done;
68398  Py_INCREF(arg1);
68399  PyTuple_SET_ITEM(args, 0, arg1);
68400  Py_INCREF(arg2);
68401  PyTuple_SET_ITEM(args, 1, arg2);
68402  Py_INCREF(function);
68403  result = __Pyx_PyObject_Call(function, args, NULL);
68404  Py_DECREF(args);
68405  Py_DECREF(function);
68406 done:
68407  return result;
68408 }
68409 
68410 /* PyObjectCallMethO */
68411 #if CYTHON_COMPILING_IN_CPYTHON
68412 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
68413  PyObject *self, *result;
68414  PyCFunction cfunc;
68415  cfunc = PyCFunction_GET_FUNCTION(func);
68416  self = PyCFunction_GET_SELF(func);
68417  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
68418  return NULL;
68419  result = cfunc(self, arg);
68420  Py_LeaveRecursiveCall();
68421  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
68422  PyErr_SetString(
68423  PyExc_SystemError,
68424  "NULL result without error in PyObject_Call");
68425  }
68426  return result;
68427 }
68428 #endif
68429 
68430 /* PyObjectCallOneArg */
68431 #if CYTHON_COMPILING_IN_CPYTHON
68432 static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
68433  PyObject *result;
68434  PyObject *args = PyTuple_New(1);
68435  if (unlikely(!args)) return NULL;
68436  Py_INCREF(arg);
68437  PyTuple_SET_ITEM(args, 0, arg);
68438  result = __Pyx_PyObject_Call(func, args, NULL);
68439  Py_DECREF(args);
68440  return result;
68441 }
68442 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
68443 #if CYTHON_FAST_PYCALL
68444  if (PyFunction_Check(func)) {
68445  return __Pyx_PyFunction_FastCall(func, &arg, 1);
68446  }
68447 #endif
68448  if (likely(PyCFunction_Check(func))) {
68449  if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
68450  return __Pyx_PyObject_CallMethO(func, arg);
68451 #if CYTHON_FAST_PYCCALL
68452  } else if (__Pyx_PyFastCFunction_Check(func)) {
68453  return __Pyx_PyCFunction_FastCall(func, &arg, 1);
68454 #endif
68455  }
68456  }
68457  return __Pyx__PyObject_CallOneArg(func, arg);
68458 }
68459 #else
68460 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
68461  PyObject *result;
68462  PyObject *args = PyTuple_Pack(1, arg);
68463  if (unlikely(!args)) return NULL;
68464  result = __Pyx_PyObject_Call(func, args, NULL);
68465  Py_DECREF(args);
68466  return result;
68467 }
68468 #endif
68469 
68470 /* None */
68471 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
68472  PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
68473 }
68474 
68475 /* GetItemInt */
68476 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
68477  PyObject *r;
68478  if (!j) return NULL;
68479  r = PyObject_GetItem(o, j);
68480  Py_DECREF(j);
68481  return r;
68482 }
68483 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
68484  CYTHON_NCP_UNUSED int wraparound,
68485  CYTHON_NCP_UNUSED int boundscheck) {
68486 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
68487  Py_ssize_t wrapped_i = i;
68488  if (wraparound & unlikely(i < 0)) {
68489  wrapped_i += PyList_GET_SIZE(o);
68490  }
68491  if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
68492  PyObject *r = PyList_GET_ITEM(o, wrapped_i);
68493  Py_INCREF(r);
68494  return r;
68495  }
68496  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
68497 #else
68498  return PySequence_GetItem(o, i);
68499 #endif
68500 }
68501 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
68502  CYTHON_NCP_UNUSED int wraparound,
68503  CYTHON_NCP_UNUSED int boundscheck) {
68504 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
68505  Py_ssize_t wrapped_i = i;
68506  if (wraparound & unlikely(i < 0)) {
68507  wrapped_i += PyTuple_GET_SIZE(o);
68508  }
68509  if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
68510  PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
68511  Py_INCREF(r);
68512  return r;
68513  }
68514  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
68515 #else
68516  return PySequence_GetItem(o, i);
68517 #endif
68518 }
68519 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
68520  CYTHON_NCP_UNUSED int wraparound,
68521  CYTHON_NCP_UNUSED int boundscheck) {
68522 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
68523  if (is_list || PyList_CheckExact(o)) {
68524  Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
68525  if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
68526  PyObject *r = PyList_GET_ITEM(o, n);
68527  Py_INCREF(r);
68528  return r;
68529  }
68530  }
68531  else if (PyTuple_CheckExact(o)) {
68532  Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
68533  if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
68534  PyObject *r = PyTuple_GET_ITEM(o, n);
68535  Py_INCREF(r);
68536  return r;
68537  }
68538  } else {
68539  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
68540  if (likely(m && m->sq_item)) {
68541  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
68542  Py_ssize_t l = m->sq_length(o);
68543  if (likely(l >= 0)) {
68544  i += l;
68545  } else {
68546  if (!PyErr_ExceptionMatches(PyExc_OverflowError))
68547  return NULL;
68548  PyErr_Clear();
68549  }
68550  }
68551  return m->sq_item(o, i);
68552  }
68553  }
68554 #else
68555  if (is_list || PySequence_Check(o)) {
68556  return PySequence_GetItem(o, i);
68557  }
68558 #endif
68559  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
68560 }
68561 
68562 /* py_abs */
68563 #if CYTHON_USE_PYLONG_INTERNALS
68564 static PyObject *__Pyx_PyLong_AbsNeg(PyObject *n) {
68565  if (likely(Py_SIZE(n) == -1)) {
68566  return PyLong_FromLong(((PyLongObject*)n)->ob_digit[0]);
68567  }
68568 #if CYTHON_COMPILING_IN_CPYTHON
68569  {
68570  PyObject *copy = _PyLong_Copy((PyLongObject*)n);
68571  if (likely(copy)) {
68572  __Pyx_SET_SIZE(copy, -Py_SIZE(copy));
68573  }
68574  return copy;
68575  }
68576 #else
68577  return PyNumber_Negative(n);
68578 #endif
68579 }
68580 #endif
68581 
68582 /* SliceObject */
68583 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
68584  Py_ssize_t cstart, Py_ssize_t cstop,
68585  PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
68586  int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
68587 #if CYTHON_USE_TYPE_SLOTS
68588  PyMappingMethods* mp;
68589 #if PY_MAJOR_VERSION < 3
68590  PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
68591  if (likely(ms && ms->sq_slice)) {
68592  if (!has_cstart) {
68593  if (_py_start && (*_py_start != Py_None)) {
68594  cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
68595  if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
68596  } else
68597  cstart = 0;
68598  }
68599  if (!has_cstop) {
68600  if (_py_stop && (*_py_stop != Py_None)) {
68601  cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
68602  if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
68603  } else
68604  cstop = PY_SSIZE_T_MAX;
68605  }
68606  if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
68607  Py_ssize_t l = ms->sq_length(obj);
68608  if (likely(l >= 0)) {
68609  if (cstop < 0) {
68610  cstop += l;
68611  if (cstop < 0) cstop = 0;
68612  }
68613  if (cstart < 0) {
68614  cstart += l;
68615  if (cstart < 0) cstart = 0;
68616  }
68617  } else {
68618  if (!PyErr_ExceptionMatches(PyExc_OverflowError))
68619  goto bad;
68620  PyErr_Clear();
68621  }
68622  }
68623  return ms->sq_slice(obj, cstart, cstop);
68624  }
68625 #endif
68626  mp = Py_TYPE(obj)->tp_as_mapping;
68627  if (likely(mp && mp->mp_subscript))
68628 #endif
68629  {
68630  PyObject* result;
68631  PyObject *py_slice, *py_start, *py_stop;
68632  if (_py_slice) {
68633  py_slice = *_py_slice;
68634  } else {
68635  PyObject* owned_start = NULL;
68636  PyObject* owned_stop = NULL;
68637  if (_py_start) {
68638  py_start = *_py_start;
68639  } else {
68640  if (has_cstart) {
68641  owned_start = py_start = PyInt_FromSsize_t(cstart);
68642  if (unlikely(!py_start)) goto bad;
68643  } else
68644  py_start = Py_None;
68645  }
68646  if (_py_stop) {
68647  py_stop = *_py_stop;
68648  } else {
68649  if (has_cstop) {
68650  owned_stop = py_stop = PyInt_FromSsize_t(cstop);
68651  if (unlikely(!py_stop)) {
68652  Py_XDECREF(owned_start);
68653  goto bad;
68654  }
68655  } else
68656  py_stop = Py_None;
68657  }
68658  py_slice = PySlice_New(py_start, py_stop, Py_None);
68659  Py_XDECREF(owned_start);
68660  Py_XDECREF(owned_stop);
68661  if (unlikely(!py_slice)) goto bad;
68662  }
68663 #if CYTHON_USE_TYPE_SLOTS
68664  result = mp->mp_subscript(obj, py_slice);
68665 #else
68666  result = PyObject_GetItem(obj, py_slice);
68667 #endif
68668  if (!_py_slice) {
68669  Py_DECREF(py_slice);
68670  }
68671  return result;
68672  }
68673  PyErr_Format(PyExc_TypeError,
68674  "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
68675 bad:
68676  return NULL;
68677 }
68678 
68679 /* PyObjectCallNoArg */
68680 #if CYTHON_COMPILING_IN_CPYTHON
68681 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
68682 #if CYTHON_FAST_PYCALL
68683  if (PyFunction_Check(func)) {
68684  return __Pyx_PyFunction_FastCall(func, NULL, 0);
68685  }
68686 #endif
68687 #ifdef __Pyx_CyFunction_USED
68688  if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
68689 #else
68690  if (likely(PyCFunction_Check(func)))
68691 #endif
68692  {
68693  if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
68694  return __Pyx_PyObject_CallMethO(func, NULL);
68695  }
68696  }
68697  return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
68698 }
68699 #endif
68700 
68701 /* ObjectGetItem */
68702 #if CYTHON_USE_TYPE_SLOTS
68703 static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
68704  PyObject *runerr;
68705  Py_ssize_t key_value;
68706  PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
68707  if (unlikely(!(m && m->sq_item))) {
68708  PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
68709  return NULL;
68710  }
68711  key_value = __Pyx_PyIndex_AsSsize_t(index);
68712  if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
68713  return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
68714  }
68715  if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
68716  PyErr_Clear();
68717  PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
68718  }
68719  return NULL;
68720 }
68721 static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
68722  PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
68723  if (likely(m && m->mp_subscript)) {
68724  return m->mp_subscript(obj, key);
68725  }
68726  return __Pyx_PyObject_GetIndex(obj, key);
68727 }
68728 #endif
68729 
68730 /* PyFloatBinop */
68731 #if !CYTHON_COMPILING_IN_PYPY
68732 static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
68733  const double a = floatval;
68734  double b, result;
68735  (void)inplace;
68736  (void)zerodivision_check;
68737  if (likely(PyFloat_CheckExact(op2))) {
68738  b = PyFloat_AS_DOUBLE(op2);
68739 
68740  } else
68741  #if PY_MAJOR_VERSION < 3
68742  if (likely(PyInt_CheckExact(op2))) {
68743  b = (double) PyInt_AS_LONG(op2);
68744 
68745  } else
68746  #endif
68747  if (likely(PyLong_CheckExact(op2))) {
68748  #if CYTHON_USE_PYLONG_INTERNALS
68749  const digit* digits = ((PyLongObject*)op2)->ob_digit;
68750  const Py_ssize_t size = Py_SIZE(op2);
68751  switch (size) {
68752  case 0: b = 0.0; break;
68753  case -1: b = -(double) digits[0]; break;
68754  case 1: b = (double) digits[0]; break;
68755  case -2:
68756  case 2:
68757  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
68758  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
68759  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) {
68760  if (size == -2)
68761  b = -b;
68762  break;
68763  }
68764  }
68765  CYTHON_FALLTHROUGH;
68766  case -3:
68767  case 3:
68768  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
68769  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
68770  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) {
68771  if (size == -3)
68772  b = -b;
68773  break;
68774  }
68775  }
68776  CYTHON_FALLTHROUGH;
68777  case -4:
68778  case 4:
68779  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
68780  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
68781  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) {
68782  if (size == -4)
68783  b = -b;
68784  break;
68785  }
68786  }
68787  CYTHON_FALLTHROUGH;
68788  default:
68789  #else
68790  {
68791  #endif
68792  b = PyLong_AsDouble(op2);
68793  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
68794 
68795  }
68796  } else {
68797  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
68798  }
68799 
68800  PyFPE_START_PROTECT("add", return NULL)
68801  result = a + b;
68802  PyFPE_END_PROTECT(result)
68803  return PyFloat_FromDouble(result);
68804 }
68805 #endif
68806 
68807 /* PyFloatBinop */
68808  #if !CYTHON_COMPILING_IN_PYPY
68809 static PyObject* __Pyx_PyFloat_SubtractObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
68810  const double b = floatval;
68811  double a, result;
68812  (void)inplace;
68813  (void)zerodivision_check;
68814  if (likely(PyFloat_CheckExact(op1))) {
68815  a = PyFloat_AS_DOUBLE(op1);
68816 
68817  } else
68818  #if PY_MAJOR_VERSION < 3
68819  if (likely(PyInt_CheckExact(op1))) {
68820  a = (double) PyInt_AS_LONG(op1);
68821 
68822  } else
68823  #endif
68824  if (likely(PyLong_CheckExact(op1))) {
68825  #if CYTHON_USE_PYLONG_INTERNALS
68826  const digit* digits = ((PyLongObject*)op1)->ob_digit;
68827  const Py_ssize_t size = Py_SIZE(op1);
68828  switch (size) {
68829  case 0: a = 0.0; break;
68830  case -1: a = -(double) digits[0]; break;
68831  case 1: a = (double) digits[0]; break;
68832  case -2:
68833  case 2:
68834  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
68835  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
68836  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
68837  if (size == -2)
68838  a = -a;
68839  break;
68840  }
68841  }
68842  CYTHON_FALLTHROUGH;
68843  case -3:
68844  case 3:
68845  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
68846  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
68847  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
68848  if (size == -3)
68849  a = -a;
68850  break;
68851  }
68852  }
68853  CYTHON_FALLTHROUGH;
68854  case -4:
68855  case 4:
68856  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
68857  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
68858  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
68859  if (size == -4)
68860  a = -a;
68861  break;
68862  }
68863  }
68864  CYTHON_FALLTHROUGH;
68865  default:
68866  #else
68867  {
68868  #endif
68869  a = PyLong_AsDouble(op1);
68870  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
68871 
68872  }
68873  } else {
68874  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
68875  }
68876 
68877  PyFPE_START_PROTECT("subtract", return NULL)
68878  result = a - b;
68879  PyFPE_END_PROTECT(result)
68880  return PyFloat_FromDouble(result);
68881 }
68882 #endif
68883 
68884 /* SliceObject */
68885  static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
68886  Py_ssize_t cstart, Py_ssize_t cstop,
68887  PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
68888  int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
68889 #if CYTHON_USE_TYPE_SLOTS
68890  PyMappingMethods* mp;
68891 #if PY_MAJOR_VERSION < 3
68892  PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
68893  if (likely(ms && ms->sq_ass_slice)) {
68894  if (!has_cstart) {
68895  if (_py_start && (*_py_start != Py_None)) {
68896  cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
68897  if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
68898  } else
68899  cstart = 0;
68900  }
68901  if (!has_cstop) {
68902  if (_py_stop && (*_py_stop != Py_None)) {
68903  cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
68904  if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
68905  } else
68906  cstop = PY_SSIZE_T_MAX;
68907  }
68908  if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
68909  Py_ssize_t l = ms->sq_length(obj);
68910  if (likely(l >= 0)) {
68911  if (cstop < 0) {
68912  cstop += l;
68913  if (cstop < 0) cstop = 0;
68914  }
68915  if (cstart < 0) {
68916  cstart += l;
68917  if (cstart < 0) cstart = 0;
68918  }
68919  } else {
68920  if (!PyErr_ExceptionMatches(PyExc_OverflowError))
68921  goto bad;
68922  PyErr_Clear();
68923  }
68924  }
68925  return ms->sq_ass_slice(obj, cstart, cstop, value);
68926  }
68927 #endif
68928  mp = Py_TYPE(obj)->tp_as_mapping;
68929  if (likely(mp && mp->mp_ass_subscript))
68930 #endif
68931  {
68932  int result;
68933  PyObject *py_slice, *py_start, *py_stop;
68934  if (_py_slice) {
68935  py_slice = *_py_slice;
68936  } else {
68937  PyObject* owned_start = NULL;
68938  PyObject* owned_stop = NULL;
68939  if (_py_start) {
68940  py_start = *_py_start;
68941  } else {
68942  if (has_cstart) {
68943  owned_start = py_start = PyInt_FromSsize_t(cstart);
68944  if (unlikely(!py_start)) goto bad;
68945  } else
68946  py_start = Py_None;
68947  }
68948  if (_py_stop) {
68949  py_stop = *_py_stop;
68950  } else {
68951  if (has_cstop) {
68952  owned_stop = py_stop = PyInt_FromSsize_t(cstop);
68953  if (unlikely(!py_stop)) {
68954  Py_XDECREF(owned_start);
68955  goto bad;
68956  }
68957  } else
68958  py_stop = Py_None;
68959  }
68960  py_slice = PySlice_New(py_start, py_stop, Py_None);
68961  Py_XDECREF(owned_start);
68962  Py_XDECREF(owned_stop);
68963  if (unlikely(!py_slice)) goto bad;
68964  }
68965 #if CYTHON_USE_TYPE_SLOTS
68966  result = mp->mp_ass_subscript(obj, py_slice, value);
68967 #else
68968  result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
68969 #endif
68970  if (!_py_slice) {
68971  Py_DECREF(py_slice);
68972  }
68973  return result;
68974  }
68975  PyErr_Format(PyExc_TypeError,
68976  "'%.200s' object does not support slice %.10s",
68977  Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
68978 bad:
68979  return -1;
68980 }
68981 
68982 /* pyobject_as_double */
68983  static double __Pyx__PyObject_AsDouble(PyObject* obj) {
68984  PyObject* float_value;
68985 #if !CYTHON_USE_TYPE_SLOTS
68986  float_value = PyNumber_Float(obj); if ((0)) goto bad;
68987 #else
68988  PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
68989  if (likely(nb) && likely(nb->nb_float)) {
68990  float_value = nb->nb_float(obj);
68991  if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
68992  PyErr_Format(PyExc_TypeError,
68993  "__float__ returned non-float (type %.200s)",
68994  Py_TYPE(float_value)->tp_name);
68995  Py_DECREF(float_value);
68996  goto bad;
68997  }
68998  } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {
68999 #if PY_MAJOR_VERSION >= 3
69000  float_value = PyFloat_FromString(obj);
69001 #else
69002  float_value = PyFloat_FromString(obj, 0);
69003 #endif
69004  } else {
69005  PyObject* args = PyTuple_New(1);
69006  if (unlikely(!args)) goto bad;
69007  PyTuple_SET_ITEM(args, 0, obj);
69008  float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0);
69009  PyTuple_SET_ITEM(args, 0, 0);
69010  Py_DECREF(args);
69011  }
69012 #endif
69013  if (likely(float_value)) {
69014  double value = PyFloat_AS_DOUBLE(float_value);
69015  Py_DECREF(float_value);
69016  return value;
69017  }
69018 bad:
69019  return (double)-1;
69020 }
69021 
69022 /* PyIntBinop */
69023  #if !CYTHON_COMPILING_IN_PYPY
69024 static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
69025  (void)inplace;
69026  (void)zerodivision_check;
69027  #if PY_MAJOR_VERSION < 3
69028  if (likely(PyInt_CheckExact(op1))) {
69029  const long b = intval;
69030  long x;
69031  long a = PyInt_AS_LONG(op1);
69032  x = (long)((unsigned long)a - b);
69033  if (likely((x^a) >= 0 || (x^~b) >= 0))
69034  return PyInt_FromLong(x);
69035  return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
69036  }
69037  #endif
69038  #if CYTHON_USE_PYLONG_INTERNALS
69039  if (likely(PyLong_CheckExact(op1))) {
69040  const long b = intval;
69041  long a, x;
69042 #ifdef HAVE_LONG_LONG
69043  const PY_LONG_LONG llb = intval;
69044  PY_LONG_LONG lla, llx;
69045 #endif
69046  const digit* digits = ((PyLongObject*)op1)->ob_digit;
69047  const Py_ssize_t size = Py_SIZE(op1);
69048  if (likely(__Pyx_sst_abs(size) <= 1)) {
69049  a = likely(size) ? digits[0] : 0;
69050  if (size == -1) a = -a;
69051  } else {
69052  switch (size) {
69053  case -2:
69054  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
69055  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69056  break;
69057 #ifdef HAVE_LONG_LONG
69058  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
69059  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69060  goto long_long;
69061 #endif
69062  }
69063  CYTHON_FALLTHROUGH;
69064  case 2:
69065  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
69066  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69067  break;
69068 #ifdef HAVE_LONG_LONG
69069  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
69070  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69071  goto long_long;
69072 #endif
69073  }
69074  CYTHON_FALLTHROUGH;
69075  case -3:
69076  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
69077  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69078  break;
69079 #ifdef HAVE_LONG_LONG
69080  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
69081  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69082  goto long_long;
69083 #endif
69084  }
69085  CYTHON_FALLTHROUGH;
69086  case 3:
69087  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
69088  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69089  break;
69090 #ifdef HAVE_LONG_LONG
69091  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
69092  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69093  goto long_long;
69094 #endif
69095  }
69096  CYTHON_FALLTHROUGH;
69097  case -4:
69098  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
69099  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69100  break;
69101 #ifdef HAVE_LONG_LONG
69102  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
69103  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69104  goto long_long;
69105 #endif
69106  }
69107  CYTHON_FALLTHROUGH;
69108  case 4:
69109  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
69110  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69111  break;
69112 #ifdef HAVE_LONG_LONG
69113  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
69114  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69115  goto long_long;
69116 #endif
69117  }
69118  CYTHON_FALLTHROUGH;
69119  default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
69120  }
69121  }
69122  x = a - b;
69123  return PyLong_FromLong(x);
69124 #ifdef HAVE_LONG_LONG
69125  long_long:
69126  llx = lla - llb;
69127  return PyLong_FromLongLong(llx);
69128 #endif
69129 
69130 
69131  }
69132  #endif
69133  if (PyFloat_CheckExact(op1)) {
69134  const long b = intval;
69135  double a = PyFloat_AS_DOUBLE(op1);
69136  double result;
69137  PyFPE_START_PROTECT("subtract", return NULL)
69138  result = ((double)a) - (double)b;
69139  PyFPE_END_PROTECT(result)
69140  return PyFloat_FromDouble(result);
69141  }
69142  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
69143 }
69144 #endif
69145 
69146 /* GetTopmostException */
69147  #if CYTHON_USE_EXC_INFO_STACK
69148 static _PyErr_StackItem *
69149 __Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
69150 {
69151  _PyErr_StackItem *exc_info = tstate->exc_info;
69152  while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
69153  exc_info->previous_item != NULL)
69154  {
69155  exc_info = exc_info->previous_item;
69156  }
69157  return exc_info;
69158 }
69159 #endif
69160 
69161 /* SaveResetException */
69162  #if CYTHON_FAST_THREAD_STATE
69163 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
69164  #if CYTHON_USE_EXC_INFO_STACK
69165  _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
69166  *type = exc_info->exc_type;
69167  *value = exc_info->exc_value;
69168  *tb = exc_info->exc_traceback;
69169  #else
69170  *type = tstate->exc_type;
69171  *value = tstate->exc_value;
69172  *tb = tstate->exc_traceback;
69173  #endif
69174  Py_XINCREF(*type);
69175  Py_XINCREF(*value);
69176  Py_XINCREF(*tb);
69177 }
69178 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
69179  PyObject *tmp_type, *tmp_value, *tmp_tb;
69180  #if CYTHON_USE_EXC_INFO_STACK
69181  _PyErr_StackItem *exc_info = tstate->exc_info;
69182  tmp_type = exc_info->exc_type;
69183  tmp_value = exc_info->exc_value;
69184  tmp_tb = exc_info->exc_traceback;
69185  exc_info->exc_type = type;
69186  exc_info->exc_value = value;
69187  exc_info->exc_traceback = tb;
69188  #else
69189  tmp_type = tstate->exc_type;
69190  tmp_value = tstate->exc_value;
69191  tmp_tb = tstate->exc_traceback;
69192  tstate->exc_type = type;
69193  tstate->exc_value = value;
69194  tstate->exc_traceback = tb;
69195  #endif
69196  Py_XDECREF(tmp_type);
69197  Py_XDECREF(tmp_value);
69198  Py_XDECREF(tmp_tb);
69199 }
69200 #endif
69201 
69202 /* GetException */
69203  #if CYTHON_FAST_THREAD_STATE
69204 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
69205 #else
69206 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
69207 #endif
69208 {
69209  PyObject *local_type, *local_value, *local_tb;
69210 #if CYTHON_FAST_THREAD_STATE
69211  PyObject *tmp_type, *tmp_value, *tmp_tb;
69212  local_type = tstate->curexc_type;
69213  local_value = tstate->curexc_value;
69214  local_tb = tstate->curexc_traceback;
69215  tstate->curexc_type = 0;
69216  tstate->curexc_value = 0;
69217  tstate->curexc_traceback = 0;
69218 #else
69219  PyErr_Fetch(&local_type, &local_value, &local_tb);
69220 #endif
69221  PyErr_NormalizeException(&local_type, &local_value, &local_tb);
69222 #if CYTHON_FAST_THREAD_STATE
69223  if (unlikely(tstate->curexc_type))
69224 #else
69225  if (unlikely(PyErr_Occurred()))
69226 #endif
69227  goto bad;
69228  #if PY_MAJOR_VERSION >= 3
69229  if (local_tb) {
69230  if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
69231  goto bad;
69232  }
69233  #endif
69234  Py_XINCREF(local_tb);
69235  Py_XINCREF(local_type);
69236  Py_XINCREF(local_value);
69237  *type = local_type;
69238  *value = local_value;
69239  *tb = local_tb;
69240 #if CYTHON_FAST_THREAD_STATE
69241  #if CYTHON_USE_EXC_INFO_STACK
69242  {
69243  _PyErr_StackItem *exc_info = tstate->exc_info;
69244  tmp_type = exc_info->exc_type;
69245  tmp_value = exc_info->exc_value;
69246  tmp_tb = exc_info->exc_traceback;
69247  exc_info->exc_type = local_type;
69248  exc_info->exc_value = local_value;
69249  exc_info->exc_traceback = local_tb;
69250  }
69251  #else
69252  tmp_type = tstate->exc_type;
69253  tmp_value = tstate->exc_value;
69254  tmp_tb = tstate->exc_traceback;
69255  tstate->exc_type = local_type;
69256  tstate->exc_value = local_value;
69257  tstate->exc_traceback = local_tb;
69258  #endif
69259  Py_XDECREF(tmp_type);
69260  Py_XDECREF(tmp_value);
69261  Py_XDECREF(tmp_tb);
69262 #else
69263  PyErr_SetExcInfo(local_type, local_value, local_tb);
69264 #endif
69265  return 0;
69266 bad:
69267  *type = 0;
69268  *value = 0;
69269  *tb = 0;
69270  Py_XDECREF(local_type);
69271  Py_XDECREF(local_value);
69272  Py_XDECREF(local_tb);
69273  return -1;
69274 }
69275 
69276 /* ExtTypeTest */
69277  static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
69278  if (unlikely(!type)) {
69279  PyErr_SetString(PyExc_SystemError, "Missing type object");
69280  return 0;
69281  }
69282  if (likely(__Pyx_TypeCheck(obj, type)))
69283  return 1;
69284  PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
69285  Py_TYPE(obj)->tp_name, type->tp_name);
69286  return 0;
69287 }
69288 
69289 /* PyErrExceptionMatches */
69290  #if CYTHON_FAST_THREAD_STATE
69291 static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
69292  Py_ssize_t i, n;
69293  n = PyTuple_GET_SIZE(tuple);
69294 #if PY_MAJOR_VERSION >= 3
69295  for (i=0; i<n; i++) {
69296  if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
69297  }
69298 #endif
69299  for (i=0; i<n; i++) {
69300  if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
69301  }
69302  return 0;
69303 }
69304 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
69305  PyObject *exc_type = tstate->curexc_type;
69306  if (exc_type == err) return 1;
69307  if (unlikely(!exc_type)) return 0;
69308  if (unlikely(PyTuple_Check(err)))
69309  return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
69310  return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
69311 }
69312 #endif
69313 
69314 /* PyErrFetchRestore */
69315  #if CYTHON_FAST_THREAD_STATE
69316 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
69317  PyObject *tmp_type, *tmp_value, *tmp_tb;
69318  tmp_type = tstate->curexc_type;
69319  tmp_value = tstate->curexc_value;
69320  tmp_tb = tstate->curexc_traceback;
69321  tstate->curexc_type = type;
69322  tstate->curexc_value = value;
69323  tstate->curexc_traceback = tb;
69324  Py_XDECREF(tmp_type);
69325  Py_XDECREF(tmp_value);
69326  Py_XDECREF(tmp_tb);
69327 }
69328 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
69329  *type = tstate->curexc_type;
69330  *value = tstate->curexc_value;
69331  *tb = tstate->curexc_traceback;
69332  tstate->curexc_type = 0;
69333  tstate->curexc_value = 0;
69334  tstate->curexc_traceback = 0;
69335 }
69336 #endif
69337 
69338 /* GetAttr */
69339  static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
69340 #if CYTHON_USE_TYPE_SLOTS
69341 #if PY_MAJOR_VERSION >= 3
69342  if (likely(PyUnicode_Check(n)))
69343 #else
69344  if (likely(PyString_Check(n)))
69345 #endif
69346  return __Pyx_PyObject_GetAttrStr(o, n);
69347 #endif
69348  return PyObject_GetAttr(o, n);
69349 }
69350 
69351 /* GetAttr3 */
69352  static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
69353  __Pyx_PyThreadState_declare
69354  __Pyx_PyThreadState_assign
69355  if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
69356  return NULL;
69357  __Pyx_PyErr_Clear();
69358  Py_INCREF(d);
69359  return d;
69360 }
69361 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
69362  PyObject *r = __Pyx_GetAttr(o, n);
69363  return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
69364 }
69365 
69366 /* PyFloatBinop */
69367  #if !CYTHON_COMPILING_IN_PYPY
69368 #define __Pyx_PyFloat_TrueDivideCObj_ZeroDivisionError(operand) if (unlikely(zerodivision_check && ((operand) == 0))) {\
69369  PyErr_SetString(PyExc_ZeroDivisionError, "float division by zero");\
69370  return NULL;\
69371 }
69372 static PyObject* __Pyx_PyFloat_TrueDivideCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
69373  const double a = floatval;
69374  double b, result;
69375  (void)inplace;
69376  (void)zerodivision_check;
69377  if (likely(PyFloat_CheckExact(op2))) {
69378  b = PyFloat_AS_DOUBLE(op2);
69379  __Pyx_PyFloat_TrueDivideCObj_ZeroDivisionError(b)
69380  } else
69381  #if PY_MAJOR_VERSION < 3
69382  if (likely(PyInt_CheckExact(op2))) {
69383  b = (double) PyInt_AS_LONG(op2);
69384  __Pyx_PyFloat_TrueDivideCObj_ZeroDivisionError(b)
69385  } else
69386  #endif
69387  if (likely(PyLong_CheckExact(op2))) {
69388  #if CYTHON_USE_PYLONG_INTERNALS
69389  const digit* digits = ((PyLongObject*)op2)->ob_digit;
69390  const Py_ssize_t size = Py_SIZE(op2);
69391  switch (size) {
69392  case 0: __Pyx_PyFloat_TrueDivideCObj_ZeroDivisionError(0) break;
69393  case -1: b = -(double) digits[0]; break;
69394  case 1: b = (double) digits[0]; break;
69395  case -2:
69396  case 2:
69397  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
69398  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69399  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) {
69400  if (size == -2)
69401  b = -b;
69402  break;
69403  }
69404  }
69405  CYTHON_FALLTHROUGH;
69406  case -3:
69407  case 3:
69408  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
69409  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69410  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) {
69411  if (size == -3)
69412  b = -b;
69413  break;
69414  }
69415  }
69416  CYTHON_FALLTHROUGH;
69417  case -4:
69418  case 4:
69419  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
69420  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69421  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) {
69422  if (size == -4)
69423  b = -b;
69424  break;
69425  }
69426  }
69427  CYTHON_FALLTHROUGH;
69428  default:
69429  #else
69430  {
69431  #endif
69432  b = PyLong_AsDouble(op2);
69433  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
69434  __Pyx_PyFloat_TrueDivideCObj_ZeroDivisionError(b)
69435  }
69436  } else {
69437  return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2);
69438  }
69439  __Pyx_PyFloat_TrueDivideCObj_ZeroDivisionError(b)
69440  PyFPE_START_PROTECT("divide", return NULL)
69441  result = a / b;
69442  PyFPE_END_PROTECT(result)
69443  return PyFloat_FromDouble(result);
69444 }
69445 #endif
69446 
69447 /* BytesEquals */
69448  static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
69449 #if CYTHON_COMPILING_IN_PYPY
69450  return PyObject_RichCompareBool(s1, s2, equals);
69451 #else
69452  if (s1 == s2) {
69453  return (equals == Py_EQ);
69454  } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
69455  const char *ps1, *ps2;
69456  Py_ssize_t length = PyBytes_GET_SIZE(s1);
69457  if (length != PyBytes_GET_SIZE(s2))
69458  return (equals == Py_NE);
69459  ps1 = PyBytes_AS_STRING(s1);
69460  ps2 = PyBytes_AS_STRING(s2);
69461  if (ps1[0] != ps2[0]) {
69462  return (equals == Py_NE);
69463  } else if (length == 1) {
69464  return (equals == Py_EQ);
69465  } else {
69466  int result;
69467 #if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
69468  Py_hash_t hash1, hash2;
69469  hash1 = ((PyBytesObject*)s1)->ob_shash;
69470  hash2 = ((PyBytesObject*)s2)->ob_shash;
69471  if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
69472  return (equals == Py_NE);
69473  }
69474 #endif
69475  result = memcmp(ps1, ps2, (size_t)length);
69476  return (equals == Py_EQ) ? (result == 0) : (result != 0);
69477  }
69478  } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
69479  return (equals == Py_NE);
69480  } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
69481  return (equals == Py_NE);
69482  } else {
69483  int result;
69484  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
69485  if (!py_result)
69486  return -1;
69487  result = __Pyx_PyObject_IsTrue(py_result);
69488  Py_DECREF(py_result);
69489  return result;
69490  }
69491 #endif
69492 }
69493 
69494 /* UnicodeEquals */
69495  static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
69496 #if CYTHON_COMPILING_IN_PYPY
69497  return PyObject_RichCompareBool(s1, s2, equals);
69498 #else
69499 #if PY_MAJOR_VERSION < 3
69500  PyObject* owned_ref = NULL;
69501 #endif
69502  int s1_is_unicode, s2_is_unicode;
69503  if (s1 == s2) {
69504  goto return_eq;
69505  }
69506  s1_is_unicode = PyUnicode_CheckExact(s1);
69507  s2_is_unicode = PyUnicode_CheckExact(s2);
69508 #if PY_MAJOR_VERSION < 3
69509  if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
69510  owned_ref = PyUnicode_FromObject(s2);
69511  if (unlikely(!owned_ref))
69512  return -1;
69513  s2 = owned_ref;
69514  s2_is_unicode = 1;
69515  } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
69516  owned_ref = PyUnicode_FromObject(s1);
69517  if (unlikely(!owned_ref))
69518  return -1;
69519  s1 = owned_ref;
69520  s1_is_unicode = 1;
69521  } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
69522  return __Pyx_PyBytes_Equals(s1, s2, equals);
69523  }
69524 #endif
69525  if (s1_is_unicode & s2_is_unicode) {
69526  Py_ssize_t length;
69527  int kind;
69528  void *data1, *data2;
69529  if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
69530  return -1;
69531  length = __Pyx_PyUnicode_GET_LENGTH(s1);
69532  if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
69533  goto return_ne;
69534  }
69535 #if CYTHON_USE_UNICODE_INTERNALS
69536  {
69537  Py_hash_t hash1, hash2;
69538  #if CYTHON_PEP393_ENABLED
69539  hash1 = ((PyASCIIObject*)s1)->hash;
69540  hash2 = ((PyASCIIObject*)s2)->hash;
69541  #else
69542  hash1 = ((PyUnicodeObject*)s1)->hash;
69543  hash2 = ((PyUnicodeObject*)s2)->hash;
69544  #endif
69545  if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
69546  goto return_ne;
69547  }
69548  }
69549 #endif
69550  kind = __Pyx_PyUnicode_KIND(s1);
69551  if (kind != __Pyx_PyUnicode_KIND(s2)) {
69552  goto return_ne;
69553  }
69554  data1 = __Pyx_PyUnicode_DATA(s1);
69555  data2 = __Pyx_PyUnicode_DATA(s2);
69556  if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
69557  goto return_ne;
69558  } else if (length == 1) {
69559  goto return_eq;
69560  } else {
69561  int result = memcmp(data1, data2, (size_t)(length * kind));
69562  #if PY_MAJOR_VERSION < 3
69563  Py_XDECREF(owned_ref);
69564  #endif
69565  return (equals == Py_EQ) ? (result == 0) : (result != 0);
69566  }
69567  } else if ((s1 == Py_None) & s2_is_unicode) {
69568  goto return_ne;
69569  } else if ((s2 == Py_None) & s1_is_unicode) {
69570  goto return_ne;
69571  } else {
69572  int result;
69573  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
69574  #if PY_MAJOR_VERSION < 3
69575  Py_XDECREF(owned_ref);
69576  #endif
69577  if (!py_result)
69578  return -1;
69579  result = __Pyx_PyObject_IsTrue(py_result);
69580  Py_DECREF(py_result);
69581  return result;
69582  }
69583 return_eq:
69584  #if PY_MAJOR_VERSION < 3
69585  Py_XDECREF(owned_ref);
69586  #endif
69587  return (equals == Py_EQ);
69588 return_ne:
69589  #if PY_MAJOR_VERSION < 3
69590  Py_XDECREF(owned_ref);
69591  #endif
69592  return (equals == Py_NE);
69593 #endif
69594 }
69595 
69596 /* PyFloatBinop */
69597  #if !CYTHON_COMPILING_IN_PYPY
69598 static PyObject* __Pyx_PyFloat_EqObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
69599  const double b = floatval;
69600  double a;
69601  (void)inplace;
69602  (void)zerodivision_check;
69603  if (op1 == op2) {
69604  Py_RETURN_TRUE;
69605  }
69606  if (likely(PyFloat_CheckExact(op1))) {
69607  a = PyFloat_AS_DOUBLE(op1);
69608 
69609  } else
69610  #if PY_MAJOR_VERSION < 3
69611  if (likely(PyInt_CheckExact(op1))) {
69612  a = (double) PyInt_AS_LONG(op1);
69613 
69614  } else
69615  #endif
69616  if (likely(PyLong_CheckExact(op1))) {
69617  #if CYTHON_USE_PYLONG_INTERNALS
69618  const digit* digits = ((PyLongObject*)op1)->ob_digit;
69619  const Py_ssize_t size = Py_SIZE(op1);
69620  switch (size) {
69621  case 0: a = 0.0; break;
69622  case -1: a = -(double) digits[0]; break;
69623  case 1: a = (double) digits[0]; break;
69624  case -2:
69625  case 2:
69626  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
69627  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69628  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
69629  if (size == -2)
69630  a = -a;
69631  break;
69632  }
69633  }
69634  CYTHON_FALLTHROUGH;
69635  case -3:
69636  case 3:
69637  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
69638  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69639  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
69640  if (size == -3)
69641  a = -a;
69642  break;
69643  }
69644  }
69645  CYTHON_FALLTHROUGH;
69646  case -4:
69647  case 4:
69648  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
69649  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69650  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
69651  if (size == -4)
69652  a = -a;
69653  break;
69654  }
69655  }
69656  CYTHON_FALLTHROUGH;
69657  default:
69658  #else
69659  {
69660  #endif
69661  return (
69662  PyFloat_Type.tp_richcompare(op2, op1, Py_EQ));
69663  }
69664  } else {
69665  return (
69666  PyObject_RichCompare(op1, op2, Py_EQ));
69667  }
69668  if (a == b) {
69669  Py_RETURN_TRUE;
69670  } else {
69671  Py_RETURN_FALSE;
69672  }
69673 }
69674 #endif
69675 
69676 /* PyIntBinop */
69677  #if !CYTHON_COMPILING_IN_PYPY
69678 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
69679  (void)inplace;
69680  (void)zerodivision_check;
69681  #if PY_MAJOR_VERSION < 3
69682  if (likely(PyInt_CheckExact(op1))) {
69683  const long b = intval;
69684  long x;
69685  long a = PyInt_AS_LONG(op1);
69686  x = (long)((unsigned long)a + b);
69687  if (likely((x^a) >= 0 || (x^b) >= 0))
69688  return PyInt_FromLong(x);
69689  return PyLong_Type.tp_as_number->nb_add(op1, op2);
69690  }
69691  #endif
69692  #if CYTHON_USE_PYLONG_INTERNALS
69693  if (likely(PyLong_CheckExact(op1))) {
69694  const long b = intval;
69695  long a, x;
69696 #ifdef HAVE_LONG_LONG
69697  const PY_LONG_LONG llb = intval;
69698  PY_LONG_LONG lla, llx;
69699 #endif
69700  const digit* digits = ((PyLongObject*)op1)->ob_digit;
69701  const Py_ssize_t size = Py_SIZE(op1);
69702  if (likely(__Pyx_sst_abs(size) <= 1)) {
69703  a = likely(size) ? digits[0] : 0;
69704  if (size == -1) a = -a;
69705  } else {
69706  switch (size) {
69707  case -2:
69708  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
69709  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69710  break;
69711 #ifdef HAVE_LONG_LONG
69712  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
69713  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69714  goto long_long;
69715 #endif
69716  }
69717  CYTHON_FALLTHROUGH;
69718  case 2:
69719  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
69720  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69721  break;
69722 #ifdef HAVE_LONG_LONG
69723  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
69724  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69725  goto long_long;
69726 #endif
69727  }
69728  CYTHON_FALLTHROUGH;
69729  case -3:
69730  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
69731  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69732  break;
69733 #ifdef HAVE_LONG_LONG
69734  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
69735  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69736  goto long_long;
69737 #endif
69738  }
69739  CYTHON_FALLTHROUGH;
69740  case 3:
69741  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
69742  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69743  break;
69744 #ifdef HAVE_LONG_LONG
69745  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
69746  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69747  goto long_long;
69748 #endif
69749  }
69750  CYTHON_FALLTHROUGH;
69751  case -4:
69752  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
69753  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69754  break;
69755 #ifdef HAVE_LONG_LONG
69756  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
69757  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69758  goto long_long;
69759 #endif
69760  }
69761  CYTHON_FALLTHROUGH;
69762  case 4:
69763  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
69764  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
69765  break;
69766 #ifdef HAVE_LONG_LONG
69767  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
69768  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
69769  goto long_long;
69770 #endif
69771  }
69772  CYTHON_FALLTHROUGH;
69773  default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
69774  }
69775  }
69776  x = a + b;
69777  return PyLong_FromLong(x);
69778 #ifdef HAVE_LONG_LONG
69779  long_long:
69780  llx = lla + llb;
69781  return PyLong_FromLongLong(llx);
69782 #endif
69783 
69784 
69785  }
69786  #endif
69787  if (PyFloat_CheckExact(op1)) {
69788  const long b = intval;
69789  double a = PyFloat_AS_DOUBLE(op1);
69790  double result;
69791  PyFPE_START_PROTECT("add", return NULL)
69792  result = ((double)a) + (double)b;
69793  PyFPE_END_PROTECT(result)
69794  return PyFloat_FromDouble(result);
69795  }
69796  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
69797 }
69798 #endif
69799 
69800 /* Import */
69801  static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
69802  PyObject *empty_list = 0;
69803  PyObject *module = 0;
69804  PyObject *global_dict = 0;
69805  PyObject *empty_dict = 0;
69806  PyObject *list;
69807  #if PY_MAJOR_VERSION < 3
69808  PyObject *py_import;
69809  py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
69810  if (!py_import)
69811  goto bad;
69812  #endif
69813  if (from_list)
69814  list = from_list;
69815  else {
69816  empty_list = PyList_New(0);
69817  if (!empty_list)
69818  goto bad;
69819  list = empty_list;
69820  }
69821  global_dict = PyModule_GetDict(__pyx_m);
69822  if (!global_dict)
69823  goto bad;
69824  empty_dict = PyDict_New();
69825  if (!empty_dict)
69826  goto bad;
69827  {
69828  #if PY_MAJOR_VERSION >= 3
69829  if (level == -1) {
69830  if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
69831  module = PyImport_ImportModuleLevelObject(
69832  name, global_dict, empty_dict, list, 1);
69833  if (!module) {
69834  if (!PyErr_ExceptionMatches(PyExc_ImportError))
69835  goto bad;
69836  PyErr_Clear();
69837  }
69838  }
69839  level = 0;
69840  }
69841  #endif
69842  if (!module) {
69843  #if PY_MAJOR_VERSION < 3
69844  PyObject *py_level = PyInt_FromLong(level);
69845  if (!py_level)
69846  goto bad;
69847  module = PyObject_CallFunctionObjArgs(py_import,
69848  name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
69849  Py_DECREF(py_level);
69850  #else
69851  module = PyImport_ImportModuleLevelObject(
69852  name, global_dict, empty_dict, list, level);
69853  #endif
69854  }
69855  }
69856 bad:
69857  #if PY_MAJOR_VERSION < 3
69858  Py_XDECREF(py_import);
69859  #endif
69860  Py_XDECREF(empty_list);
69861  Py_XDECREF(empty_dict);
69862  return module;
69863 }
69864 
69865 /* ImportFrom */
69866  static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
69867  PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
69868  if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
69869  PyErr_Format(PyExc_ImportError,
69870  #if PY_MAJOR_VERSION < 3
69871  "cannot import name %.230s", PyString_AS_STRING(name));
69872  #else
69873  "cannot import name %S", name);
69874  #endif
69875  }
69876  return value;
69877 }
69878 
69879 /* DictGetItem */
69880  #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
69881 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
69882  PyObject *value;
69883  value = PyDict_GetItemWithError(d, key);
69884  if (unlikely(!value)) {
69885  if (!PyErr_Occurred()) {
69886  if (unlikely(PyTuple_Check(key))) {
69887  PyObject* args = PyTuple_Pack(1, key);
69888  if (likely(args)) {
69889  PyErr_SetObject(PyExc_KeyError, args);
69890  Py_DECREF(args);
69891  }
69892  } else {
69893  PyErr_SetObject(PyExc_KeyError, key);
69894  }
69895  }
69896  return NULL;
69897  }
69898  Py_INCREF(value);
69899  return value;
69900 }
69901 #endif
69902 
69903 /* RaiseTooManyValuesToUnpack */
69904  static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
69905  PyErr_Format(PyExc_ValueError,
69906  "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
69907 }
69908 
69909 /* RaiseNeedMoreValuesToUnpack */
69910  static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
69911  PyErr_Format(PyExc_ValueError,
69912  "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
69913  index, (index == 1) ? "" : "s");
69914 }
69915 
69916 /* IterFinish */
69917  static CYTHON_INLINE int __Pyx_IterFinish(void) {
69918 #if CYTHON_FAST_THREAD_STATE
69919  PyThreadState *tstate = __Pyx_PyThreadState_Current;
69920  PyObject* exc_type = tstate->curexc_type;
69921  if (unlikely(exc_type)) {
69922  if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
69923  PyObject *exc_value, *exc_tb;
69924  exc_value = tstate->curexc_value;
69925  exc_tb = tstate->curexc_traceback;
69926  tstate->curexc_type = 0;
69927  tstate->curexc_value = 0;
69928  tstate->curexc_traceback = 0;
69929  Py_DECREF(exc_type);
69930  Py_XDECREF(exc_value);
69931  Py_XDECREF(exc_tb);
69932  return 0;
69933  } else {
69934  return -1;
69935  }
69936  }
69937  return 0;
69938 #else
69939  if (unlikely(PyErr_Occurred())) {
69940  if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
69941  PyErr_Clear();
69942  return 0;
69943  } else {
69944  return -1;
69945  }
69946  }
69947  return 0;
69948 #endif
69949 }
69950 
69951 /* UnpackItemEndCheck */
69952  static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
69953  if (unlikely(retval)) {
69954  Py_DECREF(retval);
69955  __Pyx_RaiseTooManyValuesError(expected);
69956  return -1;
69957  } else {
69958  return __Pyx_IterFinish();
69959  }
69960  return 0;
69961 }
69962 
69963 /* SetItemInt */
69964  static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
69965  int r;
69966  if (!j) return -1;
69967  r = PyObject_SetItem(o, j, v);
69968  Py_DECREF(j);
69969  return r;
69970 }
69971 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
69972  CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
69973 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
69974  if (is_list || PyList_CheckExact(o)) {
69975  Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
69976  if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
69977  PyObject* old = PyList_GET_ITEM(o, n);
69978  Py_INCREF(v);
69979  PyList_SET_ITEM(o, n, v);
69980  Py_DECREF(old);
69981  return 1;
69982  }
69983  } else {
69984  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
69985  if (likely(m && m->sq_ass_item)) {
69986  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
69987  Py_ssize_t l = m->sq_length(o);
69988  if (likely(l >= 0)) {
69989  i += l;
69990  } else {
69991  if (!PyErr_ExceptionMatches(PyExc_OverflowError))
69992  return -1;
69993  PyErr_Clear();
69994  }
69995  }
69996  return m->sq_ass_item(o, i, v);
69997  }
69998  }
69999 #else
70000 #if CYTHON_COMPILING_IN_PYPY
70001  if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
70002 #else
70003  if (is_list || PySequence_Check(o))
70004 #endif
70005  {
70006  return PySequence_SetItem(o, i, v);
70007  }
70008 #endif
70009  return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
70010 }
70011 
70012 /* RaiseException */
70013  #if PY_MAJOR_VERSION < 3
70014 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
70015  CYTHON_UNUSED PyObject *cause) {
70016  __Pyx_PyThreadState_declare
70017  Py_XINCREF(type);
70018  if (!value || value == Py_None)
70019  value = NULL;
70020  else
70021  Py_INCREF(value);
70022  if (!tb || tb == Py_None)
70023  tb = NULL;
70024  else {
70025  Py_INCREF(tb);
70026  if (!PyTraceBack_Check(tb)) {
70027  PyErr_SetString(PyExc_TypeError,
70028  "raise: arg 3 must be a traceback or None");
70029  goto raise_error;
70030  }
70031  }
70032  if (PyType_Check(type)) {
70033 #if CYTHON_COMPILING_IN_PYPY
70034  if (!value) {
70035  Py_INCREF(Py_None);
70036  value = Py_None;
70037  }
70038 #endif
70039  PyErr_NormalizeException(&type, &value, &tb);
70040  } else {
70041  if (value) {
70042  PyErr_SetString(PyExc_TypeError,
70043  "instance exception may not have a separate value");
70044  goto raise_error;
70045  }
70046  value = type;
70047  type = (PyObject*) Py_TYPE(type);
70048  Py_INCREF(type);
70049  if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
70050  PyErr_SetString(PyExc_TypeError,
70051  "raise: exception class must be a subclass of BaseException");
70052  goto raise_error;
70053  }
70054  }
70055  __Pyx_PyThreadState_assign
70056  __Pyx_ErrRestore(type, value, tb);
70057  return;
70058 raise_error:
70059  Py_XDECREF(value);
70060  Py_XDECREF(type);
70061  Py_XDECREF(tb);
70062  return;
70063 }
70064 #else
70065 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
70066  PyObject* owned_instance = NULL;
70067  if (tb == Py_None) {
70068  tb = 0;
70069  } else if (tb && !PyTraceBack_Check(tb)) {
70070  PyErr_SetString(PyExc_TypeError,
70071  "raise: arg 3 must be a traceback or None");
70072  goto bad;
70073  }
70074  if (value == Py_None)
70075  value = 0;
70076  if (PyExceptionInstance_Check(type)) {
70077  if (value) {
70078  PyErr_SetString(PyExc_TypeError,
70079  "instance exception may not have a separate value");
70080  goto bad;
70081  }
70082  value = type;
70083  type = (PyObject*) Py_TYPE(value);
70084  } else if (PyExceptionClass_Check(type)) {
70085  PyObject *instance_class = NULL;
70086  if (value && PyExceptionInstance_Check(value)) {
70087  instance_class = (PyObject*) Py_TYPE(value);
70088  if (instance_class != type) {
70089  int is_subclass = PyObject_IsSubclass(instance_class, type);
70090  if (!is_subclass) {
70091  instance_class = NULL;
70092  } else if (unlikely(is_subclass == -1)) {
70093  goto bad;
70094  } else {
70095  type = instance_class;
70096  }
70097  }
70098  }
70099  if (!instance_class) {
70100  PyObject *args;
70101  if (!value)
70102  args = PyTuple_New(0);
70103  else if (PyTuple_Check(value)) {
70104  Py_INCREF(value);
70105  args = value;
70106  } else
70107  args = PyTuple_Pack(1, value);
70108  if (!args)
70109  goto bad;
70110  owned_instance = PyObject_Call(type, args, NULL);
70111  Py_DECREF(args);
70112  if (!owned_instance)
70113  goto bad;
70114  value = owned_instance;
70115  if (!PyExceptionInstance_Check(value)) {
70116  PyErr_Format(PyExc_TypeError,
70117  "calling %R should have returned an instance of "
70118  "BaseException, not %R",
70119  type, Py_TYPE(value));
70120  goto bad;
70121  }
70122  }
70123  } else {
70124  PyErr_SetString(PyExc_TypeError,
70125  "raise: exception class must be a subclass of BaseException");
70126  goto bad;
70127  }
70128  if (cause) {
70129  PyObject *fixed_cause;
70130  if (cause == Py_None) {
70131  fixed_cause = NULL;
70132  } else if (PyExceptionClass_Check(cause)) {
70133  fixed_cause = PyObject_CallObject(cause, NULL);
70134  if (fixed_cause == NULL)
70135  goto bad;
70136  } else if (PyExceptionInstance_Check(cause)) {
70137  fixed_cause = cause;
70138  Py_INCREF(fixed_cause);
70139  } else {
70140  PyErr_SetString(PyExc_TypeError,
70141  "exception causes must derive from "
70142  "BaseException");
70143  goto bad;
70144  }
70145  PyException_SetCause(value, fixed_cause);
70146  }
70147  PyErr_SetObject(type, value);
70148  if (tb) {
70149 #if CYTHON_COMPILING_IN_PYPY
70150  PyObject *tmp_type, *tmp_value, *tmp_tb;
70151  PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
70152  Py_INCREF(tb);
70153  PyErr_Restore(tmp_type, tmp_value, tb);
70154  Py_XDECREF(tmp_tb);
70155 #else
70156  PyThreadState *tstate = __Pyx_PyThreadState_Current;
70157  PyObject* tmp_tb = tstate->curexc_traceback;
70158  if (tb != tmp_tb) {
70159  Py_INCREF(tb);
70160  tstate->curexc_traceback = tb;
70161  Py_XDECREF(tmp_tb);
70162  }
70163 #endif
70164  }
70165 bad:
70166  Py_XDECREF(owned_instance);
70167  return;
70168 }
70169 #endif
70170 
70171 /* None */
70172  static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
70173  PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
70174 }
70175 
70176 /* PyFloatBinop */
70177  #if !CYTHON_COMPILING_IN_PYPY
70178 static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
70179  const double b = floatval;
70180  double a, result;
70181  (void)inplace;
70182  (void)zerodivision_check;
70183  if (likely(PyFloat_CheckExact(op1))) {
70184  a = PyFloat_AS_DOUBLE(op1);
70185 
70186  } else
70187  #if PY_MAJOR_VERSION < 3
70188  if (likely(PyInt_CheckExact(op1))) {
70189  a = (double) PyInt_AS_LONG(op1);
70190 
70191  } else
70192  #endif
70193  if (likely(PyLong_CheckExact(op1))) {
70194  #if CYTHON_USE_PYLONG_INTERNALS
70195  const digit* digits = ((PyLongObject*)op1)->ob_digit;
70196  const Py_ssize_t size = Py_SIZE(op1);
70197  switch (size) {
70198  case 0: a = 0.0; break;
70199  case -1: a = -(double) digits[0]; break;
70200  case 1: a = (double) digits[0]; break;
70201  case -2:
70202  case 2:
70203  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
70204  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
70205  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
70206  if (size == -2)
70207  a = -a;
70208  break;
70209  }
70210  }
70211  CYTHON_FALLTHROUGH;
70212  case -3:
70213  case 3:
70214  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
70215  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
70216  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
70217  if (size == -3)
70218  a = -a;
70219  break;
70220  }
70221  }
70222  CYTHON_FALLTHROUGH;
70223  case -4:
70224  case 4:
70225  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
70226  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
70227  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
70228  if (size == -4)
70229  a = -a;
70230  break;
70231  }
70232  }
70233  CYTHON_FALLTHROUGH;
70234  default:
70235  #else
70236  {
70237  #endif
70238  a = PyLong_AsDouble(op1);
70239  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
70240 
70241  }
70242  } else {
70243  return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2);
70244  }
70245 
70246  PyFPE_START_PROTECT("divide", return NULL)
70247  result = a / b;
70248  PyFPE_END_PROTECT(result)
70249  return PyFloat_FromDouble(result);
70250 }
70251 #endif
70252 
70253 /* PyIntCompare */
70254  static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
70255  if (op1 == op2) {
70256  Py_RETURN_TRUE;
70257  }
70258  #if PY_MAJOR_VERSION < 3
70259  if (likely(PyInt_CheckExact(op1))) {
70260  const long b = intval;
70261  long a = PyInt_AS_LONG(op1);
70262  if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
70263  }
70264  #endif
70265  #if CYTHON_USE_PYLONG_INTERNALS
70266  if (likely(PyLong_CheckExact(op1))) {
70267  int unequal;
70268  unsigned long uintval;
70269  Py_ssize_t size = Py_SIZE(op1);
70270  const digit* digits = ((PyLongObject*)op1)->ob_digit;
70271  if (intval == 0) {
70272  if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
70273  } else if (intval < 0) {
70274  if (size >= 0)
70275  Py_RETURN_FALSE;
70276  intval = -intval;
70277  size = -size;
70278  } else {
70279  if (size <= 0)
70280  Py_RETURN_FALSE;
70281  }
70282  uintval = (unsigned long) intval;
70283 #if PyLong_SHIFT * 4 < SIZEOF_LONG*8
70284  if (uintval >> (PyLong_SHIFT * 4)) {
70285  unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
70286  | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
70287  } else
70288 #endif
70289 #if PyLong_SHIFT * 3 < SIZEOF_LONG*8
70290  if (uintval >> (PyLong_SHIFT * 3)) {
70291  unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
70292  | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
70293  } else
70294 #endif
70295 #if PyLong_SHIFT * 2 < SIZEOF_LONG*8
70296  if (uintval >> (PyLong_SHIFT * 2)) {
70297  unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
70298  | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
70299  } else
70300 #endif
70301 #if PyLong_SHIFT * 1 < SIZEOF_LONG*8
70302  if (uintval >> (PyLong_SHIFT * 1)) {
70303  unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
70304  | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
70305  } else
70306 #endif
70307  unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
70308  if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
70309  }
70310  #endif
70311  if (PyFloat_CheckExact(op1)) {
70312  const long b = intval;
70313  double a = PyFloat_AS_DOUBLE(op1);
70314  if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
70315  }
70316  return (
70317  PyObject_RichCompare(op1, op2, Py_EQ));
70318 }
70319 
70320 /* PyObjectGetMethod */
70321  static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
70322  PyObject *attr;
70323 #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
70324  PyTypeObject *tp = Py_TYPE(obj);
70325  PyObject *descr;
70326  descrgetfunc f = NULL;
70327  PyObject **dictptr, *dict;
70328  int meth_found = 0;
70329  assert (*method == NULL);
70330  if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
70331  attr = __Pyx_PyObject_GetAttrStr(obj, name);
70332  goto try_unpack;
70333  }
70334  if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
70335  return 0;
70336  }
70337  descr = _PyType_Lookup(tp, name);
70338  if (likely(descr != NULL)) {
70339  Py_INCREF(descr);
70340 #if PY_MAJOR_VERSION >= 3
70341  #ifdef __Pyx_CyFunction_USED
70342  if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
70343  #else
70344  if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
70345  #endif
70346 #else
70347  #ifdef __Pyx_CyFunction_USED
70348  if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
70349  #else
70350  if (likely(PyFunction_Check(descr)))
70351  #endif
70352 #endif
70353  {
70354  meth_found = 1;
70355  } else {
70356  f = Py_TYPE(descr)->tp_descr_get;
70357  if (f != NULL && PyDescr_IsData(descr)) {
70358  attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
70359  Py_DECREF(descr);
70360  goto try_unpack;
70361  }
70362  }
70363  }
70364  dictptr = _PyObject_GetDictPtr(obj);
70365  if (dictptr != NULL && (dict = *dictptr) != NULL) {
70366  Py_INCREF(dict);
70367  attr = __Pyx_PyDict_GetItemStr(dict, name);
70368  if (attr != NULL) {
70369  Py_INCREF(attr);
70370  Py_DECREF(dict);
70371  Py_XDECREF(descr);
70372  goto try_unpack;
70373  }
70374  Py_DECREF(dict);
70375  }
70376  if (meth_found) {
70377  *method = descr;
70378  return 1;
70379  }
70380  if (f != NULL) {
70381  attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
70382  Py_DECREF(descr);
70383  goto try_unpack;
70384  }
70385  if (descr != NULL) {
70386  *method = descr;
70387  return 0;
70388  }
70389  PyErr_Format(PyExc_AttributeError,
70390 #if PY_MAJOR_VERSION >= 3
70391  "'%.50s' object has no attribute '%U'",
70392  tp->tp_name, name);
70393 #else
70394  "'%.50s' object has no attribute '%.400s'",
70395  tp->tp_name, PyString_AS_STRING(name));
70396 #endif
70397  return 0;
70398 #else
70399  attr = __Pyx_PyObject_GetAttrStr(obj, name);
70400  goto try_unpack;
70401 #endif
70402 try_unpack:
70403 #if CYTHON_UNPACK_METHODS
70404  if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
70405  PyObject *function = PyMethod_GET_FUNCTION(attr);
70406  Py_INCREF(function);
70407  Py_DECREF(attr);
70408  *method = function;
70409  return 1;
70410  }
70411 #endif
70412  *method = attr;
70413  return 0;
70414 }
70415 
70416 /* PyObjectCallMethod1 */
70417  static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
70418  PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
70419  Py_DECREF(method);
70420  return result;
70421 }
70422 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
70423  PyObject *method = NULL, *result;
70424  int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
70425  if (likely(is_method)) {
70426  result = __Pyx_PyObject_Call2Args(method, obj, arg);
70427  Py_DECREF(method);
70428  return result;
70429  }
70430  if (unlikely(!method)) return NULL;
70431  return __Pyx__PyObject_CallMethod1(method, arg);
70432 }
70433 
70434 /* append */
70435  static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
70436  if (likely(PyList_CheckExact(L))) {
70437  if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
70438  } else {
70439  PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
70440  if (unlikely(!retval))
70441  return -1;
70442  Py_DECREF(retval);
70443  }
70444  return 0;
70445 }
70446 
70447 /* PyObjectSetAttrStr */
70448  #if CYTHON_USE_TYPE_SLOTS
70449 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
70450  PyTypeObject* tp = Py_TYPE(obj);
70451  if (likely(tp->tp_setattro))
70452  return tp->tp_setattro(obj, attr_name, value);
70453 #if PY_MAJOR_VERSION < 3
70454  if (likely(tp->tp_setattr))
70455  return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
70456 #endif
70457  return PyObject_SetAttr(obj, attr_name, value);
70458 }
70459 #endif
70460 
70461 /* HasAttr */
70462  static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
70463  PyObject *r;
70464  if (unlikely(!__Pyx_PyBaseString_Check(n))) {
70465  PyErr_SetString(PyExc_TypeError,
70466  "hasattr(): attribute name must be string");
70467  return -1;
70468  }
70469  r = __Pyx_GetAttr(o, n);
70470  if (unlikely(!r)) {
70471  PyErr_Clear();
70472  return 0;
70473  } else {
70474  Py_DECREF(r);
70475  return 1;
70476  }
70477 }
70478 
70479 /* PyObject_GenericGetAttrNoDict */
70480  #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
70481 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
70482  PyErr_Format(PyExc_AttributeError,
70483 #if PY_MAJOR_VERSION >= 3
70484  "'%.50s' object has no attribute '%U'",
70485  tp->tp_name, attr_name);
70486 #else
70487  "'%.50s' object has no attribute '%.400s'",
70488  tp->tp_name, PyString_AS_STRING(attr_name));
70489 #endif
70490  return NULL;
70491 }
70492 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
70493  PyObject *descr;
70494  PyTypeObject *tp = Py_TYPE(obj);
70495  if (unlikely(!PyString_Check(attr_name))) {
70496  return PyObject_GenericGetAttr(obj, attr_name);
70497  }
70498  assert(!tp->tp_dictoffset);
70499  descr = _PyType_Lookup(tp, attr_name);
70500  if (unlikely(!descr)) {
70501  return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
70502  }
70503  Py_INCREF(descr);
70504  #if PY_MAJOR_VERSION < 3
70505  if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
70506  #endif
70507  {
70508  descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
70509  if (unlikely(f)) {
70510  PyObject *res = f(descr, obj, (PyObject *)tp);
70511  Py_DECREF(descr);
70512  return res;
70513  }
70514  }
70515  return descr;
70516 }
70517 #endif
70518 
70519 /* PyObject_GenericGetAttr */
70520  #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
70521 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
70522  if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
70523  return PyObject_GenericGetAttr(obj, attr_name);
70524  }
70525  return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
70526 }
70527 #endif
70528 
70529 /* PyObjectGetAttrStrNoError */
70530  static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
70531  __Pyx_PyThreadState_declare
70532  __Pyx_PyThreadState_assign
70533  if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
70534  __Pyx_PyErr_Clear();
70535 }
70536 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
70537  PyObject *result;
70538 #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
70539  PyTypeObject* tp = Py_TYPE(obj);
70540  if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
70541  return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
70542  }
70543 #endif
70544  result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
70545  if (unlikely(!result)) {
70546  __Pyx_PyObject_GetAttrStr_ClearAttributeError();
70547  }
70548  return result;
70549 }
70550 
70551 /* SetupReduce */
70552  static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
70553  int ret;
70554  PyObject *name_attr;
70555  name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name);
70556  if (likely(name_attr)) {
70557  ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
70558  } else {
70559  ret = -1;
70560  }
70561  if (unlikely(ret < 0)) {
70562  PyErr_Clear();
70563  ret = 0;
70564  }
70565  Py_XDECREF(name_attr);
70566  return ret;
70567 }
70568 static int __Pyx_setup_reduce(PyObject* type_obj) {
70569  int ret = 0;
70570  PyObject *object_reduce = NULL;
70571  PyObject *object_getstate = NULL;
70572  PyObject *object_reduce_ex = NULL;
70573  PyObject *reduce = NULL;
70574  PyObject *reduce_ex = NULL;
70575  PyObject *reduce_cython = NULL;
70576  PyObject *setstate = NULL;
70577  PyObject *setstate_cython = NULL;
70578  PyObject *getstate = NULL;
70579 #if CYTHON_USE_PYTYPE_LOOKUP
70580  getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
70581 #else
70582  getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
70583  if (!getstate && PyErr_Occurred()) {
70584  goto __PYX_BAD;
70585  }
70586 #endif
70587  if (getstate) {
70588 #if CYTHON_USE_PYTYPE_LOOKUP
70589  object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
70590 #else
70591  object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
70592  if (!object_getstate && PyErr_Occurred()) {
70593  goto __PYX_BAD;
70594  }
70595 #endif
70596  if (object_getstate != getstate) {
70597  goto __PYX_GOOD;
70598  }
70599  }
70600 #if CYTHON_USE_PYTYPE_LOOKUP
70601  object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
70602 #else
70603  object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
70604 #endif
70605  reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
70606  if (reduce_ex == object_reduce_ex) {
70607 #if CYTHON_USE_PYTYPE_LOOKUP
70608  object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
70609 #else
70610  object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
70611 #endif
70612  reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
70613  if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
70614  reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
70615  if (likely(reduce_cython)) {
70616  ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
70617  ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
70618  } else if (reduce == object_reduce || PyErr_Occurred()) {
70619  goto __PYX_BAD;
70620  }
70621  setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
70622  if (!setstate) PyErr_Clear();
70623  if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
70624  setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
70625  if (likely(setstate_cython)) {
70626  ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
70627  ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
70628  } else if (!setstate || PyErr_Occurred()) {
70629  goto __PYX_BAD;
70630  }
70631  }
70632  PyType_Modified((PyTypeObject*)type_obj);
70633  }
70634  }
70635  goto __PYX_GOOD;
70636 __PYX_BAD:
70637  if (!PyErr_Occurred())
70638  PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
70639  ret = -1;
70640 __PYX_GOOD:
70641 #if !CYTHON_USE_PYTYPE_LOOKUP
70642  Py_XDECREF(object_reduce);
70643  Py_XDECREF(object_reduce_ex);
70644  Py_XDECREF(object_getstate);
70645  Py_XDECREF(getstate);
70646 #endif
70647  Py_XDECREF(reduce);
70648  Py_XDECREF(reduce_ex);
70649  Py_XDECREF(reduce_cython);
70650  Py_XDECREF(setstate);
70651  Py_XDECREF(setstate_cython);
70652  return ret;
70653 }
70654 
70655 /* SetVTable */
70656  static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
70657 #if PY_VERSION_HEX >= 0x02070000
70658  PyObject *ob = PyCapsule_New(vtable, 0, 0);
70659 #else
70660  PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
70661 #endif
70662  if (!ob)
70663  goto bad;
70664  if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
70665  goto bad;
70666  Py_DECREF(ob);
70667  return 0;
70668 bad:
70669  Py_XDECREF(ob);
70670  return -1;
70671 }
70672 
70673 /* TypeImport */
70674  #ifndef __PYX_HAVE_RT_ImportType
70675 #define __PYX_HAVE_RT_ImportType
70676 static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
70677  size_t size, enum __Pyx_ImportType_CheckSize check_size)
70678 {
70679  PyObject *result = 0;
70680  char warning[200];
70681  Py_ssize_t basicsize;
70682 #ifdef Py_LIMITED_API
70683  PyObject *py_basicsize;
70684 #endif
70685  result = PyObject_GetAttrString(module, class_name);
70686  if (!result)
70687  goto bad;
70688  if (!PyType_Check(result)) {
70689  PyErr_Format(PyExc_TypeError,
70690  "%.200s.%.200s is not a type object",
70691  module_name, class_name);
70692  goto bad;
70693  }
70694 #ifndef Py_LIMITED_API
70695  basicsize = ((PyTypeObject *)result)->tp_basicsize;
70696 #else
70697  py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
70698  if (!py_basicsize)
70699  goto bad;
70700  basicsize = PyLong_AsSsize_t(py_basicsize);
70701  Py_DECREF(py_basicsize);
70702  py_basicsize = 0;
70703  if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
70704  goto bad;
70705 #endif
70706  if ((size_t)basicsize < size) {
70707  PyErr_Format(PyExc_ValueError,
70708  "%.200s.%.200s size changed, may indicate binary incompatibility. "
70709  "Expected %zd from C header, got %zd from PyObject",
70710  module_name, class_name, size, basicsize);
70711  goto bad;
70712  }
70713  if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
70714  PyErr_Format(PyExc_ValueError,
70715  "%.200s.%.200s size changed, may indicate binary incompatibility. "
70716  "Expected %zd from C header, got %zd from PyObject",
70717  module_name, class_name, size, basicsize);
70718  goto bad;
70719  }
70720  else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
70721  PyOS_snprintf(warning, sizeof(warning),
70722  "%s.%s size changed, may indicate binary incompatibility. "
70723  "Expected %zd from C header, got %zd from PyObject",
70724  module_name, class_name, size, basicsize);
70725  if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
70726  }
70727  return (PyTypeObject *)result;
70728 bad:
70729  Py_XDECREF(result);
70730  return NULL;
70731 }
70732 #endif
70733 
70734 /* FetchCommonType */
70735  static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
70736  PyObject* fake_module;
70737  PyTypeObject* cached_type = NULL;
70738  fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
70739  if (!fake_module) return NULL;
70740  Py_INCREF(fake_module);
70741  cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
70742  if (cached_type) {
70743  if (!PyType_Check((PyObject*)cached_type)) {
70744  PyErr_Format(PyExc_TypeError,
70745  "Shared Cython type %.200s is not a type object",
70746  type->tp_name);
70747  goto bad;
70748  }
70749  if (cached_type->tp_basicsize != type->tp_basicsize) {
70750  PyErr_Format(PyExc_TypeError,
70751  "Shared Cython type %.200s has the wrong size, try recompiling",
70752  type->tp_name);
70753  goto bad;
70754  }
70755  } else {
70756  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
70757  PyErr_Clear();
70758  if (PyType_Ready(type) < 0) goto bad;
70759  if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
70760  goto bad;
70761  Py_INCREF(type);
70762  cached_type = type;
70763  }
70764 done:
70765  Py_DECREF(fake_module);
70766  return cached_type;
70767 bad:
70768  Py_XDECREF(cached_type);
70769  cached_type = NULL;
70770  goto done;
70771 }
70772 
70773 /* CythonFunctionShared */
70774  #include <structmember.h>
70775 static PyObject *
70776 __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
70777 {
70778  if (unlikely(op->func_doc == NULL)) {
70779  if (op->func.m_ml->ml_doc) {
70780 #if PY_MAJOR_VERSION >= 3
70781  op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
70782 #else
70783  op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
70784 #endif
70785  if (unlikely(op->func_doc == NULL))
70786  return NULL;
70787  } else {
70788  Py_INCREF(Py_None);
70789  return Py_None;
70790  }
70791  }
70792  Py_INCREF(op->func_doc);
70793  return op->func_doc;
70794 }
70795 static int
70796 __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
70797 {
70798  PyObject *tmp = op->func_doc;
70799  if (value == NULL) {
70800  value = Py_None;
70801  }
70802  Py_INCREF(value);
70803  op->func_doc = value;
70804  Py_XDECREF(tmp);
70805  return 0;
70806 }
70807 static PyObject *
70808 __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
70809 {
70810  if (unlikely(op->func_name == NULL)) {
70811 #if PY_MAJOR_VERSION >= 3
70812  op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
70813 #else
70814  op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
70815 #endif
70816  if (unlikely(op->func_name == NULL))
70817  return NULL;
70818  }
70819  Py_INCREF(op->func_name);
70820  return op->func_name;
70821 }
70822 static int
70823 __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
70824 {
70825  PyObject *tmp;
70826 #if PY_MAJOR_VERSION >= 3
70827  if (unlikely(value == NULL || !PyUnicode_Check(value)))
70828 #else
70829  if (unlikely(value == NULL || !PyString_Check(value)))
70830 #endif
70831  {
70832  PyErr_SetString(PyExc_TypeError,
70833  "__name__ must be set to a string object");
70834  return -1;
70835  }
70836  tmp = op->func_name;
70837  Py_INCREF(value);
70838  op->func_name = value;
70839  Py_XDECREF(tmp);
70840  return 0;
70841 }
70842 static PyObject *
70843 __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
70844 {
70845  Py_INCREF(op->func_qualname);
70846  return op->func_qualname;
70847 }
70848 static int
70849 __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
70850 {
70851  PyObject *tmp;
70852 #if PY_MAJOR_VERSION >= 3
70853  if (unlikely(value == NULL || !PyUnicode_Check(value)))
70854 #else
70855  if (unlikely(value == NULL || !PyString_Check(value)))
70856 #endif
70857  {
70858  PyErr_SetString(PyExc_TypeError,
70859  "__qualname__ must be set to a string object");
70860  return -1;
70861  }
70862  tmp = op->func_qualname;
70863  Py_INCREF(value);
70864  op->func_qualname = value;
70865  Py_XDECREF(tmp);
70866  return 0;
70867 }
70868 static PyObject *
70869 __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
70870 {
70871  PyObject *self;
70872  self = m->func_closure;
70873  if (self == NULL)
70874  self = Py_None;
70875  Py_INCREF(self);
70876  return self;
70877 }
70878 static PyObject *
70879 __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
70880 {
70881  if (unlikely(op->func_dict == NULL)) {
70882  op->func_dict = PyDict_New();
70883  if (unlikely(op->func_dict == NULL))
70884  return NULL;
70885  }
70886  Py_INCREF(op->func_dict);
70887  return op->func_dict;
70888 }
70889 static int
70890 __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
70891 {
70892  PyObject *tmp;
70893  if (unlikely(value == NULL)) {
70894  PyErr_SetString(PyExc_TypeError,
70895  "function's dictionary may not be deleted");
70896  return -1;
70897  }
70898  if (unlikely(!PyDict_Check(value))) {
70899  PyErr_SetString(PyExc_TypeError,
70900  "setting function's dictionary to a non-dict");
70901  return -1;
70902  }
70903  tmp = op->func_dict;
70904  Py_INCREF(value);
70905  op->func_dict = value;
70906  Py_XDECREF(tmp);
70907  return 0;
70908 }
70909 static PyObject *
70910 __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
70911 {
70912  Py_INCREF(op->func_globals);
70913  return op->func_globals;
70914 }
70915 static PyObject *
70916 __Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
70917 {
70918  Py_INCREF(Py_None);
70919  return Py_None;
70920 }
70921 static PyObject *
70922 __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
70923 {
70924  PyObject* result = (op->func_code) ? op->func_code : Py_None;
70925  Py_INCREF(result);
70926  return result;
70927 }
70928 static int
70929 __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
70930  int result = 0;
70931  PyObject *res = op->defaults_getter((PyObject *) op);
70932  if (unlikely(!res))
70933  return -1;
70934  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
70935  op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
70936  Py_INCREF(op->defaults_tuple);
70937  op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
70938  Py_INCREF(op->defaults_kwdict);
70939  #else
70940  op->defaults_tuple = PySequence_ITEM(res, 0);
70941  if (unlikely(!op->defaults_tuple)) result = -1;
70942  else {
70943  op->defaults_kwdict = PySequence_ITEM(res, 1);
70944  if (unlikely(!op->defaults_kwdict)) result = -1;
70945  }
70946  #endif
70947  Py_DECREF(res);
70948  return result;
70949 }
70950 static int
70951 __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
70952  PyObject* tmp;
70953  if (!value) {
70954  value = Py_None;
70955  } else if (value != Py_None && !PyTuple_Check(value)) {
70956  PyErr_SetString(PyExc_TypeError,
70957  "__defaults__ must be set to a tuple object");
70958  return -1;
70959  }
70960  Py_INCREF(value);
70961  tmp = op->defaults_tuple;
70962  op->defaults_tuple = value;
70963  Py_XDECREF(tmp);
70964  return 0;
70965 }
70966 static PyObject *
70967 __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
70968  PyObject* result = op->defaults_tuple;
70969  if (unlikely(!result)) {
70970  if (op->defaults_getter) {
70971  if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
70972  result = op->defaults_tuple;
70973  } else {
70974  result = Py_None;
70975  }
70976  }
70977  Py_INCREF(result);
70978  return result;
70979 }
70980 static int
70981 __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
70982  PyObject* tmp;
70983  if (!value) {
70984  value = Py_None;
70985  } else if (value != Py_None && !PyDict_Check(value)) {
70986  PyErr_SetString(PyExc_TypeError,
70987  "__kwdefaults__ must be set to a dict object");
70988  return -1;
70989  }
70990  Py_INCREF(value);
70991  tmp = op->defaults_kwdict;
70992  op->defaults_kwdict = value;
70993  Py_XDECREF(tmp);
70994  return 0;
70995 }
70996 static PyObject *
70997 __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
70998  PyObject* result = op->defaults_kwdict;
70999  if (unlikely(!result)) {
71000  if (op->defaults_getter) {
71001  if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
71002  result = op->defaults_kwdict;
71003  } else {
71004  result = Py_None;
71005  }
71006  }
71007  Py_INCREF(result);
71008  return result;
71009 }
71010 static int
71011 __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
71012  PyObject* tmp;
71013  if (!value || value == Py_None) {
71014  value = NULL;
71015  } else if (!PyDict_Check(value)) {
71016  PyErr_SetString(PyExc_TypeError,
71017  "__annotations__ must be set to a dict object");
71018  return -1;
71019  }
71020  Py_XINCREF(value);
71021  tmp = op->func_annotations;
71022  op->func_annotations = value;
71023  Py_XDECREF(tmp);
71024  return 0;
71025 }
71026 static PyObject *
71027 __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
71028  PyObject* result = op->func_annotations;
71029  if (unlikely(!result)) {
71030  result = PyDict_New();
71031  if (unlikely(!result)) return NULL;
71032  op->func_annotations = result;
71033  }
71034  Py_INCREF(result);
71035  return result;
71036 }
71037 static PyGetSetDef __pyx_CyFunction_getsets[] = {
71038  {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
71039  {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
71040  {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
71041  {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
71042  {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
71043  {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
71044  {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
71045  {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
71046  {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
71047  {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
71048  {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
71049  {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
71050  {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
71051  {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
71052  {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
71053  {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
71054  {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
71055  {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
71056  {0, 0, 0, 0, 0}
71057 };
71058 static PyMemberDef __pyx_CyFunction_members[] = {
71059  {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0},
71060  {0, 0, 0, 0, 0}
71061 };
71062 static PyObject *
71063 __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
71064 {
71065 #if PY_MAJOR_VERSION >= 3
71066  Py_INCREF(m->func_qualname);
71067  return m->func_qualname;
71068 #else
71069  return PyString_FromString(m->func.m_ml->ml_name);
71070 #endif
71071 }
71072 static PyMethodDef __pyx_CyFunction_methods[] = {
71073  {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
71074  {0, 0, 0, 0}
71075 };
71076 #if PY_VERSION_HEX < 0x030500A0
71077 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
71078 #else
71079 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
71080 #endif
71081 static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
71082  PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
71083  if (unlikely(op == NULL))
71084  return NULL;
71085  op->flags = flags;
71086  __Pyx_CyFunction_weakreflist(op) = NULL;
71087  op->func.m_ml = ml;
71088  op->func.m_self = (PyObject *) op;
71089  Py_XINCREF(closure);
71090  op->func_closure = closure;
71091  Py_XINCREF(module);
71092  op->func.m_module = module;
71093  op->func_dict = NULL;
71094  op->func_name = NULL;
71095  Py_INCREF(qualname);
71096  op->func_qualname = qualname;
71097  op->func_doc = NULL;
71098  op->func_classobj = NULL;
71099  op->func_globals = globals;
71100  Py_INCREF(op->func_globals);
71101  Py_XINCREF(code);
71102  op->func_code = code;
71103  op->defaults_pyobjects = 0;
71104  op->defaults_size = 0;
71105  op->defaults = NULL;
71106  op->defaults_tuple = NULL;
71107  op->defaults_kwdict = NULL;
71108  op->defaults_getter = NULL;
71109  op->func_annotations = NULL;
71110  return (PyObject *) op;
71111 }
71112 static int
71113 __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
71114 {
71115  Py_CLEAR(m->func_closure);
71116  Py_CLEAR(m->func.m_module);
71117  Py_CLEAR(m->func_dict);
71118  Py_CLEAR(m->func_name);
71119  Py_CLEAR(m->func_qualname);
71120  Py_CLEAR(m->func_doc);
71121  Py_CLEAR(m->func_globals);
71122  Py_CLEAR(m->func_code);
71123  Py_CLEAR(m->func_classobj);
71124  Py_CLEAR(m->defaults_tuple);
71125  Py_CLEAR(m->defaults_kwdict);
71126  Py_CLEAR(m->func_annotations);
71127  if (m->defaults) {
71128  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
71129  int i;
71130  for (i = 0; i < m->defaults_pyobjects; i++)
71131  Py_XDECREF(pydefaults[i]);
71132  PyObject_Free(m->defaults);
71133  m->defaults = NULL;
71134  }
71135  return 0;
71136 }
71137 static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
71138 {
71139  if (__Pyx_CyFunction_weakreflist(m) != NULL)
71140  PyObject_ClearWeakRefs((PyObject *) m);
71141  __Pyx_CyFunction_clear(m);
71142  PyObject_GC_Del(m);
71143 }
71144 static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
71145 {
71146  PyObject_GC_UnTrack(m);
71147  __Pyx__CyFunction_dealloc(m);
71148 }
71149 static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
71150 {
71151  Py_VISIT(m->func_closure);
71152  Py_VISIT(m->func.m_module);
71153  Py_VISIT(m->func_dict);
71154  Py_VISIT(m->func_name);
71155  Py_VISIT(m->func_qualname);
71156  Py_VISIT(m->func_doc);
71157  Py_VISIT(m->func_globals);
71158  Py_VISIT(m->func_code);
71159  Py_VISIT(m->func_classobj);
71160  Py_VISIT(m->defaults_tuple);
71161  Py_VISIT(m->defaults_kwdict);
71162  if (m->defaults) {
71163  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
71164  int i;
71165  for (i = 0; i < m->defaults_pyobjects; i++)
71166  Py_VISIT(pydefaults[i]);
71167  }
71168  return 0;
71169 }
71170 static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
71171 {
71172 #if PY_MAJOR_VERSION < 3
71173  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
71174  if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
71175  Py_INCREF(func);
71176  return func;
71177  }
71178  if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
71179  if (type == NULL)
71180  type = (PyObject *)(Py_TYPE(obj));
71181  return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
71182  }
71183  if (obj == Py_None)
71184  obj = NULL;
71185 #endif
71186  return __Pyx_PyMethod_New(func, obj, type);
71187 }
71188 static PyObject*
71189 __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
71190 {
71191 #if PY_MAJOR_VERSION >= 3
71192  return PyUnicode_FromFormat("<cyfunction %U at %p>",
71193  op->func_qualname, (void *)op);
71194 #else
71195  return PyString_FromFormat("<cyfunction %s at %p>",
71196  PyString_AsString(op->func_qualname), (void *)op);
71197 #endif
71198 }
71199 static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
71200  PyCFunctionObject* f = (PyCFunctionObject*)func;
71201  PyCFunction meth = f->m_ml->ml_meth;
71202  Py_ssize_t size;
71203  switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
71204  case METH_VARARGS:
71205  if (likely(kw == NULL || PyDict_Size(kw) == 0))
71206  return (*meth)(self, arg);
71207  break;
71208  case METH_VARARGS | METH_KEYWORDS:
71209  return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
71210  case METH_NOARGS:
71211  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
71212  size = PyTuple_GET_SIZE(arg);
71213  if (likely(size == 0))
71214  return (*meth)(self, NULL);
71215  PyErr_Format(PyExc_TypeError,
71216  "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
71217  f->m_ml->ml_name, size);
71218  return NULL;
71219  }
71220  break;
71221  case METH_O:
71222  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
71223  size = PyTuple_GET_SIZE(arg);
71224  if (likely(size == 1)) {
71225  PyObject *result, *arg0;
71226  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
71227  arg0 = PyTuple_GET_ITEM(arg, 0);
71228  #else
71229  arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
71230  #endif
71231  result = (*meth)(self, arg0);
71232  #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
71233  Py_DECREF(arg0);
71234  #endif
71235  return result;
71236  }
71237  PyErr_Format(PyExc_TypeError,
71238  "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
71239  f->m_ml->ml_name, size);
71240  return NULL;
71241  }
71242  break;
71243  default:
71244  PyErr_SetString(PyExc_SystemError, "Bad call flags in "
71245  "__Pyx_CyFunction_Call. METH_OLDARGS is no "
71246  "longer supported!");
71247  return NULL;
71248  }
71249  PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
71250  f->m_ml->ml_name);
71251  return NULL;
71252 }
71253 static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
71254  return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw);
71255 }
71256 static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
71257  PyObject *result;
71258  __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
71259  if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
71260  Py_ssize_t argc;
71261  PyObject *new_args;
71262  PyObject *self;
71263  argc = PyTuple_GET_SIZE(args);
71264  new_args = PyTuple_GetSlice(args, 1, argc);
71265  if (unlikely(!new_args))
71266  return NULL;
71267  self = PyTuple_GetItem(args, 0);
71268  if (unlikely(!self)) {
71269  Py_DECREF(new_args);
71270  PyErr_Format(PyExc_TypeError,
71271  "unbound method %.200S() needs an argument",
71272  cyfunc->func_qualname);
71273  return NULL;
71274  }
71275  result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
71276  Py_DECREF(new_args);
71277  } else {
71278  result = __Pyx_CyFunction_Call(func, args, kw);
71279  }
71280  return result;
71281 }
71282 static PyTypeObject __pyx_CyFunctionType_type = {
71283  PyVarObject_HEAD_INIT(0, 0)
71284  "cython_function_or_method",
71285  sizeof(__pyx_CyFunctionObject),
71286  0,
71287  (destructor) __Pyx_CyFunction_dealloc,
71288  0,
71289  0,
71290  0,
71291 #if PY_MAJOR_VERSION < 3
71292  0,
71293 #else
71294  0,
71295 #endif
71296  (reprfunc) __Pyx_CyFunction_repr,
71297  0,
71298  0,
71299  0,
71300  0,
71301  __Pyx_CyFunction_CallAsMethod,
71302  0,
71303  0,
71304  0,
71305  0,
71306  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
71307  0,
71308  (traverseproc) __Pyx_CyFunction_traverse,
71309  (inquiry) __Pyx_CyFunction_clear,
71310  0,
71311 #if PY_VERSION_HEX < 0x030500A0
71312  offsetof(__pyx_CyFunctionObject, func_weakreflist),
71313 #else
71314  offsetof(PyCFunctionObject, m_weakreflist),
71315 #endif
71316  0,
71317  0,
71318  __pyx_CyFunction_methods,
71319  __pyx_CyFunction_members,
71320  __pyx_CyFunction_getsets,
71321  0,
71322  0,
71323  __Pyx_CyFunction_descr_get,
71324  0,
71325  offsetof(__pyx_CyFunctionObject, func_dict),
71326  0,
71327  0,
71328  0,
71329  0,
71330  0,
71331  0,
71332  0,
71333  0,
71334  0,
71335  0,
71336  0,
71337  0,
71338 #if PY_VERSION_HEX >= 0x030400a1
71339  0,
71340 #endif
71341 #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
71342  0,
71343 #endif
71344 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
71345  0,
71346 #endif
71347 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
71348  0,
71349 #endif
71350 };
71351 static int __pyx_CyFunction_init(void) {
71352  __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
71353  if (unlikely(__pyx_CyFunctionType == NULL)) {
71354  return -1;
71355  }
71356  return 0;
71357 }
71358 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
71359  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
71360  m->defaults = PyObject_Malloc(size);
71361  if (unlikely(!m->defaults))
71362  return PyErr_NoMemory();
71363  memset(m->defaults, 0, size);
71364  m->defaults_pyobjects = pyobjects;
71365  m->defaults_size = size;
71366  return m->defaults;
71367 }
71368 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
71369  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
71370  m->defaults_tuple = tuple;
71371  Py_INCREF(tuple);
71372 }
71373 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
71374  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
71375  m->defaults_kwdict = dict;
71376  Py_INCREF(dict);
71377 }
71378 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
71379  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
71380  m->func_annotations = dict;
71381  Py_INCREF(dict);
71382 }
71383 
71384 /* CythonFunction */
71385  static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
71386  PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
71387  PyObject *op = __Pyx_CyFunction_Init(
71388  PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
71389  ml, flags, qualname, closure, module, globals, code
71390  );
71391  if (likely(op)) {
71392  PyObject_GC_Track(op);
71393  }
71394  return op;
71395 }
71396 
71397 /* CalculateMetaclass */
71398  static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
71399  Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
71400  for (i=0; i < nbases; i++) {
71401  PyTypeObject *tmptype;
71402  PyObject *tmp = PyTuple_GET_ITEM(bases, i);
71403  tmptype = Py_TYPE(tmp);
71404 #if PY_MAJOR_VERSION < 3
71405  if (tmptype == &PyClass_Type)
71406  continue;
71407 #endif
71408  if (!metaclass) {
71409  metaclass = tmptype;
71410  continue;
71411  }
71412  if (PyType_IsSubtype(metaclass, tmptype))
71413  continue;
71414  if (PyType_IsSubtype(tmptype, metaclass)) {
71415  metaclass = tmptype;
71416  continue;
71417  }
71418  PyErr_SetString(PyExc_TypeError,
71419  "metaclass conflict: "
71420  "the metaclass of a derived class "
71421  "must be a (non-strict) subclass "
71422  "of the metaclasses of all its bases");
71423  return NULL;
71424  }
71425  if (!metaclass) {
71426 #if PY_MAJOR_VERSION < 3
71427  metaclass = &PyClass_Type;
71428 #else
71429  metaclass = &PyType_Type;
71430 #endif
71431  }
71432  Py_INCREF((PyObject*) metaclass);
71433  return (PyObject*) metaclass;
71434 }
71435 
71436 /* Py3ClassCreate */
71437  static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
71438  PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
71439  PyObject *ns;
71440  if (metaclass) {
71441  PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
71442  if (prep) {
71443  PyObject *pargs = PyTuple_Pack(2, name, bases);
71444  if (unlikely(!pargs)) {
71445  Py_DECREF(prep);
71446  return NULL;
71447  }
71448  ns = PyObject_Call(prep, pargs, mkw);
71449  Py_DECREF(prep);
71450  Py_DECREF(pargs);
71451  } else {
71452  if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
71453  return NULL;
71454  PyErr_Clear();
71455  ns = PyDict_New();
71456  }
71457  } else {
71458  ns = PyDict_New();
71459  }
71460  if (unlikely(!ns))
71461  return NULL;
71462  if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
71463  if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
71464  if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
71465  return ns;
71466 bad:
71467  Py_DECREF(ns);
71468  return NULL;
71469 }
71470 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
71471  PyObject *dict, PyObject *mkw,
71472  int calculate_metaclass, int allow_py2_metaclass) {
71473  PyObject *result, *margs;
71474  PyObject *owned_metaclass = NULL;
71475  if (allow_py2_metaclass) {
71476  owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
71477  if (owned_metaclass) {
71478  metaclass = owned_metaclass;
71479  } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
71480  PyErr_Clear();
71481  } else {
71482  return NULL;
71483  }
71484  }
71485  if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
71486  metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
71487  Py_XDECREF(owned_metaclass);
71488  if (unlikely(!metaclass))
71489  return NULL;
71490  owned_metaclass = metaclass;
71491  }
71492  margs = PyTuple_Pack(3, name, bases, dict);
71493  if (unlikely(!margs)) {
71494  result = NULL;
71495  } else {
71496  result = PyObject_Call(metaclass, margs, mkw);
71497  Py_DECREF(margs);
71498  }
71499  Py_XDECREF(owned_metaclass);
71500  return result;
71501 }
71502 
71503 /* CLineInTraceback */
71504  #ifndef CYTHON_CLINE_IN_TRACEBACK
71505 static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
71506  PyObject *use_cline;
71507  PyObject *ptype, *pvalue, *ptraceback;
71508 #if CYTHON_COMPILING_IN_CPYTHON
71509  PyObject **cython_runtime_dict;
71510 #endif
71511  if (unlikely(!__pyx_cython_runtime)) {
71512  return c_line;
71513  }
71514  __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
71515 #if CYTHON_COMPILING_IN_CPYTHON
71516  cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
71517  if (likely(cython_runtime_dict)) {
71518  __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
71519  use_cline, *cython_runtime_dict,
71520  __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
71521  } else
71522 #endif
71523  {
71524  PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
71525  if (use_cline_obj) {
71526  use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
71527  Py_DECREF(use_cline_obj);
71528  } else {
71529  PyErr_Clear();
71530  use_cline = NULL;
71531  }
71532  }
71533  if (!use_cline) {
71534  c_line = 0;
71535  (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
71536  }
71537  else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
71538  c_line = 0;
71539  }
71540  __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
71541  return c_line;
71542 }
71543 #endif
71544 
71545 /* CodeObjectCache */
71546  static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
71547  int start = 0, mid = 0, end = count - 1;
71548  if (end >= 0 && code_line > entries[end].code_line) {
71549  return count;
71550  }
71551  while (start < end) {
71552  mid = start + (end - start) / 2;
71553  if (code_line < entries[mid].code_line) {
71554  end = mid;
71555  } else if (code_line > entries[mid].code_line) {
71556  start = mid + 1;
71557  } else {
71558  return mid;
71559  }
71560  }
71561  if (code_line <= entries[mid].code_line) {
71562  return mid;
71563  } else {
71564  return mid + 1;
71565  }
71566 }
71567 static PyCodeObject *__pyx_find_code_object(int code_line) {
71568  PyCodeObject* code_object;
71569  int pos;
71570  if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
71571  return NULL;
71572  }
71573  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
71574  if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
71575  return NULL;
71576  }
71577  code_object = __pyx_code_cache.entries[pos].code_object;
71578  Py_INCREF(code_object);
71579  return code_object;
71580 }
71581 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
71582  int pos, i;
71583  __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
71584  if (unlikely(!code_line)) {
71585  return;
71586  }
71587  if (unlikely(!entries)) {
71588  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
71589  if (likely(entries)) {
71590  __pyx_code_cache.entries = entries;
71591  __pyx_code_cache.max_count = 64;
71592  __pyx_code_cache.count = 1;
71593  entries[0].code_line = code_line;
71594  entries[0].code_object = code_object;
71595  Py_INCREF(code_object);
71596  }
71597  return;
71598  }
71599  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
71600  if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
71601  PyCodeObject* tmp = entries[pos].code_object;
71602  entries[pos].code_object = code_object;
71603  Py_DECREF(tmp);
71604  return;
71605  }
71606  if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
71607  int new_max = __pyx_code_cache.max_count + 64;
71608  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
71609  __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
71610  if (unlikely(!entries)) {
71611  return;
71612  }
71613  __pyx_code_cache.entries = entries;
71614  __pyx_code_cache.max_count = new_max;
71615  }
71616  for (i=__pyx_code_cache.count; i>pos; i--) {
71617  entries[i] = entries[i-1];
71618  }
71619  entries[pos].code_line = code_line;
71620  entries[pos].code_object = code_object;
71621  __pyx_code_cache.count++;
71622  Py_INCREF(code_object);
71623 }
71624 
71625 /* AddTraceback */
71626  #include "compile.h"
71627 #include "frameobject.h"
71628 #include "traceback.h"
71629 #if PY_VERSION_HEX >= 0x030b00a6
71630  #ifndef Py_BUILD_CORE
71631  #define Py_BUILD_CORE 1
71632  #endif
71633  #include "internal/pycore_frame.h"
71634 #endif
71635 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
71636  const char *funcname, int c_line,
71637  int py_line, const char *filename) {
71638  PyCodeObject *py_code = NULL;
71639  PyObject *py_funcname = NULL;
71640  #if PY_MAJOR_VERSION < 3
71641  PyObject *py_srcfile = NULL;
71642  py_srcfile = PyString_FromString(filename);
71643  if (!py_srcfile) goto bad;
71644  #endif
71645  if (c_line) {
71646  #if PY_MAJOR_VERSION < 3
71647  py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
71648  if (!py_funcname) goto bad;
71649  #else
71650  py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
71651  if (!py_funcname) goto bad;
71652  funcname = PyUnicode_AsUTF8(py_funcname);
71653  if (!funcname) goto bad;
71654  #endif
71655  }
71656  else {
71657  #if PY_MAJOR_VERSION < 3
71658  py_funcname = PyString_FromString(funcname);
71659  if (!py_funcname) goto bad;
71660  #endif
71661  }
71662  #if PY_MAJOR_VERSION < 3
71663  py_code = __Pyx_PyCode_New(
71664  0,
71665  0,
71666  0,
71667  0,
71668  0,
71669  __pyx_empty_bytes, /*PyObject *code,*/
71670  __pyx_empty_tuple, /*PyObject *consts,*/
71671  __pyx_empty_tuple, /*PyObject *names,*/
71672  __pyx_empty_tuple, /*PyObject *varnames,*/
71673  __pyx_empty_tuple, /*PyObject *freevars,*/
71674  __pyx_empty_tuple, /*PyObject *cellvars,*/
71675  py_srcfile, /*PyObject *filename,*/
71676  py_funcname, /*PyObject *name,*/
71677  py_line,
71678  __pyx_empty_bytes /*PyObject *lnotab*/
71679  );
71680  Py_DECREF(py_srcfile);
71681  #else
71682  py_code = PyCode_NewEmpty(filename, funcname, py_line);
71683  #endif
71684  Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
71685  return py_code;
71686 bad:
71687  Py_XDECREF(py_funcname);
71688  #if PY_MAJOR_VERSION < 3
71689  Py_XDECREF(py_srcfile);
71690  #endif
71691  return NULL;
71692 }
71693 static void __Pyx_AddTraceback(const char *funcname, int c_line,
71694  int py_line, const char *filename) {
71695  PyCodeObject *py_code = 0;
71696  PyFrameObject *py_frame = 0;
71697  PyThreadState *tstate = __Pyx_PyThreadState_Current;
71698  PyObject *ptype, *pvalue, *ptraceback;
71699  if (c_line) {
71700  c_line = __Pyx_CLineForTraceback(tstate, c_line);
71701  }
71702  py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
71703  if (!py_code) {
71704  __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
71705  py_code = __Pyx_CreateCodeObjectForTraceback(
71706  funcname, c_line, py_line, filename);
71707  if (!py_code) {
71708  /* If the code object creation fails, then we should clear the
71709  fetched exception references and propagate the new exception */
71710  Py_XDECREF(ptype);
71711  Py_XDECREF(pvalue);
71712  Py_XDECREF(ptraceback);
71713  goto bad;
71714  }
71715  __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
71716  __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
71717  }
71718  py_frame = PyFrame_New(
71719  tstate, /*PyThreadState *tstate,*/
71720  py_code, /*PyCodeObject *code,*/
71721  __pyx_d, /*PyObject *globals,*/
71722  0 /*PyObject *locals*/
71723  );
71724  if (!py_frame) goto bad;
71725  __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
71726  PyTraceBack_Here(py_frame);
71727 bad:
71728  Py_XDECREF(py_code);
71729  Py_XDECREF(py_frame);
71730 }
71731 
71732 /* CIntFromPyVerify */
71733  #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
71734  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
71735 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
71736  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
71737 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
71738  {\
71739  func_type value = func_value;\
71740  if (sizeof(target_type) < sizeof(func_type)) {\
71741  if (unlikely(value != (func_type) (target_type) value)) {\
71742  func_type zero = 0;\
71743  if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
71744  return (target_type) -1;\
71745  if (is_unsigned && unlikely(value < zero))\
71746  goto raise_neg_overflow;\
71747  else\
71748  goto raise_overflow;\
71749  }\
71750  }\
71751  return (target_type) value;\
71752  }
71753 
71754 /* Declarations */
71755  #if CYTHON_CCOMPLEX
71756  #ifdef __cplusplus
71757  static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
71758  return ::std::complex< float >(x, y);
71759  }
71760  #else
71761  static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
71762  return x + y*(__pyx_t_float_complex)_Complex_I;
71763  }
71764  #endif
71765 #else
71766  static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
71767  __pyx_t_float_complex z;
71768  z.real = x;
71769  z.imag = y;
71770  return z;
71771  }
71772 #endif
71773 
71774 /* Arithmetic */
71775  #if CYTHON_CCOMPLEX
71776 #else
71777  static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71778  return (a.real == b.real) && (a.imag == b.imag);
71779  }
71780  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71781  __pyx_t_float_complex z;
71782  z.real = a.real + b.real;
71783  z.imag = a.imag + b.imag;
71784  return z;
71785  }
71786  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71787  __pyx_t_float_complex z;
71788  z.real = a.real - b.real;
71789  z.imag = a.imag - b.imag;
71790  return z;
71791  }
71792  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71793  __pyx_t_float_complex z;
71794  z.real = a.real * b.real - a.imag * b.imag;
71795  z.imag = a.real * b.imag + a.imag * b.real;
71796  return z;
71797  }
71798  #if 1
71799  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71800  if (b.imag == 0) {
71801  return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
71802  } else if (fabsf(b.real) >= fabsf(b.imag)) {
71803  if (b.real == 0 && b.imag == 0) {
71804  return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
71805  } else {
71806  float r = b.imag / b.real;
71807  float s = (float)(1.0) / (b.real + b.imag * r);
71808  return __pyx_t_float_complex_from_parts(
71809  (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
71810  }
71811  } else {
71812  float r = b.real / b.imag;
71813  float s = (float)(1.0) / (b.imag + b.real * r);
71814  return __pyx_t_float_complex_from_parts(
71815  (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
71816  }
71817  }
71818  #else
71819  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71820  if (b.imag == 0) {
71821  return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
71822  } else {
71823  float denom = b.real * b.real + b.imag * b.imag;
71824  return __pyx_t_float_complex_from_parts(
71825  (a.real * b.real + a.imag * b.imag) / denom,
71826  (a.imag * b.real - a.real * b.imag) / denom);
71827  }
71828  }
71829  #endif
71830  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
71831  __pyx_t_float_complex z;
71832  z.real = -a.real;
71833  z.imag = -a.imag;
71834  return z;
71835  }
71836  static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
71837  return (a.real == 0) && (a.imag == 0);
71838  }
71839  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
71840  __pyx_t_float_complex z;
71841  z.real = a.real;
71842  z.imag = -a.imag;
71843  return z;
71844  }
71845  #if 1
71846  static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
71847  #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
71848  return sqrtf(z.real*z.real + z.imag*z.imag);
71849  #else
71850  return hypotf(z.real, z.imag);
71851  #endif
71852  }
71853  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
71854  __pyx_t_float_complex z;
71855  float r, lnr, theta, z_r, z_theta;
71856  if (b.imag == 0 && b.real == (int)b.real) {
71857  if (b.real < 0) {
71858  float denom = a.real * a.real + a.imag * a.imag;
71859  a.real = a.real / denom;
71860  a.imag = -a.imag / denom;
71861  b.real = -b.real;
71862  }
71863  switch ((int)b.real) {
71864  case 0:
71865  z.real = 1;
71866  z.imag = 0;
71867  return z;
71868  case 1:
71869  return a;
71870  case 2:
71871  return __Pyx_c_prod_float(a, a);
71872  case 3:
71873  z = __Pyx_c_prod_float(a, a);
71874  return __Pyx_c_prod_float(z, a);
71875  case 4:
71876  z = __Pyx_c_prod_float(a, a);
71877  return __Pyx_c_prod_float(z, z);
71878  }
71879  }
71880  if (a.imag == 0) {
71881  if (a.real == 0) {
71882  return a;
71883  } else if (b.imag == 0) {
71884  z.real = powf(a.real, b.real);
71885  z.imag = 0;
71886  return z;
71887  } else if (a.real > 0) {
71888  r = a.real;
71889  theta = 0;
71890  } else {
71891  r = -a.real;
71892  theta = atan2f(0.0, -1.0);
71893  }
71894  } else {
71895  r = __Pyx_c_abs_float(a);
71896  theta = atan2f(a.imag, a.real);
71897  }
71898  lnr = logf(r);
71899  z_r = expf(lnr * b.real - theta * b.imag);
71900  z_theta = theta * b.real + lnr * b.imag;
71901  z.real = z_r * cosf(z_theta);
71902  z.imag = z_r * sinf(z_theta);
71903  return z;
71904  }
71905  #endif
71906 #endif
71907 
71908 /* Declarations */
71909  #if CYTHON_CCOMPLEX
71910  #ifdef __cplusplus
71911  static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
71912  return ::std::complex< double >(x, y);
71913  }
71914  #else
71915  static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
71916  return x + y*(__pyx_t_double_complex)_Complex_I;
71917  }
71918  #endif
71919 #else
71920  static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
71921  __pyx_t_double_complex z;
71922  z.real = x;
71923  z.imag = y;
71924  return z;
71925  }
71926 #endif
71927 
71928 /* Arithmetic */
71929  #if CYTHON_CCOMPLEX
71930 #else
71931  static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
71932  return (a.real == b.real) && (a.imag == b.imag);
71933  }
71934  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
71935  __pyx_t_double_complex z;
71936  z.real = a.real + b.real;
71937  z.imag = a.imag + b.imag;
71938  return z;
71939  }
71940  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
71941  __pyx_t_double_complex z;
71942  z.real = a.real - b.real;
71943  z.imag = a.imag - b.imag;
71944  return z;
71945  }
71946  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
71947  __pyx_t_double_complex z;
71948  z.real = a.real * b.real - a.imag * b.imag;
71949  z.imag = a.real * b.imag + a.imag * b.real;
71950  return z;
71951  }
71952  #if 1
71953  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
71954  if (b.imag == 0) {
71955  return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
71956  } else if (fabs(b.real) >= fabs(b.imag)) {
71957  if (b.real == 0 && b.imag == 0) {
71958  return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
71959  } else {
71960  double r = b.imag / b.real;
71961  double s = (double)(1.0) / (b.real + b.imag * r);
71962  return __pyx_t_double_complex_from_parts(
71963  (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
71964  }
71965  } else {
71966  double r = b.real / b.imag;
71967  double s = (double)(1.0) / (b.imag + b.real * r);
71968  return __pyx_t_double_complex_from_parts(
71969  (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
71970  }
71971  }
71972  #else
71973  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
71974  if (b.imag == 0) {
71975  return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
71976  } else {
71977  double denom = b.real * b.real + b.imag * b.imag;
71978  return __pyx_t_double_complex_from_parts(
71979  (a.real * b.real + a.imag * b.imag) / denom,
71980  (a.imag * b.real - a.real * b.imag) / denom);
71981  }
71982  }
71983  #endif
71984  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
71985  __pyx_t_double_complex z;
71986  z.real = -a.real;
71987  z.imag = -a.imag;
71988  return z;
71989  }
71990  static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
71991  return (a.real == 0) && (a.imag == 0);
71992  }
71993  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
71994  __pyx_t_double_complex z;
71995  z.real = a.real;
71996  z.imag = -a.imag;
71997  return z;
71998  }
71999  #if 1
72000  static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
72001  #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
72002  return sqrt(z.real*z.real + z.imag*z.imag);
72003  #else
72004  return hypot(z.real, z.imag);
72005  #endif
72006  }
72007  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
72008  __pyx_t_double_complex z;
72009  double r, lnr, theta, z_r, z_theta;
72010  if (b.imag == 0 && b.real == (int)b.real) {
72011  if (b.real < 0) {
72012  double denom = a.real * a.real + a.imag * a.imag;
72013  a.real = a.real / denom;
72014  a.imag = -a.imag / denom;
72015  b.real = -b.real;
72016  }
72017  switch ((int)b.real) {
72018  case 0:
72019  z.real = 1;
72020  z.imag = 0;
72021  return z;
72022  case 1:
72023  return a;
72024  case 2:
72025  return __Pyx_c_prod_double(a, a);
72026  case 3:
72027  z = __Pyx_c_prod_double(a, a);
72028  return __Pyx_c_prod_double(z, a);
72029  case 4:
72030  z = __Pyx_c_prod_double(a, a);
72031  return __Pyx_c_prod_double(z, z);
72032  }
72033  }
72034  if (a.imag == 0) {
72035  if (a.real == 0) {
72036  return a;
72037  } else if (b.imag == 0) {
72038  z.real = pow(a.real, b.real);
72039  z.imag = 0;
72040  return z;
72041  } else if (a.real > 0) {
72042  r = a.real;
72043  theta = 0;
72044  } else {
72045  r = -a.real;
72046  theta = atan2(0.0, -1.0);
72047  }
72048  } else {
72049  r = __Pyx_c_abs_double(a);
72050  theta = atan2(a.imag, a.real);
72051  }
72052  lnr = log(r);
72053  z_r = exp(lnr * b.real - theta * b.imag);
72054  z_theta = theta * b.real + lnr * b.imag;
72055  z.real = z_r * cos(z_theta);
72056  z.imag = z_r * sin(z_theta);
72057  return z;
72058  }
72059  #endif
72060 #endif
72061 
72062 /* CIntFromPy */
72063  static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
72064 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72065 #pragma GCC diagnostic push
72066 #pragma GCC diagnostic ignored "-Wconversion"
72067 #endif
72068  const long neg_one = (long) -1, const_zero = (long) 0;
72069 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72070 #pragma GCC diagnostic pop
72071 #endif
72072  const int is_unsigned = neg_one > const_zero;
72073 #if PY_MAJOR_VERSION < 3
72074  if (likely(PyInt_Check(x))) {
72075  if (sizeof(long) < sizeof(long)) {
72076  __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
72077  } else {
72078  long val = PyInt_AS_LONG(x);
72079  if (is_unsigned && unlikely(val < 0)) {
72080  goto raise_neg_overflow;
72081  }
72082  return (long) val;
72083  }
72084  } else
72085 #endif
72086  if (likely(PyLong_Check(x))) {
72087  if (is_unsigned) {
72088 #if CYTHON_USE_PYLONG_INTERNALS
72089  const digit* digits = ((PyLongObject*)x)->ob_digit;
72090  switch (Py_SIZE(x)) {
72091  case 0: return (long) 0;
72092  case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
72093  case 2:
72094  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
72095  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72096  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72097  } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
72098  return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
72099  }
72100  }
72101  break;
72102  case 3:
72103  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
72104  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72105  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72106  } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
72107  return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
72108  }
72109  }
72110  break;
72111  case 4:
72112  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
72113  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72114  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72115  } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
72116  return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
72117  }
72118  }
72119  break;
72120  }
72121 #endif
72122 #if CYTHON_COMPILING_IN_CPYTHON
72123  if (unlikely(Py_SIZE(x) < 0)) {
72124  goto raise_neg_overflow;
72125  }
72126 #else
72127  {
72128  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
72129  if (unlikely(result < 0))
72130  return (long) -1;
72131  if (unlikely(result == 1))
72132  goto raise_neg_overflow;
72133  }
72134 #endif
72135  if (sizeof(long) <= sizeof(unsigned long)) {
72136  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
72137 #ifdef HAVE_LONG_LONG
72138  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
72139  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
72140 #endif
72141  }
72142  } else {
72143 #if CYTHON_USE_PYLONG_INTERNALS
72144  const digit* digits = ((PyLongObject*)x)->ob_digit;
72145  switch (Py_SIZE(x)) {
72146  case 0: return (long) 0;
72147  case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
72148  case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
72149  case -2:
72150  if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
72151  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72152  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72153  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
72154  return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
72155  }
72156  }
72157  break;
72158  case 2:
72159  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
72160  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72161  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72162  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
72163  return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
72164  }
72165  }
72166  break;
72167  case -3:
72168  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
72169  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72170  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72171  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
72172  return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
72173  }
72174  }
72175  break;
72176  case 3:
72177  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
72178  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72179  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72180  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
72181  return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
72182  }
72183  }
72184  break;
72185  case -4:
72186  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
72187  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72188  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72189  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
72190  return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
72191  }
72192  }
72193  break;
72194  case 4:
72195  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
72196  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72197  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72198  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
72199  return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
72200  }
72201  }
72202  break;
72203  }
72204 #endif
72205  if (sizeof(long) <= sizeof(long)) {
72206  __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
72207 #ifdef HAVE_LONG_LONG
72208  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
72209  __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
72210 #endif
72211  }
72212  }
72213  {
72214 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
72215  PyErr_SetString(PyExc_RuntimeError,
72216  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
72217 #else
72218  long val;
72219  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
72220  #if PY_MAJOR_VERSION < 3
72221  if (likely(v) && !PyLong_Check(v)) {
72222  PyObject *tmp = v;
72223  v = PyNumber_Long(tmp);
72224  Py_DECREF(tmp);
72225  }
72226  #endif
72227  if (likely(v)) {
72228  int one = 1; int is_little = (int)*(unsigned char *)&one;
72229  unsigned char *bytes = (unsigned char *)&val;
72230  int ret = _PyLong_AsByteArray((PyLongObject *)v,
72231  bytes, sizeof(val),
72232  is_little, !is_unsigned);
72233  Py_DECREF(v);
72234  if (likely(!ret))
72235  return val;
72236  }
72237 #endif
72238  return (long) -1;
72239  }
72240  } else {
72241  long val;
72242  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
72243  if (!tmp) return (long) -1;
72244  val = __Pyx_PyInt_As_long(tmp);
72245  Py_DECREF(tmp);
72246  return val;
72247  }
72248 raise_overflow:
72249  PyErr_SetString(PyExc_OverflowError,
72250  "value too large to convert to long");
72251  return (long) -1;
72252 raise_neg_overflow:
72253  PyErr_SetString(PyExc_OverflowError,
72254  "can't convert negative value to long");
72255  return (long) -1;
72256 }
72257 
72258 /* CIntToPy */
72259  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
72260 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72261 #pragma GCC diagnostic push
72262 #pragma GCC diagnostic ignored "-Wconversion"
72263 #endif
72264  const long neg_one = (long) -1, const_zero = (long) 0;
72265 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72266 #pragma GCC diagnostic pop
72267 #endif
72268  const int is_unsigned = neg_one > const_zero;
72269  if (is_unsigned) {
72270  if (sizeof(long) < sizeof(long)) {
72271  return PyInt_FromLong((long) value);
72272  } else if (sizeof(long) <= sizeof(unsigned long)) {
72273  return PyLong_FromUnsignedLong((unsigned long) value);
72274 #ifdef HAVE_LONG_LONG
72275  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
72276  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
72277 #endif
72278  }
72279  } else {
72280  if (sizeof(long) <= sizeof(long)) {
72281  return PyInt_FromLong((long) value);
72282 #ifdef HAVE_LONG_LONG
72283  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
72284  return PyLong_FromLongLong((PY_LONG_LONG) value);
72285 #endif
72286  }
72287  }
72288  {
72289  int one = 1; int little = (int)*(unsigned char *)&one;
72290  unsigned char *bytes = (unsigned char *)&value;
72291  return _PyLong_FromByteArray(bytes, sizeof(long),
72292  little, !is_unsigned);
72293  }
72294 }
72295 
72296 /* CIntFromPy */
72297  static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
72298 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72299 #pragma GCC diagnostic push
72300 #pragma GCC diagnostic ignored "-Wconversion"
72301 #endif
72302  const int neg_one = (int) -1, const_zero = (int) 0;
72303 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72304 #pragma GCC diagnostic pop
72305 #endif
72306  const int is_unsigned = neg_one > const_zero;
72307 #if PY_MAJOR_VERSION < 3
72308  if (likely(PyInt_Check(x))) {
72309  if (sizeof(int) < sizeof(long)) {
72310  __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
72311  } else {
72312  long val = PyInt_AS_LONG(x);
72313  if (is_unsigned && unlikely(val < 0)) {
72314  goto raise_neg_overflow;
72315  }
72316  return (int) val;
72317  }
72318  } else
72319 #endif
72320  if (likely(PyLong_Check(x))) {
72321  if (is_unsigned) {
72322 #if CYTHON_USE_PYLONG_INTERNALS
72323  const digit* digits = ((PyLongObject*)x)->ob_digit;
72324  switch (Py_SIZE(x)) {
72325  case 0: return (int) 0;
72326  case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
72327  case 2:
72328  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
72329  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72330  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72331  } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
72332  return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
72333  }
72334  }
72335  break;
72336  case 3:
72337  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
72338  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72339  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72340  } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
72341  return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
72342  }
72343  }
72344  break;
72345  case 4:
72346  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
72347  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72348  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72349  } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
72350  return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
72351  }
72352  }
72353  break;
72354  }
72355 #endif
72356 #if CYTHON_COMPILING_IN_CPYTHON
72357  if (unlikely(Py_SIZE(x) < 0)) {
72358  goto raise_neg_overflow;
72359  }
72360 #else
72361  {
72362  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
72363  if (unlikely(result < 0))
72364  return (int) -1;
72365  if (unlikely(result == 1))
72366  goto raise_neg_overflow;
72367  }
72368 #endif
72369  if (sizeof(int) <= sizeof(unsigned long)) {
72370  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
72371 #ifdef HAVE_LONG_LONG
72372  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
72373  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
72374 #endif
72375  }
72376  } else {
72377 #if CYTHON_USE_PYLONG_INTERNALS
72378  const digit* digits = ((PyLongObject*)x)->ob_digit;
72379  switch (Py_SIZE(x)) {
72380  case 0: return (int) 0;
72381  case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
72382  case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
72383  case -2:
72384  if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
72385  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72386  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72387  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
72388  return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
72389  }
72390  }
72391  break;
72392  case 2:
72393  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
72394  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72395  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72396  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
72397  return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
72398  }
72399  }
72400  break;
72401  case -3:
72402  if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
72403  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72404  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72405  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
72406  return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
72407  }
72408  }
72409  break;
72410  case 3:
72411  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
72412  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72413  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72414  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
72415  return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
72416  }
72417  }
72418  break;
72419  case -4:
72420  if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
72421  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72422  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72423  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
72424  return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
72425  }
72426  }
72427  break;
72428  case 4:
72429  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
72430  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72431  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72432  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
72433  return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
72434  }
72435  }
72436  break;
72437  }
72438 #endif
72439  if (sizeof(int) <= sizeof(long)) {
72440  __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
72441 #ifdef HAVE_LONG_LONG
72442  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
72443  __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
72444 #endif
72445  }
72446  }
72447  {
72448 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
72449  PyErr_SetString(PyExc_RuntimeError,
72450  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
72451 #else
72452  int val;
72453  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
72454  #if PY_MAJOR_VERSION < 3
72455  if (likely(v) && !PyLong_Check(v)) {
72456  PyObject *tmp = v;
72457  v = PyNumber_Long(tmp);
72458  Py_DECREF(tmp);
72459  }
72460  #endif
72461  if (likely(v)) {
72462  int one = 1; int is_little = (int)*(unsigned char *)&one;
72463  unsigned char *bytes = (unsigned char *)&val;
72464  int ret = _PyLong_AsByteArray((PyLongObject *)v,
72465  bytes, sizeof(val),
72466  is_little, !is_unsigned);
72467  Py_DECREF(v);
72468  if (likely(!ret))
72469  return val;
72470  }
72471 #endif
72472  return (int) -1;
72473  }
72474  } else {
72475  int val;
72476  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
72477  if (!tmp) return (int) -1;
72478  val = __Pyx_PyInt_As_int(tmp);
72479  Py_DECREF(tmp);
72480  return val;
72481  }
72482 raise_overflow:
72483  PyErr_SetString(PyExc_OverflowError,
72484  "value too large to convert to int");
72485  return (int) -1;
72486 raise_neg_overflow:
72487  PyErr_SetString(PyExc_OverflowError,
72488  "can't convert negative value to int");
72489  return (int) -1;
72490 }
72491 
72492 /* CIntToPy */
72493  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
72494 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72495 #pragma GCC diagnostic push
72496 #pragma GCC diagnostic ignored "-Wconversion"
72497 #endif
72498  const int neg_one = (int) -1, const_zero = (int) 0;
72499 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72500 #pragma GCC diagnostic pop
72501 #endif
72502  const int is_unsigned = neg_one > const_zero;
72503  if (is_unsigned) {
72504  if (sizeof(int) < sizeof(long)) {
72505  return PyInt_FromLong((long) value);
72506  } else if (sizeof(int) <= sizeof(unsigned long)) {
72507  return PyLong_FromUnsignedLong((unsigned long) value);
72508 #ifdef HAVE_LONG_LONG
72509  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
72510  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
72511 #endif
72512  }
72513  } else {
72514  if (sizeof(int) <= sizeof(long)) {
72515  return PyInt_FromLong((long) value);
72516 #ifdef HAVE_LONG_LONG
72517  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
72518  return PyLong_FromLongLong((PY_LONG_LONG) value);
72519 #endif
72520  }
72521  }
72522  {
72523  int one = 1; int little = (int)*(unsigned char *)&one;
72524  unsigned char *bytes = (unsigned char *)&value;
72525  return _PyLong_FromByteArray(bytes, sizeof(int),
72526  little, !is_unsigned);
72527  }
72528 }
72529 
72530 /* CIntToPy */
72531  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value) {
72532 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72533 #pragma GCC diagnostic push
72534 #pragma GCC diagnostic ignored "-Wconversion"
72535 #endif
72536  const Py_intptr_t neg_one = (Py_intptr_t) -1, const_zero = (Py_intptr_t) 0;
72537 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72538 #pragma GCC diagnostic pop
72539 #endif
72540  const int is_unsigned = neg_one > const_zero;
72541  if (is_unsigned) {
72542  if (sizeof(Py_intptr_t) < sizeof(long)) {
72543  return PyInt_FromLong((long) value);
72544  } else if (sizeof(Py_intptr_t) <= sizeof(unsigned long)) {
72545  return PyLong_FromUnsignedLong((unsigned long) value);
72546 #ifdef HAVE_LONG_LONG
72547  } else if (sizeof(Py_intptr_t) <= sizeof(unsigned PY_LONG_LONG)) {
72548  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
72549 #endif
72550  }
72551  } else {
72552  if (sizeof(Py_intptr_t) <= sizeof(long)) {
72553  return PyInt_FromLong((long) value);
72554 #ifdef HAVE_LONG_LONG
72555  } else if (sizeof(Py_intptr_t) <= sizeof(PY_LONG_LONG)) {
72556  return PyLong_FromLongLong((PY_LONG_LONG) value);
72557 #endif
72558  }
72559  }
72560  {
72561  int one = 1; int little = (int)*(unsigned char *)&one;
72562  unsigned char *bytes = (unsigned char *)&value;
72563  return _PyLong_FromByteArray(bytes, sizeof(Py_intptr_t),
72564  little, !is_unsigned);
72565  }
72566 }
72567 
72568 /* CIntFromPy */
72569  static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
72570 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72571 #pragma GCC diagnostic push
72572 #pragma GCC diagnostic ignored "-Wconversion"
72573 #endif
72574  const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
72575 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
72576 #pragma GCC diagnostic pop
72577 #endif
72578  const int is_unsigned = neg_one > const_zero;
72579 #if PY_MAJOR_VERSION < 3
72580  if (likely(PyInt_Check(x))) {
72581  if (sizeof(size_t) < sizeof(long)) {
72582  __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
72583  } else {
72584  long val = PyInt_AS_LONG(x);
72585  if (is_unsigned && unlikely(val < 0)) {
72586  goto raise_neg_overflow;
72587  }
72588  return (size_t) val;
72589  }
72590  } else
72591 #endif
72592  if (likely(PyLong_Check(x))) {
72593  if (is_unsigned) {
72594 #if CYTHON_USE_PYLONG_INTERNALS
72595  const digit* digits = ((PyLongObject*)x)->ob_digit;
72596  switch (Py_SIZE(x)) {
72597  case 0: return (size_t) 0;
72598  case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0])
72599  case 2:
72600  if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
72601  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72602  __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72603  } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) {
72604  return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
72605  }
72606  }
72607  break;
72608  case 3:
72609  if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
72610  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72611  __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72612  } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) {
72613  return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
72614  }
72615  }
72616  break;
72617  case 4:
72618  if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
72619  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72620  __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72621  } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) {
72622  return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
72623  }
72624  }
72625  break;
72626  }
72627 #endif
72628 #if CYTHON_COMPILING_IN_CPYTHON
72629  if (unlikely(Py_SIZE(x) < 0)) {
72630  goto raise_neg_overflow;
72631  }
72632 #else
72633  {
72634  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
72635  if (unlikely(result < 0))
72636  return (size_t) -1;
72637  if (unlikely(result == 1))
72638  goto raise_neg_overflow;
72639  }
72640 #endif
72641  if (sizeof(size_t) <= sizeof(unsigned long)) {
72642  __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
72643 #ifdef HAVE_LONG_LONG
72644  } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) {
72645  __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
72646 #endif
72647  }
72648  } else {
72649 #if CYTHON_USE_PYLONG_INTERNALS
72650  const digit* digits = ((PyLongObject*)x)->ob_digit;
72651  switch (Py_SIZE(x)) {
72652  case 0: return (size_t) 0;
72653  case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0]))
72654  case 1: __PYX_VERIFY_RETURN_INT(size_t, digit, +digits[0])
72655  case -2:
72656  if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) {
72657  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72658  __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72659  } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
72660  return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
72661  }
72662  }
72663  break;
72664  case 2:
72665  if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
72666  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
72667  __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72668  } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
72669  return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
72670  }
72671  }
72672  break;
72673  case -3:
72674  if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
72675  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72676  __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72677  } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
72678  return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
72679  }
72680  }
72681  break;
72682  case 3:
72683  if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
72684  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
72685  __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72686  } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
72687  return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
72688  }
72689  }
72690  break;
72691  case -4:
72692  if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
72693  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72694  __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72695  } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
72696  return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
72697  }
72698  }
72699  break;
72700  case 4:
72701  if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
72702  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
72703  __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
72704  } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
72705  return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
72706  }
72707  }
72708  break;
72709  }
72710 #endif
72711  if (sizeof(size_t) <= sizeof(long)) {
72712  __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
72713 #ifdef HAVE_LONG_LONG
72714  } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) {
72715  __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
72716 #endif
72717  }
72718  }
72719  {
72720 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
72721  PyErr_SetString(PyExc_RuntimeError,
72722  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
72723 #else
72724  size_t val;
72725  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
72726  #if PY_MAJOR_VERSION < 3
72727  if (likely(v) && !PyLong_Check(v)) {
72728  PyObject *tmp = v;
72729  v = PyNumber_Long(tmp);
72730  Py_DECREF(tmp);
72731  }
72732  #endif
72733  if (likely(v)) {
72734  int one = 1; int is_little = (int)*(unsigned char *)&one;
72735  unsigned char *bytes = (unsigned char *)&val;
72736  int ret = _PyLong_AsByteArray((PyLongObject *)v,
72737  bytes, sizeof(val),
72738  is_little, !is_unsigned);
72739  Py_DECREF(v);
72740  if (likely(!ret))
72741  return val;
72742  }
72743 #endif
72744  return (size_t) -1;
72745  }
72746  } else {
72747  size_t val;
72748  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
72749  if (!tmp) return (size_t) -1;
72750  val = __Pyx_PyInt_As_size_t(tmp);
72751  Py_DECREF(tmp);
72752  return val;
72753  }
72754 raise_overflow:
72755  PyErr_SetString(PyExc_OverflowError,
72756  "value too large to convert to size_t");
72757  return (size_t) -1;
72758 raise_neg_overflow:
72759  PyErr_SetString(PyExc_OverflowError,
72760  "can't convert negative value to size_t");
72761  return (size_t) -1;
72762 }
72763 
72764 /* FastTypeChecks */
72765  #if CYTHON_COMPILING_IN_CPYTHON
72766 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
72767  while (a) {
72768  a = a->tp_base;
72769  if (a == b)
72770  return 1;
72771  }
72772  return b == &PyBaseObject_Type;
72773 }
72774 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
72775  PyObject *mro;
72776  if (a == b) return 1;
72777  mro = a->tp_mro;
72778  if (likely(mro)) {
72779  Py_ssize_t i, n;
72780  n = PyTuple_GET_SIZE(mro);
72781  for (i = 0; i < n; i++) {
72782  if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
72783  return 1;
72784  }
72785  return 0;
72786  }
72787  return __Pyx_InBases(a, b);
72788 }
72789 #if PY_MAJOR_VERSION == 2
72790 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
72791  PyObject *exception, *value, *tb;
72792  int res;
72793  __Pyx_PyThreadState_declare
72794  __Pyx_PyThreadState_assign
72795  __Pyx_ErrFetch(&exception, &value, &tb);
72796  res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
72797  if (unlikely(res == -1)) {
72798  PyErr_WriteUnraisable(err);
72799  res = 0;
72800  }
72801  if (!res) {
72802  res = PyObject_IsSubclass(err, exc_type2);
72803  if (unlikely(res == -1)) {
72804  PyErr_WriteUnraisable(err);
72805  res = 0;
72806  }
72807  }
72808  __Pyx_ErrRestore(exception, value, tb);
72809  return res;
72810 }
72811 #else
72812 static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
72813  int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
72814  if (!res) {
72815  res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
72816  }
72817  return res;
72818 }
72819 #endif
72820 static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
72821  Py_ssize_t i, n;
72822  assert(PyExceptionClass_Check(exc_type));
72823  n = PyTuple_GET_SIZE(tuple);
72824 #if PY_MAJOR_VERSION >= 3
72825  for (i=0; i<n; i++) {
72826  if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
72827  }
72828 #endif
72829  for (i=0; i<n; i++) {
72830  PyObject *t = PyTuple_GET_ITEM(tuple, i);
72831  #if PY_MAJOR_VERSION < 3
72832  if (likely(exc_type == t)) return 1;
72833  #endif
72834  if (likely(PyExceptionClass_Check(t))) {
72835  if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
72836  } else {
72837  }
72838  }
72839  return 0;
72840 }
72841 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
72842  if (likely(err == exc_type)) return 1;
72843  if (likely(PyExceptionClass_Check(err))) {
72844  if (likely(PyExceptionClass_Check(exc_type))) {
72845  return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
72846  } else if (likely(PyTuple_Check(exc_type))) {
72847  return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
72848  } else {
72849  }
72850  }
72851  return PyErr_GivenExceptionMatches(err, exc_type);
72852 }
72853 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
72854  assert(PyExceptionClass_Check(exc_type1));
72855  assert(PyExceptionClass_Check(exc_type2));
72856  if (likely(err == exc_type1 || err == exc_type2)) return 1;
72857  if (likely(PyExceptionClass_Check(err))) {
72858  return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
72859  }
72860  return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
72861 }
72862 #endif
72863 
72864 /* SwapException */
72865  #if CYTHON_FAST_THREAD_STATE
72866 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
72867  PyObject *tmp_type, *tmp_value, *tmp_tb;
72868  #if CYTHON_USE_EXC_INFO_STACK
72869  _PyErr_StackItem *exc_info = tstate->exc_info;
72870  tmp_type = exc_info->exc_type;
72871  tmp_value = exc_info->exc_value;
72872  tmp_tb = exc_info->exc_traceback;
72873  exc_info->exc_type = *type;
72874  exc_info->exc_value = *value;
72875  exc_info->exc_traceback = *tb;
72876  #else
72877  tmp_type = tstate->exc_type;
72878  tmp_value = tstate->exc_value;
72879  tmp_tb = tstate->exc_traceback;
72880  tstate->exc_type = *type;
72881  tstate->exc_value = *value;
72882  tstate->exc_traceback = *tb;
72883  #endif
72884  *type = tmp_type;
72885  *value = tmp_value;
72886  *tb = tmp_tb;
72887 }
72888 #else
72889 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
72890  PyObject *tmp_type, *tmp_value, *tmp_tb;
72891  PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
72892  PyErr_SetExcInfo(*type, *value, *tb);
72893  *type = tmp_type;
72894  *value = tmp_value;
72895  *tb = tmp_tb;
72896 }
72897 #endif
72898 
72899 /* CoroutineBase */
72900  #include <structmember.h>
72901 #include <frameobject.h>
72902 #if PY_VERSION_HEX >= 0x030b00a6
72903  #ifndef Py_BUILD_CORE
72904  #define Py_BUILD_CORE 1
72905  #endif
72906  #include "internal/pycore_frame.h"
72907 #endif
72908 #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
72909 static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
72910  PyObject *et, *ev, *tb;
72911  PyObject *value = NULL;
72912  __Pyx_ErrFetch(&et, &ev, &tb);
72913  if (!et) {
72914  Py_XDECREF(tb);
72915  Py_XDECREF(ev);
72916  Py_INCREF(Py_None);
72917  *pvalue = Py_None;
72918  return 0;
72919  }
72920  if (likely(et == PyExc_StopIteration)) {
72921  if (!ev) {
72922  Py_INCREF(Py_None);
72923  value = Py_None;
72924  }
72925 #if PY_VERSION_HEX >= 0x030300A0
72926  else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
72927  value = ((PyStopIterationObject *)ev)->value;
72928  Py_INCREF(value);
72929  Py_DECREF(ev);
72930  }
72931 #endif
72932  else if (unlikely(PyTuple_Check(ev))) {
72933  if (PyTuple_GET_SIZE(ev) >= 1) {
72934 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
72935  value = PyTuple_GET_ITEM(ev, 0);
72936  Py_INCREF(value);
72937 #else
72938  value = PySequence_ITEM(ev, 0);
72939 #endif
72940  } else {
72941  Py_INCREF(Py_None);
72942  value = Py_None;
72943  }
72944  Py_DECREF(ev);
72945  }
72946  else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
72947  value = ev;
72948  }
72949  if (likely(value)) {
72950  Py_XDECREF(tb);
72951  Py_DECREF(et);
72952  *pvalue = value;
72953  return 0;
72954  }
72955  } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
72956  __Pyx_ErrRestore(et, ev, tb);
72957  return -1;
72958  }
72959  PyErr_NormalizeException(&et, &ev, &tb);
72960  if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
72961  __Pyx_ErrRestore(et, ev, tb);
72962  return -1;
72963  }
72964  Py_XDECREF(tb);
72965  Py_DECREF(et);
72966 #if PY_VERSION_HEX >= 0x030300A0
72967  value = ((PyStopIterationObject *)ev)->value;
72968  Py_INCREF(value);
72969  Py_DECREF(ev);
72970 #else
72971  {
72972  PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
72973  Py_DECREF(ev);
72974  if (likely(args)) {
72975  value = PySequence_GetItem(args, 0);
72976  Py_DECREF(args);
72977  }
72978  if (unlikely(!value)) {
72979  __Pyx_ErrRestore(NULL, NULL, NULL);
72980  Py_INCREF(Py_None);
72981  value = Py_None;
72982  }
72983  }
72984 #endif
72985  *pvalue = value;
72986  return 0;
72987 }
72988 static CYTHON_INLINE
72989 void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
72990  PyObject *t, *v, *tb;
72991  t = exc_state->exc_type;
72992  v = exc_state->exc_value;
72993  tb = exc_state->exc_traceback;
72994  exc_state->exc_type = NULL;
72995  exc_state->exc_value = NULL;
72996  exc_state->exc_traceback = NULL;
72997  Py_XDECREF(t);
72998  Py_XDECREF(v);
72999  Py_XDECREF(tb);
73000 }
73001 #define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
73002 static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
73003  const char *msg;
73004  if ((0)) {
73005  #ifdef __Pyx_Coroutine_USED
73006  } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
73007  msg = "coroutine already executing";
73008  #endif
73009  #ifdef __Pyx_AsyncGen_USED
73010  } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
73011  msg = "async generator already executing";
73012  #endif
73013  } else {
73014  msg = "generator already executing";
73015  }
73016  PyErr_SetString(PyExc_ValueError, msg);
73017 }
73018 #define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
73019 static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) {
73020  const char *msg;
73021  if ((0)) {
73022  #ifdef __Pyx_Coroutine_USED
73023  } else if (__Pyx_Coroutine_Check(gen)) {
73024  msg = "can't send non-None value to a just-started coroutine";
73025  #endif
73026  #ifdef __Pyx_AsyncGen_USED
73027  } else if (__Pyx_AsyncGen_CheckExact(gen)) {
73028  msg = "can't send non-None value to a just-started async generator";
73029  #endif
73030  } else {
73031  msg = "can't send non-None value to a just-started generator";
73032  }
73033  PyErr_SetString(PyExc_TypeError, msg);
73034 }
73035 #define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing) (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
73036 static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) {
73037  #ifdef __Pyx_Coroutine_USED
73038  if (!closing && __Pyx_Coroutine_Check(gen)) {
73039  PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
73040  } else
73041  #endif
73042  if (value) {
73043  #ifdef __Pyx_AsyncGen_USED
73044  if (__Pyx_AsyncGen_CheckExact(gen))
73045  PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
73046  else
73047  #endif
73048  PyErr_SetNone(PyExc_StopIteration);
73049  }
73050 }
73051 static
73052 PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
73053  __Pyx_PyThreadState_declare
73054  PyThreadState *tstate;
73055  __Pyx_ExcInfoStruct *exc_state;
73056  PyObject *retval;
73057  assert(!self->is_running);
73058  if (unlikely(self->resume_label == 0)) {
73059  if (unlikely(value && value != Py_None)) {
73060  return __Pyx_Coroutine_NotStartedError((PyObject*)self);
73061  }
73062  }
73063  if (unlikely(self->resume_label == -1)) {
73064  return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
73065  }
73066 #if CYTHON_FAST_THREAD_STATE
73067  __Pyx_PyThreadState_assign
73068  tstate = __pyx_tstate;
73069 #else
73070  tstate = __Pyx_PyThreadState_Current;
73071 #endif
73072  exc_state = &self->gi_exc_state;
73073  if (exc_state->exc_type) {
73074  #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
73075  #else
73076  if (exc_state->exc_traceback) {
73077  PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback;
73078  PyFrameObject *f = tb->tb_frame;
73079  assert(f->f_back == NULL);
73080  #if PY_VERSION_HEX >= 0x030B00A1
73081  f->f_back = PyThreadState_GetFrame(tstate);
73082  #else
73083  Py_XINCREF(tstate->frame);
73084  f->f_back = tstate->frame;
73085  #endif
73086  }
73087  #endif
73088  }
73089 #if CYTHON_USE_EXC_INFO_STACK
73090  exc_state->previous_item = tstate->exc_info;
73091  tstate->exc_info = exc_state;
73092 #else
73093  if (exc_state->exc_type) {
73094  __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
73095  } else {
73096  __Pyx_Coroutine_ExceptionClear(exc_state);
73097  __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
73098  }
73099 #endif
73100  self->is_running = 1;
73101  retval = self->body((PyObject *) self, tstate, value);
73102  self->is_running = 0;
73103 #if CYTHON_USE_EXC_INFO_STACK
73104  exc_state = &self->gi_exc_state;
73105  tstate->exc_info = exc_state->previous_item;
73106  exc_state->previous_item = NULL;
73107  __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
73108 #endif
73109  return retval;
73110 }
73111 static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
73112  PyObject *exc_tb = exc_state->exc_traceback;
73113  if (likely(exc_tb)) {
73114 #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
73115 #else
73116  PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
73117  PyFrameObject *f = tb->tb_frame;
73118  Py_CLEAR(f->f_back);
73119 #endif
73120  }
73121 }
73122 static CYTHON_INLINE
73123 PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) {
73124  if (unlikely(!retval)) {
73125  __Pyx_PyThreadState_declare
73126  __Pyx_PyThreadState_assign
73127  if (!__Pyx_PyErr_Occurred()) {
73128  PyObject *exc = PyExc_StopIteration;
73129  #ifdef __Pyx_AsyncGen_USED
73130  if (__Pyx_AsyncGen_CheckExact(gen))
73131  exc = __Pyx_PyExc_StopAsyncIteration;
73132  #endif
73133  __Pyx_PyErr_SetNone(exc);
73134  }
73135  }
73136  return retval;
73137 }
73138 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
73139 static CYTHON_INLINE
73140 PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
73141 #if PY_VERSION_HEX <= 0x030A00A1
73142  return _PyGen_Send(gen, arg);
73143 #else
73144  PyObject *result;
73145  if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
73146  if (PyAsyncGen_CheckExact(gen)) {
73147  assert(result == Py_None);
73148  PyErr_SetNone(PyExc_StopAsyncIteration);
73149  }
73150  else if (result == Py_None) {
73151  PyErr_SetNone(PyExc_StopIteration);
73152  }
73153  else {
73154  _PyGen_SetStopIterationValue(result);
73155  }
73156  Py_CLEAR(result);
73157  }
73158  return result;
73159 #endif
73160 }
73161 #endif
73162 static CYTHON_INLINE
73163 PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
73164  PyObject *ret;
73165  PyObject *val = NULL;
73166  __Pyx_Coroutine_Undelegate(gen);
73167  __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
73168  ret = __Pyx_Coroutine_SendEx(gen, val, 0);
73169  Py_XDECREF(val);
73170  return ret;
73171 }
73172 static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
73173  PyObject *retval;
73174  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
73175  PyObject *yf = gen->yieldfrom;
73176  if (unlikely(gen->is_running))
73177  return __Pyx_Coroutine_AlreadyRunningError(gen);
73178  if (yf) {
73179  PyObject *ret;
73180  gen->is_running = 1;
73181  #ifdef __Pyx_Generator_USED
73182  if (__Pyx_Generator_CheckExact(yf)) {
73183  ret = __Pyx_Coroutine_Send(yf, value);
73184  } else
73185  #endif
73186  #ifdef __Pyx_Coroutine_USED
73187  if (__Pyx_Coroutine_Check(yf)) {
73188  ret = __Pyx_Coroutine_Send(yf, value);
73189  } else
73190  #endif
73191  #ifdef __Pyx_AsyncGen_USED
73192  if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
73193  ret = __Pyx_async_gen_asend_send(yf, value);
73194  } else
73195  #endif
73196  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
73197  if (PyGen_CheckExact(yf)) {
73198  ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
73199  } else
73200  #endif
73201  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
73202  if (PyCoro_CheckExact(yf)) {
73203  ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
73204  } else
73205  #endif
73206  {
73207  if (value == Py_None)
73208  ret = Py_TYPE(yf)->tp_iternext(yf);
73209  else
73210  ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
73211  }
73212  gen->is_running = 0;
73213  if (likely(ret)) {
73214  return ret;
73215  }
73216  retval = __Pyx_Coroutine_FinishDelegation(gen);
73217  } else {
73218  retval = __Pyx_Coroutine_SendEx(gen, value, 0);
73219  }
73220  return __Pyx_Coroutine_MethodReturn(self, retval);
73221 }
73222 static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
73223  PyObject *retval = NULL;
73224  int err = 0;
73225  #ifdef __Pyx_Generator_USED
73226  if (__Pyx_Generator_CheckExact(yf)) {
73227  retval = __Pyx_Coroutine_Close(yf);
73228  if (!retval)
73229  return -1;
73230  } else
73231  #endif
73232  #ifdef __Pyx_Coroutine_USED
73233  if (__Pyx_Coroutine_Check(yf)) {
73234  retval = __Pyx_Coroutine_Close(yf);
73235  if (!retval)
73236  return -1;
73237  } else
73238  if (__Pyx_CoroutineAwait_CheckExact(yf)) {
73239  retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
73240  if (!retval)
73241  return -1;
73242  } else
73243  #endif
73244  #ifdef __Pyx_AsyncGen_USED
73245  if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
73246  retval = __Pyx_async_gen_asend_close(yf, NULL);
73247  } else
73248  if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
73249  retval = __Pyx_async_gen_athrow_close(yf, NULL);
73250  } else
73251  #endif
73252  {
73253  PyObject *meth;
73254  gen->is_running = 1;
73255  meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
73256  if (unlikely(!meth)) {
73257  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
73258  PyErr_WriteUnraisable(yf);
73259  }
73260  PyErr_Clear();
73261  } else {
73262  retval = PyObject_CallFunction(meth, NULL);
73263  Py_DECREF(meth);
73264  if (!retval)
73265  err = -1;
73266  }
73267  gen->is_running = 0;
73268  }
73269  Py_XDECREF(retval);
73270  return err;
73271 }
73272 static PyObject *__Pyx_Generator_Next(PyObject *self) {
73273  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
73274  PyObject *yf = gen->yieldfrom;
73275  if (unlikely(gen->is_running))
73276  return __Pyx_Coroutine_AlreadyRunningError(gen);
73277  if (yf) {
73278  PyObject *ret;
73279  gen->is_running = 1;
73280  #ifdef __Pyx_Generator_USED
73281  if (__Pyx_Generator_CheckExact(yf)) {
73282  ret = __Pyx_Generator_Next(yf);
73283  } else
73284  #endif
73285  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
73286  if (PyGen_CheckExact(yf)) {
73287  ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
73288  } else
73289  #endif
73290  #ifdef __Pyx_Coroutine_USED
73291  if (__Pyx_Coroutine_Check(yf)) {
73292  ret = __Pyx_Coroutine_Send(yf, Py_None);
73293  } else
73294  #endif
73295  ret = Py_TYPE(yf)->tp_iternext(yf);
73296  gen->is_running = 0;
73297  if (likely(ret)) {
73298  return ret;
73299  }
73300  return __Pyx_Coroutine_FinishDelegation(gen);
73301  }
73302  return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
73303 }
73304 static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, CYTHON_UNUSED PyObject *arg) {
73305  return __Pyx_Coroutine_Close(self);
73306 }
73307 static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
73308  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
73309  PyObject *retval, *raised_exception;
73310  PyObject *yf = gen->yieldfrom;
73311  int err = 0;
73312  if (unlikely(gen->is_running))
73313  return __Pyx_Coroutine_AlreadyRunningError(gen);
73314  if (yf) {
73315  Py_INCREF(yf);
73316  err = __Pyx_Coroutine_CloseIter(gen, yf);
73317  __Pyx_Coroutine_Undelegate(gen);
73318  Py_DECREF(yf);
73319  }
73320  if (err == 0)
73321  PyErr_SetNone(PyExc_GeneratorExit);
73322  retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
73323  if (unlikely(retval)) {
73324  const char *msg;
73325  Py_DECREF(retval);
73326  if ((0)) {
73327  #ifdef __Pyx_Coroutine_USED
73328  } else if (__Pyx_Coroutine_Check(self)) {
73329  msg = "coroutine ignored GeneratorExit";
73330  #endif
73331  #ifdef __Pyx_AsyncGen_USED
73332  } else if (__Pyx_AsyncGen_CheckExact(self)) {
73333 #if PY_VERSION_HEX < 0x03060000
73334  msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
73335 #else
73336  msg = "async generator ignored GeneratorExit";
73337 #endif
73338  #endif
73339  } else {
73340  msg = "generator ignored GeneratorExit";
73341  }
73342  PyErr_SetString(PyExc_RuntimeError, msg);
73343  return NULL;
73344  }
73345  raised_exception = PyErr_Occurred();
73346  if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
73347  if (raised_exception) PyErr_Clear();
73348  Py_INCREF(Py_None);
73349  return Py_None;
73350  }
73351  return NULL;
73352 }
73353 static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
73354  PyObject *args, int close_on_genexit) {
73355  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
73356  PyObject *yf = gen->yieldfrom;
73357  if (unlikely(gen->is_running))
73358  return __Pyx_Coroutine_AlreadyRunningError(gen);
73359  if (yf) {
73360  PyObject *ret;
73361  Py_INCREF(yf);
73362  if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
73363  int err = __Pyx_Coroutine_CloseIter(gen, yf);
73364  Py_DECREF(yf);
73365  __Pyx_Coroutine_Undelegate(gen);
73366  if (err < 0)
73367  return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
73368  goto throw_here;
73369  }
73370  gen->is_running = 1;
73371  if (0
73372  #ifdef __Pyx_Generator_USED
73373  || __Pyx_Generator_CheckExact(yf)
73374  #endif
73375  #ifdef __Pyx_Coroutine_USED
73376  || __Pyx_Coroutine_Check(yf)
73377  #endif
73378  ) {
73379  ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
73380  #ifdef __Pyx_Coroutine_USED
73381  } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
73382  ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
73383  #endif
73384  } else {
73385  PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
73386  if (unlikely(!meth)) {
73387  Py_DECREF(yf);
73388  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
73389  gen->is_running = 0;
73390  return NULL;
73391  }
73392  PyErr_Clear();
73393  __Pyx_Coroutine_Undelegate(gen);
73394  gen->is_running = 0;
73395  goto throw_here;
73396  }
73397  if (likely(args)) {
73398  ret = PyObject_CallObject(meth, args);
73399  } else {
73400  ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL);
73401  }
73402  Py_DECREF(meth);
73403  }
73404  gen->is_running = 0;
73405  Py_DECREF(yf);
73406  if (!ret) {
73407  ret = __Pyx_Coroutine_FinishDelegation(gen);
73408  }
73409  return __Pyx_Coroutine_MethodReturn(self, ret);
73410  }
73411 throw_here:
73412  __Pyx_Raise(typ, val, tb, NULL);
73413  return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
73414 }
73415 static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
73416  PyObject *typ;
73417  PyObject *val = NULL;
73418  PyObject *tb = NULL;
73419  if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
73420  return NULL;
73421  return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
73422 }
73423 static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
73424  Py_VISIT(exc_state->exc_type);
73425  Py_VISIT(exc_state->exc_value);
73426  Py_VISIT(exc_state->exc_traceback);
73427  return 0;
73428 }
73429 static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
73430  Py_VISIT(gen->closure);
73431  Py_VISIT(gen->classobj);
73432  Py_VISIT(gen->yieldfrom);
73433  return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
73434 }
73435 static int __Pyx_Coroutine_clear(PyObject *self) {
73436  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
73437  Py_CLEAR(gen->closure);
73438  Py_CLEAR(gen->classobj);
73439  Py_CLEAR(gen->yieldfrom);
73440  __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
73441 #ifdef __Pyx_AsyncGen_USED
73442  if (__Pyx_AsyncGen_CheckExact(self)) {
73443  Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
73444  }
73445 #endif
73446  Py_CLEAR(gen->gi_code);
73447  Py_CLEAR(gen->gi_frame);
73448  Py_CLEAR(gen->gi_name);
73449  Py_CLEAR(gen->gi_qualname);
73450  Py_CLEAR(gen->gi_modulename);
73451  return 0;
73452 }
73453 static void __Pyx_Coroutine_dealloc(PyObject *self) {
73454  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
73455  PyObject_GC_UnTrack(gen);
73456  if (gen->gi_weakreflist != NULL)
73457  PyObject_ClearWeakRefs(self);
73458  if (gen->resume_label >= 0) {
73459  PyObject_GC_Track(self);
73460 #if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
73461  if (PyObject_CallFinalizerFromDealloc(self))
73462 #else
73463  Py_TYPE(gen)->tp_del(self);
73464  if (Py_REFCNT(self) > 0)
73465 #endif
73466  {
73467  return;
73468  }
73469  PyObject_GC_UnTrack(self);
73470  }
73471 #ifdef __Pyx_AsyncGen_USED
73472  if (__Pyx_AsyncGen_CheckExact(self)) {
73473  /* We have to handle this case for asynchronous generators
73474  right here, because this code has to be between UNTRACK
73475  and GC_Del. */
73476  Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
73477  }
73478 #endif
73479  __Pyx_Coroutine_clear(self);
73480  PyObject_GC_Del(gen);
73481 }
73482 static void __Pyx_Coroutine_del(PyObject *self) {
73483  PyObject *error_type, *error_value, *error_traceback;
73484  __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
73485  __Pyx_PyThreadState_declare
73486  if (gen->resume_label < 0) {
73487  return;
73488  }
73489 #if !CYTHON_USE_TP_FINALIZE
73490  assert(self->ob_refcnt == 0);
73491  __Pyx_SET_REFCNT(self, 1);
73492 #endif
73493  __Pyx_PyThreadState_assign
73494  __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
73495 #ifdef __Pyx_AsyncGen_USED
73496  if (__Pyx_AsyncGen_CheckExact(self)) {
73497  __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
73498  PyObject *finalizer = agen->ag_finalizer;
73499  if (finalizer && !agen->ag_closed) {
73500  PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
73501  if (unlikely(!res)) {
73502  PyErr_WriteUnraisable(self);
73503  } else {
73504  Py_DECREF(res);
73505  }
73506  __Pyx_ErrRestore(error_type, error_value, error_traceback);
73507  return;
73508  }
73509  }
73510 #endif
73511  if (unlikely(gen->resume_label == 0 && !error_value)) {
73512 #ifdef __Pyx_Coroutine_USED
73513 #ifdef __Pyx_Generator_USED
73514  if (!__Pyx_Generator_CheckExact(self))
73515 #endif
73516  {
73517  PyObject_GC_UnTrack(self);
73518 #if PY_MAJOR_VERSION >= 3 || defined(PyErr_WarnFormat)
73519  if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
73520  PyErr_WriteUnraisable(self);
73521 #else
73522  {PyObject *msg;
73523  char *cmsg;
73524  #if CYTHON_COMPILING_IN_PYPY
73525  msg = NULL;
73526  cmsg = (char*) "coroutine was never awaited";
73527  #else
73528  char *cname;
73529  PyObject *qualname;
73530  qualname = gen->gi_qualname;
73531  cname = PyString_AS_STRING(qualname);
73532  msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
73533  if (unlikely(!msg)) {
73534  PyErr_Clear();
73535  cmsg = (char*) "coroutine was never awaited";
73536  } else {
73537  cmsg = PyString_AS_STRING(msg);
73538  }
73539  #endif
73540  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
73541  PyErr_WriteUnraisable(self);
73542  Py_XDECREF(msg);}
73543 #endif
73544  PyObject_GC_Track(self);
73545  }
73546 #endif
73547  } else {
73548  PyObject *res = __Pyx_Coroutine_Close(self);
73549  if (unlikely(!res)) {
73550  if (PyErr_Occurred())
73551  PyErr_WriteUnraisable(self);
73552  } else {
73553  Py_DECREF(res);
73554  }
73555  }
73556  __Pyx_ErrRestore(error_type, error_value, error_traceback);
73557 #if !CYTHON_USE_TP_FINALIZE
73558  assert(Py_REFCNT(self) > 0);
73559  if (--self->ob_refcnt == 0) {
73560  return;
73561  }
73562  {
73563  Py_ssize_t refcnt = Py_REFCNT(self);
73564  _Py_NewReference(self);
73565  __Pyx_SET_REFCNT(self, refcnt);
73566  }
73567 #if CYTHON_COMPILING_IN_CPYTHON
73568  assert(PyType_IS_GC(Py_TYPE(self)) &&
73569  _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
73570  _Py_DEC_REFTOTAL;
73571 #endif
73572 #ifdef COUNT_ALLOCS
73573  --Py_TYPE(self)->tp_frees;
73574  --Py_TYPE(self)->tp_allocs;
73575 #endif
73576 #endif
73577 }
73578 static PyObject *
73579 __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
73580 {
73581  PyObject *name = self->gi_name;
73582  if (unlikely(!name)) name = Py_None;
73583  Py_INCREF(name);
73584  return name;
73585 }
73586 static int
73587 __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
73588 {
73589  PyObject *tmp;
73590 #if PY_MAJOR_VERSION >= 3
73591  if (unlikely(value == NULL || !PyUnicode_Check(value)))
73592 #else
73593  if (unlikely(value == NULL || !PyString_Check(value)))
73594 #endif
73595  {
73596  PyErr_SetString(PyExc_TypeError,
73597  "__name__ must be set to a string object");
73598  return -1;
73599  }
73600  tmp = self->gi_name;
73601  Py_INCREF(value);
73602  self->gi_name = value;
73603  Py_XDECREF(tmp);
73604  return 0;
73605 }
73606 static PyObject *
73607 __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
73608 {
73609  PyObject *name = self->gi_qualname;
73610  if (unlikely(!name)) name = Py_None;
73611  Py_INCREF(name);
73612  return name;
73613 }
73614 static int
73615 __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
73616 {
73617  PyObject *tmp;
73618 #if PY_MAJOR_VERSION >= 3
73619  if (unlikely(value == NULL || !PyUnicode_Check(value)))
73620 #else
73621  if (unlikely(value == NULL || !PyString_Check(value)))
73622 #endif
73623  {
73624  PyErr_SetString(PyExc_TypeError,
73625  "__qualname__ must be set to a string object");
73626  return -1;
73627  }
73628  tmp = self->gi_qualname;
73629  Py_INCREF(value);
73630  self->gi_qualname = value;
73631  Py_XDECREF(tmp);
73632  return 0;
73633 }
73634 static PyObject *
73635 __Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
73636 {
73637  PyObject *frame = self->gi_frame;
73638  if (!frame) {
73639  if (unlikely(!self->gi_code)) {
73640  Py_RETURN_NONE;
73641  }
73642  frame = (PyObject *) PyFrame_New(
73643  PyThreadState_Get(), /*PyThreadState *tstate,*/
73644  (PyCodeObject*) self->gi_code, /*PyCodeObject *code,*/
73645  __pyx_d, /*PyObject *globals,*/
73646  0 /*PyObject *locals*/
73647  );
73648  if (unlikely(!frame))
73649  return NULL;
73650  self->gi_frame = frame;
73651  }
73652  Py_INCREF(frame);
73653  return frame;
73654 }
73655 static __pyx_CoroutineObject *__Pyx__Coroutine_New(
73656  PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
73657  PyObject *name, PyObject *qualname, PyObject *module_name) {
73658  __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
73659  if (unlikely(!gen))
73660  return NULL;
73661  return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
73662 }
73663 static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
73664  __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
73665  PyObject *name, PyObject *qualname, PyObject *module_name) {
73666  gen->body = body;
73667  gen->closure = closure;
73668  Py_XINCREF(closure);
73669  gen->is_running = 0;
73670  gen->resume_label = 0;
73671  gen->classobj = NULL;
73672  gen->yieldfrom = NULL;
73673  gen->gi_exc_state.exc_type = NULL;
73674  gen->gi_exc_state.exc_value = NULL;
73675  gen->gi_exc_state.exc_traceback = NULL;
73676 #if CYTHON_USE_EXC_INFO_STACK
73677  gen->gi_exc_state.previous_item = NULL;
73678 #endif
73679  gen->gi_weakreflist = NULL;
73680  Py_XINCREF(qualname);
73681  gen->gi_qualname = qualname;
73682  Py_XINCREF(name);
73683  gen->gi_name = name;
73684  Py_XINCREF(module_name);
73685  gen->gi_modulename = module_name;
73686  Py_XINCREF(code);
73687  gen->gi_code = code;
73688  gen->gi_frame = NULL;
73689  PyObject_GC_Track(gen);
73690  return gen;
73691 }
73692 
73693 /* PatchModuleWithCoroutine */
73694  static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
73695 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
73696  int result;
73697  PyObject *globals, *result_obj;
73698  globals = PyDict_New(); if (unlikely(!globals)) goto ignore;
73699  result = PyDict_SetItemString(globals, "_cython_coroutine_type",
73700  #ifdef __Pyx_Coroutine_USED
73701  (PyObject*)__pyx_CoroutineType);
73702  #else
73703  Py_None);
73704  #endif
73705  if (unlikely(result < 0)) goto ignore;
73706  result = PyDict_SetItemString(globals, "_cython_generator_type",
73707  #ifdef __Pyx_Generator_USED
73708  (PyObject*)__pyx_GeneratorType);
73709  #else
73710  Py_None);
73711  #endif
73712  if (unlikely(result < 0)) goto ignore;
73713  if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
73714  if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
73715  result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
73716  if (unlikely(!result_obj)) goto ignore;
73717  Py_DECREF(result_obj);
73718  Py_DECREF(globals);
73719  return module;
73720 ignore:
73721  Py_XDECREF(globals);
73722  PyErr_WriteUnraisable(module);
73723  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
73724  Py_DECREF(module);
73725  module = NULL;
73726  }
73727 #else
73728  py_code++;
73729 #endif
73730  return module;
73731 }
73732 
73733 /* PatchGeneratorABC */
73734  #ifndef CYTHON_REGISTER_ABCS
73735 #define CYTHON_REGISTER_ABCS 1
73736 #endif
73737 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
73738 static PyObject* __Pyx_patch_abc_module(PyObject *module);
73739 static PyObject* __Pyx_patch_abc_module(PyObject *module) {
73740  module = __Pyx_Coroutine_patch_module(
73741  module, ""
73742 "if _cython_generator_type is not None:\n"
73743 " try: Generator = _module.Generator\n"
73744 " except AttributeError: pass\n"
73745 " else: Generator.register(_cython_generator_type)\n"
73746 "if _cython_coroutine_type is not None:\n"
73747 " try: Coroutine = _module.Coroutine\n"
73748 " except AttributeError: pass\n"
73749 " else: Coroutine.register(_cython_coroutine_type)\n"
73750  );
73751  return module;
73752 }
73753 #endif
73754 static int __Pyx_patch_abc(void) {
73755 #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
73756  static int abc_patched = 0;
73757  if (CYTHON_REGISTER_ABCS && !abc_patched) {
73758  PyObject *module;
73759  module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
73760  if (!module) {
73761  PyErr_WriteUnraisable(NULL);
73762  if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
73763  ((PY_MAJOR_VERSION >= 3) ?
73764  "Cython module failed to register with collections.abc module" :
73765  "Cython module failed to register with collections module"), 1) < 0)) {
73766  return -1;
73767  }
73768  } else {
73769  module = __Pyx_patch_abc_module(module);
73770  abc_patched = 1;
73771  if (unlikely(!module))
73772  return -1;
73773  Py_DECREF(module);
73774  }
73775  module = PyImport_ImportModule("backports_abc");
73776  if (module) {
73777  module = __Pyx_patch_abc_module(module);
73778  Py_XDECREF(module);
73779  }
73780  if (!module) {
73781  PyErr_Clear();
73782  }
73783  }
73784 #else
73785  if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
73786 #endif
73787  return 0;
73788 }
73789 
73790 /* Generator */
73791  static PyMethodDef __pyx_Generator_methods[] = {
73792  {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
73793  (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
73794  {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
73795  (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
73796  {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
73797  (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
73798  {0, 0, 0, 0}
73799 };
73800 static PyMemberDef __pyx_Generator_memberlist[] = {
73801  {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
73802  {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
73803  (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
73804  {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
73805  {0, 0, 0, 0, 0}
73806 };
73807 static PyGetSetDef __pyx_Generator_getsets[] = {
73808  {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
73809  (char*) PyDoc_STR("name of the generator"), 0},
73810  {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
73811  (char*) PyDoc_STR("qualified name of the generator"), 0},
73812  {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
73813  (char*) PyDoc_STR("Frame of the generator"), 0},
73814  {0, 0, 0, 0, 0}
73815 };
73816 static PyTypeObject __pyx_GeneratorType_type = {
73817  PyVarObject_HEAD_INIT(0, 0)
73818  "generator",
73819  sizeof(__pyx_CoroutineObject),
73820  0,
73821  (destructor) __Pyx_Coroutine_dealloc,
73822  0,
73823  0,
73824  0,
73825  0,
73826  0,
73827  0,
73828  0,
73829  0,
73830  0,
73831  0,
73832  0,
73833  0,
73834  0,
73835  0,
73836  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
73837  0,
73838  (traverseproc) __Pyx_Coroutine_traverse,
73839  0,
73840  0,
73841  offsetof(__pyx_CoroutineObject, gi_weakreflist),
73842  0,
73843  (iternextfunc) __Pyx_Generator_Next,
73844  __pyx_Generator_methods,
73845  __pyx_Generator_memberlist,
73846  __pyx_Generator_getsets,
73847  0,
73848  0,
73849  0,
73850  0,
73851  0,
73852  0,
73853  0,
73854  0,
73855  0,
73856  0,
73857  0,
73858  0,
73859  0,
73860  0,
73861  0,
73862 #if CYTHON_USE_TP_FINALIZE
73863  0,
73864 #else
73865  __Pyx_Coroutine_del,
73866 #endif
73867  0,
73868 #if CYTHON_USE_TP_FINALIZE
73869  __Pyx_Coroutine_del,
73870 #elif PY_VERSION_HEX >= 0x030400a1
73871  0,
73872 #endif
73873 #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
73874  0,
73875 #endif
73876 #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
73877  0,
73878 #endif
73879 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
73880  0,
73881 #endif
73882 };
73883 static int __pyx_Generator_init(void) {
73884  __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
73885  __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
73886  __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
73887  if (unlikely(!__pyx_GeneratorType)) {
73888  return -1;
73889  }
73890  return 0;
73891 }
73892 
73893 /* CheckBinaryVersion */
73894  static int __Pyx_check_binary_version(void) {
73895  char ctversion[5];
73896  int same=1, i, found_dot;
73897  const char* rt_from_call = Py_GetVersion();
73898  PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
73899  found_dot = 0;
73900  for (i = 0; i < 4; i++) {
73901  if (!ctversion[i]) {
73902  same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
73903  break;
73904  }
73905  if (rt_from_call[i] != ctversion[i]) {
73906  same = 0;
73907  break;
73908  }
73909  }
73910  if (!same) {
73911  char rtversion[5] = {'\0'};
73912  char message[200];
73913  for (i=0; i<4; ++i) {
73914  if (rt_from_call[i] == '.') {
73915  if (found_dot) break;
73916  found_dot = 1;
73917  } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
73918  break;
73919  }
73920  rtversion[i] = rt_from_call[i];
73921  }
73922  PyOS_snprintf(message, sizeof(message),
73923  "compiletime version %s of module '%.100s' "
73924  "does not match runtime version %s",
73925  ctversion, __Pyx_MODULE_NAME, rtversion);
73926  return PyErr_WarnEx(NULL, message, 1);
73927  }
73928  return 0;
73929 }
73930 
73931 /* InitStrings */
73932  static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
73933  while (t->p) {
73934  #if PY_MAJOR_VERSION < 3
73935  if (t->is_unicode) {
73936  *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
73937  } else if (t->intern) {
73938  *t->p = PyString_InternFromString(t->s);
73939  } else {
73940  *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
73941  }
73942  #else
73943  if (t->is_unicode | t->is_str) {
73944  if (t->intern) {
73945  *t->p = PyUnicode_InternFromString(t->s);
73946  } else if (t->encoding) {
73947  *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
73948  } else {
73949  *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
73950  }
73951  } else {
73952  *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
73953  }
73954  #endif
73955  if (!*t->p)
73956  return -1;
73957  if (PyObject_Hash(*t->p) == -1)
73958  return -1;
73959  ++t;
73960  }
73961  return 0;
73962 }
73963 
73964 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
73965  return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
73966 }
73967 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
73968  Py_ssize_t ignore;
73969  return __Pyx_PyObject_AsStringAndSize(o, &ignore);
73970 }
73971 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
73972 #if !CYTHON_PEP393_ENABLED
73973 static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
73974  char* defenc_c;
73975  PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
73976  if (!defenc) return NULL;
73977  defenc_c = PyBytes_AS_STRING(defenc);
73978 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
73979  {
73980  char* end = defenc_c + PyBytes_GET_SIZE(defenc);
73981  char* c;
73982  for (c = defenc_c; c < end; c++) {
73983  if ((unsigned char) (*c) >= 128) {
73984  PyUnicode_AsASCIIString(o);
73985  return NULL;
73986  }
73987  }
73988  }
73989 #endif
73990  *length = PyBytes_GET_SIZE(defenc);
73991  return defenc_c;
73992 }
73993 #else
73994 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
73995  if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
73996 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
73997  if (likely(PyUnicode_IS_ASCII(o))) {
73998  *length = PyUnicode_GET_LENGTH(o);
73999  return PyUnicode_AsUTF8(o);
74000  } else {
74001  PyUnicode_AsASCIIString(o);
74002  return NULL;
74003  }
74004 #else
74005  return PyUnicode_AsUTF8AndSize(o, length);
74006 #endif
74007 }
74008 #endif
74009 #endif
74010 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
74011 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
74012  if (
74013 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
74014  __Pyx_sys_getdefaultencoding_not_ascii &&
74015 #endif
74016  PyUnicode_Check(o)) {
74017  return __Pyx_PyUnicode_AsStringAndSize(o, length);
74018  } else
74019 #endif
74020 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
74021  if (PyByteArray_Check(o)) {
74022  *length = PyByteArray_GET_SIZE(o);
74023  return PyByteArray_AS_STRING(o);
74024  } else
74025 #endif
74026  {
74027  char* result;
74028  int r = PyBytes_AsStringAndSize(o, &result, length);
74029  if (unlikely(r < 0)) {
74030  return NULL;
74031  } else {
74032  return result;
74033  }
74034  }
74035 }
74036 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
74037  int is_true = x == Py_True;
74038  if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
74039  else return PyObject_IsTrue(x);
74040 }
74041 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
74042  int retval;
74043  if (unlikely(!x)) return -1;
74044  retval = __Pyx_PyObject_IsTrue(x);
74045  Py_DECREF(x);
74046  return retval;
74047 }
74048 static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
74049 #if PY_MAJOR_VERSION >= 3
74050  if (PyLong_Check(result)) {
74051  if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
74052  "__int__ returned non-int (type %.200s). "
74053  "The ability to return an instance of a strict subclass of int "
74054  "is deprecated, and may be removed in a future version of Python.",
74055  Py_TYPE(result)->tp_name)) {
74056  Py_DECREF(result);
74057  return NULL;
74058  }
74059  return result;
74060  }
74061 #endif
74062  PyErr_Format(PyExc_TypeError,
74063  "__%.4s__ returned non-%.4s (type %.200s)",
74064  type_name, type_name, Py_TYPE(result)->tp_name);
74065  Py_DECREF(result);
74066  return NULL;
74067 }
74068 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
74069 #if CYTHON_USE_TYPE_SLOTS
74070  PyNumberMethods *m;
74071 #endif
74072  const char *name = NULL;
74073  PyObject *res = NULL;
74074 #if PY_MAJOR_VERSION < 3
74075  if (likely(PyInt_Check(x) || PyLong_Check(x)))
74076 #else
74077  if (likely(PyLong_Check(x)))
74078 #endif
74079  return __Pyx_NewRef(x);
74080 #if CYTHON_USE_TYPE_SLOTS
74081  m = Py_TYPE(x)->tp_as_number;
74082  #if PY_MAJOR_VERSION < 3
74083  if (m && m->nb_int) {
74084  name = "int";
74085  res = m->nb_int(x);
74086  }
74087  else if (m && m->nb_long) {
74088  name = "long";
74089  res = m->nb_long(x);
74090  }
74091  #else
74092  if (likely(m && m->nb_int)) {
74093  name = "int";
74094  res = m->nb_int(x);
74095  }
74096  #endif
74097 #else
74098  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
74099  res = PyNumber_Int(x);
74100  }
74101 #endif
74102  if (likely(res)) {
74103 #if PY_MAJOR_VERSION < 3
74104  if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
74105 #else
74106  if (unlikely(!PyLong_CheckExact(res))) {
74107 #endif
74108  return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
74109  }
74110  }
74111  else if (!PyErr_Occurred()) {
74112  PyErr_SetString(PyExc_TypeError,
74113  "an integer is required");
74114  }
74115  return res;
74116 }
74117 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
74118  Py_ssize_t ival;
74119  PyObject *x;
74120 #if PY_MAJOR_VERSION < 3
74121  if (likely(PyInt_CheckExact(b))) {
74122  if (sizeof(Py_ssize_t) >= sizeof(long))
74123  return PyInt_AS_LONG(b);
74124  else
74125  return PyInt_AsSsize_t(b);
74126  }
74127 #endif
74128  if (likely(PyLong_CheckExact(b))) {
74129  #if CYTHON_USE_PYLONG_INTERNALS
74130  const digit* digits = ((PyLongObject*)b)->ob_digit;
74131  const Py_ssize_t size = Py_SIZE(b);
74132  if (likely(__Pyx_sst_abs(size) <= 1)) {
74133  ival = likely(size) ? digits[0] : 0;
74134  if (size == -1) ival = -ival;
74135  return ival;
74136  } else {
74137  switch (size) {
74138  case 2:
74139  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
74140  return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
74141  }
74142  break;
74143  case -2:
74144  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
74145  return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
74146  }
74147  break;
74148  case 3:
74149  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
74150  return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
74151  }
74152  break;
74153  case -3:
74154  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
74155  return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
74156  }
74157  break;
74158  case 4:
74159  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
74160  return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
74161  }
74162  break;
74163  case -4:
74164  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
74165  return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
74166  }
74167  break;
74168  }
74169  }
74170  #endif
74171  return PyLong_AsSsize_t(b);
74172  }
74173  x = PyNumber_Index(b);
74174  if (!x) return -1;
74175  ival = PyInt_AsSsize_t(x);
74176  Py_DECREF(x);
74177  return ival;
74178 }
74179 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
74180  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
74181  return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
74182 #if PY_MAJOR_VERSION < 3
74183  } else if (likely(PyInt_CheckExact(o))) {
74184  return PyInt_AS_LONG(o);
74185 #endif
74186  } else {
74187  Py_ssize_t ival;
74188  PyObject *x;
74189  x = PyNumber_Index(o);
74190  if (!x) return -1;
74191  ival = PyInt_AsLong(x);
74192  Py_DECREF(x);
74193  return ival;
74194  }
74195 }
74196 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
74197  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
74198 }
74199 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
74200  return PyInt_FromSize_t(ival);
74201 }
74202 
74203 
74204 #endif /* Py_PYTHON_H */
proteus::fp
double fp(const double &g, const double &h, const double &hZ)
Definition: SW2DCV.h:66
proteus::__cpp_vel_mode_p
void __cpp_vel_mode_p(double *U, double x[nDim], double t, double kDir[nDim], double kAbs, double omega, double phi, double amplitude, double mwl, double depth, double waveDir[nDim], double vDir[nDim], double tanhkd, double gAbs, bool fast)
Definition: WaveTools.h:136
proteus::__cpp_uDir
void __cpp_uDir(double *U, double x[nDim], double t, double *kDir, double *kAbs, double *omega, double *phi, double *amplitude, double mwl, double depth, int N, double *waveDir, double vDir[nDim], double *tanhF, double gAbs, bool fast)
Definition: WaveTools.h:303
proteus::__cpp_eta2nd
double __cpp_eta2nd(double x[nDim], double t, double *kDir, double *ki, double *omega, double *phi, double *amplitude, int N, double *sinhKd, double *tanhKd, bool fast)
Definition: WaveTools.h:439
f
Double f
Definition: Headers.h:64
proteus::__cpp_eta_long
double __cpp_eta_long(double x[nDim], double t, double *kDir, double *ki, double *omega, double *phi, double *amplitude, int N, double *sinhKd, double *tanhKd, double gAbs, bool fast)
Definition: WaveTools.h:508
s
Double s
Definition: Headers.h:84
proteus::__cpp_etaWindow
double __cpp_etaWindow(double x[nDim], double x0[nDim], double t, double *t0, double *kDir, double *omega, double *phi, double *amplitude, int N, int Nw, bool fast)
Definition: WaveTools.h:380
proteus::__cpp_uFenton
void __cpp_uFenton(double *U, double x[nDim], double t, double kDir[nDim], double kAbs, double omega, double phi0, double amplitude, double mwl, double depth, double gAbs, int Nf, double *Bcoeff, double mV[nDim], double waveDir[nDim], double vDir[nDim], double *tanhF, bool fast)
Definition: WaveTools.h:209
L
Double L
Definition: Headers.h:72
n
Int n
Definition: Headers.h:28
df
double df(double C, double b, double a, int q, int r)
Definition: analyticalSolutions.c:2209
phi
Double phi
Definition: Headers.h:76
proteus::fastcos
double fastcos(double phi, bool fast)
Definition: WaveTools.h:46
num
Int num
Definition: Headers.h:32
H
Double H
Definition: Headers.h:65
U
Double U
Definition: Headers.h:88
v
Double v
Definition: Headers.h:95
proteus::__cpp_eta_mode
double __cpp_eta_mode(double x[nDim], double t, double kDir[nDim], double omega, double phi, double amplitude, bool fast)
Definition: WaveTools.h:92
T
Double T
Definition: Headers.h:87
proteus::__cpp_findWindow
int __cpp_findWindow(double t, double handover, double t0, double Twindow, int Nwindows, double *windows_handover)
Definition: WaveTools.h:332
z
Double * z
Definition: Headers.h:49
proteus::__cpp_uWindow
void __cpp_uWindow(double *U, double x[nDim], double x0[nDim], double t, double *t0, double *kDir, double *kAbs, double *omega, double *phi, double *amplitude, double mwl, double depth, int N, int Nw, double *waveDir, double *vDir, double *tanhF, double gAbs, bool fast)
Definition: WaveTools.h:409
u
Double u
Definition: Headers.h:89
ns
Int ns
Definition: Headers.h:30
c
Double c
Definition: Headers.h:54
proteus::__cpp_etaFenton
double __cpp_etaFenton(double x[nDim], double t, double kDir[nDim], double kAbs, double omega, double phi0, double amplitude, int Nf, double *Ycoeff, bool fast)
Definition: WaveTools.h:184
proteus::__cpp_eta_short
double __cpp_eta_short(double x[nDim], double t, double *kDir, double *ki, double *omega, double *phi, double *amplitude, int N, double *sinhKd, double *tanhKd, double gAbs, bool fast)
Definition: WaveTools.h:464
proteus::__cpp_uDirect
void __cpp_uDirect(double *U, double x[nDim], double x0[nDim], double t, double *kDir, double *kAbs, double *omega, double *phi, double *amplitude, double mwl, double depth, int N, double *waveDir, double vDir[nDim], double *tanhKd, double gAbs, bool fast)
Definition: WaveTools.h:365
r
Double r
Definition: Headers.h:83
proteus::__cpp_etaDirect
double __cpp_etaDirect(double x[nDim], double x0[nDim], double t, double *kDir, double *omega, double *phi, double *amplitude, int N, bool fast)
Definition: WaveTools.h:348
proteus::__cpp_uRandom
void __cpp_uRandom(double *U, double x[nDim], double t, double *kDir, double *kAbs, double *omega, double *phi, double *amplitude, double mwl, double depth, int N, double waveDir[nDim], double vDir[nDim], double *tanhF, double gAbs, bool fast)
Definition: WaveTools.h:276
pos
double pos(double a)
Definition: testFMMandFSW.cpp:8
proteus::__cpp_etaRandom
double __cpp_etaRandom(double x[nDim], double t, double *kDir, double *omega, double *phi, double *amplitude, int N, bool fast)
Definition: WaveTools.h:256
WaveTools.h
proteus::fastcosh
void fastcosh(double *hype, double k, double Z, bool fast)
Definition: WaveTools.h:20