proteus  1.8.1
C/C++/Fortran libraries
canalyticalSolutions.c
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 0
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 CYTHON_INLINE
307  #if defined(__clang__)
308  #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
309  #elif defined(__GNUC__)
310  #define CYTHON_INLINE __inline__
311  #elif defined(_MSC_VER)
312  #define CYTHON_INLINE __inline
313  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
314  #define CYTHON_INLINE inline
315  #else
316  #define CYTHON_INLINE
317  #endif
318 #endif
319 
320 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
321  #define Py_OptimizeFlag 0
322 #endif
323 #define __PYX_BUILD_PY_SSIZE_T "n"
324 #define CYTHON_FORMAT_SSIZE_T "z"
325 #if PY_MAJOR_VERSION < 3
326  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
327  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
328  PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
329  #define __Pyx_DefaultClassType PyClass_Type
330 #else
331  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
332  #define __Pyx_DefaultClassType PyType_Type
333 #if PY_VERSION_HEX >= 0x030B00A1
334  static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
335  PyObject *code, PyObject *c, PyObject* n, PyObject *v,
336  PyObject *fv, PyObject *cell, PyObject* fn,
337  PyObject *name, int fline, PyObject *lnos) {
338  PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
339  PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
340  const char *fn_cstr=NULL;
341  const char *name_cstr=NULL;
342  PyCodeObject* co=NULL;
343  PyObject *type, *value, *traceback;
344  PyErr_Fetch(&type, &value, &traceback);
345  if (!(kwds=PyDict_New())) goto end;
346  if (!(argcount=PyLong_FromLong(a))) goto end;
347  if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
348  if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
349  if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
350  if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
351  if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
352  if (!(nlocals=PyLong_FromLong(l))) goto end;
353  if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
354  if (!(stacksize=PyLong_FromLong(s))) goto end;
355  if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
356  if (!(flags=PyLong_FromLong(f))) goto end;
357  if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
358  if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
359  if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
360  if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
361  if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
362  if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
363  if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
364  if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
365  if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
366  if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
367  if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
368  if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
369  if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
370  if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
371  Py_XDECREF((PyObject*)co);
372  co = (PyCodeObject*)call_result;
373  call_result = NULL;
374  if (0) {
375  cleanup_code_too:
376  Py_XDECREF((PyObject*)co);
377  co = NULL;
378  }
379  end:
380  Py_XDECREF(kwds);
381  Py_XDECREF(argcount);
382  Py_XDECREF(posonlyargcount);
383  Py_XDECREF(kwonlyargcount);
384  Py_XDECREF(nlocals);
385  Py_XDECREF(stacksize);
386  Py_XDECREF(replace);
387  Py_XDECREF(call_result);
388  Py_XDECREF(empty);
389  if (type) {
390  PyErr_Restore(type, value, traceback);
391  }
392  return co;
393  }
394 #else
395  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
396  PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
397 #endif
398  #define __Pyx_DefaultClassType PyType_Type
399 #endif
400 #ifndef Py_TPFLAGS_CHECKTYPES
401  #define Py_TPFLAGS_CHECKTYPES 0
402 #endif
403 #ifndef Py_TPFLAGS_HAVE_INDEX
404  #define Py_TPFLAGS_HAVE_INDEX 0
405 #endif
406 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
407  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
408 #endif
409 #ifndef Py_TPFLAGS_HAVE_FINALIZE
410  #define Py_TPFLAGS_HAVE_FINALIZE 0
411 #endif
412 #ifndef METH_STACKLESS
413  #define METH_STACKLESS 0
414 #endif
415 #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
416  #ifndef METH_FASTCALL
417  #define METH_FASTCALL 0x80
418  #endif
419  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
420  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
421  Py_ssize_t nargs, PyObject *kwnames);
422 #else
423  #define __Pyx_PyCFunctionFast _PyCFunctionFast
424  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
425 #endif
426 #if CYTHON_FAST_PYCCALL
427 #define __Pyx_PyFastCFunction_Check(func)\
428  ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
429 #else
430 #define __Pyx_PyFastCFunction_Check(func) 0
431 #endif
432 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
433  #define PyObject_Malloc(s) PyMem_Malloc(s)
434  #define PyObject_Free(p) PyMem_Free(p)
435  #define PyObject_Realloc(p) PyMem_Realloc(p)
436 #endif
437 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
438  #define PyMem_RawMalloc(n) PyMem_Malloc(n)
439  #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
440  #define PyMem_RawFree(p) PyMem_Free(p)
441 #endif
442 #if CYTHON_COMPILING_IN_PYSTON
443  #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
444  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
445 #else
446  #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0)
447  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
448 #endif
449 #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
450  #define __Pyx_PyThreadState_Current PyThreadState_GET()
451 #elif PY_VERSION_HEX >= 0x03060000
452  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
453 #elif PY_VERSION_HEX >= 0x03000000
454  #define __Pyx_PyThreadState_Current PyThreadState_GET()
455 #else
456  #define __Pyx_PyThreadState_Current _PyThreadState_Current
457 #endif
458 #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
459 #include "pythread.h"
460 #define Py_tss_NEEDS_INIT 0
461 typedef int Py_tss_t;
462 static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
463  *key = PyThread_create_key();
464  return 0;
465 }
466 static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
467  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
468  *key = Py_tss_NEEDS_INIT;
469  return key;
470 }
471 static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
472  PyObject_Free(key);
473 }
474 static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
475  return *key != Py_tss_NEEDS_INIT;
476 }
477 static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
478  PyThread_delete_key(*key);
479  *key = Py_tss_NEEDS_INIT;
480 }
481 static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
482  return PyThread_set_key_value(*key, value);
483 }
484 static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
485  return PyThread_get_key_value(*key);
486 }
487 #endif
488 #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
489 #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
490 #else
491 #define __Pyx_PyDict_NewPresized(n) PyDict_New()
492 #endif
493 #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
494  #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
495  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
496 #else
497  #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
498  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
499 #endif
500 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
501 #define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
502 #else
503 #define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name)
504 #endif
505 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
506  #define CYTHON_PEP393_ENABLED 1
507  #if defined(PyUnicode_IS_READY)
508  #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
509  0 : _PyUnicode_Ready((PyObject *)(op)))
510  #else
511  #define __Pyx_PyUnicode_READY(op) (0)
512  #endif
513  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
514  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
515  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
516  #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
517  #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
518  #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
519  #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
520  #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
521  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
522  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
523  #else
524  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
525  #endif
526  #else
527  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
528  #endif
529 #else
530  #define CYTHON_PEP393_ENABLED 0
531  #define PyUnicode_1BYTE_KIND 1
532  #define PyUnicode_2BYTE_KIND 2
533  #define PyUnicode_4BYTE_KIND 4
534  #define __Pyx_PyUnicode_READY(op) (0)
535  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
536  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
537  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
538  #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
539  #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
540  #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
541  #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
542  #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))
543 #endif
544 #if CYTHON_COMPILING_IN_PYPY
545  #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
546  #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
547 #else
548  #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
549  #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
550  PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
551 #endif
552 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
553  #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
554 #endif
555 #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
556  #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)
557 #endif
558 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
559  #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
560 #endif
561 #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))
562 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
563 #if PY_MAJOR_VERSION >= 3
564  #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
565 #else
566  #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
567 #endif
568 #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
569  #define PyObject_ASCII(o) PyObject_Repr(o)
570 #endif
571 #if PY_MAJOR_VERSION >= 3
572  #define PyBaseString_Type PyUnicode_Type
573  #define PyStringObject PyUnicodeObject
574  #define PyString_Type PyUnicode_Type
575  #define PyString_Check PyUnicode_Check
576  #define PyString_CheckExact PyUnicode_CheckExact
577 #ifndef PyObject_Unicode
578  #define PyObject_Unicode PyObject_Str
579 #endif
580 #endif
581 #if PY_MAJOR_VERSION >= 3
582  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
583  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
584 #else
585  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
586  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
587 #endif
588 #ifndef PySet_CheckExact
589  #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
590 #endif
591 #if PY_VERSION_HEX >= 0x030900A4
592  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
593  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
594 #else
595  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
596  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
597 #endif
598 #if CYTHON_ASSUME_SAFE_MACROS
599  #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq)
600 #else
601  #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq)
602 #endif
603 #if PY_MAJOR_VERSION >= 3
604  #define PyIntObject PyLongObject
605  #define PyInt_Type PyLong_Type
606  #define PyInt_Check(op) PyLong_Check(op)
607  #define PyInt_CheckExact(op) PyLong_CheckExact(op)
608  #define PyInt_FromString PyLong_FromString
609  #define PyInt_FromUnicode PyLong_FromUnicode
610  #define PyInt_FromLong PyLong_FromLong
611  #define PyInt_FromSize_t PyLong_FromSize_t
612  #define PyInt_FromSsize_t PyLong_FromSsize_t
613  #define PyInt_AsLong PyLong_AsLong
614  #define PyInt_AS_LONG PyLong_AS_LONG
615  #define PyInt_AsSsize_t PyLong_AsSsize_t
616  #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
617  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
618  #define PyNumber_Int PyNumber_Long
619 #endif
620 #if PY_MAJOR_VERSION >= 3
621  #define PyBoolObject PyLongObject
622 #endif
623 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
624  #ifndef PyUnicode_InternFromString
625  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
626  #endif
627 #endif
628 #if PY_VERSION_HEX < 0x030200A4
629  typedef long Py_hash_t;
630  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
631  #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
632 #else
633  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
634  #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
635 #endif
636 #if PY_MAJOR_VERSION >= 3
637  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
638 #else
639  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
640 #endif
641 #if CYTHON_USE_ASYNC_SLOTS
642  #if PY_VERSION_HEX >= 0x030500B1
643  #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
644  #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
645  #else
646  #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
647  #endif
648 #else
649  #define __Pyx_PyType_AsAsync(obj) NULL
650 #endif
651 #ifndef __Pyx_PyAsyncMethodsStruct
652  typedef struct {
653  unaryfunc am_await;
654  unaryfunc am_aiter;
655  unaryfunc am_anext;
656  } __Pyx_PyAsyncMethodsStruct;
657 #endif
658 
659 #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
660  #if !defined(_USE_MATH_DEFINES)
661  #define _USE_MATH_DEFINES
662  #endif
663 #endif
664 #include <math.h>
665 #ifdef NAN
666 #define __PYX_NAN() ((float) NAN)
667 #else
668 static CYTHON_INLINE float __PYX_NAN() {
669  float value;
670  memset(&value, 0xFF, sizeof(value));
671  return value;
672 }
673 #endif
674 #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
675 #define __Pyx_truncl trunc
676 #else
677 #define __Pyx_truncl truncl
678 #endif
679 
680 #define __PYX_MARK_ERR_POS(f_index, lineno) \
681  { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
682 #define __PYX_ERR(f_index, lineno, Ln_error) \
683  { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }
684 
685 #ifndef __PYX_EXTERN_C
686  #ifdef __cplusplus
687  #define __PYX_EXTERN_C extern "C"
688  #else
689  #define __PYX_EXTERN_C extern
690  #endif
691 #endif
692 
693 #define __PYX_HAVE__canalyticalSolutions
694 #define __PYX_HAVE_API__canalyticalSolutions
695 /* Early includes */
696 #include <string.h>
697 #include <stdio.h>
698 #include "numpy/arrayobject.h"
699 #include "numpy/ndarrayobject.h"
700 #include "numpy/ndarraytypes.h"
701 #include "numpy/arrayscalars.h"
702 #include "numpy/ufuncobject.h"
703 
704  /* NumPy API declarations from "numpy/__init__.pxd" */
705 
706 #include "analyticalSolutions.h"
707 #ifdef _OPENMP
708 #include <omp.h>
709 #endif /* _OPENMP */
710 
711 #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
712 #define CYTHON_WITHOUT_ASSERTIONS
713 #endif
714 
715 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
716  const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
717 
718 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
719 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
720 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
721 #define __PYX_DEFAULT_STRING_ENCODING ""
722 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
723 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
724 #define __Pyx_uchar_cast(c) ((unsigned char)c)
725 #define __Pyx_long_cast(x) ((long)x)
726 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
727  (sizeof(type) < sizeof(Py_ssize_t)) ||\
728  (sizeof(type) > sizeof(Py_ssize_t) &&\
729  likely(v < (type)PY_SSIZE_T_MAX ||\
730  v == (type)PY_SSIZE_T_MAX) &&\
731  (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
732  v == (type)PY_SSIZE_T_MIN))) ||\
733  (sizeof(type) == sizeof(Py_ssize_t) &&\
734  (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
735  v == (type)PY_SSIZE_T_MAX))) )
736 static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
737  return (size_t) i < (size_t) limit;
738 }
739 #if defined (__cplusplus) && __cplusplus >= 201103L
740  #include <cstdlib>
741  #define __Pyx_sst_abs(value) std::abs(value)
742 #elif SIZEOF_INT >= SIZEOF_SIZE_T
743  #define __Pyx_sst_abs(value) abs(value)
744 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
745  #define __Pyx_sst_abs(value) labs(value)
746 #elif defined (_MSC_VER)
747  #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
748 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
749  #define __Pyx_sst_abs(value) llabs(value)
750 #elif defined (__GNUC__)
751  #define __Pyx_sst_abs(value) __builtin_llabs(value)
752 #else
753  #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
754 #endif
755 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
756 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
757 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
758 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
759 #define __Pyx_PyBytes_FromString PyBytes_FromString
760 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
761 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
762 #if PY_MAJOR_VERSION < 3
763  #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
764  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
765 #else
766  #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
767  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
768 #endif
769 #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s))
770 #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s))
771 #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s))
772 #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s))
773 #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s))
774 #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s))
775 #define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))
776 #define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
777 #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
778 #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))
779 #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))
780 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
781 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
782 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
783 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
784 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
785 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
786  const Py_UNICODE *u_end = u;
787  while (*u_end++) ;
788  return (size_t)(u_end - u - 1);
789 }
790 #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
791 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
792 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
793 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
794 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
795 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
796 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
797 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
798 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
799 #define __Pyx_PySequence_Tuple(obj)\
800  (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
801 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
802 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
803 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
804 #if CYTHON_ASSUME_SAFE_MACROS
805 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
806 #else
807 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
808 #endif
809 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
810 #if PY_MAJOR_VERSION >= 3
811 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
812 #else
813 #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
814 #endif
815 #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
816 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
817 static int __Pyx_sys_getdefaultencoding_not_ascii;
818 static int __Pyx_init_sys_getdefaultencoding_params(void) {
819  PyObject* sys;
820  PyObject* default_encoding = NULL;
821  PyObject* ascii_chars_u = NULL;
822  PyObject* ascii_chars_b = NULL;
823  const char* default_encoding_c;
824  sys = PyImport_ImportModule("sys");
825  if (!sys) goto bad;
826  default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
827  Py_DECREF(sys);
828  if (!default_encoding) goto bad;
829  default_encoding_c = PyBytes_AsString(default_encoding);
830  if (!default_encoding_c) goto bad;
831  if (strcmp(default_encoding_c, "ascii") == 0) {
832  __Pyx_sys_getdefaultencoding_not_ascii = 0;
833  } else {
834  char ascii_chars[128];
835  int c;
836  for (c = 0; c < 128; c++) {
837  ascii_chars[c] = c;
838  }
839  __Pyx_sys_getdefaultencoding_not_ascii = 1;
840  ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
841  if (!ascii_chars_u) goto bad;
842  ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
843  if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
844  PyErr_Format(
845  PyExc_ValueError,
846  "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
847  default_encoding_c);
848  goto bad;
849  }
850  Py_DECREF(ascii_chars_u);
851  Py_DECREF(ascii_chars_b);
852  }
853  Py_DECREF(default_encoding);
854  return 0;
855 bad:
856  Py_XDECREF(default_encoding);
857  Py_XDECREF(ascii_chars_u);
858  Py_XDECREF(ascii_chars_b);
859  return -1;
860 }
861 #endif
862 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
863 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
864 #else
865 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
866 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
867 static char* __PYX_DEFAULT_STRING_ENCODING;
868 static int __Pyx_init_sys_getdefaultencoding_params(void) {
869  PyObject* sys;
870  PyObject* default_encoding = NULL;
871  char* default_encoding_c;
872  sys = PyImport_ImportModule("sys");
873  if (!sys) goto bad;
874  default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
875  Py_DECREF(sys);
876  if (!default_encoding) goto bad;
877  default_encoding_c = PyBytes_AsString(default_encoding);
878  if (!default_encoding_c) goto bad;
879  __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
880  if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
881  strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
882  Py_DECREF(default_encoding);
883  return 0;
884 bad:
885  Py_XDECREF(default_encoding);
886  return -1;
887 }
888 #endif
889 #endif
890 
891 
892 /* Test for GCC > 2.95 */
893 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
894  #define likely(x) __builtin_expect(!!(x), 1)
895  #define unlikely(x) __builtin_expect(!!(x), 0)
896 #else /* !__GNUC__ or GCC < 2.95 */
897  #define likely(x) (x)
898  #define unlikely(x) (x)
899 #endif /* __GNUC__ */
900 static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
901 
902 static PyObject *__pyx_m = NULL;
903 static PyObject *__pyx_d;
904 static PyObject *__pyx_b;
905 static PyObject *__pyx_cython_runtime = NULL;
906 static PyObject *__pyx_empty_tuple;
907 static PyObject *__pyx_empty_bytes;
908 static PyObject *__pyx_empty_unicode;
909 static int __pyx_lineno;
910 static int __pyx_clineno = 0;
911 static const char * __pyx_cfilenm= __FILE__;
912 static const char *__pyx_filename;
913 
914 /* Header.proto */
915 #if !defined(CYTHON_CCOMPLEX)
916  #if defined(__cplusplus)
917  #define CYTHON_CCOMPLEX 1
918  #elif defined(_Complex_I)
919  #define CYTHON_CCOMPLEX 1
920  #else
921  #define CYTHON_CCOMPLEX 0
922  #endif
923 #endif
924 #if CYTHON_CCOMPLEX
925  #ifdef __cplusplus
926  #include <complex>
927  #else
928  #include <complex.h>
929  #endif
930 #endif
931 #if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
932  #undef _Complex_I
933  #define _Complex_I 1.0fj
934 #endif
935 
936 
937 static const char *__pyx_f[] = {
938  "proteus/canalyticalSolutions.pyx",
939  "__init__.pxd",
940  "type.pxd",
941 };
942 
943 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":690
944  * # in Cython to enable them only on the right systems.
945  *
946  * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
947  * ctypedef npy_int16 int16_t
948  * ctypedef npy_int32 int32_t
949  */
950 typedef npy_int8 __pyx_t_5numpy_int8_t;
951 
952 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":691
953  *
954  * ctypedef npy_int8 int8_t
955  * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
956  * ctypedef npy_int32 int32_t
957  * ctypedef npy_int64 int64_t
958  */
959 typedef npy_int16 __pyx_t_5numpy_int16_t;
960 
961 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":692
962  * ctypedef npy_int8 int8_t
963  * ctypedef npy_int16 int16_t
964  * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
965  * ctypedef npy_int64 int64_t
966  * #ctypedef npy_int96 int96_t
967  */
968 typedef npy_int32 __pyx_t_5numpy_int32_t;
969 
970 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":693
971  * ctypedef npy_int16 int16_t
972  * ctypedef npy_int32 int32_t
973  * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
974  * #ctypedef npy_int96 int96_t
975  * #ctypedef npy_int128 int128_t
976  */
977 typedef npy_int64 __pyx_t_5numpy_int64_t;
978 
979 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":697
980  * #ctypedef npy_int128 int128_t
981  *
982  * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
983  * ctypedef npy_uint16 uint16_t
984  * ctypedef npy_uint32 uint32_t
985  */
986 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
987 
988 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":698
989  *
990  * ctypedef npy_uint8 uint8_t
991  * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
992  * ctypedef npy_uint32 uint32_t
993  * ctypedef npy_uint64 uint64_t
994  */
995 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
996 
997 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":699
998  * ctypedef npy_uint8 uint8_t
999  * ctypedef npy_uint16 uint16_t
1000  * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
1001  * ctypedef npy_uint64 uint64_t
1002  * #ctypedef npy_uint96 uint96_t
1003  */
1004 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1005 
1006 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":700
1007  * ctypedef npy_uint16 uint16_t
1008  * ctypedef npy_uint32 uint32_t
1009  * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
1010  * #ctypedef npy_uint96 uint96_t
1011  * #ctypedef npy_uint128 uint128_t
1012  */
1013 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1014 
1015 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":704
1016  * #ctypedef npy_uint128 uint128_t
1017  *
1018  * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
1019  * ctypedef npy_float64 float64_t
1020  * #ctypedef npy_float80 float80_t
1021  */
1022 typedef npy_float32 __pyx_t_5numpy_float32_t;
1023 
1024 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":705
1025  *
1026  * ctypedef npy_float32 float32_t
1027  * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
1028  * #ctypedef npy_float80 float80_t
1029  * #ctypedef npy_float128 float128_t
1030  */
1031 typedef npy_float64 __pyx_t_5numpy_float64_t;
1032 
1033 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":714
1034  * # The int types are mapped a bit surprising --
1035  * # numpy.int corresponds to 'l' and numpy.long to 'q'
1036  * ctypedef npy_long int_t # <<<<<<<<<<<<<<
1037  * ctypedef npy_longlong long_t
1038  * ctypedef npy_longlong longlong_t
1039  */
1040 typedef npy_long __pyx_t_5numpy_int_t;
1041 
1042 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":715
1043  * # numpy.int corresponds to 'l' and numpy.long to 'q'
1044  * ctypedef npy_long int_t
1045  * ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
1046  * ctypedef npy_longlong longlong_t
1047  *
1048  */
1049 typedef npy_longlong __pyx_t_5numpy_long_t;
1050 
1051 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":716
1052  * ctypedef npy_long int_t
1053  * ctypedef npy_longlong long_t
1054  * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
1055  *
1056  * ctypedef npy_ulong uint_t
1057  */
1058 typedef npy_longlong __pyx_t_5numpy_longlong_t;
1059 
1060 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":718
1061  * ctypedef npy_longlong longlong_t
1062  *
1063  * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
1064  * ctypedef npy_ulonglong ulong_t
1065  * ctypedef npy_ulonglong ulonglong_t
1066  */
1067 typedef npy_ulong __pyx_t_5numpy_uint_t;
1068 
1069 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":719
1070  *
1071  * ctypedef npy_ulong uint_t
1072  * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
1073  * ctypedef npy_ulonglong ulonglong_t
1074  *
1075  */
1076 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
1077 
1078 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":720
1079  * ctypedef npy_ulong uint_t
1080  * ctypedef npy_ulonglong ulong_t
1081  * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
1082  *
1083  * ctypedef npy_intp intp_t
1084  */
1085 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1086 
1087 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":722
1088  * ctypedef npy_ulonglong ulonglong_t
1089  *
1090  * ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
1091  * ctypedef npy_uintp uintp_t
1092  *
1093  */
1094 typedef npy_intp __pyx_t_5numpy_intp_t;
1095 
1096 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":723
1097  *
1098  * ctypedef npy_intp intp_t
1099  * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
1100  *
1101  * ctypedef npy_double float_t
1102  */
1103 typedef npy_uintp __pyx_t_5numpy_uintp_t;
1104 
1105 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":725
1106  * ctypedef npy_uintp uintp_t
1107  *
1108  * ctypedef npy_double float_t # <<<<<<<<<<<<<<
1109  * ctypedef npy_double double_t
1110  * ctypedef npy_longdouble longdouble_t
1111  */
1112 typedef npy_double __pyx_t_5numpy_float_t;
1113 
1114 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":726
1115  *
1116  * ctypedef npy_double float_t
1117  * ctypedef npy_double double_t # <<<<<<<<<<<<<<
1118  * ctypedef npy_longdouble longdouble_t
1119  *
1120  */
1121 typedef npy_double __pyx_t_5numpy_double_t;
1122 
1123 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":727
1124  * ctypedef npy_double float_t
1125  * ctypedef npy_double double_t
1126  * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
1127  *
1128  * ctypedef npy_cfloat cfloat_t
1129  */
1130 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
1131 /* Declarations.proto */
1132 #if CYTHON_CCOMPLEX
1133  #ifdef __cplusplus
1134  typedef ::std::complex< float > __pyx_t_float_complex;
1135  #else
1136  typedef float _Complex __pyx_t_float_complex;
1137  #endif
1138 #else
1139  typedef struct { float real, imag; } __pyx_t_float_complex;
1140 #endif
1141 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
1142 
1143 /* Declarations.proto */
1144 #if CYTHON_CCOMPLEX
1145  #ifdef __cplusplus
1146  typedef ::std::complex< double > __pyx_t_double_complex;
1147  #else
1148  typedef double _Complex __pyx_t_double_complex;
1149  #endif
1150 #else
1151  typedef struct { double real, imag; } __pyx_t_double_complex;
1152 #endif
1153 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
1154 
1155 
1156 /*--- Type declarations ---*/
1157 
1158 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":729
1159  * ctypedef npy_longdouble longdouble_t
1160  *
1161  * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
1162  * ctypedef npy_cdouble cdouble_t
1163  * ctypedef npy_clongdouble clongdouble_t
1164  */
1165 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
1166 
1167 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":730
1168  *
1169  * ctypedef npy_cfloat cfloat_t
1170  * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
1171  * ctypedef npy_clongdouble clongdouble_t
1172  *
1173  */
1174 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
1175 
1176 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":731
1177  * ctypedef npy_cfloat cfloat_t
1178  * ctypedef npy_cdouble cdouble_t
1179  * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
1180  *
1181  * ctypedef npy_cdouble complex_t
1182  */
1183 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
1184 
1185 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":733
1186  * ctypedef npy_clongdouble clongdouble_t
1187  *
1188  * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
1189  *
1190  * cdef inline object PyArray_MultiIterNew1(a):
1191  */
1192 typedef npy_cdouble __pyx_t_5numpy_complex_t;
1193 
1194 /* --- Runtime support code (head) --- */
1195 /* Refnanny.proto */
1196 #ifndef CYTHON_REFNANNY
1197  #define CYTHON_REFNANNY 0
1198 #endif
1199 #if CYTHON_REFNANNY
1200  typedef struct {
1201  void (*INCREF)(void*, PyObject*, int);
1202  void (*DECREF)(void*, PyObject*, int);
1203  void (*GOTREF)(void*, PyObject*, int);
1204  void (*GIVEREF)(void*, PyObject*, int);
1205  void* (*SetupContext)(const char*, int, const char*);
1206  void (*FinishContext)(void**);
1207  } __Pyx_RefNannyAPIStruct;
1208  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
1209  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
1210  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
1211 #ifdef WITH_THREAD
1212  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1213  if (acquire_gil) {\
1214  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1215  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1216  PyGILState_Release(__pyx_gilstate_save);\
1217  } else {\
1218  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1219  }
1220 #else
1221  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1222  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
1223 #endif
1224  #define __Pyx_RefNannyFinishContext()\
1225  __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
1226  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1227  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1228  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1229  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1230  #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
1231  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
1232  #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
1233  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
1234 #else
1235  #define __Pyx_RefNannyDeclarations
1236  #define __Pyx_RefNannySetupContext(name, acquire_gil)
1237  #define __Pyx_RefNannyFinishContext()
1238  #define __Pyx_INCREF(r) Py_INCREF(r)
1239  #define __Pyx_DECREF(r) Py_DECREF(r)
1240  #define __Pyx_GOTREF(r)
1241  #define __Pyx_GIVEREF(r)
1242  #define __Pyx_XINCREF(r) Py_XINCREF(r)
1243  #define __Pyx_XDECREF(r) Py_XDECREF(r)
1244  #define __Pyx_XGOTREF(r)
1245  #define __Pyx_XGIVEREF(r)
1246 #endif
1247 #define __Pyx_XDECREF_SET(r, v) do {\
1248  PyObject *tmp = (PyObject *) r;\
1249  r = v; __Pyx_XDECREF(tmp);\
1250  } while (0)
1251 #define __Pyx_DECREF_SET(r, v) do {\
1252  PyObject *tmp = (PyObject *) r;\
1253  r = v; __Pyx_DECREF(tmp);\
1254  } while (0)
1255 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
1256 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
1257 
1258 /* RaiseArgTupleInvalid.proto */
1259 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
1260  Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
1261 
1262 /* RaiseDoubleKeywords.proto */
1263 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
1264 
1265 /* ParseKeywords.proto */
1266 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
1267  PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
1268  const char* function_name);
1269 
1270 /* ArgTypeTest.proto */
1271 #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
1272  ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
1273  __Pyx__ArgTypeTest(obj, type, name, exact))
1274 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
1275 
1276 /* PyObjectGetAttrStr.proto */
1277 #if CYTHON_USE_TYPE_SLOTS
1278 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
1279 #else
1280 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
1281 #endif
1282 
1283 /* GetBuiltinName.proto */
1284 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
1285 
1286 /* GetTopmostException.proto */
1287 #if CYTHON_USE_EXC_INFO_STACK
1288 static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
1289 #endif
1290 
1291 /* PyThreadStateGet.proto */
1292 #if CYTHON_FAST_THREAD_STATE
1293 #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
1294 #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current;
1295 #define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type
1296 #else
1297 #define __Pyx_PyThreadState_declare
1298 #define __Pyx_PyThreadState_assign
1299 #define __Pyx_PyErr_Occurred() PyErr_Occurred()
1300 #endif
1301 
1302 /* SaveResetException.proto */
1303 #if CYTHON_FAST_THREAD_STATE
1304 #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
1305 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1306 #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
1307 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1308 #else
1309 #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)
1310 #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)
1311 #endif
1312 
1313 /* PyErrExceptionMatches.proto */
1314 #if CYTHON_FAST_THREAD_STATE
1315 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
1316 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
1317 #else
1318 #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)
1319 #endif
1320 
1321 /* GetException.proto */
1322 #if CYTHON_FAST_THREAD_STATE
1323 #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)
1324 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1325 #else
1326 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
1327 #endif
1328 
1329 /* PyObjectCall.proto */
1330 #if CYTHON_COMPILING_IN_CPYTHON
1331 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
1332 #else
1333 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
1334 #endif
1335 
1336 /* PyErrFetchRestore.proto */
1337 #if CYTHON_FAST_THREAD_STATE
1338 #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
1339 #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
1340 #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
1341 #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
1342 #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
1343 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1344 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1345 #if CYTHON_COMPILING_IN_CPYTHON
1346 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
1347 #else
1348 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1349 #endif
1350 #else
1351 #define __Pyx_PyErr_Clear() PyErr_Clear()
1352 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1353 #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb)
1354 #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb)
1355 #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb)
1356 #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb)
1357 #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb)
1358 #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb)
1359 #endif
1360 
1361 /* RaiseException.proto */
1362 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
1363 
1364 /* TypeImport.proto */
1365 #ifndef __PYX_HAVE_RT_ImportType_proto
1366 #define __PYX_HAVE_RT_ImportType_proto
1367 enum __Pyx_ImportType_CheckSize {
1368  __Pyx_ImportType_CheckSize_Error = 0,
1369  __Pyx_ImportType_CheckSize_Warn = 1,
1370  __Pyx_ImportType_CheckSize_Ignore = 2
1371 };
1372 static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
1373 #endif
1374 
1375 /* Import.proto */
1376 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
1377 
1378 /* PyDictVersioning.proto */
1379 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
1380 #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1)
1381 #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
1382 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
1383  (version_var) = __PYX_GET_DICT_VERSION(dict);\
1384  (cache_var) = (value);
1385 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
1386  static PY_UINT64_T __pyx_dict_version = 0;\
1387  static PyObject *__pyx_dict_cached_value = NULL;\
1388  if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
1389  (VAR) = __pyx_dict_cached_value;\
1390  } else {\
1391  (VAR) = __pyx_dict_cached_value = (LOOKUP);\
1392  __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
1393  }\
1394 }
1395 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
1396 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
1397 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
1398 #else
1399 #define __PYX_GET_DICT_VERSION(dict) (0)
1400 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
1401 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
1402 #endif
1403 
1404 /* CLineInTraceback.proto */
1405 #ifdef CYTHON_CLINE_IN_TRACEBACK
1406 #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
1407 #else
1408 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
1409 #endif
1410 
1411 /* CodeObjectCache.proto */
1412 typedef struct {
1413  PyCodeObject* code_object;
1414  int code_line;
1415 } __Pyx_CodeObjectCacheEntry;
1416 struct __Pyx_CodeObjectCache {
1417  int count;
1418  int max_count;
1419  __Pyx_CodeObjectCacheEntry* entries;
1420 };
1421 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
1422 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
1423 static PyCodeObject *__pyx_find_code_object(int code_line);
1424 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
1425 
1426 /* AddTraceback.proto */
1427 static void __Pyx_AddTraceback(const char *funcname, int c_line,
1428  int py_line, const char *filename);
1429 
1430 /* GCCDiagnostics.proto */
1431 #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
1432 #define __Pyx_HAS_GCC_DIAGNOSTIC
1433 #endif
1434 
1435 /* RealImag.proto */
1436 #if CYTHON_CCOMPLEX
1437  #ifdef __cplusplus
1438  #define __Pyx_CREAL(z) ((z).real())
1439  #define __Pyx_CIMAG(z) ((z).imag())
1440  #else
1441  #define __Pyx_CREAL(z) (__real__(z))
1442  #define __Pyx_CIMAG(z) (__imag__(z))
1443  #endif
1444 #else
1445  #define __Pyx_CREAL(z) ((z).real)
1446  #define __Pyx_CIMAG(z) ((z).imag)
1447 #endif
1448 #if defined(__cplusplus) && CYTHON_CCOMPLEX\
1449  && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
1450  #define __Pyx_SET_CREAL(z,x) ((z).real(x))
1451  #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
1452 #else
1453  #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
1454  #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
1455 #endif
1456 
1457 /* Arithmetic.proto */
1458 #if CYTHON_CCOMPLEX
1459  #define __Pyx_c_eq_float(a, b) ((a)==(b))
1460  #define __Pyx_c_sum_float(a, b) ((a)+(b))
1461  #define __Pyx_c_diff_float(a, b) ((a)-(b))
1462  #define __Pyx_c_prod_float(a, b) ((a)*(b))
1463  #define __Pyx_c_quot_float(a, b) ((a)/(b))
1464  #define __Pyx_c_neg_float(a) (-(a))
1465  #ifdef __cplusplus
1466  #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
1467  #define __Pyx_c_conj_float(z) (::std::conj(z))
1468  #if 1
1469  #define __Pyx_c_abs_float(z) (::std::abs(z))
1470  #define __Pyx_c_pow_float(a, b) (::std::pow(a, b))
1471  #endif
1472  #else
1473  #define __Pyx_c_is_zero_float(z) ((z)==0)
1474  #define __Pyx_c_conj_float(z) (conjf(z))
1475  #if 1
1476  #define __Pyx_c_abs_float(z) (cabsf(z))
1477  #define __Pyx_c_pow_float(a, b) (cpowf(a, b))
1478  #endif
1479  #endif
1480 #else
1481  static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
1482  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
1483  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
1484  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
1485  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
1486  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
1487  static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
1488  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
1489  #if 1
1490  static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
1491  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
1492  #endif
1493 #endif
1494 
1495 /* Arithmetic.proto */
1496 #if CYTHON_CCOMPLEX
1497  #define __Pyx_c_eq_double(a, b) ((a)==(b))
1498  #define __Pyx_c_sum_double(a, b) ((a)+(b))
1499  #define __Pyx_c_diff_double(a, b) ((a)-(b))
1500  #define __Pyx_c_prod_double(a, b) ((a)*(b))
1501  #define __Pyx_c_quot_double(a, b) ((a)/(b))
1502  #define __Pyx_c_neg_double(a) (-(a))
1503  #ifdef __cplusplus
1504  #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
1505  #define __Pyx_c_conj_double(z) (::std::conj(z))
1506  #if 1
1507  #define __Pyx_c_abs_double(z) (::std::abs(z))
1508  #define __Pyx_c_pow_double(a, b) (::std::pow(a, b))
1509  #endif
1510  #else
1511  #define __Pyx_c_is_zero_double(z) ((z)==0)
1512  #define __Pyx_c_conj_double(z) (conj(z))
1513  #if 1
1514  #define __Pyx_c_abs_double(z) (cabs(z))
1515  #define __Pyx_c_pow_double(a, b) (cpow(a, b))
1516  #endif
1517  #endif
1518 #else
1519  static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
1520  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
1521  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
1522  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
1523  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
1524  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
1525  static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
1526  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
1527  #if 1
1528  static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
1529  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
1530  #endif
1531 #endif
1532 
1533 /* CIntToPy.proto */
1534 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value);
1535 
1536 /* CIntFromPy.proto */
1537 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
1538 
1539 /* CIntToPy.proto */
1540 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
1541 
1542 /* CIntToPy.proto */
1543 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
1544 
1545 /* CIntFromPy.proto */
1546 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
1547 
1548 /* FastTypeChecks.proto */
1549 #if CYTHON_COMPILING_IN_CPYTHON
1550 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
1551 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
1552 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
1553 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
1554 #else
1555 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
1556 #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
1557 #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
1558 #endif
1559 #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
1560 
1561 /* CheckBinaryVersion.proto */
1562 static int __Pyx_check_binary_version(void);
1563 
1564 /* InitStrings.proto */
1565 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
1566 
1567 
1568 /* Module declarations from 'cpython.buffer' */
1569 
1570 /* Module declarations from 'libc.string' */
1571 
1572 /* Module declarations from 'libc.stdio' */
1573 
1574 /* Module declarations from '__builtin__' */
1575 
1576 /* Module declarations from 'cpython.type' */
1577 static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
1578 
1579 /* Module declarations from 'cpython' */
1580 
1581 /* Module declarations from 'cpython.object' */
1582 
1583 /* Module declarations from 'cpython.ref' */
1584 
1585 /* Module declarations from 'cpython.mem' */
1586 
1587 /* Module declarations from 'numpy' */
1588 
1589 /* Module declarations from 'numpy' */
1590 static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
1591 static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
1592 static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
1593 static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
1594 static PyTypeObject *__pyx_ptype_5numpy_generic = 0;
1595 static PyTypeObject *__pyx_ptype_5numpy_number = 0;
1596 static PyTypeObject *__pyx_ptype_5numpy_integer = 0;
1597 static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0;
1598 static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0;
1599 static PyTypeObject *__pyx_ptype_5numpy_inexact = 0;
1600 static PyTypeObject *__pyx_ptype_5numpy_floating = 0;
1601 static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0;
1602 static PyTypeObject *__pyx_ptype_5numpy_flexible = 0;
1603 static PyTypeObject *__pyx_ptype_5numpy_character = 0;
1604 static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
1605 
1606 /* Module declarations from 'canalyticalSolutions' */
1607 #define __Pyx_MODULE_NAME "canalyticalSolutions"
1608 extern int __pyx_module_is_main_canalyticalSolutions;
1609 int __pyx_module_is_main_canalyticalSolutions = 0;
1610 
1611 /* Implementation of 'canalyticalSolutions' */
1612 static PyObject *__pyx_builtin_ImportError;
1613 static const char __pyx_k_f[] = "f";
1614 static const char __pyx_k_r[] = "r";
1615 static const char __pyx_k_t[] = "t";
1616 static const char __pyx_k_u[] = "u";
1617 static const char __pyx_k_x[] = "x";
1618 static const char __pyx_k_dr[] = "dr";
1619 static const char __pyx_k_du[] = "du";
1620 static const char __pyx_k_np[] = "np";
1621 static const char __pyx_k_main[] = "__main__";
1622 static const char __pyx_k_name[] = "__name__";
1623 static const char __pyx_k_size[] = "size";
1624 static const char __pyx_k_test[] = "__test__";
1625 static const char __pyx_k_iwork[] = "iwork";
1626 static const char __pyx_k_numpy[] = "numpy";
1627 static const char __pyx_k_rwork[] = "rwork";
1628 static const char __pyx_k_import[] = "__import__";
1629 static const char __pyx_k_ImportError[] = "ImportError";
1630 static const char __pyx_k_NonlinearDAE[] = "NonlinearDAE";
1631 static const char __pyx_k_LinearADR_Sine[] = "LinearADR_Sine";
1632 static const char __pyx_k_NonlinearDAE_f[] = "NonlinearDAE_f";
1633 static const char __pyx_k_STflowSphere_P[] = "STflowSphere_P";
1634 static const char __pyx_k_diffusionSin1D[] = "diffusionSin1D";
1635 static const char __pyx_k_diffusionSin2D[] = "diffusionSin2D";
1636 static const char __pyx_k_diffusionSin3D[] = "diffusionSin3D";
1637 static const char __pyx_k_STflowSphere_Vx[] = "STflowSphere_Vx";
1638 static const char __pyx_k_STflowSphere_Vy[] = "STflowSphere_Vy";
1639 static const char __pyx_k_STflowSphere_Vz[] = "STflowSphere_Vz";
1640 static const char __pyx_k_LinearADR_Sine_r[] = "LinearADR_Sine_r";
1641 static const char __pyx_k_LinearAD_DiracIC[] = "LinearAD_DiracIC";
1642 static const char __pyx_k_diffusionSin1D_r[] = "diffusionSin1D_r";
1643 static const char __pyx_k_diffusionSin2D_r[] = "diffusionSin2D_r";
1644 static const char __pyx_k_diffusionSin3D_r[] = "diffusionSin3D_r";
1645 static const char __pyx_k_LinearADR_Sine_dr[] = "LinearADR_Sine_dr";
1646 static const char __pyx_k_LinearADR_Sine_du[] = "LinearADR_Sine_du";
1647 static const char __pyx_k_PlaneCouetteFlow_u[] = "PlaneCouetteFlow_u";
1648 static const char __pyx_k_PoiseuillePipeFlow[] = "PoiseuillePipeFlow";
1649 static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
1650 static const char __pyx_k_LinearAD_DiracIC_du[] = "LinearAD_DiracIC_du";
1651 static const char __pyx_k_LinearAD_SteadyState[] = "LinearAD_SteadyState";
1652 static const char __pyx_k_PoiseuillePipeFlow_P[] = "PoiseuillePipeFlow_P";
1653 static const char __pyx_k_canalyticalSolutions[] = "canalyticalSolutions";
1654 static const char __pyx_k_PlanePoiseuilleFlow_u[] = "PlanePoiseuilleFlow_u";
1655 static const char __pyx_k_poissonsEquationExp1D[] = "poissonsEquationExp1D";
1656 static const char __pyx_k_poissonsEquationExp2D[] = "poissonsEquationExp2D";
1657 static const char __pyx_k_poissonsEquationExp3D[] = "poissonsEquationExp3D";
1658 static const char __pyx_k_LinearADR_Decay_DiracIC[] = "LinearADR_Decay_DiracIC";
1659 static const char __pyx_k_NonlinearAD_SteadyState[] = "NonlinearAD_SteadyState";
1660 static const char __pyx_k_poissonsEquationExp1D_r[] = "poissonsEquationExp1D_r";
1661 static const char __pyx_k_poissonsEquationExp2D_r[] = "poissonsEquationExp2D_r";
1662 static const char __pyx_k_poissonsEquationExp3D_r[] = "poissonsEquationExp3D_r";
1663 static const char __pyx_k_poissonsEquationExp3D_dr[] = "poissonsEquationExp3D_dr";
1664 static const char __pyx_k_LinearADR_Decay_DiracIC_r[] = "LinearADR_Decay_DiracIC_r";
1665 static const char __pyx_k_LinearADR_Decay_DiracIC_dr[] = "LinearADR_Decay_DiracIC_dr";
1666 static const char __pyx_k_NonlinearADR_Decay_DiracIC[] = "NonlinearADR_Decay_DiracIC";
1667 static const char __pyx_k_LinearADR_Sine_totalVelocity[] = "LinearADR_Sine_totalVelocity";
1668 static const char __pyx_k_NonlinearADR_Decay_DiracIC_r[] = "NonlinearADR_Decay_DiracIC_r";
1669 static const char __pyx_k_NonlinearADR_Decay_DiracIC_dr[] = "NonlinearADR_Decay_DiracIC_dr";
1670 static const char __pyx_k_LinearAD_DiracIC_totalVelocity[] = "LinearAD_DiracIC_totalVelocity";
1671 static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
1672 static const char __pyx_k_LinearADR_Sine_advectiveVelocity[] = "LinearADR_Sine_advectiveVelocity";
1673 static const char __pyx_k_LinearADR_Sine_diffusiveVelocity[] = "LinearADR_Sine_diffusiveVelocity";
1674 static const char __pyx_k_LinearAD_DiracIC_advectiveVeloci[] = "LinearAD_DiracIC_advectiveVelocity";
1675 static const char __pyx_k_LinearAD_DiracIC_diffusiveVeloci[] = "LinearAD_DiracIC_diffusiveVelocity";
1676 static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import";
1677 static const char __pyx_k_proteus_canalyticalSolutions_pyx[] = "proteus/canalyticalSolutions.pyx";
1678 static PyObject *__pyx_n_s_ImportError;
1679 static PyObject *__pyx_n_s_LinearADR_Decay_DiracIC;
1680 static PyObject *__pyx_n_s_LinearADR_Decay_DiracIC_dr;
1681 static PyObject *__pyx_n_s_LinearADR_Decay_DiracIC_r;
1682 static PyObject *__pyx_n_s_LinearADR_Sine;
1683 static PyObject *__pyx_n_s_LinearADR_Sine_advectiveVelocity;
1684 static PyObject *__pyx_n_s_LinearADR_Sine_diffusiveVelocity;
1685 static PyObject *__pyx_n_s_LinearADR_Sine_dr;
1686 static PyObject *__pyx_n_s_LinearADR_Sine_du;
1687 static PyObject *__pyx_n_s_LinearADR_Sine_r;
1688 static PyObject *__pyx_n_s_LinearADR_Sine_totalVelocity;
1689 static PyObject *__pyx_n_s_LinearAD_DiracIC;
1690 static PyObject *__pyx_n_s_LinearAD_DiracIC_advectiveVeloci;
1691 static PyObject *__pyx_n_s_LinearAD_DiracIC_diffusiveVeloci;
1692 static PyObject *__pyx_n_s_LinearAD_DiracIC_du;
1693 static PyObject *__pyx_n_s_LinearAD_DiracIC_totalVelocity;
1694 static PyObject *__pyx_n_s_LinearAD_SteadyState;
1695 static PyObject *__pyx_n_s_NonlinearADR_Decay_DiracIC;
1696 static PyObject *__pyx_n_s_NonlinearADR_Decay_DiracIC_dr;
1697 static PyObject *__pyx_n_s_NonlinearADR_Decay_DiracIC_r;
1698 static PyObject *__pyx_n_s_NonlinearAD_SteadyState;
1699 static PyObject *__pyx_n_s_NonlinearDAE;
1700 static PyObject *__pyx_n_s_NonlinearDAE_f;
1701 static PyObject *__pyx_n_s_PlaneCouetteFlow_u;
1702 static PyObject *__pyx_n_s_PlanePoiseuilleFlow_u;
1703 static PyObject *__pyx_n_s_PoiseuillePipeFlow;
1704 static PyObject *__pyx_n_s_PoiseuillePipeFlow_P;
1705 static PyObject *__pyx_n_s_STflowSphere_P;
1706 static PyObject *__pyx_n_s_STflowSphere_Vx;
1707 static PyObject *__pyx_n_s_STflowSphere_Vy;
1708 static PyObject *__pyx_n_s_STflowSphere_Vz;
1709 static PyObject *__pyx_n_s_canalyticalSolutions;
1710 static PyObject *__pyx_n_s_cline_in_traceback;
1711 static PyObject *__pyx_n_s_diffusionSin1D;
1712 static PyObject *__pyx_n_s_diffusionSin1D_r;
1713 static PyObject *__pyx_n_s_diffusionSin2D;
1714 static PyObject *__pyx_n_s_diffusionSin2D_r;
1715 static PyObject *__pyx_n_s_diffusionSin3D;
1716 static PyObject *__pyx_n_s_diffusionSin3D_r;
1717 static PyObject *__pyx_n_s_dr;
1718 static PyObject *__pyx_n_s_du;
1719 static PyObject *__pyx_n_s_f;
1720 static PyObject *__pyx_n_s_import;
1721 static PyObject *__pyx_n_s_iwork;
1722 static PyObject *__pyx_n_s_main;
1723 static PyObject *__pyx_n_s_name;
1724 static PyObject *__pyx_n_s_np;
1725 static PyObject *__pyx_n_s_numpy;
1726 static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to;
1727 static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor;
1728 static PyObject *__pyx_n_s_poissonsEquationExp1D;
1729 static PyObject *__pyx_n_s_poissonsEquationExp1D_r;
1730 static PyObject *__pyx_n_s_poissonsEquationExp2D;
1731 static PyObject *__pyx_n_s_poissonsEquationExp2D_r;
1732 static PyObject *__pyx_n_s_poissonsEquationExp3D;
1733 static PyObject *__pyx_n_s_poissonsEquationExp3D_dr;
1734 static PyObject *__pyx_n_s_poissonsEquationExp3D_r;
1735 static PyObject *__pyx_kp_s_proteus_canalyticalSolutions_pyx;
1736 static PyObject *__pyx_n_s_r;
1737 static PyObject *__pyx_n_s_rwork;
1738 static PyObject *__pyx_n_s_size;
1739 static PyObject *__pyx_n_s_t;
1740 static PyObject *__pyx_n_s_test;
1741 static PyObject *__pyx_n_s_u;
1742 static PyObject *__pyx_n_s_x;
1743 static PyObject *__pyx_pf_20canalyticalSolutions_PlaneCouetteFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1744 static PyObject *__pyx_pf_20canalyticalSolutions_2diffusionSin1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1745 static PyObject *__pyx_pf_20canalyticalSolutions_4diffusionSin2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1746 static PyObject *__pyx_pf_20canalyticalSolutions_6diffusionSin3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1747 static PyObject *__pyx_pf_20canalyticalSolutions_8diffusionSin1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1748 static PyObject *__pyx_pf_20canalyticalSolutions_10diffusionSin2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1749 static PyObject *__pyx_pf_20canalyticalSolutions_12diffusionSin3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1750 static PyObject *__pyx_pf_20canalyticalSolutions_14LinearAD_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1751 static PyObject *__pyx_pf_20canalyticalSolutions_16LinearAD_DiracIC_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
1752 static PyObject *__pyx_pf_20canalyticalSolutions_18LinearAD_DiracIC_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
1753 static PyObject *__pyx_pf_20canalyticalSolutions_20LinearAD_DiracIC_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du); /* proto */
1754 static PyObject *__pyx_pf_20canalyticalSolutions_22LinearAD_DiracIC_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1755 static PyObject *__pyx_pf_20canalyticalSolutions_24LinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1756 static PyObject *__pyx_pf_20canalyticalSolutions_26LinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1757 static PyObject *__pyx_pf_20canalyticalSolutions_28LinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
1758 static PyObject *__pyx_pf_20canalyticalSolutions_30LinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1759 static PyObject *__pyx_pf_20canalyticalSolutions_32LinearADR_Sine(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1760 static PyObject *__pyx_pf_20canalyticalSolutions_34LinearADR_Sine_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
1761 static PyObject *__pyx_pf_20canalyticalSolutions_36LinearADR_Sine_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f); /* proto */
1762 static PyObject *__pyx_pf_20canalyticalSolutions_38LinearADR_Sine_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
1763 static PyObject *__pyx_pf_20canalyticalSolutions_40LinearADR_Sine_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du); /* proto */
1764 static PyObject *__pyx_pf_20canalyticalSolutions_42LinearADR_Sine_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1765 static PyObject *__pyx_pf_20canalyticalSolutions_44LinearADR_Sine_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1766 static PyObject *__pyx_pf_20canalyticalSolutions_46NonlinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1767 static PyObject *__pyx_pf_20canalyticalSolutions_48NonlinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1768 static PyObject *__pyx_pf_20canalyticalSolutions_50NonlinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
1769 static PyObject *__pyx_pf_20canalyticalSolutions_52NonlinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1770 static PyObject *__pyx_pf_20canalyticalSolutions_54NonlinearDAE(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1771 static PyObject *__pyx_pf_20canalyticalSolutions_56NonlinearDAE_f(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1772 static PyObject *__pyx_pf_20canalyticalSolutions_58PlanePoiseuilleFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1773 static PyObject *__pyx_pf_20canalyticalSolutions_60PoiseuillePipeFlow(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1774 static PyObject *__pyx_pf_20canalyticalSolutions_62PoiseuillePipeFlow_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1775 static PyObject *__pyx_pf_20canalyticalSolutions_64poissonsEquationExp1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1776 static PyObject *__pyx_pf_20canalyticalSolutions_66poissonsEquationExp2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1777 static PyObject *__pyx_pf_20canalyticalSolutions_68poissonsEquationExp3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1778 static PyObject *__pyx_pf_20canalyticalSolutions_70poissonsEquationExp3D_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr); /* proto */
1779 static PyObject *__pyx_pf_20canalyticalSolutions_72poissonsEquationExp1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1780 static PyObject *__pyx_pf_20canalyticalSolutions_74poissonsEquationExp2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1781 static PyObject *__pyx_pf_20canalyticalSolutions_76poissonsEquationExp3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r); /* proto */
1782 static PyObject *__pyx_pf_20canalyticalSolutions_78STflowSphere_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1783 static PyObject *__pyx_pf_20canalyticalSolutions_80STflowSphere_Vx(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1784 static PyObject *__pyx_pf_20canalyticalSolutions_82STflowSphere_Vy(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1785 static PyObject *__pyx_pf_20canalyticalSolutions_84STflowSphere_Vz(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u); /* proto */
1786 static PyObject *__pyx_tuple_;
1787 static PyObject *__pyx_tuple__2;
1788 static PyObject *__pyx_tuple__3;
1789 static PyObject *__pyx_tuple__5;
1790 static PyObject *__pyx_tuple__7;
1791 static PyObject *__pyx_tuple__9;
1792 static PyObject *__pyx_tuple__11;
1793 static PyObject *__pyx_tuple__13;
1794 static PyObject *__pyx_tuple__15;
1795 static PyObject *__pyx_tuple__17;
1796 static PyObject *__pyx_tuple__19;
1797 static PyObject *__pyx_tuple__21;
1798 static PyObject *__pyx_tuple__23;
1799 static PyObject *__pyx_tuple__25;
1800 static PyObject *__pyx_tuple__27;
1801 static PyObject *__pyx_tuple__29;
1802 static PyObject *__pyx_tuple__31;
1803 static PyObject *__pyx_tuple__33;
1804 static PyObject *__pyx_tuple__35;
1805 static PyObject *__pyx_tuple__37;
1806 static PyObject *__pyx_tuple__39;
1807 static PyObject *__pyx_tuple__41;
1808 static PyObject *__pyx_tuple__43;
1809 static PyObject *__pyx_tuple__45;
1810 static PyObject *__pyx_tuple__47;
1811 static PyObject *__pyx_tuple__49;
1812 static PyObject *__pyx_tuple__51;
1813 static PyObject *__pyx_tuple__53;
1814 static PyObject *__pyx_tuple__55;
1815 static PyObject *__pyx_tuple__57;
1816 static PyObject *__pyx_tuple__59;
1817 static PyObject *__pyx_tuple__61;
1818 static PyObject *__pyx_tuple__63;
1819 static PyObject *__pyx_tuple__65;
1820 static PyObject *__pyx_tuple__67;
1821 static PyObject *__pyx_tuple__69;
1822 static PyObject *__pyx_tuple__71;
1823 static PyObject *__pyx_tuple__73;
1824 static PyObject *__pyx_tuple__75;
1825 static PyObject *__pyx_tuple__77;
1826 static PyObject *__pyx_tuple__79;
1827 static PyObject *__pyx_tuple__81;
1828 static PyObject *__pyx_tuple__83;
1829 static PyObject *__pyx_tuple__85;
1830 static PyObject *__pyx_tuple__87;
1831 static PyObject *__pyx_codeobj__4;
1832 static PyObject *__pyx_codeobj__6;
1833 static PyObject *__pyx_codeobj__8;
1834 static PyObject *__pyx_codeobj__10;
1835 static PyObject *__pyx_codeobj__12;
1836 static PyObject *__pyx_codeobj__14;
1837 static PyObject *__pyx_codeobj__16;
1838 static PyObject *__pyx_codeobj__18;
1839 static PyObject *__pyx_codeobj__20;
1840 static PyObject *__pyx_codeobj__22;
1841 static PyObject *__pyx_codeobj__24;
1842 static PyObject *__pyx_codeobj__26;
1843 static PyObject *__pyx_codeobj__28;
1844 static PyObject *__pyx_codeobj__30;
1845 static PyObject *__pyx_codeobj__32;
1846 static PyObject *__pyx_codeobj__34;
1847 static PyObject *__pyx_codeobj__36;
1848 static PyObject *__pyx_codeobj__38;
1849 static PyObject *__pyx_codeobj__40;
1850 static PyObject *__pyx_codeobj__42;
1851 static PyObject *__pyx_codeobj__44;
1852 static PyObject *__pyx_codeobj__46;
1853 static PyObject *__pyx_codeobj__48;
1854 static PyObject *__pyx_codeobj__50;
1855 static PyObject *__pyx_codeobj__52;
1856 static PyObject *__pyx_codeobj__54;
1857 static PyObject *__pyx_codeobj__56;
1858 static PyObject *__pyx_codeobj__58;
1859 static PyObject *__pyx_codeobj__60;
1860 static PyObject *__pyx_codeobj__62;
1861 static PyObject *__pyx_codeobj__64;
1862 static PyObject *__pyx_codeobj__66;
1863 static PyObject *__pyx_codeobj__68;
1864 static PyObject *__pyx_codeobj__70;
1865 static PyObject *__pyx_codeobj__72;
1866 static PyObject *__pyx_codeobj__74;
1867 static PyObject *__pyx_codeobj__76;
1868 static PyObject *__pyx_codeobj__78;
1869 static PyObject *__pyx_codeobj__80;
1870 static PyObject *__pyx_codeobj__82;
1871 static PyObject *__pyx_codeobj__84;
1872 static PyObject *__pyx_codeobj__86;
1873 static PyObject *__pyx_codeobj__88;
1874 /* Late includes */
1875 
1876 /* "canalyticalSolutions.pyx":50
1877  *
1878  *
1879  * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
1880  * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
1881  *
1882  */
1883 
1884 /* Python wrapper */
1885 static PyObject *__pyx_pw_20canalyticalSolutions_1PlaneCouetteFlow_u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
1886 static PyMethodDef __pyx_mdef_20canalyticalSolutions_1PlaneCouetteFlow_u = {"PlaneCouetteFlow_u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_1PlaneCouetteFlow_u, METH_VARARGS|METH_KEYWORDS, 0};
1887 static PyObject *__pyx_pw_20canalyticalSolutions_1PlaneCouetteFlow_u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
1888  PyArrayObject *__pyx_v_iwork = 0;
1889  PyArrayObject *__pyx_v_rwork = 0;
1890  double __pyx_v_t;
1891  PyArrayObject *__pyx_v_x = 0;
1892  PyArrayObject *__pyx_v_u = 0;
1893  int __pyx_lineno = 0;
1894  const char *__pyx_filename = NULL;
1895  int __pyx_clineno = 0;
1896  PyObject *__pyx_r = 0;
1897  __Pyx_RefNannyDeclarations
1898  __Pyx_RefNannySetupContext("PlaneCouetteFlow_u (wrapper)", 0);
1899  {
1900  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
1901  PyObject* values[5] = {0,0,0,0,0};
1902  if (unlikely(__pyx_kwds)) {
1903  Py_ssize_t kw_args;
1904  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
1905  switch (pos_args) {
1906  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
1907  CYTHON_FALLTHROUGH;
1908  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
1909  CYTHON_FALLTHROUGH;
1910  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
1911  CYTHON_FALLTHROUGH;
1912  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
1913  CYTHON_FALLTHROUGH;
1914  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
1915  CYTHON_FALLTHROUGH;
1916  case 0: break;
1917  default: goto __pyx_L5_argtuple_error;
1918  }
1919  kw_args = PyDict_Size(__pyx_kwds);
1920  switch (pos_args) {
1921  case 0:
1922  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
1923  else goto __pyx_L5_argtuple_error;
1924  CYTHON_FALLTHROUGH;
1925  case 1:
1926  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
1927  else {
1928  __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, 1); __PYX_ERR(0, 50, __pyx_L3_error)
1929  }
1930  CYTHON_FALLTHROUGH;
1931  case 2:
1932  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
1933  else {
1934  __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, 2); __PYX_ERR(0, 50, __pyx_L3_error)
1935  }
1936  CYTHON_FALLTHROUGH;
1937  case 3:
1938  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
1939  else {
1940  __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, 3); __PYX_ERR(0, 50, __pyx_L3_error)
1941  }
1942  CYTHON_FALLTHROUGH;
1943  case 4:
1944  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
1945  else {
1946  __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, 4); __PYX_ERR(0, 50, __pyx_L3_error)
1947  }
1948  }
1949  if (unlikely(kw_args > 0)) {
1950  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PlaneCouetteFlow_u") < 0)) __PYX_ERR(0, 50, __pyx_L3_error)
1951  }
1952  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
1953  goto __pyx_L5_argtuple_error;
1954  } else {
1955  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
1956  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
1957  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
1958  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
1959  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
1960  }
1961  __pyx_v_iwork = ((PyArrayObject *)values[0]);
1962  __pyx_v_rwork = ((PyArrayObject *)values[1]);
1963  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L3_error)
1964  __pyx_v_x = ((PyArrayObject *)values[3]);
1965  __pyx_v_u = ((PyArrayObject *)values[4]);
1966  }
1967  goto __pyx_L4_argument_unpacking_done;
1968  __pyx_L5_argtuple_error:;
1969  __Pyx_RaiseArgtupleInvalid("PlaneCouetteFlow_u", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 50, __pyx_L3_error)
1970  __pyx_L3_error:;
1971  __Pyx_AddTraceback("canalyticalSolutions.PlaneCouetteFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
1972  __Pyx_RefNannyFinishContext();
1973  return NULL;
1974  __pyx_L4_argument_unpacking_done:;
1975  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 50, __pyx_L1_error)
1976  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 50, __pyx_L1_error)
1977  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 50, __pyx_L1_error)
1978  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 50, __pyx_L1_error)
1979  __pyx_r = __pyx_pf_20canalyticalSolutions_PlaneCouetteFlow_u(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
1980 
1981  /* function exit code */
1982  goto __pyx_L0;
1983  __pyx_L1_error:;
1984  __pyx_r = NULL;
1985  __pyx_L0:;
1986  __Pyx_RefNannyFinishContext();
1987  return __pyx_r;
1988 }
1989 
1990 static PyObject *__pyx_pf_20canalyticalSolutions_PlaneCouetteFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
1991  PyObject *__pyx_r = NULL;
1992  __Pyx_RefNannyDeclarations
1993  PyObject *__pyx_t_1 = NULL;
1994  PyObject *__pyx_t_2 = NULL;
1995  PyObject *__pyx_t_3 = NULL;
1996  int __pyx_t_4;
1997  int __pyx_lineno = 0;
1998  const char *__pyx_filename = NULL;
1999  int __pyx_clineno = 0;
2000  __Pyx_RefNannySetupContext("PlaneCouetteFlow_u", 0);
2001 
2002  /* "canalyticalSolutions.pyx":51
2003  *
2004  * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
2005  * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
2006  *
2007  *
2008  */
2009  __Pyx_XDECREF(__pyx_r);
2010  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
2011  __Pyx_GOTREF(__pyx_t_1);
2012  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
2013  __Pyx_GOTREF(__pyx_t_2);
2014  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
2015  __Pyx_GOTREF(__pyx_t_3);
2016  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2017  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2018  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 51, __pyx_L1_error)
2019  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2020  __pyx_t_3 = __Pyx_PyInt_From_int(PlaneCouetteFlow_u(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
2021  __Pyx_GOTREF(__pyx_t_3);
2022  __pyx_r = __pyx_t_3;
2023  __pyx_t_3 = 0;
2024  goto __pyx_L0;
2025 
2026  /* "canalyticalSolutions.pyx":50
2027  *
2028  *
2029  * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2030  * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2031  *
2032  */
2033 
2034  /* function exit code */
2035  __pyx_L1_error:;
2036  __Pyx_XDECREF(__pyx_t_1);
2037  __Pyx_XDECREF(__pyx_t_2);
2038  __Pyx_XDECREF(__pyx_t_3);
2039  __Pyx_AddTraceback("canalyticalSolutions.PlaneCouetteFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
2040  __pyx_r = NULL;
2041  __pyx_L0:;
2042  __Pyx_XGIVEREF(__pyx_r);
2043  __Pyx_RefNannyFinishContext();
2044  return __pyx_r;
2045 }
2046 
2047 /* "canalyticalSolutions.pyx":54
2048  *
2049  *
2050  * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2051  * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2052  *
2053  */
2054 
2055 /* Python wrapper */
2056 static PyObject *__pyx_pw_20canalyticalSolutions_3diffusionSin1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2057 static PyMethodDef __pyx_mdef_20canalyticalSolutions_3diffusionSin1D = {"diffusionSin1D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_3diffusionSin1D, METH_VARARGS|METH_KEYWORDS, 0};
2058 static PyObject *__pyx_pw_20canalyticalSolutions_3diffusionSin1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2059  PyArrayObject *__pyx_v_iwork = 0;
2060  PyArrayObject *__pyx_v_rwork = 0;
2061  double __pyx_v_t;
2062  PyArrayObject *__pyx_v_x = 0;
2063  PyArrayObject *__pyx_v_u = 0;
2064  int __pyx_lineno = 0;
2065  const char *__pyx_filename = NULL;
2066  int __pyx_clineno = 0;
2067  PyObject *__pyx_r = 0;
2068  __Pyx_RefNannyDeclarations
2069  __Pyx_RefNannySetupContext("diffusionSin1D (wrapper)", 0);
2070  {
2071  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
2072  PyObject* values[5] = {0,0,0,0,0};
2073  if (unlikely(__pyx_kwds)) {
2074  Py_ssize_t kw_args;
2075  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2076  switch (pos_args) {
2077  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2078  CYTHON_FALLTHROUGH;
2079  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2080  CYTHON_FALLTHROUGH;
2081  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2082  CYTHON_FALLTHROUGH;
2083  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2084  CYTHON_FALLTHROUGH;
2085  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2086  CYTHON_FALLTHROUGH;
2087  case 0: break;
2088  default: goto __pyx_L5_argtuple_error;
2089  }
2090  kw_args = PyDict_Size(__pyx_kwds);
2091  switch (pos_args) {
2092  case 0:
2093  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
2094  else goto __pyx_L5_argtuple_error;
2095  CYTHON_FALLTHROUGH;
2096  case 1:
2097  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
2098  else {
2099  __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, 1); __PYX_ERR(0, 54, __pyx_L3_error)
2100  }
2101  CYTHON_FALLTHROUGH;
2102  case 2:
2103  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
2104  else {
2105  __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, 2); __PYX_ERR(0, 54, __pyx_L3_error)
2106  }
2107  CYTHON_FALLTHROUGH;
2108  case 3:
2109  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2110  else {
2111  __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, 3); __PYX_ERR(0, 54, __pyx_L3_error)
2112  }
2113  CYTHON_FALLTHROUGH;
2114  case 4:
2115  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
2116  else {
2117  __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, 4); __PYX_ERR(0, 54, __pyx_L3_error)
2118  }
2119  }
2120  if (unlikely(kw_args > 0)) {
2121  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diffusionSin1D") < 0)) __PYX_ERR(0, 54, __pyx_L3_error)
2122  }
2123  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
2124  goto __pyx_L5_argtuple_error;
2125  } else {
2126  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2127  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2128  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2129  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2130  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2131  }
2132  __pyx_v_iwork = ((PyArrayObject *)values[0]);
2133  __pyx_v_rwork = ((PyArrayObject *)values[1]);
2134  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L3_error)
2135  __pyx_v_x = ((PyArrayObject *)values[3]);
2136  __pyx_v_u = ((PyArrayObject *)values[4]);
2137  }
2138  goto __pyx_L4_argument_unpacking_done;
2139  __pyx_L5_argtuple_error:;
2140  __Pyx_RaiseArgtupleInvalid("diffusionSin1D", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 54, __pyx_L3_error)
2141  __pyx_L3_error:;
2142  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
2143  __Pyx_RefNannyFinishContext();
2144  return NULL;
2145  __pyx_L4_argument_unpacking_done:;
2146  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 54, __pyx_L1_error)
2147  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 54, __pyx_L1_error)
2148  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 54, __pyx_L1_error)
2149  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 54, __pyx_L1_error)
2150  __pyx_r = __pyx_pf_20canalyticalSolutions_2diffusionSin1D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
2151 
2152  /* function exit code */
2153  goto __pyx_L0;
2154  __pyx_L1_error:;
2155  __pyx_r = NULL;
2156  __pyx_L0:;
2157  __Pyx_RefNannyFinishContext();
2158  return __pyx_r;
2159 }
2160 
2161 static PyObject *__pyx_pf_20canalyticalSolutions_2diffusionSin1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
2162  PyObject *__pyx_r = NULL;
2163  __Pyx_RefNannyDeclarations
2164  PyObject *__pyx_t_1 = NULL;
2165  PyObject *__pyx_t_2 = NULL;
2166  PyObject *__pyx_t_3 = NULL;
2167  int __pyx_t_4;
2168  int __pyx_lineno = 0;
2169  const char *__pyx_filename = NULL;
2170  int __pyx_clineno = 0;
2171  __Pyx_RefNannySetupContext("diffusionSin1D", 0);
2172 
2173  /* "canalyticalSolutions.pyx":55
2174  *
2175  * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
2176  * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
2177  *
2178  *
2179  */
2180  __Pyx_XDECREF(__pyx_r);
2181  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
2182  __Pyx_GOTREF(__pyx_t_1);
2183  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
2184  __Pyx_GOTREF(__pyx_t_2);
2185  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
2186  __Pyx_GOTREF(__pyx_t_3);
2187  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2188  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2189  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error)
2190  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2191  __pyx_t_3 = __Pyx_PyInt_From_int(diffusionSin1D(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
2192  __Pyx_GOTREF(__pyx_t_3);
2193  __pyx_r = __pyx_t_3;
2194  __pyx_t_3 = 0;
2195  goto __pyx_L0;
2196 
2197  /* "canalyticalSolutions.pyx":54
2198  *
2199  *
2200  * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2201  * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2202  *
2203  */
2204 
2205  /* function exit code */
2206  __pyx_L1_error:;
2207  __Pyx_XDECREF(__pyx_t_1);
2208  __Pyx_XDECREF(__pyx_t_2);
2209  __Pyx_XDECREF(__pyx_t_3);
2210  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
2211  __pyx_r = NULL;
2212  __pyx_L0:;
2213  __Pyx_XGIVEREF(__pyx_r);
2214  __Pyx_RefNannyFinishContext();
2215  return __pyx_r;
2216 }
2217 
2218 /* "canalyticalSolutions.pyx":58
2219  *
2220  *
2221  * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2222  * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2223  *
2224  */
2225 
2226 /* Python wrapper */
2227 static PyObject *__pyx_pw_20canalyticalSolutions_5diffusionSin2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2228 static PyMethodDef __pyx_mdef_20canalyticalSolutions_5diffusionSin2D = {"diffusionSin2D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_5diffusionSin2D, METH_VARARGS|METH_KEYWORDS, 0};
2229 static PyObject *__pyx_pw_20canalyticalSolutions_5diffusionSin2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2230  PyArrayObject *__pyx_v_iwork = 0;
2231  PyArrayObject *__pyx_v_rwork = 0;
2232  double __pyx_v_t;
2233  PyArrayObject *__pyx_v_x = 0;
2234  PyArrayObject *__pyx_v_u = 0;
2235  int __pyx_lineno = 0;
2236  const char *__pyx_filename = NULL;
2237  int __pyx_clineno = 0;
2238  PyObject *__pyx_r = 0;
2239  __Pyx_RefNannyDeclarations
2240  __Pyx_RefNannySetupContext("diffusionSin2D (wrapper)", 0);
2241  {
2242  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
2243  PyObject* values[5] = {0,0,0,0,0};
2244  if (unlikely(__pyx_kwds)) {
2245  Py_ssize_t kw_args;
2246  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2247  switch (pos_args) {
2248  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2249  CYTHON_FALLTHROUGH;
2250  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2251  CYTHON_FALLTHROUGH;
2252  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2253  CYTHON_FALLTHROUGH;
2254  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2255  CYTHON_FALLTHROUGH;
2256  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2257  CYTHON_FALLTHROUGH;
2258  case 0: break;
2259  default: goto __pyx_L5_argtuple_error;
2260  }
2261  kw_args = PyDict_Size(__pyx_kwds);
2262  switch (pos_args) {
2263  case 0:
2264  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
2265  else goto __pyx_L5_argtuple_error;
2266  CYTHON_FALLTHROUGH;
2267  case 1:
2268  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
2269  else {
2270  __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, 1); __PYX_ERR(0, 58, __pyx_L3_error)
2271  }
2272  CYTHON_FALLTHROUGH;
2273  case 2:
2274  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
2275  else {
2276  __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, 2); __PYX_ERR(0, 58, __pyx_L3_error)
2277  }
2278  CYTHON_FALLTHROUGH;
2279  case 3:
2280  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2281  else {
2282  __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, 3); __PYX_ERR(0, 58, __pyx_L3_error)
2283  }
2284  CYTHON_FALLTHROUGH;
2285  case 4:
2286  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
2287  else {
2288  __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, 4); __PYX_ERR(0, 58, __pyx_L3_error)
2289  }
2290  }
2291  if (unlikely(kw_args > 0)) {
2292  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diffusionSin2D") < 0)) __PYX_ERR(0, 58, __pyx_L3_error)
2293  }
2294  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
2295  goto __pyx_L5_argtuple_error;
2296  } else {
2297  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2298  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2299  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2300  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2301  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2302  }
2303  __pyx_v_iwork = ((PyArrayObject *)values[0]);
2304  __pyx_v_rwork = ((PyArrayObject *)values[1]);
2305  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error)
2306  __pyx_v_x = ((PyArrayObject *)values[3]);
2307  __pyx_v_u = ((PyArrayObject *)values[4]);
2308  }
2309  goto __pyx_L4_argument_unpacking_done;
2310  __pyx_L5_argtuple_error:;
2311  __Pyx_RaiseArgtupleInvalid("diffusionSin2D", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 58, __pyx_L3_error)
2312  __pyx_L3_error:;
2313  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
2314  __Pyx_RefNannyFinishContext();
2315  return NULL;
2316  __pyx_L4_argument_unpacking_done:;
2317  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 58, __pyx_L1_error)
2318  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 58, __pyx_L1_error)
2319  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 58, __pyx_L1_error)
2320  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 58, __pyx_L1_error)
2321  __pyx_r = __pyx_pf_20canalyticalSolutions_4diffusionSin2D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
2322 
2323  /* function exit code */
2324  goto __pyx_L0;
2325  __pyx_L1_error:;
2326  __pyx_r = NULL;
2327  __pyx_L0:;
2328  __Pyx_RefNannyFinishContext();
2329  return __pyx_r;
2330 }
2331 
2332 static PyObject *__pyx_pf_20canalyticalSolutions_4diffusionSin2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
2333  PyObject *__pyx_r = NULL;
2334  __Pyx_RefNannyDeclarations
2335  PyObject *__pyx_t_1 = NULL;
2336  PyObject *__pyx_t_2 = NULL;
2337  PyObject *__pyx_t_3 = NULL;
2338  int __pyx_t_4;
2339  int __pyx_lineno = 0;
2340  const char *__pyx_filename = NULL;
2341  int __pyx_clineno = 0;
2342  __Pyx_RefNannySetupContext("diffusionSin2D", 0);
2343 
2344  /* "canalyticalSolutions.pyx":59
2345  *
2346  * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
2347  * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
2348  *
2349  *
2350  */
2351  __Pyx_XDECREF(__pyx_r);
2352  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
2353  __Pyx_GOTREF(__pyx_t_1);
2354  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
2355  __Pyx_GOTREF(__pyx_t_2);
2356  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
2357  __Pyx_GOTREF(__pyx_t_3);
2358  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2359  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2360  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L1_error)
2361  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2362  __pyx_t_3 = __Pyx_PyInt_From_int(diffusionSin2D(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
2363  __Pyx_GOTREF(__pyx_t_3);
2364  __pyx_r = __pyx_t_3;
2365  __pyx_t_3 = 0;
2366  goto __pyx_L0;
2367 
2368  /* "canalyticalSolutions.pyx":58
2369  *
2370  *
2371  * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2372  * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2373  *
2374  */
2375 
2376  /* function exit code */
2377  __pyx_L1_error:;
2378  __Pyx_XDECREF(__pyx_t_1);
2379  __Pyx_XDECREF(__pyx_t_2);
2380  __Pyx_XDECREF(__pyx_t_3);
2381  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
2382  __pyx_r = NULL;
2383  __pyx_L0:;
2384  __Pyx_XGIVEREF(__pyx_r);
2385  __Pyx_RefNannyFinishContext();
2386  return __pyx_r;
2387 }
2388 
2389 /* "canalyticalSolutions.pyx":62
2390  *
2391  *
2392  * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2393  * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2394  *
2395  */
2396 
2397 /* Python wrapper */
2398 static PyObject *__pyx_pw_20canalyticalSolutions_7diffusionSin3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2399 static PyMethodDef __pyx_mdef_20canalyticalSolutions_7diffusionSin3D = {"diffusionSin3D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_7diffusionSin3D, METH_VARARGS|METH_KEYWORDS, 0};
2400 static PyObject *__pyx_pw_20canalyticalSolutions_7diffusionSin3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2401  PyArrayObject *__pyx_v_iwork = 0;
2402  PyArrayObject *__pyx_v_rwork = 0;
2403  double __pyx_v_t;
2404  PyArrayObject *__pyx_v_x = 0;
2405  PyArrayObject *__pyx_v_u = 0;
2406  int __pyx_lineno = 0;
2407  const char *__pyx_filename = NULL;
2408  int __pyx_clineno = 0;
2409  PyObject *__pyx_r = 0;
2410  __Pyx_RefNannyDeclarations
2411  __Pyx_RefNannySetupContext("diffusionSin3D (wrapper)", 0);
2412  {
2413  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
2414  PyObject* values[5] = {0,0,0,0,0};
2415  if (unlikely(__pyx_kwds)) {
2416  Py_ssize_t kw_args;
2417  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2418  switch (pos_args) {
2419  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2420  CYTHON_FALLTHROUGH;
2421  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2422  CYTHON_FALLTHROUGH;
2423  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2424  CYTHON_FALLTHROUGH;
2425  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2426  CYTHON_FALLTHROUGH;
2427  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2428  CYTHON_FALLTHROUGH;
2429  case 0: break;
2430  default: goto __pyx_L5_argtuple_error;
2431  }
2432  kw_args = PyDict_Size(__pyx_kwds);
2433  switch (pos_args) {
2434  case 0:
2435  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
2436  else goto __pyx_L5_argtuple_error;
2437  CYTHON_FALLTHROUGH;
2438  case 1:
2439  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
2440  else {
2441  __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, 1); __PYX_ERR(0, 62, __pyx_L3_error)
2442  }
2443  CYTHON_FALLTHROUGH;
2444  case 2:
2445  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
2446  else {
2447  __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, 2); __PYX_ERR(0, 62, __pyx_L3_error)
2448  }
2449  CYTHON_FALLTHROUGH;
2450  case 3:
2451  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2452  else {
2453  __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, 3); __PYX_ERR(0, 62, __pyx_L3_error)
2454  }
2455  CYTHON_FALLTHROUGH;
2456  case 4:
2457  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
2458  else {
2459  __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, 4); __PYX_ERR(0, 62, __pyx_L3_error)
2460  }
2461  }
2462  if (unlikely(kw_args > 0)) {
2463  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diffusionSin3D") < 0)) __PYX_ERR(0, 62, __pyx_L3_error)
2464  }
2465  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
2466  goto __pyx_L5_argtuple_error;
2467  } else {
2468  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2469  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2470  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2471  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2472  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2473  }
2474  __pyx_v_iwork = ((PyArrayObject *)values[0]);
2475  __pyx_v_rwork = ((PyArrayObject *)values[1]);
2476  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 62, __pyx_L3_error)
2477  __pyx_v_x = ((PyArrayObject *)values[3]);
2478  __pyx_v_u = ((PyArrayObject *)values[4]);
2479  }
2480  goto __pyx_L4_argument_unpacking_done;
2481  __pyx_L5_argtuple_error:;
2482  __Pyx_RaiseArgtupleInvalid("diffusionSin3D", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 62, __pyx_L3_error)
2483  __pyx_L3_error:;
2484  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
2485  __Pyx_RefNannyFinishContext();
2486  return NULL;
2487  __pyx_L4_argument_unpacking_done:;
2488  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 62, __pyx_L1_error)
2489  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 62, __pyx_L1_error)
2490  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 62, __pyx_L1_error)
2491  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 62, __pyx_L1_error)
2492  __pyx_r = __pyx_pf_20canalyticalSolutions_6diffusionSin3D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
2493 
2494  /* function exit code */
2495  goto __pyx_L0;
2496  __pyx_L1_error:;
2497  __pyx_r = NULL;
2498  __pyx_L0:;
2499  __Pyx_RefNannyFinishContext();
2500  return __pyx_r;
2501 }
2502 
2503 static PyObject *__pyx_pf_20canalyticalSolutions_6diffusionSin3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
2504  PyObject *__pyx_r = NULL;
2505  __Pyx_RefNannyDeclarations
2506  PyObject *__pyx_t_1 = NULL;
2507  PyObject *__pyx_t_2 = NULL;
2508  PyObject *__pyx_t_3 = NULL;
2509  int __pyx_t_4;
2510  int __pyx_lineno = 0;
2511  const char *__pyx_filename = NULL;
2512  int __pyx_clineno = 0;
2513  __Pyx_RefNannySetupContext("diffusionSin3D", 0);
2514 
2515  /* "canalyticalSolutions.pyx":63
2516  *
2517  * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
2518  * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
2519  *
2520  *
2521  */
2522  __Pyx_XDECREF(__pyx_r);
2523  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
2524  __Pyx_GOTREF(__pyx_t_1);
2525  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error)
2526  __Pyx_GOTREF(__pyx_t_2);
2527  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error)
2528  __Pyx_GOTREF(__pyx_t_3);
2529  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2530  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2531  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 63, __pyx_L1_error)
2532  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2533  __pyx_t_3 = __Pyx_PyInt_From_int(diffusionSin3D(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error)
2534  __Pyx_GOTREF(__pyx_t_3);
2535  __pyx_r = __pyx_t_3;
2536  __pyx_t_3 = 0;
2537  goto __pyx_L0;
2538 
2539  /* "canalyticalSolutions.pyx":62
2540  *
2541  *
2542  * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
2543  * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
2544  *
2545  */
2546 
2547  /* function exit code */
2548  __pyx_L1_error:;
2549  __Pyx_XDECREF(__pyx_t_1);
2550  __Pyx_XDECREF(__pyx_t_2);
2551  __Pyx_XDECREF(__pyx_t_3);
2552  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
2553  __pyx_r = NULL;
2554  __pyx_L0:;
2555  __Pyx_XGIVEREF(__pyx_r);
2556  __Pyx_RefNannyFinishContext();
2557  return __pyx_r;
2558 }
2559 
2560 /* "canalyticalSolutions.pyx":66
2561  *
2562  *
2563  * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
2564  * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
2565  *
2566  */
2567 
2568 /* Python wrapper */
2569 static PyObject *__pyx_pw_20canalyticalSolutions_9diffusionSin1D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2570 static PyMethodDef __pyx_mdef_20canalyticalSolutions_9diffusionSin1D_r = {"diffusionSin1D_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_9diffusionSin1D_r, METH_VARARGS|METH_KEYWORDS, 0};
2571 static PyObject *__pyx_pw_20canalyticalSolutions_9diffusionSin1D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2572  PyArrayObject *__pyx_v_iwork = 0;
2573  PyArrayObject *__pyx_v_rwork = 0;
2574  double __pyx_v_t;
2575  PyArrayObject *__pyx_v_x = 0;
2576  PyArrayObject *__pyx_v_u = 0;
2577  PyArrayObject *__pyx_v_r = 0;
2578  int __pyx_lineno = 0;
2579  const char *__pyx_filename = NULL;
2580  int __pyx_clineno = 0;
2581  PyObject *__pyx_r = 0;
2582  __Pyx_RefNannyDeclarations
2583  __Pyx_RefNannySetupContext("diffusionSin1D_r (wrapper)", 0);
2584  {
2585  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
2586  PyObject* values[6] = {0,0,0,0,0,0};
2587  if (unlikely(__pyx_kwds)) {
2588  Py_ssize_t kw_args;
2589  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2590  switch (pos_args) {
2591  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
2592  CYTHON_FALLTHROUGH;
2593  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2594  CYTHON_FALLTHROUGH;
2595  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2596  CYTHON_FALLTHROUGH;
2597  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2598  CYTHON_FALLTHROUGH;
2599  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2600  CYTHON_FALLTHROUGH;
2601  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2602  CYTHON_FALLTHROUGH;
2603  case 0: break;
2604  default: goto __pyx_L5_argtuple_error;
2605  }
2606  kw_args = PyDict_Size(__pyx_kwds);
2607  switch (pos_args) {
2608  case 0:
2609  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
2610  else goto __pyx_L5_argtuple_error;
2611  CYTHON_FALLTHROUGH;
2612  case 1:
2613  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
2614  else {
2615  __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, 1); __PYX_ERR(0, 66, __pyx_L3_error)
2616  }
2617  CYTHON_FALLTHROUGH;
2618  case 2:
2619  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
2620  else {
2621  __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, 2); __PYX_ERR(0, 66, __pyx_L3_error)
2622  }
2623  CYTHON_FALLTHROUGH;
2624  case 3:
2625  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2626  else {
2627  __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, 3); __PYX_ERR(0, 66, __pyx_L3_error)
2628  }
2629  CYTHON_FALLTHROUGH;
2630  case 4:
2631  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
2632  else {
2633  __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, 4); __PYX_ERR(0, 66, __pyx_L3_error)
2634  }
2635  CYTHON_FALLTHROUGH;
2636  case 5:
2637  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
2638  else {
2639  __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, 5); __PYX_ERR(0, 66, __pyx_L3_error)
2640  }
2641  }
2642  if (unlikely(kw_args > 0)) {
2643  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diffusionSin1D_r") < 0)) __PYX_ERR(0, 66, __pyx_L3_error)
2644  }
2645  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
2646  goto __pyx_L5_argtuple_error;
2647  } else {
2648  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2649  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2650  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2651  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2652  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2653  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
2654  }
2655  __pyx_v_iwork = ((PyArrayObject *)values[0]);
2656  __pyx_v_rwork = ((PyArrayObject *)values[1]);
2657  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 66, __pyx_L3_error)
2658  __pyx_v_x = ((PyArrayObject *)values[3]);
2659  __pyx_v_u = ((PyArrayObject *)values[4]);
2660  __pyx_v_r = ((PyArrayObject *)values[5]);
2661  }
2662  goto __pyx_L4_argument_unpacking_done;
2663  __pyx_L5_argtuple_error:;
2664  __Pyx_RaiseArgtupleInvalid("diffusionSin1D_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 66, __pyx_L3_error)
2665  __pyx_L3_error:;
2666  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
2667  __Pyx_RefNannyFinishContext();
2668  return NULL;
2669  __pyx_L4_argument_unpacking_done:;
2670  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 66, __pyx_L1_error)
2671  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 66, __pyx_L1_error)
2672  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 66, __pyx_L1_error)
2673  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 66, __pyx_L1_error)
2674  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 66, __pyx_L1_error)
2675  __pyx_r = __pyx_pf_20canalyticalSolutions_8diffusionSin1D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
2676 
2677  /* function exit code */
2678  goto __pyx_L0;
2679  __pyx_L1_error:;
2680  __pyx_r = NULL;
2681  __pyx_L0:;
2682  __Pyx_RefNannyFinishContext();
2683  return __pyx_r;
2684 }
2685 
2686 static PyObject *__pyx_pf_20canalyticalSolutions_8diffusionSin1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
2687  PyObject *__pyx_r = NULL;
2688  __Pyx_RefNannyDeclarations
2689  PyObject *__pyx_t_1 = NULL;
2690  PyObject *__pyx_t_2 = NULL;
2691  PyObject *__pyx_t_3 = NULL;
2692  int __pyx_t_4;
2693  int __pyx_lineno = 0;
2694  const char *__pyx_filename = NULL;
2695  int __pyx_clineno = 0;
2696  __Pyx_RefNannySetupContext("diffusionSin1D_r", 0);
2697 
2698  /* "canalyticalSolutions.pyx":67
2699  *
2700  * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
2701  * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
2702  *
2703  *
2704  */
2705  __Pyx_XDECREF(__pyx_r);
2706  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
2707  __Pyx_GOTREF(__pyx_t_1);
2708  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error)
2709  __Pyx_GOTREF(__pyx_t_2);
2710  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error)
2711  __Pyx_GOTREF(__pyx_t_3);
2712  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2713  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2714  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 67, __pyx_L1_error)
2715  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2716  __pyx_t_3 = __Pyx_PyInt_From_int(diffusionSin1D_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error)
2717  __Pyx_GOTREF(__pyx_t_3);
2718  __pyx_r = __pyx_t_3;
2719  __pyx_t_3 = 0;
2720  goto __pyx_L0;
2721 
2722  /* "canalyticalSolutions.pyx":66
2723  *
2724  *
2725  * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
2726  * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
2727  *
2728  */
2729 
2730  /* function exit code */
2731  __pyx_L1_error:;
2732  __Pyx_XDECREF(__pyx_t_1);
2733  __Pyx_XDECREF(__pyx_t_2);
2734  __Pyx_XDECREF(__pyx_t_3);
2735  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
2736  __pyx_r = NULL;
2737  __pyx_L0:;
2738  __Pyx_XGIVEREF(__pyx_r);
2739  __Pyx_RefNannyFinishContext();
2740  return __pyx_r;
2741 }
2742 
2743 /* "canalyticalSolutions.pyx":70
2744  *
2745  *
2746  * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
2747  * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
2748  *
2749  */
2750 
2751 /* Python wrapper */
2752 static PyObject *__pyx_pw_20canalyticalSolutions_11diffusionSin2D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2753 static PyMethodDef __pyx_mdef_20canalyticalSolutions_11diffusionSin2D_r = {"diffusionSin2D_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_11diffusionSin2D_r, METH_VARARGS|METH_KEYWORDS, 0};
2754 static PyObject *__pyx_pw_20canalyticalSolutions_11diffusionSin2D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2755  PyArrayObject *__pyx_v_iwork = 0;
2756  PyArrayObject *__pyx_v_rwork = 0;
2757  double __pyx_v_t;
2758  PyArrayObject *__pyx_v_x = 0;
2759  PyArrayObject *__pyx_v_u = 0;
2760  PyArrayObject *__pyx_v_r = 0;
2761  int __pyx_lineno = 0;
2762  const char *__pyx_filename = NULL;
2763  int __pyx_clineno = 0;
2764  PyObject *__pyx_r = 0;
2765  __Pyx_RefNannyDeclarations
2766  __Pyx_RefNannySetupContext("diffusionSin2D_r (wrapper)", 0);
2767  {
2768  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
2769  PyObject* values[6] = {0,0,0,0,0,0};
2770  if (unlikely(__pyx_kwds)) {
2771  Py_ssize_t kw_args;
2772  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2773  switch (pos_args) {
2774  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
2775  CYTHON_FALLTHROUGH;
2776  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2777  CYTHON_FALLTHROUGH;
2778  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2779  CYTHON_FALLTHROUGH;
2780  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2781  CYTHON_FALLTHROUGH;
2782  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2783  CYTHON_FALLTHROUGH;
2784  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2785  CYTHON_FALLTHROUGH;
2786  case 0: break;
2787  default: goto __pyx_L5_argtuple_error;
2788  }
2789  kw_args = PyDict_Size(__pyx_kwds);
2790  switch (pos_args) {
2791  case 0:
2792  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
2793  else goto __pyx_L5_argtuple_error;
2794  CYTHON_FALLTHROUGH;
2795  case 1:
2796  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
2797  else {
2798  __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, 1); __PYX_ERR(0, 70, __pyx_L3_error)
2799  }
2800  CYTHON_FALLTHROUGH;
2801  case 2:
2802  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
2803  else {
2804  __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, 2); __PYX_ERR(0, 70, __pyx_L3_error)
2805  }
2806  CYTHON_FALLTHROUGH;
2807  case 3:
2808  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2809  else {
2810  __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, 3); __PYX_ERR(0, 70, __pyx_L3_error)
2811  }
2812  CYTHON_FALLTHROUGH;
2813  case 4:
2814  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
2815  else {
2816  __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, 4); __PYX_ERR(0, 70, __pyx_L3_error)
2817  }
2818  CYTHON_FALLTHROUGH;
2819  case 5:
2820  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
2821  else {
2822  __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, 5); __PYX_ERR(0, 70, __pyx_L3_error)
2823  }
2824  }
2825  if (unlikely(kw_args > 0)) {
2826  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diffusionSin2D_r") < 0)) __PYX_ERR(0, 70, __pyx_L3_error)
2827  }
2828  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
2829  goto __pyx_L5_argtuple_error;
2830  } else {
2831  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2832  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2833  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2834  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2835  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2836  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
2837  }
2838  __pyx_v_iwork = ((PyArrayObject *)values[0]);
2839  __pyx_v_rwork = ((PyArrayObject *)values[1]);
2840  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L3_error)
2841  __pyx_v_x = ((PyArrayObject *)values[3]);
2842  __pyx_v_u = ((PyArrayObject *)values[4]);
2843  __pyx_v_r = ((PyArrayObject *)values[5]);
2844  }
2845  goto __pyx_L4_argument_unpacking_done;
2846  __pyx_L5_argtuple_error:;
2847  __Pyx_RaiseArgtupleInvalid("diffusionSin2D_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 70, __pyx_L3_error)
2848  __pyx_L3_error:;
2849  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
2850  __Pyx_RefNannyFinishContext();
2851  return NULL;
2852  __pyx_L4_argument_unpacking_done:;
2853  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 70, __pyx_L1_error)
2854  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 70, __pyx_L1_error)
2855  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 70, __pyx_L1_error)
2856  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 70, __pyx_L1_error)
2857  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 70, __pyx_L1_error)
2858  __pyx_r = __pyx_pf_20canalyticalSolutions_10diffusionSin2D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
2859 
2860  /* function exit code */
2861  goto __pyx_L0;
2862  __pyx_L1_error:;
2863  __pyx_r = NULL;
2864  __pyx_L0:;
2865  __Pyx_RefNannyFinishContext();
2866  return __pyx_r;
2867 }
2868 
2869 static PyObject *__pyx_pf_20canalyticalSolutions_10diffusionSin2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
2870  PyObject *__pyx_r = NULL;
2871  __Pyx_RefNannyDeclarations
2872  PyObject *__pyx_t_1 = NULL;
2873  PyObject *__pyx_t_2 = NULL;
2874  PyObject *__pyx_t_3 = NULL;
2875  int __pyx_t_4;
2876  int __pyx_lineno = 0;
2877  const char *__pyx_filename = NULL;
2878  int __pyx_clineno = 0;
2879  __Pyx_RefNannySetupContext("diffusionSin2D_r", 0);
2880 
2881  /* "canalyticalSolutions.pyx":71
2882  *
2883  * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
2884  * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
2885  *
2886  *
2887  */
2888  __Pyx_XDECREF(__pyx_r);
2889  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)
2890  __Pyx_GOTREF(__pyx_t_1);
2891  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
2892  __Pyx_GOTREF(__pyx_t_2);
2893  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error)
2894  __Pyx_GOTREF(__pyx_t_3);
2895  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2896  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2897  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L1_error)
2898  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2899  __pyx_t_3 = __Pyx_PyInt_From_int(diffusionSin2D_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error)
2900  __Pyx_GOTREF(__pyx_t_3);
2901  __pyx_r = __pyx_t_3;
2902  __pyx_t_3 = 0;
2903  goto __pyx_L0;
2904 
2905  /* "canalyticalSolutions.pyx":70
2906  *
2907  *
2908  * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
2909  * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
2910  *
2911  */
2912 
2913  /* function exit code */
2914  __pyx_L1_error:;
2915  __Pyx_XDECREF(__pyx_t_1);
2916  __Pyx_XDECREF(__pyx_t_2);
2917  __Pyx_XDECREF(__pyx_t_3);
2918  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
2919  __pyx_r = NULL;
2920  __pyx_L0:;
2921  __Pyx_XGIVEREF(__pyx_r);
2922  __Pyx_RefNannyFinishContext();
2923  return __pyx_r;
2924 }
2925 
2926 /* "canalyticalSolutions.pyx":74
2927  *
2928  *
2929  * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
2930  * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
2931  *
2932  */
2933 
2934 /* Python wrapper */
2935 static PyObject *__pyx_pw_20canalyticalSolutions_13diffusionSin3D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2936 static PyMethodDef __pyx_mdef_20canalyticalSolutions_13diffusionSin3D_r = {"diffusionSin3D_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_13diffusionSin3D_r, METH_VARARGS|METH_KEYWORDS, 0};
2937 static PyObject *__pyx_pw_20canalyticalSolutions_13diffusionSin3D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2938  PyArrayObject *__pyx_v_iwork = 0;
2939  PyArrayObject *__pyx_v_rwork = 0;
2940  double __pyx_v_t;
2941  PyArrayObject *__pyx_v_x = 0;
2942  PyArrayObject *__pyx_v_u = 0;
2943  PyArrayObject *__pyx_v_r = 0;
2944  int __pyx_lineno = 0;
2945  const char *__pyx_filename = NULL;
2946  int __pyx_clineno = 0;
2947  PyObject *__pyx_r = 0;
2948  __Pyx_RefNannyDeclarations
2949  __Pyx_RefNannySetupContext("diffusionSin3D_r (wrapper)", 0);
2950  {
2951  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
2952  PyObject* values[6] = {0,0,0,0,0,0};
2953  if (unlikely(__pyx_kwds)) {
2954  Py_ssize_t kw_args;
2955  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2956  switch (pos_args) {
2957  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
2958  CYTHON_FALLTHROUGH;
2959  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
2960  CYTHON_FALLTHROUGH;
2961  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
2962  CYTHON_FALLTHROUGH;
2963  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2964  CYTHON_FALLTHROUGH;
2965  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2966  CYTHON_FALLTHROUGH;
2967  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2968  CYTHON_FALLTHROUGH;
2969  case 0: break;
2970  default: goto __pyx_L5_argtuple_error;
2971  }
2972  kw_args = PyDict_Size(__pyx_kwds);
2973  switch (pos_args) {
2974  case 0:
2975  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
2976  else goto __pyx_L5_argtuple_error;
2977  CYTHON_FALLTHROUGH;
2978  case 1:
2979  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
2980  else {
2981  __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, 1); __PYX_ERR(0, 74, __pyx_L3_error)
2982  }
2983  CYTHON_FALLTHROUGH;
2984  case 2:
2985  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
2986  else {
2987  __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, 2); __PYX_ERR(0, 74, __pyx_L3_error)
2988  }
2989  CYTHON_FALLTHROUGH;
2990  case 3:
2991  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2992  else {
2993  __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, 3); __PYX_ERR(0, 74, __pyx_L3_error)
2994  }
2995  CYTHON_FALLTHROUGH;
2996  case 4:
2997  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
2998  else {
2999  __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, 4); __PYX_ERR(0, 74, __pyx_L3_error)
3000  }
3001  CYTHON_FALLTHROUGH;
3002  case 5:
3003  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
3004  else {
3005  __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, 5); __PYX_ERR(0, 74, __pyx_L3_error)
3006  }
3007  }
3008  if (unlikely(kw_args > 0)) {
3009  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diffusionSin3D_r") < 0)) __PYX_ERR(0, 74, __pyx_L3_error)
3010  }
3011  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
3012  goto __pyx_L5_argtuple_error;
3013  } else {
3014  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3015  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3016  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3017  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3018  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3019  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3020  }
3021  __pyx_v_iwork = ((PyArrayObject *)values[0]);
3022  __pyx_v_rwork = ((PyArrayObject *)values[1]);
3023  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 74, __pyx_L3_error)
3024  __pyx_v_x = ((PyArrayObject *)values[3]);
3025  __pyx_v_u = ((PyArrayObject *)values[4]);
3026  __pyx_v_r = ((PyArrayObject *)values[5]);
3027  }
3028  goto __pyx_L4_argument_unpacking_done;
3029  __pyx_L5_argtuple_error:;
3030  __Pyx_RaiseArgtupleInvalid("diffusionSin3D_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 74, __pyx_L3_error)
3031  __pyx_L3_error:;
3032  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
3033  __Pyx_RefNannyFinishContext();
3034  return NULL;
3035  __pyx_L4_argument_unpacking_done:;
3036  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 74, __pyx_L1_error)
3037  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 74, __pyx_L1_error)
3038  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 74, __pyx_L1_error)
3039  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 74, __pyx_L1_error)
3040  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 74, __pyx_L1_error)
3041  __pyx_r = __pyx_pf_20canalyticalSolutions_12diffusionSin3D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
3042 
3043  /* function exit code */
3044  goto __pyx_L0;
3045  __pyx_L1_error:;
3046  __pyx_r = NULL;
3047  __pyx_L0:;
3048  __Pyx_RefNannyFinishContext();
3049  return __pyx_r;
3050 }
3051 
3052 static PyObject *__pyx_pf_20canalyticalSolutions_12diffusionSin3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
3053  PyObject *__pyx_r = NULL;
3054  __Pyx_RefNannyDeclarations
3055  PyObject *__pyx_t_1 = NULL;
3056  PyObject *__pyx_t_2 = NULL;
3057  PyObject *__pyx_t_3 = NULL;
3058  int __pyx_t_4;
3059  int __pyx_lineno = 0;
3060  const char *__pyx_filename = NULL;
3061  int __pyx_clineno = 0;
3062  __Pyx_RefNannySetupContext("diffusionSin3D_r", 0);
3063 
3064  /* "canalyticalSolutions.pyx":75
3065  *
3066  * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
3067  * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
3068  *
3069  *
3070  */
3071  __Pyx_XDECREF(__pyx_r);
3072  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
3073  __Pyx_GOTREF(__pyx_t_1);
3074  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error)
3075  __Pyx_GOTREF(__pyx_t_2);
3076  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error)
3077  __Pyx_GOTREF(__pyx_t_3);
3078  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3079  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3080  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 75, __pyx_L1_error)
3081  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3082  __pyx_t_3 = __Pyx_PyInt_From_int(diffusionSin3D_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error)
3083  __Pyx_GOTREF(__pyx_t_3);
3084  __pyx_r = __pyx_t_3;
3085  __pyx_t_3 = 0;
3086  goto __pyx_L0;
3087 
3088  /* "canalyticalSolutions.pyx":74
3089  *
3090  *
3091  * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
3092  * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
3093  *
3094  */
3095 
3096  /* function exit code */
3097  __pyx_L1_error:;
3098  __Pyx_XDECREF(__pyx_t_1);
3099  __Pyx_XDECREF(__pyx_t_2);
3100  __Pyx_XDECREF(__pyx_t_3);
3101  __Pyx_AddTraceback("canalyticalSolutions.diffusionSin3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
3102  __pyx_r = NULL;
3103  __pyx_L0:;
3104  __Pyx_XGIVEREF(__pyx_r);
3105  __Pyx_RefNannyFinishContext();
3106  return __pyx_r;
3107 }
3108 
3109 /* "canalyticalSolutions.pyx":78
3110  *
3111  *
3112  * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
3113  * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
3114  *
3115  */
3116 
3117 /* Python wrapper */
3118 static PyObject *__pyx_pw_20canalyticalSolutions_15LinearAD_DiracIC(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3119 static PyMethodDef __pyx_mdef_20canalyticalSolutions_15LinearAD_DiracIC = {"LinearAD_DiracIC", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_15LinearAD_DiracIC, METH_VARARGS|METH_KEYWORDS, 0};
3120 static PyObject *__pyx_pw_20canalyticalSolutions_15LinearAD_DiracIC(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3121  PyArrayObject *__pyx_v_iwork = 0;
3122  PyArrayObject *__pyx_v_rwork = 0;
3123  double __pyx_v_t;
3124  PyArrayObject *__pyx_v_x = 0;
3125  PyArrayObject *__pyx_v_u = 0;
3126  int __pyx_lineno = 0;
3127  const char *__pyx_filename = NULL;
3128  int __pyx_clineno = 0;
3129  PyObject *__pyx_r = 0;
3130  __Pyx_RefNannyDeclarations
3131  __Pyx_RefNannySetupContext("LinearAD_DiracIC (wrapper)", 0);
3132  {
3133  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
3134  PyObject* values[5] = {0,0,0,0,0};
3135  if (unlikely(__pyx_kwds)) {
3136  Py_ssize_t kw_args;
3137  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3138  switch (pos_args) {
3139  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3140  CYTHON_FALLTHROUGH;
3141  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3142  CYTHON_FALLTHROUGH;
3143  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3144  CYTHON_FALLTHROUGH;
3145  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3146  CYTHON_FALLTHROUGH;
3147  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3148  CYTHON_FALLTHROUGH;
3149  case 0: break;
3150  default: goto __pyx_L5_argtuple_error;
3151  }
3152  kw_args = PyDict_Size(__pyx_kwds);
3153  switch (pos_args) {
3154  case 0:
3155  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
3156  else goto __pyx_L5_argtuple_error;
3157  CYTHON_FALLTHROUGH;
3158  case 1:
3159  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
3160  else {
3161  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, 1); __PYX_ERR(0, 78, __pyx_L3_error)
3162  }
3163  CYTHON_FALLTHROUGH;
3164  case 2:
3165  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3166  else {
3167  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, 2); __PYX_ERR(0, 78, __pyx_L3_error)
3168  }
3169  CYTHON_FALLTHROUGH;
3170  case 3:
3171  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3172  else {
3173  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, 3); __PYX_ERR(0, 78, __pyx_L3_error)
3174  }
3175  CYTHON_FALLTHROUGH;
3176  case 4:
3177  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
3178  else {
3179  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, 4); __PYX_ERR(0, 78, __pyx_L3_error)
3180  }
3181  }
3182  if (unlikely(kw_args > 0)) {
3183  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearAD_DiracIC") < 0)) __PYX_ERR(0, 78, __pyx_L3_error)
3184  }
3185  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
3186  goto __pyx_L5_argtuple_error;
3187  } else {
3188  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3189  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3190  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3191  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3192  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3193  }
3194  __pyx_v_iwork = ((PyArrayObject *)values[0]);
3195  __pyx_v_rwork = ((PyArrayObject *)values[1]);
3196  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
3197  __pyx_v_x = ((PyArrayObject *)values[3]);
3198  __pyx_v_u = ((PyArrayObject *)values[4]);
3199  }
3200  goto __pyx_L4_argument_unpacking_done;
3201  __pyx_L5_argtuple_error:;
3202  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 78, __pyx_L3_error)
3203  __pyx_L3_error:;
3204  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
3205  __Pyx_RefNannyFinishContext();
3206  return NULL;
3207  __pyx_L4_argument_unpacking_done:;
3208  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 78, __pyx_L1_error)
3209  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 78, __pyx_L1_error)
3210  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 78, __pyx_L1_error)
3211  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 78, __pyx_L1_error)
3212  __pyx_r = __pyx_pf_20canalyticalSolutions_14LinearAD_DiracIC(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
3213 
3214  /* function exit code */
3215  goto __pyx_L0;
3216  __pyx_L1_error:;
3217  __pyx_r = NULL;
3218  __pyx_L0:;
3219  __Pyx_RefNannyFinishContext();
3220  return __pyx_r;
3221 }
3222 
3223 static PyObject *__pyx_pf_20canalyticalSolutions_14LinearAD_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
3224  PyObject *__pyx_r = NULL;
3225  __Pyx_RefNannyDeclarations
3226  PyObject *__pyx_t_1 = NULL;
3227  PyObject *__pyx_t_2 = NULL;
3228  PyObject *__pyx_t_3 = NULL;
3229  int __pyx_t_4;
3230  int __pyx_lineno = 0;
3231  const char *__pyx_filename = NULL;
3232  int __pyx_clineno = 0;
3233  __Pyx_RefNannySetupContext("LinearAD_DiracIC", 0);
3234 
3235  /* "canalyticalSolutions.pyx":79
3236  *
3237  * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
3238  * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
3239  *
3240  *
3241  */
3242  __Pyx_XDECREF(__pyx_r);
3243  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
3244  __Pyx_GOTREF(__pyx_t_1);
3245  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
3246  __Pyx_GOTREF(__pyx_t_2);
3247  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
3248  __Pyx_GOTREF(__pyx_t_3);
3249  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3250  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3251  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 79, __pyx_L1_error)
3252  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3253  __pyx_t_3 = __Pyx_PyInt_From_int(LinearAD_DiracIC(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
3254  __Pyx_GOTREF(__pyx_t_3);
3255  __pyx_r = __pyx_t_3;
3256  __pyx_t_3 = 0;
3257  goto __pyx_L0;
3258 
3259  /* "canalyticalSolutions.pyx":78
3260  *
3261  *
3262  * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
3263  * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
3264  *
3265  */
3266 
3267  /* function exit code */
3268  __pyx_L1_error:;
3269  __Pyx_XDECREF(__pyx_t_1);
3270  __Pyx_XDECREF(__pyx_t_2);
3271  __Pyx_XDECREF(__pyx_t_3);
3272  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
3273  __pyx_r = NULL;
3274  __pyx_L0:;
3275  __Pyx_XGIVEREF(__pyx_r);
3276  __Pyx_RefNannyFinishContext();
3277  return __pyx_r;
3278 }
3279 
3280 /* "canalyticalSolutions.pyx":82
3281  *
3282  *
3283  * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
3284  * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
3285  *
3286  */
3287 
3288 /* Python wrapper */
3289 static PyObject *__pyx_pw_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3290 static PyMethodDef __pyx_mdef_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity = {"LinearAD_DiracIC_advectiveVelocity", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity, METH_VARARGS|METH_KEYWORDS, 0};
3291 static PyObject *__pyx_pw_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3292  PyArrayObject *__pyx_v_iwork = 0;
3293  PyArrayObject *__pyx_v_rwork = 0;
3294  double __pyx_v_t;
3295  PyArrayObject *__pyx_v_x = 0;
3296  PyArrayObject *__pyx_v_f = 0;
3297  int __pyx_lineno = 0;
3298  const char *__pyx_filename = NULL;
3299  int __pyx_clineno = 0;
3300  PyObject *__pyx_r = 0;
3301  __Pyx_RefNannyDeclarations
3302  __Pyx_RefNannySetupContext("LinearAD_DiracIC_advectiveVelocity (wrapper)", 0);
3303  {
3304  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_f,0};
3305  PyObject* values[5] = {0,0,0,0,0};
3306  if (unlikely(__pyx_kwds)) {
3307  Py_ssize_t kw_args;
3308  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3309  switch (pos_args) {
3310  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3311  CYTHON_FALLTHROUGH;
3312  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3313  CYTHON_FALLTHROUGH;
3314  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3315  CYTHON_FALLTHROUGH;
3316  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3317  CYTHON_FALLTHROUGH;
3318  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3319  CYTHON_FALLTHROUGH;
3320  case 0: break;
3321  default: goto __pyx_L5_argtuple_error;
3322  }
3323  kw_args = PyDict_Size(__pyx_kwds);
3324  switch (pos_args) {
3325  case 0:
3326  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
3327  else goto __pyx_L5_argtuple_error;
3328  CYTHON_FALLTHROUGH;
3329  case 1:
3330  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
3331  else {
3332  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, 1); __PYX_ERR(0, 82, __pyx_L3_error)
3333  }
3334  CYTHON_FALLTHROUGH;
3335  case 2:
3336  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3337  else {
3338  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, 2); __PYX_ERR(0, 82, __pyx_L3_error)
3339  }
3340  CYTHON_FALLTHROUGH;
3341  case 3:
3342  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3343  else {
3344  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, 3); __PYX_ERR(0, 82, __pyx_L3_error)
3345  }
3346  CYTHON_FALLTHROUGH;
3347  case 4:
3348  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
3349  else {
3350  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, 4); __PYX_ERR(0, 82, __pyx_L3_error)
3351  }
3352  }
3353  if (unlikely(kw_args > 0)) {
3354  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearAD_DiracIC_advectiveVelocity") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
3355  }
3356  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
3357  goto __pyx_L5_argtuple_error;
3358  } else {
3359  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3360  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3361  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3362  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3363  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3364  }
3365  __pyx_v_iwork = ((PyArrayObject *)values[0]);
3366  __pyx_v_rwork = ((PyArrayObject *)values[1]);
3367  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error)
3368  __pyx_v_x = ((PyArrayObject *)values[3]);
3369  __pyx_v_f = ((PyArrayObject *)values[4]);
3370  }
3371  goto __pyx_L4_argument_unpacking_done;
3372  __pyx_L5_argtuple_error:;
3373  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_advectiveVelocity", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error)
3374  __pyx_L3_error:;
3375  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
3376  __Pyx_RefNannyFinishContext();
3377  return NULL;
3378  __pyx_L4_argument_unpacking_done:;
3379  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 82, __pyx_L1_error)
3380  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 82, __pyx_L1_error)
3381  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 82, __pyx_L1_error)
3382  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 82, __pyx_L1_error)
3383  __pyx_r = __pyx_pf_20canalyticalSolutions_16LinearAD_DiracIC_advectiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
3384 
3385  /* function exit code */
3386  goto __pyx_L0;
3387  __pyx_L1_error:;
3388  __pyx_r = NULL;
3389  __pyx_L0:;
3390  __Pyx_RefNannyFinishContext();
3391  return __pyx_r;
3392 }
3393 
3394 static PyObject *__pyx_pf_20canalyticalSolutions_16LinearAD_DiracIC_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
3395  PyObject *__pyx_r = NULL;
3396  __Pyx_RefNannyDeclarations
3397  PyObject *__pyx_t_1 = NULL;
3398  PyObject *__pyx_t_2 = NULL;
3399  PyObject *__pyx_t_3 = NULL;
3400  int __pyx_t_4;
3401  int __pyx_lineno = 0;
3402  const char *__pyx_filename = NULL;
3403  int __pyx_clineno = 0;
3404  __Pyx_RefNannySetupContext("LinearAD_DiracIC_advectiveVelocity", 0);
3405 
3406  /* "canalyticalSolutions.pyx":83
3407  *
3408  * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
3409  * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
3410  *
3411  *
3412  */
3413  __Pyx_XDECREF(__pyx_r);
3414  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
3415  __Pyx_GOTREF(__pyx_t_1);
3416  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error)
3417  __Pyx_GOTREF(__pyx_t_2);
3418  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
3419  __Pyx_GOTREF(__pyx_t_3);
3420  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3421  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3422  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L1_error)
3423  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3424  __pyx_t_3 = __Pyx_PyInt_From_int(LinearAD_DiracIC_advectiveVelocity(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_f->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
3425  __Pyx_GOTREF(__pyx_t_3);
3426  __pyx_r = __pyx_t_3;
3427  __pyx_t_3 = 0;
3428  goto __pyx_L0;
3429 
3430  /* "canalyticalSolutions.pyx":82
3431  *
3432  *
3433  * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
3434  * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
3435  *
3436  */
3437 
3438  /* function exit code */
3439  __pyx_L1_error:;
3440  __Pyx_XDECREF(__pyx_t_1);
3441  __Pyx_XDECREF(__pyx_t_2);
3442  __Pyx_XDECREF(__pyx_t_3);
3443  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
3444  __pyx_r = NULL;
3445  __pyx_L0:;
3446  __Pyx_XGIVEREF(__pyx_r);
3447  __Pyx_RefNannyFinishContext();
3448  return __pyx_r;
3449 }
3450 
3451 /* "canalyticalSolutions.pyx":86
3452  *
3453  *
3454  * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
3455  * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
3456  *
3457  */
3458 
3459 /* Python wrapper */
3460 static PyObject *__pyx_pw_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3461 static PyMethodDef __pyx_mdef_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity = {"LinearAD_DiracIC_diffusiveVelocity", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity, METH_VARARGS|METH_KEYWORDS, 0};
3462 static PyObject *__pyx_pw_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3463  PyArrayObject *__pyx_v_iwork = 0;
3464  PyArrayObject *__pyx_v_rwork = 0;
3465  double __pyx_v_t;
3466  PyArrayObject *__pyx_v_x = 0;
3467  PyArrayObject *__pyx_v_f = 0;
3468  int __pyx_lineno = 0;
3469  const char *__pyx_filename = NULL;
3470  int __pyx_clineno = 0;
3471  PyObject *__pyx_r = 0;
3472  __Pyx_RefNannyDeclarations
3473  __Pyx_RefNannySetupContext("LinearAD_DiracIC_diffusiveVelocity (wrapper)", 0);
3474  {
3475  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_f,0};
3476  PyObject* values[5] = {0,0,0,0,0};
3477  if (unlikely(__pyx_kwds)) {
3478  Py_ssize_t kw_args;
3479  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3480  switch (pos_args) {
3481  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3482  CYTHON_FALLTHROUGH;
3483  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3484  CYTHON_FALLTHROUGH;
3485  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3486  CYTHON_FALLTHROUGH;
3487  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3488  CYTHON_FALLTHROUGH;
3489  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3490  CYTHON_FALLTHROUGH;
3491  case 0: break;
3492  default: goto __pyx_L5_argtuple_error;
3493  }
3494  kw_args = PyDict_Size(__pyx_kwds);
3495  switch (pos_args) {
3496  case 0:
3497  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
3498  else goto __pyx_L5_argtuple_error;
3499  CYTHON_FALLTHROUGH;
3500  case 1:
3501  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
3502  else {
3503  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, 1); __PYX_ERR(0, 86, __pyx_L3_error)
3504  }
3505  CYTHON_FALLTHROUGH;
3506  case 2:
3507  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3508  else {
3509  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, 2); __PYX_ERR(0, 86, __pyx_L3_error)
3510  }
3511  CYTHON_FALLTHROUGH;
3512  case 3:
3513  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3514  else {
3515  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, 3); __PYX_ERR(0, 86, __pyx_L3_error)
3516  }
3517  CYTHON_FALLTHROUGH;
3518  case 4:
3519  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
3520  else {
3521  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, 4); __PYX_ERR(0, 86, __pyx_L3_error)
3522  }
3523  }
3524  if (unlikely(kw_args > 0)) {
3525  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearAD_DiracIC_diffusiveVelocity") < 0)) __PYX_ERR(0, 86, __pyx_L3_error)
3526  }
3527  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
3528  goto __pyx_L5_argtuple_error;
3529  } else {
3530  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3531  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3532  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3533  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3534  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3535  }
3536  __pyx_v_iwork = ((PyArrayObject *)values[0]);
3537  __pyx_v_rwork = ((PyArrayObject *)values[1]);
3538  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 86, __pyx_L3_error)
3539  __pyx_v_x = ((PyArrayObject *)values[3]);
3540  __pyx_v_f = ((PyArrayObject *)values[4]);
3541  }
3542  goto __pyx_L4_argument_unpacking_done;
3543  __pyx_L5_argtuple_error:;
3544  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_diffusiveVelocity", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 86, __pyx_L3_error)
3545  __pyx_L3_error:;
3546  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
3547  __Pyx_RefNannyFinishContext();
3548  return NULL;
3549  __pyx_L4_argument_unpacking_done:;
3550  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 86, __pyx_L1_error)
3551  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 86, __pyx_L1_error)
3552  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 86, __pyx_L1_error)
3553  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 86, __pyx_L1_error)
3554  __pyx_r = __pyx_pf_20canalyticalSolutions_18LinearAD_DiracIC_diffusiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
3555 
3556  /* function exit code */
3557  goto __pyx_L0;
3558  __pyx_L1_error:;
3559  __pyx_r = NULL;
3560  __pyx_L0:;
3561  __Pyx_RefNannyFinishContext();
3562  return __pyx_r;
3563 }
3564 
3565 static PyObject *__pyx_pf_20canalyticalSolutions_18LinearAD_DiracIC_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
3566  PyObject *__pyx_r = NULL;
3567  __Pyx_RefNannyDeclarations
3568  PyObject *__pyx_t_1 = NULL;
3569  PyObject *__pyx_t_2 = NULL;
3570  PyObject *__pyx_t_3 = NULL;
3571  int __pyx_t_4;
3572  int __pyx_lineno = 0;
3573  const char *__pyx_filename = NULL;
3574  int __pyx_clineno = 0;
3575  __Pyx_RefNannySetupContext("LinearAD_DiracIC_diffusiveVelocity", 0);
3576 
3577  /* "canalyticalSolutions.pyx":87
3578  *
3579  * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
3580  * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
3581  *
3582  *
3583  */
3584  __Pyx_XDECREF(__pyx_r);
3585  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
3586  __Pyx_GOTREF(__pyx_t_1);
3587  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
3588  __Pyx_GOTREF(__pyx_t_2);
3589  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error)
3590  __Pyx_GOTREF(__pyx_t_3);
3591  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3592  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3593  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L1_error)
3594  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3595  __pyx_t_3 = __Pyx_PyInt_From_int(LinearAD_DiracIC_diffusiveVelocity(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_f->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 87, __pyx_L1_error)
3596  __Pyx_GOTREF(__pyx_t_3);
3597  __pyx_r = __pyx_t_3;
3598  __pyx_t_3 = 0;
3599  goto __pyx_L0;
3600 
3601  /* "canalyticalSolutions.pyx":86
3602  *
3603  *
3604  * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
3605  * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
3606  *
3607  */
3608 
3609  /* function exit code */
3610  __pyx_L1_error:;
3611  __Pyx_XDECREF(__pyx_t_1);
3612  __Pyx_XDECREF(__pyx_t_2);
3613  __Pyx_XDECREF(__pyx_t_3);
3614  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
3615  __pyx_r = NULL;
3616  __pyx_L0:;
3617  __Pyx_XGIVEREF(__pyx_r);
3618  __Pyx_RefNannyFinishContext();
3619  return __pyx_r;
3620 }
3621 
3622 /* "canalyticalSolutions.pyx":90
3623  *
3624  *
3625  * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
3626  * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
3627  *
3628  */
3629 
3630 /* Python wrapper */
3631 static PyObject *__pyx_pw_20canalyticalSolutions_21LinearAD_DiracIC_du(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3632 static PyMethodDef __pyx_mdef_20canalyticalSolutions_21LinearAD_DiracIC_du = {"LinearAD_DiracIC_du", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_21LinearAD_DiracIC_du, METH_VARARGS|METH_KEYWORDS, 0};
3633 static PyObject *__pyx_pw_20canalyticalSolutions_21LinearAD_DiracIC_du(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3634  PyArrayObject *__pyx_v_iwork = 0;
3635  PyArrayObject *__pyx_v_rwork = 0;
3636  double __pyx_v_t;
3637  PyArrayObject *__pyx_v_x = 0;
3638  PyArrayObject *__pyx_v_du = 0;
3639  int __pyx_lineno = 0;
3640  const char *__pyx_filename = NULL;
3641  int __pyx_clineno = 0;
3642  PyObject *__pyx_r = 0;
3643  __Pyx_RefNannyDeclarations
3644  __Pyx_RefNannySetupContext("LinearAD_DiracIC_du (wrapper)", 0);
3645  {
3646  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_du,0};
3647  PyObject* values[5] = {0,0,0,0,0};
3648  if (unlikely(__pyx_kwds)) {
3649  Py_ssize_t kw_args;
3650  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3651  switch (pos_args) {
3652  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3653  CYTHON_FALLTHROUGH;
3654  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3655  CYTHON_FALLTHROUGH;
3656  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3657  CYTHON_FALLTHROUGH;
3658  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3659  CYTHON_FALLTHROUGH;
3660  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3661  CYTHON_FALLTHROUGH;
3662  case 0: break;
3663  default: goto __pyx_L5_argtuple_error;
3664  }
3665  kw_args = PyDict_Size(__pyx_kwds);
3666  switch (pos_args) {
3667  case 0:
3668  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
3669  else goto __pyx_L5_argtuple_error;
3670  CYTHON_FALLTHROUGH;
3671  case 1:
3672  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
3673  else {
3674  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, 1); __PYX_ERR(0, 90, __pyx_L3_error)
3675  }
3676  CYTHON_FALLTHROUGH;
3677  case 2:
3678  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3679  else {
3680  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, 2); __PYX_ERR(0, 90, __pyx_L3_error)
3681  }
3682  CYTHON_FALLTHROUGH;
3683  case 3:
3684  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3685  else {
3686  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, 3); __PYX_ERR(0, 90, __pyx_L3_error)
3687  }
3688  CYTHON_FALLTHROUGH;
3689  case 4:
3690  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_du)) != 0)) kw_args--;
3691  else {
3692  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, 4); __PYX_ERR(0, 90, __pyx_L3_error)
3693  }
3694  }
3695  if (unlikely(kw_args > 0)) {
3696  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearAD_DiracIC_du") < 0)) __PYX_ERR(0, 90, __pyx_L3_error)
3697  }
3698  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
3699  goto __pyx_L5_argtuple_error;
3700  } else {
3701  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3702  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3703  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3704  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3705  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3706  }
3707  __pyx_v_iwork = ((PyArrayObject *)values[0]);
3708  __pyx_v_rwork = ((PyArrayObject *)values[1]);
3709  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L3_error)
3710  __pyx_v_x = ((PyArrayObject *)values[3]);
3711  __pyx_v_du = ((PyArrayObject *)values[4]);
3712  }
3713  goto __pyx_L4_argument_unpacking_done;
3714  __pyx_L5_argtuple_error:;
3715  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_du", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 90, __pyx_L3_error)
3716  __pyx_L3_error:;
3717  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
3718  __Pyx_RefNannyFinishContext();
3719  return NULL;
3720  __pyx_L4_argument_unpacking_done:;
3721  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 90, __pyx_L1_error)
3722  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 90, __pyx_L1_error)
3723  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 90, __pyx_L1_error)
3724  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_du), __pyx_ptype_5numpy_ndarray, 1, "du", 0))) __PYX_ERR(0, 90, __pyx_L1_error)
3725  __pyx_r = __pyx_pf_20canalyticalSolutions_20LinearAD_DiracIC_du(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_du);
3726 
3727  /* function exit code */
3728  goto __pyx_L0;
3729  __pyx_L1_error:;
3730  __pyx_r = NULL;
3731  __pyx_L0:;
3732  __Pyx_RefNannyFinishContext();
3733  return __pyx_r;
3734 }
3735 
3736 static PyObject *__pyx_pf_20canalyticalSolutions_20LinearAD_DiracIC_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du) {
3737  PyObject *__pyx_r = NULL;
3738  __Pyx_RefNannyDeclarations
3739  PyObject *__pyx_t_1 = NULL;
3740  PyObject *__pyx_t_2 = NULL;
3741  PyObject *__pyx_t_3 = NULL;
3742  int __pyx_t_4;
3743  int __pyx_lineno = 0;
3744  const char *__pyx_filename = NULL;
3745  int __pyx_clineno = 0;
3746  __Pyx_RefNannySetupContext("LinearAD_DiracIC_du", 0);
3747 
3748  /* "canalyticalSolutions.pyx":91
3749  *
3750  * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int:
3751  * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data) # <<<<<<<<<<<<<<
3752  *
3753  *
3754  */
3755  __Pyx_XDECREF(__pyx_r);
3756  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)
3757  __Pyx_GOTREF(__pyx_t_1);
3758  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
3759  __Pyx_GOTREF(__pyx_t_2);
3760  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
3761  __Pyx_GOTREF(__pyx_t_3);
3762  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3763  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3764  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
3765  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3766  __pyx_t_3 = __Pyx_PyInt_From_int(LinearAD_DiracIC_du(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_du->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
3767  __Pyx_GOTREF(__pyx_t_3);
3768  __pyx_r = __pyx_t_3;
3769  __pyx_t_3 = 0;
3770  goto __pyx_L0;
3771 
3772  /* "canalyticalSolutions.pyx":90
3773  *
3774  *
3775  * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
3776  * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
3777  *
3778  */
3779 
3780  /* function exit code */
3781  __pyx_L1_error:;
3782  __Pyx_XDECREF(__pyx_t_1);
3783  __Pyx_XDECREF(__pyx_t_2);
3784  __Pyx_XDECREF(__pyx_t_3);
3785  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
3786  __pyx_r = NULL;
3787  __pyx_L0:;
3788  __Pyx_XGIVEREF(__pyx_r);
3789  __Pyx_RefNannyFinishContext();
3790  return __pyx_r;
3791 }
3792 
3793 /* "canalyticalSolutions.pyx":94
3794  *
3795  *
3796  * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
3797  * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
3798  *
3799  */
3800 
3801 /* Python wrapper */
3802 static PyObject *__pyx_pw_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3803 static PyMethodDef __pyx_mdef_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity = {"LinearAD_DiracIC_totalVelocity", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity, METH_VARARGS|METH_KEYWORDS, 0};
3804 static PyObject *__pyx_pw_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3805  PyArrayObject *__pyx_v_iwork = 0;
3806  PyArrayObject *__pyx_v_rwork = 0;
3807  double __pyx_v_t;
3808  PyArrayObject *__pyx_v_x = 0;
3809  PyArrayObject *__pyx_v_u = 0;
3810  int __pyx_lineno = 0;
3811  const char *__pyx_filename = NULL;
3812  int __pyx_clineno = 0;
3813  PyObject *__pyx_r = 0;
3814  __Pyx_RefNannyDeclarations
3815  __Pyx_RefNannySetupContext("LinearAD_DiracIC_totalVelocity (wrapper)", 0);
3816  {
3817  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
3818  PyObject* values[5] = {0,0,0,0,0};
3819  if (unlikely(__pyx_kwds)) {
3820  Py_ssize_t kw_args;
3821  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3822  switch (pos_args) {
3823  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3824  CYTHON_FALLTHROUGH;
3825  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3826  CYTHON_FALLTHROUGH;
3827  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3828  CYTHON_FALLTHROUGH;
3829  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3830  CYTHON_FALLTHROUGH;
3831  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3832  CYTHON_FALLTHROUGH;
3833  case 0: break;
3834  default: goto __pyx_L5_argtuple_error;
3835  }
3836  kw_args = PyDict_Size(__pyx_kwds);
3837  switch (pos_args) {
3838  case 0:
3839  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
3840  else goto __pyx_L5_argtuple_error;
3841  CYTHON_FALLTHROUGH;
3842  case 1:
3843  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
3844  else {
3845  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, 1); __PYX_ERR(0, 94, __pyx_L3_error)
3846  }
3847  CYTHON_FALLTHROUGH;
3848  case 2:
3849  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3850  else {
3851  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, 2); __PYX_ERR(0, 94, __pyx_L3_error)
3852  }
3853  CYTHON_FALLTHROUGH;
3854  case 3:
3855  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3856  else {
3857  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, 3); __PYX_ERR(0, 94, __pyx_L3_error)
3858  }
3859  CYTHON_FALLTHROUGH;
3860  case 4:
3861  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
3862  else {
3863  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, 4); __PYX_ERR(0, 94, __pyx_L3_error)
3864  }
3865  }
3866  if (unlikely(kw_args > 0)) {
3867  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearAD_DiracIC_totalVelocity") < 0)) __PYX_ERR(0, 94, __pyx_L3_error)
3868  }
3869  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
3870  goto __pyx_L5_argtuple_error;
3871  } else {
3872  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3873  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3874  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3875  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3876  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3877  }
3878  __pyx_v_iwork = ((PyArrayObject *)values[0]);
3879  __pyx_v_rwork = ((PyArrayObject *)values[1]);
3880  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 94, __pyx_L3_error)
3881  __pyx_v_x = ((PyArrayObject *)values[3]);
3882  __pyx_v_u = ((PyArrayObject *)values[4]);
3883  }
3884  goto __pyx_L4_argument_unpacking_done;
3885  __pyx_L5_argtuple_error:;
3886  __Pyx_RaiseArgtupleInvalid("LinearAD_DiracIC_totalVelocity", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 94, __pyx_L3_error)
3887  __pyx_L3_error:;
3888  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
3889  __Pyx_RefNannyFinishContext();
3890  return NULL;
3891  __pyx_L4_argument_unpacking_done:;
3892  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 94, __pyx_L1_error)
3893  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 94, __pyx_L1_error)
3894  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 94, __pyx_L1_error)
3895  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 94, __pyx_L1_error)
3896  __pyx_r = __pyx_pf_20canalyticalSolutions_22LinearAD_DiracIC_totalVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
3897 
3898  /* function exit code */
3899  goto __pyx_L0;
3900  __pyx_L1_error:;
3901  __pyx_r = NULL;
3902  __pyx_L0:;
3903  __Pyx_RefNannyFinishContext();
3904  return __pyx_r;
3905 }
3906 
3907 static PyObject *__pyx_pf_20canalyticalSolutions_22LinearAD_DiracIC_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
3908  PyObject *__pyx_r = NULL;
3909  __Pyx_RefNannyDeclarations
3910  PyObject *__pyx_t_1 = NULL;
3911  PyObject *__pyx_t_2 = NULL;
3912  PyObject *__pyx_t_3 = NULL;
3913  int __pyx_t_4;
3914  int __pyx_lineno = 0;
3915  const char *__pyx_filename = NULL;
3916  int __pyx_clineno = 0;
3917  __Pyx_RefNannySetupContext("LinearAD_DiracIC_totalVelocity", 0);
3918 
3919  /* "canalyticalSolutions.pyx":95
3920  *
3921  * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
3922  * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
3923  *
3924  *
3925  */
3926  __Pyx_XDECREF(__pyx_r);
3927  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error)
3928  __Pyx_GOTREF(__pyx_t_1);
3929  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error)
3930  __Pyx_GOTREF(__pyx_t_2);
3931  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error)
3932  __Pyx_GOTREF(__pyx_t_3);
3933  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3934  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3935  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error)
3936  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3937  __pyx_t_3 = __Pyx_PyInt_From_int(LinearAD_DiracIC_totalVelocity(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error)
3938  __Pyx_GOTREF(__pyx_t_3);
3939  __pyx_r = __pyx_t_3;
3940  __pyx_t_3 = 0;
3941  goto __pyx_L0;
3942 
3943  /* "canalyticalSolutions.pyx":94
3944  *
3945  *
3946  * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
3947  * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
3948  *
3949  */
3950 
3951  /* function exit code */
3952  __pyx_L1_error:;
3953  __Pyx_XDECREF(__pyx_t_1);
3954  __Pyx_XDECREF(__pyx_t_2);
3955  __Pyx_XDECREF(__pyx_t_3);
3956  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_DiracIC_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
3957  __pyx_r = NULL;
3958  __pyx_L0:;
3959  __Pyx_XGIVEREF(__pyx_r);
3960  __Pyx_RefNannyFinishContext();
3961  return __pyx_r;
3962 }
3963 
3964 /* "canalyticalSolutions.pyx":98
3965  *
3966  *
3967  * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
3968  * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
3969  *
3970  */
3971 
3972 /* Python wrapper */
3973 static PyObject *__pyx_pw_20canalyticalSolutions_25LinearAD_SteadyState(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3974 static PyMethodDef __pyx_mdef_20canalyticalSolutions_25LinearAD_SteadyState = {"LinearAD_SteadyState", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_25LinearAD_SteadyState, METH_VARARGS|METH_KEYWORDS, 0};
3975 static PyObject *__pyx_pw_20canalyticalSolutions_25LinearAD_SteadyState(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3976  PyArrayObject *__pyx_v_iwork = 0;
3977  PyArrayObject *__pyx_v_rwork = 0;
3978  double __pyx_v_t;
3979  PyArrayObject *__pyx_v_x = 0;
3980  PyArrayObject *__pyx_v_u = 0;
3981  int __pyx_lineno = 0;
3982  const char *__pyx_filename = NULL;
3983  int __pyx_clineno = 0;
3984  PyObject *__pyx_r = 0;
3985  __Pyx_RefNannyDeclarations
3986  __Pyx_RefNannySetupContext("LinearAD_SteadyState (wrapper)", 0);
3987  {
3988  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
3989  PyObject* values[5] = {0,0,0,0,0};
3990  if (unlikely(__pyx_kwds)) {
3991  Py_ssize_t kw_args;
3992  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3993  switch (pos_args) {
3994  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3995  CYTHON_FALLTHROUGH;
3996  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3997  CYTHON_FALLTHROUGH;
3998  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3999  CYTHON_FALLTHROUGH;
4000  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4001  CYTHON_FALLTHROUGH;
4002  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4003  CYTHON_FALLTHROUGH;
4004  case 0: break;
4005  default: goto __pyx_L5_argtuple_error;
4006  }
4007  kw_args = PyDict_Size(__pyx_kwds);
4008  switch (pos_args) {
4009  case 0:
4010  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
4011  else goto __pyx_L5_argtuple_error;
4012  CYTHON_FALLTHROUGH;
4013  case 1:
4014  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
4015  else {
4016  __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, 1); __PYX_ERR(0, 98, __pyx_L3_error)
4017  }
4018  CYTHON_FALLTHROUGH;
4019  case 2:
4020  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
4021  else {
4022  __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, 2); __PYX_ERR(0, 98, __pyx_L3_error)
4023  }
4024  CYTHON_FALLTHROUGH;
4025  case 3:
4026  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
4027  else {
4028  __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, 3); __PYX_ERR(0, 98, __pyx_L3_error)
4029  }
4030  CYTHON_FALLTHROUGH;
4031  case 4:
4032  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
4033  else {
4034  __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, 4); __PYX_ERR(0, 98, __pyx_L3_error)
4035  }
4036  }
4037  if (unlikely(kw_args > 0)) {
4038  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearAD_SteadyState") < 0)) __PYX_ERR(0, 98, __pyx_L3_error)
4039  }
4040  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
4041  goto __pyx_L5_argtuple_error;
4042  } else {
4043  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4044  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4045  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4046  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4047  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4048  }
4049  __pyx_v_iwork = ((PyArrayObject *)values[0]);
4050  __pyx_v_rwork = ((PyArrayObject *)values[1]);
4051  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L3_error)
4052  __pyx_v_x = ((PyArrayObject *)values[3]);
4053  __pyx_v_u = ((PyArrayObject *)values[4]);
4054  }
4055  goto __pyx_L4_argument_unpacking_done;
4056  __pyx_L5_argtuple_error:;
4057  __Pyx_RaiseArgtupleInvalid("LinearAD_SteadyState", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 98, __pyx_L3_error)
4058  __pyx_L3_error:;
4059  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
4060  __Pyx_RefNannyFinishContext();
4061  return NULL;
4062  __pyx_L4_argument_unpacking_done:;
4063  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 98, __pyx_L1_error)
4064  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 98, __pyx_L1_error)
4065  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 98, __pyx_L1_error)
4066  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 98, __pyx_L1_error)
4067  __pyx_r = __pyx_pf_20canalyticalSolutions_24LinearAD_SteadyState(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
4068 
4069  /* function exit code */
4070  goto __pyx_L0;
4071  __pyx_L1_error:;
4072  __pyx_r = NULL;
4073  __pyx_L0:;
4074  __Pyx_RefNannyFinishContext();
4075  return __pyx_r;
4076 }
4077 
4078 static PyObject *__pyx_pf_20canalyticalSolutions_24LinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
4079  PyObject *__pyx_r = NULL;
4080  __Pyx_RefNannyDeclarations
4081  PyObject *__pyx_t_1 = NULL;
4082  PyObject *__pyx_t_2 = NULL;
4083  PyObject *__pyx_t_3 = NULL;
4084  int __pyx_t_4;
4085  int __pyx_lineno = 0;
4086  const char *__pyx_filename = NULL;
4087  int __pyx_clineno = 0;
4088  __Pyx_RefNannySetupContext("LinearAD_SteadyState", 0);
4089 
4090  /* "canalyticalSolutions.pyx":99
4091  *
4092  * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
4093  * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
4094  *
4095  *
4096  */
4097  __Pyx_XDECREF(__pyx_r);
4098  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
4099  __Pyx_GOTREF(__pyx_t_1);
4100  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
4101  __Pyx_GOTREF(__pyx_t_2);
4102  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
4103  __Pyx_GOTREF(__pyx_t_3);
4104  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4105  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4106  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L1_error)
4107  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4108  __pyx_t_3 = __Pyx_PyInt_From_int(LinearAD_SteadyState(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
4109  __Pyx_GOTREF(__pyx_t_3);
4110  __pyx_r = __pyx_t_3;
4111  __pyx_t_3 = 0;
4112  goto __pyx_L0;
4113 
4114  /* "canalyticalSolutions.pyx":98
4115  *
4116  *
4117  * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
4118  * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
4119  *
4120  */
4121 
4122  /* function exit code */
4123  __pyx_L1_error:;
4124  __Pyx_XDECREF(__pyx_t_1);
4125  __Pyx_XDECREF(__pyx_t_2);
4126  __Pyx_XDECREF(__pyx_t_3);
4127  __Pyx_AddTraceback("canalyticalSolutions.LinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
4128  __pyx_r = NULL;
4129  __pyx_L0:;
4130  __Pyx_XGIVEREF(__pyx_r);
4131  __Pyx_RefNannyFinishContext();
4132  return __pyx_r;
4133 }
4134 
4135 /* "canalyticalSolutions.pyx":102
4136  *
4137  *
4138  * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
4139  * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
4140  *
4141  */
4142 
4143 /* Python wrapper */
4144 static PyObject *__pyx_pw_20canalyticalSolutions_27LinearADR_Decay_DiracIC(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4145 static PyMethodDef __pyx_mdef_20canalyticalSolutions_27LinearADR_Decay_DiracIC = {"LinearADR_Decay_DiracIC", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_27LinearADR_Decay_DiracIC, METH_VARARGS|METH_KEYWORDS, 0};
4146 static PyObject *__pyx_pw_20canalyticalSolutions_27LinearADR_Decay_DiracIC(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4147  PyArrayObject *__pyx_v_iwork = 0;
4148  PyArrayObject *__pyx_v_rwork = 0;
4149  double __pyx_v_t;
4150  PyArrayObject *__pyx_v_x = 0;
4151  PyArrayObject *__pyx_v_u = 0;
4152  int __pyx_lineno = 0;
4153  const char *__pyx_filename = NULL;
4154  int __pyx_clineno = 0;
4155  PyObject *__pyx_r = 0;
4156  __Pyx_RefNannyDeclarations
4157  __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC (wrapper)", 0);
4158  {
4159  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
4160  PyObject* values[5] = {0,0,0,0,0};
4161  if (unlikely(__pyx_kwds)) {
4162  Py_ssize_t kw_args;
4163  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4164  switch (pos_args) {
4165  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4166  CYTHON_FALLTHROUGH;
4167  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4168  CYTHON_FALLTHROUGH;
4169  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4170  CYTHON_FALLTHROUGH;
4171  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4172  CYTHON_FALLTHROUGH;
4173  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4174  CYTHON_FALLTHROUGH;
4175  case 0: break;
4176  default: goto __pyx_L5_argtuple_error;
4177  }
4178  kw_args = PyDict_Size(__pyx_kwds);
4179  switch (pos_args) {
4180  case 0:
4181  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
4182  else goto __pyx_L5_argtuple_error;
4183  CYTHON_FALLTHROUGH;
4184  case 1:
4185  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
4186  else {
4187  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, 1); __PYX_ERR(0, 102, __pyx_L3_error)
4188  }
4189  CYTHON_FALLTHROUGH;
4190  case 2:
4191  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
4192  else {
4193  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, 2); __PYX_ERR(0, 102, __pyx_L3_error)
4194  }
4195  CYTHON_FALLTHROUGH;
4196  case 3:
4197  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
4198  else {
4199  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, 3); __PYX_ERR(0, 102, __pyx_L3_error)
4200  }
4201  CYTHON_FALLTHROUGH;
4202  case 4:
4203  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
4204  else {
4205  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, 4); __PYX_ERR(0, 102, __pyx_L3_error)
4206  }
4207  }
4208  if (unlikely(kw_args > 0)) {
4209  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Decay_DiracIC") < 0)) __PYX_ERR(0, 102, __pyx_L3_error)
4210  }
4211  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
4212  goto __pyx_L5_argtuple_error;
4213  } else {
4214  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4215  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4216  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4217  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4218  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4219  }
4220  __pyx_v_iwork = ((PyArrayObject *)values[0]);
4221  __pyx_v_rwork = ((PyArrayObject *)values[1]);
4222  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L3_error)
4223  __pyx_v_x = ((PyArrayObject *)values[3]);
4224  __pyx_v_u = ((PyArrayObject *)values[4]);
4225  }
4226  goto __pyx_L4_argument_unpacking_done;
4227  __pyx_L5_argtuple_error:;
4228  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 102, __pyx_L3_error)
4229  __pyx_L3_error:;
4230  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
4231  __Pyx_RefNannyFinishContext();
4232  return NULL;
4233  __pyx_L4_argument_unpacking_done:;
4234  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 102, __pyx_L1_error)
4235  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 102, __pyx_L1_error)
4236  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 102, __pyx_L1_error)
4237  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 102, __pyx_L1_error)
4238  __pyx_r = __pyx_pf_20canalyticalSolutions_26LinearADR_Decay_DiracIC(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
4239 
4240  /* function exit code */
4241  goto __pyx_L0;
4242  __pyx_L1_error:;
4243  __pyx_r = NULL;
4244  __pyx_L0:;
4245  __Pyx_RefNannyFinishContext();
4246  return __pyx_r;
4247 }
4248 
4249 static PyObject *__pyx_pf_20canalyticalSolutions_26LinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
4250  PyObject *__pyx_r = NULL;
4251  __Pyx_RefNannyDeclarations
4252  PyObject *__pyx_t_1 = NULL;
4253  PyObject *__pyx_t_2 = NULL;
4254  PyObject *__pyx_t_3 = NULL;
4255  int __pyx_t_4;
4256  int __pyx_lineno = 0;
4257  const char *__pyx_filename = NULL;
4258  int __pyx_clineno = 0;
4259  __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC", 0);
4260 
4261  /* "canalyticalSolutions.pyx":103
4262  *
4263  * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
4264  * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
4265  *
4266  *
4267  */
4268  __Pyx_XDECREF(__pyx_r);
4269  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error)
4270  __Pyx_GOTREF(__pyx_t_1);
4271  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error)
4272  __Pyx_GOTREF(__pyx_t_2);
4273  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
4274  __Pyx_GOTREF(__pyx_t_3);
4275  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4276  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4277  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L1_error)
4278  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4279  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Decay_DiracIC(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
4280  __Pyx_GOTREF(__pyx_t_3);
4281  __pyx_r = __pyx_t_3;
4282  __pyx_t_3 = 0;
4283  goto __pyx_L0;
4284 
4285  /* "canalyticalSolutions.pyx":102
4286  *
4287  *
4288  * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
4289  * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
4290  *
4291  */
4292 
4293  /* function exit code */
4294  __pyx_L1_error:;
4295  __Pyx_XDECREF(__pyx_t_1);
4296  __Pyx_XDECREF(__pyx_t_2);
4297  __Pyx_XDECREF(__pyx_t_3);
4298  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
4299  __pyx_r = NULL;
4300  __pyx_L0:;
4301  __Pyx_XGIVEREF(__pyx_r);
4302  __Pyx_RefNannyFinishContext();
4303  return __pyx_r;
4304 }
4305 
4306 /* "canalyticalSolutions.pyx":106
4307  *
4308  *
4309  * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
4310  * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
4311  *
4312  */
4313 
4314 /* Python wrapper */
4315 static PyObject *__pyx_pw_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4316 static PyMethodDef __pyx_mdef_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr = {"LinearADR_Decay_DiracIC_dr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr, METH_VARARGS|METH_KEYWORDS, 0};
4317 static PyObject *__pyx_pw_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4318  PyArrayObject *__pyx_v_iwork = 0;
4319  PyArrayObject *__pyx_v_rwork = 0;
4320  double __pyx_v_t;
4321  PyArrayObject *__pyx_v_x = 0;
4322  PyArrayObject *__pyx_v_u = 0;
4323  PyArrayObject *__pyx_v_dr = 0;
4324  int __pyx_lineno = 0;
4325  const char *__pyx_filename = NULL;
4326  int __pyx_clineno = 0;
4327  PyObject *__pyx_r = 0;
4328  __Pyx_RefNannyDeclarations
4329  __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_dr (wrapper)", 0);
4330  {
4331  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_dr,0};
4332  PyObject* values[6] = {0,0,0,0,0,0};
4333  if (unlikely(__pyx_kwds)) {
4334  Py_ssize_t kw_args;
4335  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4336  switch (pos_args) {
4337  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4338  CYTHON_FALLTHROUGH;
4339  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4340  CYTHON_FALLTHROUGH;
4341  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4342  CYTHON_FALLTHROUGH;
4343  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4344  CYTHON_FALLTHROUGH;
4345  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4346  CYTHON_FALLTHROUGH;
4347  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4348  CYTHON_FALLTHROUGH;
4349  case 0: break;
4350  default: goto __pyx_L5_argtuple_error;
4351  }
4352  kw_args = PyDict_Size(__pyx_kwds);
4353  switch (pos_args) {
4354  case 0:
4355  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
4356  else goto __pyx_L5_argtuple_error;
4357  CYTHON_FALLTHROUGH;
4358  case 1:
4359  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
4360  else {
4361  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, 1); __PYX_ERR(0, 106, __pyx_L3_error)
4362  }
4363  CYTHON_FALLTHROUGH;
4364  case 2:
4365  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
4366  else {
4367  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, 2); __PYX_ERR(0, 106, __pyx_L3_error)
4368  }
4369  CYTHON_FALLTHROUGH;
4370  case 3:
4371  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
4372  else {
4373  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, 3); __PYX_ERR(0, 106, __pyx_L3_error)
4374  }
4375  CYTHON_FALLTHROUGH;
4376  case 4:
4377  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
4378  else {
4379  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, 4); __PYX_ERR(0, 106, __pyx_L3_error)
4380  }
4381  CYTHON_FALLTHROUGH;
4382  case 5:
4383  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dr)) != 0)) kw_args--;
4384  else {
4385  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, 5); __PYX_ERR(0, 106, __pyx_L3_error)
4386  }
4387  }
4388  if (unlikely(kw_args > 0)) {
4389  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Decay_DiracIC_dr") < 0)) __PYX_ERR(0, 106, __pyx_L3_error)
4390  }
4391  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
4392  goto __pyx_L5_argtuple_error;
4393  } else {
4394  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4395  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4396  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4397  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4398  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4399  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4400  }
4401  __pyx_v_iwork = ((PyArrayObject *)values[0]);
4402  __pyx_v_rwork = ((PyArrayObject *)values[1]);
4403  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L3_error)
4404  __pyx_v_x = ((PyArrayObject *)values[3]);
4405  __pyx_v_u = ((PyArrayObject *)values[4]);
4406  __pyx_v_dr = ((PyArrayObject *)values[5]);
4407  }
4408  goto __pyx_L4_argument_unpacking_done;
4409  __pyx_L5_argtuple_error:;
4410  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_dr", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 106, __pyx_L3_error)
4411  __pyx_L3_error:;
4412  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
4413  __Pyx_RefNannyFinishContext();
4414  return NULL;
4415  __pyx_L4_argument_unpacking_done:;
4416  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 106, __pyx_L1_error)
4417  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 106, __pyx_L1_error)
4418  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 106, __pyx_L1_error)
4419  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 106, __pyx_L1_error)
4420  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 106, __pyx_L1_error)
4421  __pyx_r = __pyx_pf_20canalyticalSolutions_28LinearADR_Decay_DiracIC_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
4422 
4423  /* function exit code */
4424  goto __pyx_L0;
4425  __pyx_L1_error:;
4426  __pyx_r = NULL;
4427  __pyx_L0:;
4428  __Pyx_RefNannyFinishContext();
4429  return __pyx_r;
4430 }
4431 
4432 static PyObject *__pyx_pf_20canalyticalSolutions_28LinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
4433  PyObject *__pyx_r = NULL;
4434  __Pyx_RefNannyDeclarations
4435  PyObject *__pyx_t_1 = NULL;
4436  PyObject *__pyx_t_2 = NULL;
4437  PyObject *__pyx_t_3 = NULL;
4438  int __pyx_t_4;
4439  int __pyx_lineno = 0;
4440  const char *__pyx_filename = NULL;
4441  int __pyx_clineno = 0;
4442  __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_dr", 0);
4443 
4444  /* "canalyticalSolutions.pyx":107
4445  *
4446  * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
4447  * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
4448  *
4449  *
4450  */
4451  __Pyx_XDECREF(__pyx_r);
4452  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
4453  __Pyx_GOTREF(__pyx_t_1);
4454  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
4455  __Pyx_GOTREF(__pyx_t_2);
4456  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error)
4457  __Pyx_GOTREF(__pyx_t_3);
4458  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4459  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4460  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 107, __pyx_L1_error)
4461  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4462  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Decay_DiracIC_dr(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_dr->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error)
4463  __Pyx_GOTREF(__pyx_t_3);
4464  __pyx_r = __pyx_t_3;
4465  __pyx_t_3 = 0;
4466  goto __pyx_L0;
4467 
4468  /* "canalyticalSolutions.pyx":106
4469  *
4470  *
4471  * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
4472  * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
4473  *
4474  */
4475 
4476  /* function exit code */
4477  __pyx_L1_error:;
4478  __Pyx_XDECREF(__pyx_t_1);
4479  __Pyx_XDECREF(__pyx_t_2);
4480  __Pyx_XDECREF(__pyx_t_3);
4481  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
4482  __pyx_r = NULL;
4483  __pyx_L0:;
4484  __Pyx_XGIVEREF(__pyx_r);
4485  __Pyx_RefNannyFinishContext();
4486  return __pyx_r;
4487 }
4488 
4489 /* "canalyticalSolutions.pyx":110
4490  *
4491  *
4492  * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
4493  * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
4494  *
4495  */
4496 
4497 /* Python wrapper */
4498 static PyObject *__pyx_pw_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4499 static PyMethodDef __pyx_mdef_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r = {"LinearADR_Decay_DiracIC_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r, METH_VARARGS|METH_KEYWORDS, 0};
4500 static PyObject *__pyx_pw_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4501  PyArrayObject *__pyx_v_iwork = 0;
4502  PyArrayObject *__pyx_v_rwork = 0;
4503  double __pyx_v_t;
4504  PyArrayObject *__pyx_v_x = 0;
4505  PyArrayObject *__pyx_v_u = 0;
4506  PyArrayObject *__pyx_v_r = 0;
4507  int __pyx_lineno = 0;
4508  const char *__pyx_filename = NULL;
4509  int __pyx_clineno = 0;
4510  PyObject *__pyx_r = 0;
4511  __Pyx_RefNannyDeclarations
4512  __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_r (wrapper)", 0);
4513  {
4514  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
4515  PyObject* values[6] = {0,0,0,0,0,0};
4516  if (unlikely(__pyx_kwds)) {
4517  Py_ssize_t kw_args;
4518  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4519  switch (pos_args) {
4520  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4521  CYTHON_FALLTHROUGH;
4522  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4523  CYTHON_FALLTHROUGH;
4524  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4525  CYTHON_FALLTHROUGH;
4526  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4527  CYTHON_FALLTHROUGH;
4528  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4529  CYTHON_FALLTHROUGH;
4530  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4531  CYTHON_FALLTHROUGH;
4532  case 0: break;
4533  default: goto __pyx_L5_argtuple_error;
4534  }
4535  kw_args = PyDict_Size(__pyx_kwds);
4536  switch (pos_args) {
4537  case 0:
4538  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
4539  else goto __pyx_L5_argtuple_error;
4540  CYTHON_FALLTHROUGH;
4541  case 1:
4542  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
4543  else {
4544  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, 1); __PYX_ERR(0, 110, __pyx_L3_error)
4545  }
4546  CYTHON_FALLTHROUGH;
4547  case 2:
4548  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
4549  else {
4550  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, 2); __PYX_ERR(0, 110, __pyx_L3_error)
4551  }
4552  CYTHON_FALLTHROUGH;
4553  case 3:
4554  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
4555  else {
4556  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, 3); __PYX_ERR(0, 110, __pyx_L3_error)
4557  }
4558  CYTHON_FALLTHROUGH;
4559  case 4:
4560  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
4561  else {
4562  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, 4); __PYX_ERR(0, 110, __pyx_L3_error)
4563  }
4564  CYTHON_FALLTHROUGH;
4565  case 5:
4566  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
4567  else {
4568  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, 5); __PYX_ERR(0, 110, __pyx_L3_error)
4569  }
4570  }
4571  if (unlikely(kw_args > 0)) {
4572  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Decay_DiracIC_r") < 0)) __PYX_ERR(0, 110, __pyx_L3_error)
4573  }
4574  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
4575  goto __pyx_L5_argtuple_error;
4576  } else {
4577  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4578  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4579  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4580  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4581  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4582  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4583  }
4584  __pyx_v_iwork = ((PyArrayObject *)values[0]);
4585  __pyx_v_rwork = ((PyArrayObject *)values[1]);
4586  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L3_error)
4587  __pyx_v_x = ((PyArrayObject *)values[3]);
4588  __pyx_v_u = ((PyArrayObject *)values[4]);
4589  __pyx_v_r = ((PyArrayObject *)values[5]);
4590  }
4591  goto __pyx_L4_argument_unpacking_done;
4592  __pyx_L5_argtuple_error:;
4593  __Pyx_RaiseArgtupleInvalid("LinearADR_Decay_DiracIC_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 110, __pyx_L3_error)
4594  __pyx_L3_error:;
4595  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
4596  __Pyx_RefNannyFinishContext();
4597  return NULL;
4598  __pyx_L4_argument_unpacking_done:;
4599  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 110, __pyx_L1_error)
4600  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 110, __pyx_L1_error)
4601  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 110, __pyx_L1_error)
4602  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 110, __pyx_L1_error)
4603  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 110, __pyx_L1_error)
4604  __pyx_r = __pyx_pf_20canalyticalSolutions_30LinearADR_Decay_DiracIC_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
4605 
4606  /* function exit code */
4607  goto __pyx_L0;
4608  __pyx_L1_error:;
4609  __pyx_r = NULL;
4610  __pyx_L0:;
4611  __Pyx_RefNannyFinishContext();
4612  return __pyx_r;
4613 }
4614 
4615 static PyObject *__pyx_pf_20canalyticalSolutions_30LinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
4616  PyObject *__pyx_r = NULL;
4617  __Pyx_RefNannyDeclarations
4618  PyObject *__pyx_t_1 = NULL;
4619  PyObject *__pyx_t_2 = NULL;
4620  PyObject *__pyx_t_3 = NULL;
4621  int __pyx_t_4;
4622  int __pyx_lineno = 0;
4623  const char *__pyx_filename = NULL;
4624  int __pyx_clineno = 0;
4625  __Pyx_RefNannySetupContext("LinearADR_Decay_DiracIC_r", 0);
4626 
4627  /* "canalyticalSolutions.pyx":111
4628  *
4629  * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
4630  * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
4631  *
4632  *
4633  */
4634  __Pyx_XDECREF(__pyx_r);
4635  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
4636  __Pyx_GOTREF(__pyx_t_1);
4637  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
4638  __Pyx_GOTREF(__pyx_t_2);
4639  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
4640  __Pyx_GOTREF(__pyx_t_3);
4641  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4642  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4643  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 111, __pyx_L1_error)
4644  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4645  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Decay_DiracIC_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
4646  __Pyx_GOTREF(__pyx_t_3);
4647  __pyx_r = __pyx_t_3;
4648  __pyx_t_3 = 0;
4649  goto __pyx_L0;
4650 
4651  /* "canalyticalSolutions.pyx":110
4652  *
4653  *
4654  * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
4655  * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
4656  *
4657  */
4658 
4659  /* function exit code */
4660  __pyx_L1_error:;
4661  __Pyx_XDECREF(__pyx_t_1);
4662  __Pyx_XDECREF(__pyx_t_2);
4663  __Pyx_XDECREF(__pyx_t_3);
4664  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
4665  __pyx_r = NULL;
4666  __pyx_L0:;
4667  __Pyx_XGIVEREF(__pyx_r);
4668  __Pyx_RefNannyFinishContext();
4669  return __pyx_r;
4670 }
4671 
4672 /* "canalyticalSolutions.pyx":114
4673  *
4674  *
4675  * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
4676  * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
4677  *
4678  */
4679 
4680 /* Python wrapper */
4681 static PyObject *__pyx_pw_20canalyticalSolutions_33LinearADR_Sine(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4682 static PyMethodDef __pyx_mdef_20canalyticalSolutions_33LinearADR_Sine = {"LinearADR_Sine", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_33LinearADR_Sine, METH_VARARGS|METH_KEYWORDS, 0};
4683 static PyObject *__pyx_pw_20canalyticalSolutions_33LinearADR_Sine(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4684  PyArrayObject *__pyx_v_iwork = 0;
4685  PyArrayObject *__pyx_v_rwork = 0;
4686  double __pyx_v_t;
4687  PyArrayObject *__pyx_v_x = 0;
4688  PyArrayObject *__pyx_v_u = 0;
4689  int __pyx_lineno = 0;
4690  const char *__pyx_filename = NULL;
4691  int __pyx_clineno = 0;
4692  PyObject *__pyx_r = 0;
4693  __Pyx_RefNannyDeclarations
4694  __Pyx_RefNannySetupContext("LinearADR_Sine (wrapper)", 0);
4695  {
4696  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
4697  PyObject* values[5] = {0,0,0,0,0};
4698  if (unlikely(__pyx_kwds)) {
4699  Py_ssize_t kw_args;
4700  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4701  switch (pos_args) {
4702  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4703  CYTHON_FALLTHROUGH;
4704  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4705  CYTHON_FALLTHROUGH;
4706  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4707  CYTHON_FALLTHROUGH;
4708  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4709  CYTHON_FALLTHROUGH;
4710  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4711  CYTHON_FALLTHROUGH;
4712  case 0: break;
4713  default: goto __pyx_L5_argtuple_error;
4714  }
4715  kw_args = PyDict_Size(__pyx_kwds);
4716  switch (pos_args) {
4717  case 0:
4718  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
4719  else goto __pyx_L5_argtuple_error;
4720  CYTHON_FALLTHROUGH;
4721  case 1:
4722  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
4723  else {
4724  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, 1); __PYX_ERR(0, 114, __pyx_L3_error)
4725  }
4726  CYTHON_FALLTHROUGH;
4727  case 2:
4728  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
4729  else {
4730  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, 2); __PYX_ERR(0, 114, __pyx_L3_error)
4731  }
4732  CYTHON_FALLTHROUGH;
4733  case 3:
4734  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
4735  else {
4736  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, 3); __PYX_ERR(0, 114, __pyx_L3_error)
4737  }
4738  CYTHON_FALLTHROUGH;
4739  case 4:
4740  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
4741  else {
4742  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, 4); __PYX_ERR(0, 114, __pyx_L3_error)
4743  }
4744  }
4745  if (unlikely(kw_args > 0)) {
4746  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine") < 0)) __PYX_ERR(0, 114, __pyx_L3_error)
4747  }
4748  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
4749  goto __pyx_L5_argtuple_error;
4750  } else {
4751  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4752  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4753  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4754  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4755  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4756  }
4757  __pyx_v_iwork = ((PyArrayObject *)values[0]);
4758  __pyx_v_rwork = ((PyArrayObject *)values[1]);
4759  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
4760  __pyx_v_x = ((PyArrayObject *)values[3]);
4761  __pyx_v_u = ((PyArrayObject *)values[4]);
4762  }
4763  goto __pyx_L4_argument_unpacking_done;
4764  __pyx_L5_argtuple_error:;
4765  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 114, __pyx_L3_error)
4766  __pyx_L3_error:;
4767  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine", __pyx_clineno, __pyx_lineno, __pyx_filename);
4768  __Pyx_RefNannyFinishContext();
4769  return NULL;
4770  __pyx_L4_argument_unpacking_done:;
4771  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 114, __pyx_L1_error)
4772  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 114, __pyx_L1_error)
4773  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 114, __pyx_L1_error)
4774  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 114, __pyx_L1_error)
4775  __pyx_r = __pyx_pf_20canalyticalSolutions_32LinearADR_Sine(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
4776 
4777  /* function exit code */
4778  goto __pyx_L0;
4779  __pyx_L1_error:;
4780  __pyx_r = NULL;
4781  __pyx_L0:;
4782  __Pyx_RefNannyFinishContext();
4783  return __pyx_r;
4784 }
4785 
4786 static PyObject *__pyx_pf_20canalyticalSolutions_32LinearADR_Sine(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
4787  PyObject *__pyx_r = NULL;
4788  __Pyx_RefNannyDeclarations
4789  PyObject *__pyx_t_1 = NULL;
4790  PyObject *__pyx_t_2 = NULL;
4791  PyObject *__pyx_t_3 = NULL;
4792  int __pyx_t_4;
4793  int __pyx_lineno = 0;
4794  const char *__pyx_filename = NULL;
4795  int __pyx_clineno = 0;
4796  __Pyx_RefNannySetupContext("LinearADR_Sine", 0);
4797 
4798  /* "canalyticalSolutions.pyx":115
4799  *
4800  * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
4801  * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
4802  *
4803  *
4804  */
4805  __Pyx_XDECREF(__pyx_r);
4806  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
4807  __Pyx_GOTREF(__pyx_t_1);
4808  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error)
4809  __Pyx_GOTREF(__pyx_t_2);
4810  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
4811  __Pyx_GOTREF(__pyx_t_3);
4812  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4813  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4814  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L1_error)
4815  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4816  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
4817  __Pyx_GOTREF(__pyx_t_3);
4818  __pyx_r = __pyx_t_3;
4819  __pyx_t_3 = 0;
4820  goto __pyx_L0;
4821 
4822  /* "canalyticalSolutions.pyx":114
4823  *
4824  *
4825  * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
4826  * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
4827  *
4828  */
4829 
4830  /* function exit code */
4831  __pyx_L1_error:;
4832  __Pyx_XDECREF(__pyx_t_1);
4833  __Pyx_XDECREF(__pyx_t_2);
4834  __Pyx_XDECREF(__pyx_t_3);
4835  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine", __pyx_clineno, __pyx_lineno, __pyx_filename);
4836  __pyx_r = NULL;
4837  __pyx_L0:;
4838  __Pyx_XGIVEREF(__pyx_r);
4839  __Pyx_RefNannyFinishContext();
4840  return __pyx_r;
4841 }
4842 
4843 /* "canalyticalSolutions.pyx":118
4844  *
4845  *
4846  * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
4847  * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
4848  *
4849  */
4850 
4851 /* Python wrapper */
4852 static PyObject *__pyx_pw_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4853 static PyMethodDef __pyx_mdef_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity = {"LinearADR_Sine_advectiveVelocity", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity, METH_VARARGS|METH_KEYWORDS, 0};
4854 static PyObject *__pyx_pw_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4855  PyArrayObject *__pyx_v_iwork = 0;
4856  PyArrayObject *__pyx_v_rwork = 0;
4857  double __pyx_v_t;
4858  PyArrayObject *__pyx_v_x = 0;
4859  PyArrayObject *__pyx_v_f = 0;
4860  int __pyx_lineno = 0;
4861  const char *__pyx_filename = NULL;
4862  int __pyx_clineno = 0;
4863  PyObject *__pyx_r = 0;
4864  __Pyx_RefNannyDeclarations
4865  __Pyx_RefNannySetupContext("LinearADR_Sine_advectiveVelocity (wrapper)", 0);
4866  {
4867  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_f,0};
4868  PyObject* values[5] = {0,0,0,0,0};
4869  if (unlikely(__pyx_kwds)) {
4870  Py_ssize_t kw_args;
4871  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4872  switch (pos_args) {
4873  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4874  CYTHON_FALLTHROUGH;
4875  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4876  CYTHON_FALLTHROUGH;
4877  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4878  CYTHON_FALLTHROUGH;
4879  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4880  CYTHON_FALLTHROUGH;
4881  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4882  CYTHON_FALLTHROUGH;
4883  case 0: break;
4884  default: goto __pyx_L5_argtuple_error;
4885  }
4886  kw_args = PyDict_Size(__pyx_kwds);
4887  switch (pos_args) {
4888  case 0:
4889  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
4890  else goto __pyx_L5_argtuple_error;
4891  CYTHON_FALLTHROUGH;
4892  case 1:
4893  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
4894  else {
4895  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, 1); __PYX_ERR(0, 118, __pyx_L3_error)
4896  }
4897  CYTHON_FALLTHROUGH;
4898  case 2:
4899  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
4900  else {
4901  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, 2); __PYX_ERR(0, 118, __pyx_L3_error)
4902  }
4903  CYTHON_FALLTHROUGH;
4904  case 3:
4905  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
4906  else {
4907  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, 3); __PYX_ERR(0, 118, __pyx_L3_error)
4908  }
4909  CYTHON_FALLTHROUGH;
4910  case 4:
4911  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
4912  else {
4913  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, 4); __PYX_ERR(0, 118, __pyx_L3_error)
4914  }
4915  }
4916  if (unlikely(kw_args > 0)) {
4917  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine_advectiveVelocity") < 0)) __PYX_ERR(0, 118, __pyx_L3_error)
4918  }
4919  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
4920  goto __pyx_L5_argtuple_error;
4921  } else {
4922  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4923  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4924  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4925  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4926  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4927  }
4928  __pyx_v_iwork = ((PyArrayObject *)values[0]);
4929  __pyx_v_rwork = ((PyArrayObject *)values[1]);
4930  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L3_error)
4931  __pyx_v_x = ((PyArrayObject *)values[3]);
4932  __pyx_v_f = ((PyArrayObject *)values[4]);
4933  }
4934  goto __pyx_L4_argument_unpacking_done;
4935  __pyx_L5_argtuple_error:;
4936  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_advectiveVelocity", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 118, __pyx_L3_error)
4937  __pyx_L3_error:;
4938  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
4939  __Pyx_RefNannyFinishContext();
4940  return NULL;
4941  __pyx_L4_argument_unpacking_done:;
4942  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 118, __pyx_L1_error)
4943  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 118, __pyx_L1_error)
4944  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 118, __pyx_L1_error)
4945  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 118, __pyx_L1_error)
4946  __pyx_r = __pyx_pf_20canalyticalSolutions_34LinearADR_Sine_advectiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
4947 
4948  /* function exit code */
4949  goto __pyx_L0;
4950  __pyx_L1_error:;
4951  __pyx_r = NULL;
4952  __pyx_L0:;
4953  __Pyx_RefNannyFinishContext();
4954  return __pyx_r;
4955 }
4956 
4957 static PyObject *__pyx_pf_20canalyticalSolutions_34LinearADR_Sine_advectiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
4958  PyObject *__pyx_r = NULL;
4959  __Pyx_RefNannyDeclarations
4960  PyObject *__pyx_t_1 = NULL;
4961  PyObject *__pyx_t_2 = NULL;
4962  PyObject *__pyx_t_3 = NULL;
4963  int __pyx_t_4;
4964  int __pyx_lineno = 0;
4965  const char *__pyx_filename = NULL;
4966  int __pyx_clineno = 0;
4967  __Pyx_RefNannySetupContext("LinearADR_Sine_advectiveVelocity", 0);
4968 
4969  /* "canalyticalSolutions.pyx":119
4970  *
4971  * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
4972  * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
4973  *
4974  *
4975  */
4976  __Pyx_XDECREF(__pyx_r);
4977  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
4978  __Pyx_GOTREF(__pyx_t_1);
4979  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error)
4980  __Pyx_GOTREF(__pyx_t_2);
4981  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
4982  __Pyx_GOTREF(__pyx_t_3);
4983  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4984  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4985  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 119, __pyx_L1_error)
4986  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4987  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine_advectiveVelocity(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_f->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
4988  __Pyx_GOTREF(__pyx_t_3);
4989  __pyx_r = __pyx_t_3;
4990  __pyx_t_3 = 0;
4991  goto __pyx_L0;
4992 
4993  /* "canalyticalSolutions.pyx":118
4994  *
4995  *
4996  * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
4997  * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
4998  *
4999  */
5000 
5001  /* function exit code */
5002  __pyx_L1_error:;
5003  __Pyx_XDECREF(__pyx_t_1);
5004  __Pyx_XDECREF(__pyx_t_2);
5005  __Pyx_XDECREF(__pyx_t_3);
5006  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_advectiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
5007  __pyx_r = NULL;
5008  __pyx_L0:;
5009  __Pyx_XGIVEREF(__pyx_r);
5010  __Pyx_RefNannyFinishContext();
5011  return __pyx_r;
5012 }
5013 
5014 /* "canalyticalSolutions.pyx":122
5015  *
5016  *
5017  * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
5018  * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
5019  *
5020  */
5021 
5022 /* Python wrapper */
5023 static PyObject *__pyx_pw_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5024 static PyMethodDef __pyx_mdef_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity = {"LinearADR_Sine_diffusiveVelocity", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity, METH_VARARGS|METH_KEYWORDS, 0};
5025 static PyObject *__pyx_pw_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5026  PyArrayObject *__pyx_v_iwork = 0;
5027  PyArrayObject *__pyx_v_rwork = 0;
5028  double __pyx_v_t;
5029  PyArrayObject *__pyx_v_x = 0;
5030  PyArrayObject *__pyx_v_f = 0;
5031  int __pyx_lineno = 0;
5032  const char *__pyx_filename = NULL;
5033  int __pyx_clineno = 0;
5034  PyObject *__pyx_r = 0;
5035  __Pyx_RefNannyDeclarations
5036  __Pyx_RefNannySetupContext("LinearADR_Sine_diffusiveVelocity (wrapper)", 0);
5037  {
5038  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_f,0};
5039  PyObject* values[5] = {0,0,0,0,0};
5040  if (unlikely(__pyx_kwds)) {
5041  Py_ssize_t kw_args;
5042  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5043  switch (pos_args) {
5044  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5045  CYTHON_FALLTHROUGH;
5046  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5047  CYTHON_FALLTHROUGH;
5048  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5049  CYTHON_FALLTHROUGH;
5050  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5051  CYTHON_FALLTHROUGH;
5052  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5053  CYTHON_FALLTHROUGH;
5054  case 0: break;
5055  default: goto __pyx_L5_argtuple_error;
5056  }
5057  kw_args = PyDict_Size(__pyx_kwds);
5058  switch (pos_args) {
5059  case 0:
5060  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
5061  else goto __pyx_L5_argtuple_error;
5062  CYTHON_FALLTHROUGH;
5063  case 1:
5064  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
5065  else {
5066  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, 1); __PYX_ERR(0, 122, __pyx_L3_error)
5067  }
5068  CYTHON_FALLTHROUGH;
5069  case 2:
5070  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
5071  else {
5072  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, 2); __PYX_ERR(0, 122, __pyx_L3_error)
5073  }
5074  CYTHON_FALLTHROUGH;
5075  case 3:
5076  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
5077  else {
5078  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, 3); __PYX_ERR(0, 122, __pyx_L3_error)
5079  }
5080  CYTHON_FALLTHROUGH;
5081  case 4:
5082  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
5083  else {
5084  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, 4); __PYX_ERR(0, 122, __pyx_L3_error)
5085  }
5086  }
5087  if (unlikely(kw_args > 0)) {
5088  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine_diffusiveVelocity") < 0)) __PYX_ERR(0, 122, __pyx_L3_error)
5089  }
5090  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
5091  goto __pyx_L5_argtuple_error;
5092  } else {
5093  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5094  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5095  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5096  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5097  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5098  }
5099  __pyx_v_iwork = ((PyArrayObject *)values[0]);
5100  __pyx_v_rwork = ((PyArrayObject *)values[1]);
5101  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L3_error)
5102  __pyx_v_x = ((PyArrayObject *)values[3]);
5103  __pyx_v_f = ((PyArrayObject *)values[4]);
5104  }
5105  goto __pyx_L4_argument_unpacking_done;
5106  __pyx_L5_argtuple_error:;
5107  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_diffusiveVelocity", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 122, __pyx_L3_error)
5108  __pyx_L3_error:;
5109  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
5110  __Pyx_RefNannyFinishContext();
5111  return NULL;
5112  __pyx_L4_argument_unpacking_done:;
5113  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 122, __pyx_L1_error)
5114  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 122, __pyx_L1_error)
5115  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 122, __pyx_L1_error)
5116  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_f), __pyx_ptype_5numpy_ndarray, 1, "f", 0))) __PYX_ERR(0, 122, __pyx_L1_error)
5117  __pyx_r = __pyx_pf_20canalyticalSolutions_36LinearADR_Sine_diffusiveVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_f);
5118 
5119  /* function exit code */
5120  goto __pyx_L0;
5121  __pyx_L1_error:;
5122  __pyx_r = NULL;
5123  __pyx_L0:;
5124  __Pyx_RefNannyFinishContext();
5125  return __pyx_r;
5126 }
5127 
5128 static PyObject *__pyx_pf_20canalyticalSolutions_36LinearADR_Sine_diffusiveVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_f) {
5129  PyObject *__pyx_r = NULL;
5130  __Pyx_RefNannyDeclarations
5131  PyObject *__pyx_t_1 = NULL;
5132  PyObject *__pyx_t_2 = NULL;
5133  PyObject *__pyx_t_3 = NULL;
5134  int __pyx_t_4;
5135  int __pyx_lineno = 0;
5136  const char *__pyx_filename = NULL;
5137  int __pyx_clineno = 0;
5138  __Pyx_RefNannySetupContext("LinearADR_Sine_diffusiveVelocity", 0);
5139 
5140  /* "canalyticalSolutions.pyx":123
5141  *
5142  * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int:
5143  * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data) # <<<<<<<<<<<<<<
5144  *
5145  *
5146  */
5147  __Pyx_XDECREF(__pyx_r);
5148  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error)
5149  __Pyx_GOTREF(__pyx_t_1);
5150  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
5151  __Pyx_GOTREF(__pyx_t_2);
5152  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error)
5153  __Pyx_GOTREF(__pyx_t_3);
5154  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5155  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5156  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 123, __pyx_L1_error)
5157  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5158  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine_diffusiveVelocity(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_f->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error)
5159  __Pyx_GOTREF(__pyx_t_3);
5160  __pyx_r = __pyx_t_3;
5161  __pyx_t_3 = 0;
5162  goto __pyx_L0;
5163 
5164  /* "canalyticalSolutions.pyx":122
5165  *
5166  *
5167  * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
5168  * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
5169  *
5170  */
5171 
5172  /* function exit code */
5173  __pyx_L1_error:;
5174  __Pyx_XDECREF(__pyx_t_1);
5175  __Pyx_XDECREF(__pyx_t_2);
5176  __Pyx_XDECREF(__pyx_t_3);
5177  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_diffusiveVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
5178  __pyx_r = NULL;
5179  __pyx_L0:;
5180  __Pyx_XGIVEREF(__pyx_r);
5181  __Pyx_RefNannyFinishContext();
5182  return __pyx_r;
5183 }
5184 
5185 /* "canalyticalSolutions.pyx":126
5186  *
5187  *
5188  * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
5189  * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
5190  *
5191  */
5192 
5193 /* Python wrapper */
5194 static PyObject *__pyx_pw_20canalyticalSolutions_39LinearADR_Sine_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5195 static PyMethodDef __pyx_mdef_20canalyticalSolutions_39LinearADR_Sine_dr = {"LinearADR_Sine_dr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_39LinearADR_Sine_dr, METH_VARARGS|METH_KEYWORDS, 0};
5196 static PyObject *__pyx_pw_20canalyticalSolutions_39LinearADR_Sine_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5197  PyArrayObject *__pyx_v_iwork = 0;
5198  PyArrayObject *__pyx_v_rwork = 0;
5199  double __pyx_v_t;
5200  PyArrayObject *__pyx_v_x = 0;
5201  PyArrayObject *__pyx_v_u = 0;
5202  PyArrayObject *__pyx_v_dr = 0;
5203  int __pyx_lineno = 0;
5204  const char *__pyx_filename = NULL;
5205  int __pyx_clineno = 0;
5206  PyObject *__pyx_r = 0;
5207  __Pyx_RefNannyDeclarations
5208  __Pyx_RefNannySetupContext("LinearADR_Sine_dr (wrapper)", 0);
5209  {
5210  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_dr,0};
5211  PyObject* values[6] = {0,0,0,0,0,0};
5212  if (unlikely(__pyx_kwds)) {
5213  Py_ssize_t kw_args;
5214  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5215  switch (pos_args) {
5216  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
5217  CYTHON_FALLTHROUGH;
5218  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5219  CYTHON_FALLTHROUGH;
5220  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5221  CYTHON_FALLTHROUGH;
5222  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5223  CYTHON_FALLTHROUGH;
5224  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5225  CYTHON_FALLTHROUGH;
5226  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5227  CYTHON_FALLTHROUGH;
5228  case 0: break;
5229  default: goto __pyx_L5_argtuple_error;
5230  }
5231  kw_args = PyDict_Size(__pyx_kwds);
5232  switch (pos_args) {
5233  case 0:
5234  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
5235  else goto __pyx_L5_argtuple_error;
5236  CYTHON_FALLTHROUGH;
5237  case 1:
5238  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
5239  else {
5240  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, 1); __PYX_ERR(0, 126, __pyx_L3_error)
5241  }
5242  CYTHON_FALLTHROUGH;
5243  case 2:
5244  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
5245  else {
5246  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, 2); __PYX_ERR(0, 126, __pyx_L3_error)
5247  }
5248  CYTHON_FALLTHROUGH;
5249  case 3:
5250  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
5251  else {
5252  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, 3); __PYX_ERR(0, 126, __pyx_L3_error)
5253  }
5254  CYTHON_FALLTHROUGH;
5255  case 4:
5256  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
5257  else {
5258  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, 4); __PYX_ERR(0, 126, __pyx_L3_error)
5259  }
5260  CYTHON_FALLTHROUGH;
5261  case 5:
5262  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dr)) != 0)) kw_args--;
5263  else {
5264  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, 5); __PYX_ERR(0, 126, __pyx_L3_error)
5265  }
5266  }
5267  if (unlikely(kw_args > 0)) {
5268  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine_dr") < 0)) __PYX_ERR(0, 126, __pyx_L3_error)
5269  }
5270  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
5271  goto __pyx_L5_argtuple_error;
5272  } else {
5273  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5274  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5275  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5276  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5277  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5278  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
5279  }
5280  __pyx_v_iwork = ((PyArrayObject *)values[0]);
5281  __pyx_v_rwork = ((PyArrayObject *)values[1]);
5282  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 126, __pyx_L3_error)
5283  __pyx_v_x = ((PyArrayObject *)values[3]);
5284  __pyx_v_u = ((PyArrayObject *)values[4]);
5285  __pyx_v_dr = ((PyArrayObject *)values[5]);
5286  }
5287  goto __pyx_L4_argument_unpacking_done;
5288  __pyx_L5_argtuple_error:;
5289  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_dr", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 126, __pyx_L3_error)
5290  __pyx_L3_error:;
5291  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
5292  __Pyx_RefNannyFinishContext();
5293  return NULL;
5294  __pyx_L4_argument_unpacking_done:;
5295  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 126, __pyx_L1_error)
5296  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 126, __pyx_L1_error)
5297  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 126, __pyx_L1_error)
5298  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 126, __pyx_L1_error)
5299  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 126, __pyx_L1_error)
5300  __pyx_r = __pyx_pf_20canalyticalSolutions_38LinearADR_Sine_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
5301 
5302  /* function exit code */
5303  goto __pyx_L0;
5304  __pyx_L1_error:;
5305  __pyx_r = NULL;
5306  __pyx_L0:;
5307  __Pyx_RefNannyFinishContext();
5308  return __pyx_r;
5309 }
5310 
5311 static PyObject *__pyx_pf_20canalyticalSolutions_38LinearADR_Sine_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
5312  PyObject *__pyx_r = NULL;
5313  __Pyx_RefNannyDeclarations
5314  PyObject *__pyx_t_1 = NULL;
5315  PyObject *__pyx_t_2 = NULL;
5316  PyObject *__pyx_t_3 = NULL;
5317  int __pyx_t_4;
5318  int __pyx_lineno = 0;
5319  const char *__pyx_filename = NULL;
5320  int __pyx_clineno = 0;
5321  __Pyx_RefNannySetupContext("LinearADR_Sine_dr", 0);
5322 
5323  /* "canalyticalSolutions.pyx":127
5324  *
5325  * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
5326  * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
5327  *
5328  *
5329  */
5330  __Pyx_XDECREF(__pyx_r);
5331  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error)
5332  __Pyx_GOTREF(__pyx_t_1);
5333  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error)
5334  __Pyx_GOTREF(__pyx_t_2);
5335  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 127, __pyx_L1_error)
5336  __Pyx_GOTREF(__pyx_t_3);
5337  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5338  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5339  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 127, __pyx_L1_error)
5340  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5341  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine_dr(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_dr->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 127, __pyx_L1_error)
5342  __Pyx_GOTREF(__pyx_t_3);
5343  __pyx_r = __pyx_t_3;
5344  __pyx_t_3 = 0;
5345  goto __pyx_L0;
5346 
5347  /* "canalyticalSolutions.pyx":126
5348  *
5349  *
5350  * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
5351  * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
5352  *
5353  */
5354 
5355  /* function exit code */
5356  __pyx_L1_error:;
5357  __Pyx_XDECREF(__pyx_t_1);
5358  __Pyx_XDECREF(__pyx_t_2);
5359  __Pyx_XDECREF(__pyx_t_3);
5360  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
5361  __pyx_r = NULL;
5362  __pyx_L0:;
5363  __Pyx_XGIVEREF(__pyx_r);
5364  __Pyx_RefNannyFinishContext();
5365  return __pyx_r;
5366 }
5367 
5368 /* "canalyticalSolutions.pyx":130
5369  *
5370  *
5371  * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
5372  * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
5373  *
5374  */
5375 
5376 /* Python wrapper */
5377 static PyObject *__pyx_pw_20canalyticalSolutions_41LinearADR_Sine_du(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5378 static PyMethodDef __pyx_mdef_20canalyticalSolutions_41LinearADR_Sine_du = {"LinearADR_Sine_du", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_41LinearADR_Sine_du, METH_VARARGS|METH_KEYWORDS, 0};
5379 static PyObject *__pyx_pw_20canalyticalSolutions_41LinearADR_Sine_du(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5380  PyArrayObject *__pyx_v_iwork = 0;
5381  PyArrayObject *__pyx_v_rwork = 0;
5382  double __pyx_v_t;
5383  PyArrayObject *__pyx_v_x = 0;
5384  PyArrayObject *__pyx_v_du = 0;
5385  int __pyx_lineno = 0;
5386  const char *__pyx_filename = NULL;
5387  int __pyx_clineno = 0;
5388  PyObject *__pyx_r = 0;
5389  __Pyx_RefNannyDeclarations
5390  __Pyx_RefNannySetupContext("LinearADR_Sine_du (wrapper)", 0);
5391  {
5392  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_du,0};
5393  PyObject* values[5] = {0,0,0,0,0};
5394  if (unlikely(__pyx_kwds)) {
5395  Py_ssize_t kw_args;
5396  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5397  switch (pos_args) {
5398  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5399  CYTHON_FALLTHROUGH;
5400  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5401  CYTHON_FALLTHROUGH;
5402  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5403  CYTHON_FALLTHROUGH;
5404  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5405  CYTHON_FALLTHROUGH;
5406  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5407  CYTHON_FALLTHROUGH;
5408  case 0: break;
5409  default: goto __pyx_L5_argtuple_error;
5410  }
5411  kw_args = PyDict_Size(__pyx_kwds);
5412  switch (pos_args) {
5413  case 0:
5414  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
5415  else goto __pyx_L5_argtuple_error;
5416  CYTHON_FALLTHROUGH;
5417  case 1:
5418  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
5419  else {
5420  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, 1); __PYX_ERR(0, 130, __pyx_L3_error)
5421  }
5422  CYTHON_FALLTHROUGH;
5423  case 2:
5424  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
5425  else {
5426  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, 2); __PYX_ERR(0, 130, __pyx_L3_error)
5427  }
5428  CYTHON_FALLTHROUGH;
5429  case 3:
5430  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
5431  else {
5432  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, 3); __PYX_ERR(0, 130, __pyx_L3_error)
5433  }
5434  CYTHON_FALLTHROUGH;
5435  case 4:
5436  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_du)) != 0)) kw_args--;
5437  else {
5438  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, 4); __PYX_ERR(0, 130, __pyx_L3_error)
5439  }
5440  }
5441  if (unlikely(kw_args > 0)) {
5442  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine_du") < 0)) __PYX_ERR(0, 130, __pyx_L3_error)
5443  }
5444  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
5445  goto __pyx_L5_argtuple_error;
5446  } else {
5447  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5448  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5449  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5450  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5451  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5452  }
5453  __pyx_v_iwork = ((PyArrayObject *)values[0]);
5454  __pyx_v_rwork = ((PyArrayObject *)values[1]);
5455  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 130, __pyx_L3_error)
5456  __pyx_v_x = ((PyArrayObject *)values[3]);
5457  __pyx_v_du = ((PyArrayObject *)values[4]);
5458  }
5459  goto __pyx_L4_argument_unpacking_done;
5460  __pyx_L5_argtuple_error:;
5461  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_du", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 130, __pyx_L3_error)
5462  __pyx_L3_error:;
5463  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
5464  __Pyx_RefNannyFinishContext();
5465  return NULL;
5466  __pyx_L4_argument_unpacking_done:;
5467  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 130, __pyx_L1_error)
5468  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 130, __pyx_L1_error)
5469  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 130, __pyx_L1_error)
5470  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_du), __pyx_ptype_5numpy_ndarray, 1, "du", 0))) __PYX_ERR(0, 130, __pyx_L1_error)
5471  __pyx_r = __pyx_pf_20canalyticalSolutions_40LinearADR_Sine_du(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_du);
5472 
5473  /* function exit code */
5474  goto __pyx_L0;
5475  __pyx_L1_error:;
5476  __pyx_r = NULL;
5477  __pyx_L0:;
5478  __Pyx_RefNannyFinishContext();
5479  return __pyx_r;
5480 }
5481 
5482 static PyObject *__pyx_pf_20canalyticalSolutions_40LinearADR_Sine_du(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_du) {
5483  PyObject *__pyx_r = NULL;
5484  __Pyx_RefNannyDeclarations
5485  PyObject *__pyx_t_1 = NULL;
5486  PyObject *__pyx_t_2 = NULL;
5487  PyObject *__pyx_t_3 = NULL;
5488  int __pyx_t_4;
5489  int __pyx_lineno = 0;
5490  const char *__pyx_filename = NULL;
5491  int __pyx_clineno = 0;
5492  __Pyx_RefNannySetupContext("LinearADR_Sine_du", 0);
5493 
5494  /* "canalyticalSolutions.pyx":131
5495  *
5496  * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int:
5497  * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data) # <<<<<<<<<<<<<<
5498  *
5499  *
5500  */
5501  __Pyx_XDECREF(__pyx_r);
5502  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
5503  __Pyx_GOTREF(__pyx_t_1);
5504  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
5505  __Pyx_GOTREF(__pyx_t_2);
5506  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 131, __pyx_L1_error)
5507  __Pyx_GOTREF(__pyx_t_3);
5508  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5509  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5510  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L1_error)
5511  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5512  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine_du(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_du->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 131, __pyx_L1_error)
5513  __Pyx_GOTREF(__pyx_t_3);
5514  __pyx_r = __pyx_t_3;
5515  __pyx_t_3 = 0;
5516  goto __pyx_L0;
5517 
5518  /* "canalyticalSolutions.pyx":130
5519  *
5520  *
5521  * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
5522  * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
5523  *
5524  */
5525 
5526  /* function exit code */
5527  __pyx_L1_error:;
5528  __Pyx_XDECREF(__pyx_t_1);
5529  __Pyx_XDECREF(__pyx_t_2);
5530  __Pyx_XDECREF(__pyx_t_3);
5531  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_du", __pyx_clineno, __pyx_lineno, __pyx_filename);
5532  __pyx_r = NULL;
5533  __pyx_L0:;
5534  __Pyx_XGIVEREF(__pyx_r);
5535  __Pyx_RefNannyFinishContext();
5536  return __pyx_r;
5537 }
5538 
5539 /* "canalyticalSolutions.pyx":134
5540  *
5541  *
5542  * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
5543  * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
5544  *
5545  */
5546 
5547 /* Python wrapper */
5548 static PyObject *__pyx_pw_20canalyticalSolutions_43LinearADR_Sine_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5549 static PyMethodDef __pyx_mdef_20canalyticalSolutions_43LinearADR_Sine_r = {"LinearADR_Sine_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_43LinearADR_Sine_r, METH_VARARGS|METH_KEYWORDS, 0};
5550 static PyObject *__pyx_pw_20canalyticalSolutions_43LinearADR_Sine_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5551  PyArrayObject *__pyx_v_iwork = 0;
5552  PyArrayObject *__pyx_v_rwork = 0;
5553  double __pyx_v_t;
5554  PyArrayObject *__pyx_v_x = 0;
5555  PyArrayObject *__pyx_v_u = 0;
5556  PyArrayObject *__pyx_v_r = 0;
5557  int __pyx_lineno = 0;
5558  const char *__pyx_filename = NULL;
5559  int __pyx_clineno = 0;
5560  PyObject *__pyx_r = 0;
5561  __Pyx_RefNannyDeclarations
5562  __Pyx_RefNannySetupContext("LinearADR_Sine_r (wrapper)", 0);
5563  {
5564  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
5565  PyObject* values[6] = {0,0,0,0,0,0};
5566  if (unlikely(__pyx_kwds)) {
5567  Py_ssize_t kw_args;
5568  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5569  switch (pos_args) {
5570  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
5571  CYTHON_FALLTHROUGH;
5572  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5573  CYTHON_FALLTHROUGH;
5574  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5575  CYTHON_FALLTHROUGH;
5576  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5577  CYTHON_FALLTHROUGH;
5578  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5579  CYTHON_FALLTHROUGH;
5580  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5581  CYTHON_FALLTHROUGH;
5582  case 0: break;
5583  default: goto __pyx_L5_argtuple_error;
5584  }
5585  kw_args = PyDict_Size(__pyx_kwds);
5586  switch (pos_args) {
5587  case 0:
5588  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
5589  else goto __pyx_L5_argtuple_error;
5590  CYTHON_FALLTHROUGH;
5591  case 1:
5592  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
5593  else {
5594  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, 1); __PYX_ERR(0, 134, __pyx_L3_error)
5595  }
5596  CYTHON_FALLTHROUGH;
5597  case 2:
5598  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
5599  else {
5600  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, 2); __PYX_ERR(0, 134, __pyx_L3_error)
5601  }
5602  CYTHON_FALLTHROUGH;
5603  case 3:
5604  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
5605  else {
5606  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, 3); __PYX_ERR(0, 134, __pyx_L3_error)
5607  }
5608  CYTHON_FALLTHROUGH;
5609  case 4:
5610  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
5611  else {
5612  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, 4); __PYX_ERR(0, 134, __pyx_L3_error)
5613  }
5614  CYTHON_FALLTHROUGH;
5615  case 5:
5616  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
5617  else {
5618  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, 5); __PYX_ERR(0, 134, __pyx_L3_error)
5619  }
5620  }
5621  if (unlikely(kw_args > 0)) {
5622  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine_r") < 0)) __PYX_ERR(0, 134, __pyx_L3_error)
5623  }
5624  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
5625  goto __pyx_L5_argtuple_error;
5626  } else {
5627  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5628  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5629  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5630  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5631  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5632  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
5633  }
5634  __pyx_v_iwork = ((PyArrayObject *)values[0]);
5635  __pyx_v_rwork = ((PyArrayObject *)values[1]);
5636  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 134, __pyx_L3_error)
5637  __pyx_v_x = ((PyArrayObject *)values[3]);
5638  __pyx_v_u = ((PyArrayObject *)values[4]);
5639  __pyx_v_r = ((PyArrayObject *)values[5]);
5640  }
5641  goto __pyx_L4_argument_unpacking_done;
5642  __pyx_L5_argtuple_error:;
5643  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 134, __pyx_L3_error)
5644  __pyx_L3_error:;
5645  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
5646  __Pyx_RefNannyFinishContext();
5647  return NULL;
5648  __pyx_L4_argument_unpacking_done:;
5649  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 134, __pyx_L1_error)
5650  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 134, __pyx_L1_error)
5651  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 134, __pyx_L1_error)
5652  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 134, __pyx_L1_error)
5653  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 134, __pyx_L1_error)
5654  __pyx_r = __pyx_pf_20canalyticalSolutions_42LinearADR_Sine_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
5655 
5656  /* function exit code */
5657  goto __pyx_L0;
5658  __pyx_L1_error:;
5659  __pyx_r = NULL;
5660  __pyx_L0:;
5661  __Pyx_RefNannyFinishContext();
5662  return __pyx_r;
5663 }
5664 
5665 static PyObject *__pyx_pf_20canalyticalSolutions_42LinearADR_Sine_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
5666  PyObject *__pyx_r = NULL;
5667  __Pyx_RefNannyDeclarations
5668  PyObject *__pyx_t_1 = NULL;
5669  PyObject *__pyx_t_2 = NULL;
5670  PyObject *__pyx_t_3 = NULL;
5671  int __pyx_t_4;
5672  int __pyx_lineno = 0;
5673  const char *__pyx_filename = NULL;
5674  int __pyx_clineno = 0;
5675  __Pyx_RefNannySetupContext("LinearADR_Sine_r", 0);
5676 
5677  /* "canalyticalSolutions.pyx":135
5678  *
5679  * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
5680  * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
5681  *
5682  *
5683  */
5684  __Pyx_XDECREF(__pyx_r);
5685  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
5686  __Pyx_GOTREF(__pyx_t_1);
5687  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
5688  __Pyx_GOTREF(__pyx_t_2);
5689  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error)
5690  __Pyx_GOTREF(__pyx_t_3);
5691  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5692  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5693  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L1_error)
5694  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5695  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error)
5696  __Pyx_GOTREF(__pyx_t_3);
5697  __pyx_r = __pyx_t_3;
5698  __pyx_t_3 = 0;
5699  goto __pyx_L0;
5700 
5701  /* "canalyticalSolutions.pyx":134
5702  *
5703  *
5704  * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
5705  * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
5706  *
5707  */
5708 
5709  /* function exit code */
5710  __pyx_L1_error:;
5711  __Pyx_XDECREF(__pyx_t_1);
5712  __Pyx_XDECREF(__pyx_t_2);
5713  __Pyx_XDECREF(__pyx_t_3);
5714  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
5715  __pyx_r = NULL;
5716  __pyx_L0:;
5717  __Pyx_XGIVEREF(__pyx_r);
5718  __Pyx_RefNannyFinishContext();
5719  return __pyx_r;
5720 }
5721 
5722 /* "canalyticalSolutions.pyx":138
5723  *
5724  *
5725  * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
5726  * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
5727  *
5728  */
5729 
5730 /* Python wrapper */
5731 static PyObject *__pyx_pw_20canalyticalSolutions_45LinearADR_Sine_totalVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5732 static PyMethodDef __pyx_mdef_20canalyticalSolutions_45LinearADR_Sine_totalVelocity = {"LinearADR_Sine_totalVelocity", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_45LinearADR_Sine_totalVelocity, METH_VARARGS|METH_KEYWORDS, 0};
5733 static PyObject *__pyx_pw_20canalyticalSolutions_45LinearADR_Sine_totalVelocity(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5734  PyArrayObject *__pyx_v_iwork = 0;
5735  PyArrayObject *__pyx_v_rwork = 0;
5736  double __pyx_v_t;
5737  PyArrayObject *__pyx_v_x = 0;
5738  PyArrayObject *__pyx_v_u = 0;
5739  int __pyx_lineno = 0;
5740  const char *__pyx_filename = NULL;
5741  int __pyx_clineno = 0;
5742  PyObject *__pyx_r = 0;
5743  __Pyx_RefNannyDeclarations
5744  __Pyx_RefNannySetupContext("LinearADR_Sine_totalVelocity (wrapper)", 0);
5745  {
5746  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
5747  PyObject* values[5] = {0,0,0,0,0};
5748  if (unlikely(__pyx_kwds)) {
5749  Py_ssize_t kw_args;
5750  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5751  switch (pos_args) {
5752  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5753  CYTHON_FALLTHROUGH;
5754  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5755  CYTHON_FALLTHROUGH;
5756  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5757  CYTHON_FALLTHROUGH;
5758  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5759  CYTHON_FALLTHROUGH;
5760  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5761  CYTHON_FALLTHROUGH;
5762  case 0: break;
5763  default: goto __pyx_L5_argtuple_error;
5764  }
5765  kw_args = PyDict_Size(__pyx_kwds);
5766  switch (pos_args) {
5767  case 0:
5768  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
5769  else goto __pyx_L5_argtuple_error;
5770  CYTHON_FALLTHROUGH;
5771  case 1:
5772  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
5773  else {
5774  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, 1); __PYX_ERR(0, 138, __pyx_L3_error)
5775  }
5776  CYTHON_FALLTHROUGH;
5777  case 2:
5778  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
5779  else {
5780  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, 2); __PYX_ERR(0, 138, __pyx_L3_error)
5781  }
5782  CYTHON_FALLTHROUGH;
5783  case 3:
5784  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
5785  else {
5786  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, 3); __PYX_ERR(0, 138, __pyx_L3_error)
5787  }
5788  CYTHON_FALLTHROUGH;
5789  case 4:
5790  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
5791  else {
5792  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, 4); __PYX_ERR(0, 138, __pyx_L3_error)
5793  }
5794  }
5795  if (unlikely(kw_args > 0)) {
5796  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "LinearADR_Sine_totalVelocity") < 0)) __PYX_ERR(0, 138, __pyx_L3_error)
5797  }
5798  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
5799  goto __pyx_L5_argtuple_error;
5800  } else {
5801  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5802  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5803  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5804  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5805  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5806  }
5807  __pyx_v_iwork = ((PyArrayObject *)values[0]);
5808  __pyx_v_rwork = ((PyArrayObject *)values[1]);
5809  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 138, __pyx_L3_error)
5810  __pyx_v_x = ((PyArrayObject *)values[3]);
5811  __pyx_v_u = ((PyArrayObject *)values[4]);
5812  }
5813  goto __pyx_L4_argument_unpacking_done;
5814  __pyx_L5_argtuple_error:;
5815  __Pyx_RaiseArgtupleInvalid("LinearADR_Sine_totalVelocity", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 138, __pyx_L3_error)
5816  __pyx_L3_error:;
5817  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
5818  __Pyx_RefNannyFinishContext();
5819  return NULL;
5820  __pyx_L4_argument_unpacking_done:;
5821  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 138, __pyx_L1_error)
5822  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 138, __pyx_L1_error)
5823  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 138, __pyx_L1_error)
5824  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 138, __pyx_L1_error)
5825  __pyx_r = __pyx_pf_20canalyticalSolutions_44LinearADR_Sine_totalVelocity(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
5826 
5827  /* function exit code */
5828  goto __pyx_L0;
5829  __pyx_L1_error:;
5830  __pyx_r = NULL;
5831  __pyx_L0:;
5832  __Pyx_RefNannyFinishContext();
5833  return __pyx_r;
5834 }
5835 
5836 static PyObject *__pyx_pf_20canalyticalSolutions_44LinearADR_Sine_totalVelocity(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
5837  PyObject *__pyx_r = NULL;
5838  __Pyx_RefNannyDeclarations
5839  PyObject *__pyx_t_1 = NULL;
5840  PyObject *__pyx_t_2 = NULL;
5841  PyObject *__pyx_t_3 = NULL;
5842  int __pyx_t_4;
5843  int __pyx_lineno = 0;
5844  const char *__pyx_filename = NULL;
5845  int __pyx_clineno = 0;
5846  __Pyx_RefNannySetupContext("LinearADR_Sine_totalVelocity", 0);
5847 
5848  /* "canalyticalSolutions.pyx":139
5849  *
5850  * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
5851  * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
5852  *
5853  *
5854  */
5855  __Pyx_XDECREF(__pyx_r);
5856  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
5857  __Pyx_GOTREF(__pyx_t_1);
5858  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
5859  __Pyx_GOTREF(__pyx_t_2);
5860  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
5861  __Pyx_GOTREF(__pyx_t_3);
5862  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5863  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5864  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 139, __pyx_L1_error)
5865  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5866  __pyx_t_3 = __Pyx_PyInt_From_int(LinearADR_Sine_totalVelocity(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
5867  __Pyx_GOTREF(__pyx_t_3);
5868  __pyx_r = __pyx_t_3;
5869  __pyx_t_3 = 0;
5870  goto __pyx_L0;
5871 
5872  /* "canalyticalSolutions.pyx":138
5873  *
5874  *
5875  * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
5876  * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
5877  *
5878  */
5879 
5880  /* function exit code */
5881  __pyx_L1_error:;
5882  __Pyx_XDECREF(__pyx_t_1);
5883  __Pyx_XDECREF(__pyx_t_2);
5884  __Pyx_XDECREF(__pyx_t_3);
5885  __Pyx_AddTraceback("canalyticalSolutions.LinearADR_Sine_totalVelocity", __pyx_clineno, __pyx_lineno, __pyx_filename);
5886  __pyx_r = NULL;
5887  __pyx_L0:;
5888  __Pyx_XGIVEREF(__pyx_r);
5889  __Pyx_RefNannyFinishContext();
5890  return __pyx_r;
5891 }
5892 
5893 /* "canalyticalSolutions.pyx":142
5894  *
5895  *
5896  * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
5897  * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
5898  *
5899  */
5900 
5901 /* Python wrapper */
5902 static PyObject *__pyx_pw_20canalyticalSolutions_47NonlinearAD_SteadyState(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5903 static PyMethodDef __pyx_mdef_20canalyticalSolutions_47NonlinearAD_SteadyState = {"NonlinearAD_SteadyState", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_47NonlinearAD_SteadyState, METH_VARARGS|METH_KEYWORDS, 0};
5904 static PyObject *__pyx_pw_20canalyticalSolutions_47NonlinearAD_SteadyState(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5905  PyArrayObject *__pyx_v_iwork = 0;
5906  PyArrayObject *__pyx_v_rwork = 0;
5907  double __pyx_v_t;
5908  PyArrayObject *__pyx_v_x = 0;
5909  PyArrayObject *__pyx_v_u = 0;
5910  int __pyx_lineno = 0;
5911  const char *__pyx_filename = NULL;
5912  int __pyx_clineno = 0;
5913  PyObject *__pyx_r = 0;
5914  __Pyx_RefNannyDeclarations
5915  __Pyx_RefNannySetupContext("NonlinearAD_SteadyState (wrapper)", 0);
5916  {
5917  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
5918  PyObject* values[5] = {0,0,0,0,0};
5919  if (unlikely(__pyx_kwds)) {
5920  Py_ssize_t kw_args;
5921  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5922  switch (pos_args) {
5923  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5924  CYTHON_FALLTHROUGH;
5925  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5926  CYTHON_FALLTHROUGH;
5927  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5928  CYTHON_FALLTHROUGH;
5929  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5930  CYTHON_FALLTHROUGH;
5931  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5932  CYTHON_FALLTHROUGH;
5933  case 0: break;
5934  default: goto __pyx_L5_argtuple_error;
5935  }
5936  kw_args = PyDict_Size(__pyx_kwds);
5937  switch (pos_args) {
5938  case 0:
5939  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
5940  else goto __pyx_L5_argtuple_error;
5941  CYTHON_FALLTHROUGH;
5942  case 1:
5943  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
5944  else {
5945  __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, 1); __PYX_ERR(0, 142, __pyx_L3_error)
5946  }
5947  CYTHON_FALLTHROUGH;
5948  case 2:
5949  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
5950  else {
5951  __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, 2); __PYX_ERR(0, 142, __pyx_L3_error)
5952  }
5953  CYTHON_FALLTHROUGH;
5954  case 3:
5955  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
5956  else {
5957  __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, 3); __PYX_ERR(0, 142, __pyx_L3_error)
5958  }
5959  CYTHON_FALLTHROUGH;
5960  case 4:
5961  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
5962  else {
5963  __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, 4); __PYX_ERR(0, 142, __pyx_L3_error)
5964  }
5965  }
5966  if (unlikely(kw_args > 0)) {
5967  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "NonlinearAD_SteadyState") < 0)) __PYX_ERR(0, 142, __pyx_L3_error)
5968  }
5969  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
5970  goto __pyx_L5_argtuple_error;
5971  } else {
5972  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5973  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5974  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5975  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5976  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
5977  }
5978  __pyx_v_iwork = ((PyArrayObject *)values[0]);
5979  __pyx_v_rwork = ((PyArrayObject *)values[1]);
5980  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 142, __pyx_L3_error)
5981  __pyx_v_x = ((PyArrayObject *)values[3]);
5982  __pyx_v_u = ((PyArrayObject *)values[4]);
5983  }
5984  goto __pyx_L4_argument_unpacking_done;
5985  __pyx_L5_argtuple_error:;
5986  __Pyx_RaiseArgtupleInvalid("NonlinearAD_SteadyState", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 142, __pyx_L3_error)
5987  __pyx_L3_error:;
5988  __Pyx_AddTraceback("canalyticalSolutions.NonlinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
5989  __Pyx_RefNannyFinishContext();
5990  return NULL;
5991  __pyx_L4_argument_unpacking_done:;
5992  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 142, __pyx_L1_error)
5993  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 142, __pyx_L1_error)
5994  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 142, __pyx_L1_error)
5995  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 142, __pyx_L1_error)
5996  __pyx_r = __pyx_pf_20canalyticalSolutions_46NonlinearAD_SteadyState(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
5997 
5998  /* function exit code */
5999  goto __pyx_L0;
6000  __pyx_L1_error:;
6001  __pyx_r = NULL;
6002  __pyx_L0:;
6003  __Pyx_RefNannyFinishContext();
6004  return __pyx_r;
6005 }
6006 
6007 static PyObject *__pyx_pf_20canalyticalSolutions_46NonlinearAD_SteadyState(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6008  PyObject *__pyx_r = NULL;
6009  __Pyx_RefNannyDeclarations
6010  PyObject *__pyx_t_1 = NULL;
6011  PyObject *__pyx_t_2 = NULL;
6012  PyObject *__pyx_t_3 = NULL;
6013  int __pyx_t_4;
6014  int __pyx_lineno = 0;
6015  const char *__pyx_filename = NULL;
6016  int __pyx_clineno = 0;
6017  __Pyx_RefNannySetupContext("NonlinearAD_SteadyState", 0);
6018 
6019  /* "canalyticalSolutions.pyx":143
6020  *
6021  * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6022  * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6023  *
6024  *
6025  */
6026  __Pyx_XDECREF(__pyx_r);
6027  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
6028  __Pyx_GOTREF(__pyx_t_1);
6029  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
6030  __Pyx_GOTREF(__pyx_t_2);
6031  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
6032  __Pyx_GOTREF(__pyx_t_3);
6033  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6034  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6035  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 143, __pyx_L1_error)
6036  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6037  __pyx_t_3 = __Pyx_PyInt_From_int(NonlinearAD_SteadyState(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
6038  __Pyx_GOTREF(__pyx_t_3);
6039  __pyx_r = __pyx_t_3;
6040  __pyx_t_3 = 0;
6041  goto __pyx_L0;
6042 
6043  /* "canalyticalSolutions.pyx":142
6044  *
6045  *
6046  * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6047  * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6048  *
6049  */
6050 
6051  /* function exit code */
6052  __pyx_L1_error:;
6053  __Pyx_XDECREF(__pyx_t_1);
6054  __Pyx_XDECREF(__pyx_t_2);
6055  __Pyx_XDECREF(__pyx_t_3);
6056  __Pyx_AddTraceback("canalyticalSolutions.NonlinearAD_SteadyState", __pyx_clineno, __pyx_lineno, __pyx_filename);
6057  __pyx_r = NULL;
6058  __pyx_L0:;
6059  __Pyx_XGIVEREF(__pyx_r);
6060  __Pyx_RefNannyFinishContext();
6061  return __pyx_r;
6062 }
6063 
6064 /* "canalyticalSolutions.pyx":146
6065  *
6066  *
6067  * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6068  * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6069  *
6070  */
6071 
6072 /* Python wrapper */
6073 static PyObject *__pyx_pw_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6074 static PyMethodDef __pyx_mdef_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC = {"NonlinearADR_Decay_DiracIC", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC, METH_VARARGS|METH_KEYWORDS, 0};
6075 static PyObject *__pyx_pw_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6076  PyArrayObject *__pyx_v_iwork = 0;
6077  PyArrayObject *__pyx_v_rwork = 0;
6078  double __pyx_v_t;
6079  PyArrayObject *__pyx_v_x = 0;
6080  PyArrayObject *__pyx_v_u = 0;
6081  int __pyx_lineno = 0;
6082  const char *__pyx_filename = NULL;
6083  int __pyx_clineno = 0;
6084  PyObject *__pyx_r = 0;
6085  __Pyx_RefNannyDeclarations
6086  __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC (wrapper)", 0);
6087  {
6088  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
6089  PyObject* values[5] = {0,0,0,0,0};
6090  if (unlikely(__pyx_kwds)) {
6091  Py_ssize_t kw_args;
6092  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6093  switch (pos_args) {
6094  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6095  CYTHON_FALLTHROUGH;
6096  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6097  CYTHON_FALLTHROUGH;
6098  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6099  CYTHON_FALLTHROUGH;
6100  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6101  CYTHON_FALLTHROUGH;
6102  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6103  CYTHON_FALLTHROUGH;
6104  case 0: break;
6105  default: goto __pyx_L5_argtuple_error;
6106  }
6107  kw_args = PyDict_Size(__pyx_kwds);
6108  switch (pos_args) {
6109  case 0:
6110  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
6111  else goto __pyx_L5_argtuple_error;
6112  CYTHON_FALLTHROUGH;
6113  case 1:
6114  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
6115  else {
6116  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, 1); __PYX_ERR(0, 146, __pyx_L3_error)
6117  }
6118  CYTHON_FALLTHROUGH;
6119  case 2:
6120  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
6121  else {
6122  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, 2); __PYX_ERR(0, 146, __pyx_L3_error)
6123  }
6124  CYTHON_FALLTHROUGH;
6125  case 3:
6126  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6127  else {
6128  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, 3); __PYX_ERR(0, 146, __pyx_L3_error)
6129  }
6130  CYTHON_FALLTHROUGH;
6131  case 4:
6132  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
6133  else {
6134  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, 4); __PYX_ERR(0, 146, __pyx_L3_error)
6135  }
6136  }
6137  if (unlikely(kw_args > 0)) {
6138  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "NonlinearADR_Decay_DiracIC") < 0)) __PYX_ERR(0, 146, __pyx_L3_error)
6139  }
6140  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
6141  goto __pyx_L5_argtuple_error;
6142  } else {
6143  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6144  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6145  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6146  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6147  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6148  }
6149  __pyx_v_iwork = ((PyArrayObject *)values[0]);
6150  __pyx_v_rwork = ((PyArrayObject *)values[1]);
6151  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 146, __pyx_L3_error)
6152  __pyx_v_x = ((PyArrayObject *)values[3]);
6153  __pyx_v_u = ((PyArrayObject *)values[4]);
6154  }
6155  goto __pyx_L4_argument_unpacking_done;
6156  __pyx_L5_argtuple_error:;
6157  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 146, __pyx_L3_error)
6158  __pyx_L3_error:;
6159  __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
6160  __Pyx_RefNannyFinishContext();
6161  return NULL;
6162  __pyx_L4_argument_unpacking_done:;
6163  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 146, __pyx_L1_error)
6164  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 146, __pyx_L1_error)
6165  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 146, __pyx_L1_error)
6166  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 146, __pyx_L1_error)
6167  __pyx_r = __pyx_pf_20canalyticalSolutions_48NonlinearADR_Decay_DiracIC(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
6168 
6169  /* function exit code */
6170  goto __pyx_L0;
6171  __pyx_L1_error:;
6172  __pyx_r = NULL;
6173  __pyx_L0:;
6174  __Pyx_RefNannyFinishContext();
6175  return __pyx_r;
6176 }
6177 
6178 static PyObject *__pyx_pf_20canalyticalSolutions_48NonlinearADR_Decay_DiracIC(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6179  PyObject *__pyx_r = NULL;
6180  __Pyx_RefNannyDeclarations
6181  PyObject *__pyx_t_1 = NULL;
6182  PyObject *__pyx_t_2 = NULL;
6183  PyObject *__pyx_t_3 = NULL;
6184  int __pyx_t_4;
6185  int __pyx_lineno = 0;
6186  const char *__pyx_filename = NULL;
6187  int __pyx_clineno = 0;
6188  __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC", 0);
6189 
6190  /* "canalyticalSolutions.pyx":147
6191  *
6192  * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6193  * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6194  *
6195  *
6196  */
6197  __Pyx_XDECREF(__pyx_r);
6198  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
6199  __Pyx_GOTREF(__pyx_t_1);
6200  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
6201  __Pyx_GOTREF(__pyx_t_2);
6202  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
6203  __Pyx_GOTREF(__pyx_t_3);
6204  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6205  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6206  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L1_error)
6207  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6208  __pyx_t_3 = __Pyx_PyInt_From_int(NonlinearADR_Decay_DiracIC(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
6209  __Pyx_GOTREF(__pyx_t_3);
6210  __pyx_r = __pyx_t_3;
6211  __pyx_t_3 = 0;
6212  goto __pyx_L0;
6213 
6214  /* "canalyticalSolutions.pyx":146
6215  *
6216  *
6217  * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6218  * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6219  *
6220  */
6221 
6222  /* function exit code */
6223  __pyx_L1_error:;
6224  __Pyx_XDECREF(__pyx_t_1);
6225  __Pyx_XDECREF(__pyx_t_2);
6226  __Pyx_XDECREF(__pyx_t_3);
6227  __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
6228  __pyx_r = NULL;
6229  __pyx_L0:;
6230  __Pyx_XGIVEREF(__pyx_r);
6231  __Pyx_RefNannyFinishContext();
6232  return __pyx_r;
6233 }
6234 
6235 /* "canalyticalSolutions.pyx":150
6236  *
6237  *
6238  * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
6239  * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
6240  *
6241  */
6242 
6243 /* Python wrapper */
6244 static PyObject *__pyx_pw_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6245 static PyMethodDef __pyx_mdef_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr = {"NonlinearADR_Decay_DiracIC_dr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr, METH_VARARGS|METH_KEYWORDS, 0};
6246 static PyObject *__pyx_pw_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6247  PyArrayObject *__pyx_v_iwork = 0;
6248  PyArrayObject *__pyx_v_rwork = 0;
6249  double __pyx_v_t;
6250  PyArrayObject *__pyx_v_x = 0;
6251  PyArrayObject *__pyx_v_u = 0;
6252  PyArrayObject *__pyx_v_dr = 0;
6253  int __pyx_lineno = 0;
6254  const char *__pyx_filename = NULL;
6255  int __pyx_clineno = 0;
6256  PyObject *__pyx_r = 0;
6257  __Pyx_RefNannyDeclarations
6258  __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_dr (wrapper)", 0);
6259  {
6260  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_dr,0};
6261  PyObject* values[6] = {0,0,0,0,0,0};
6262  if (unlikely(__pyx_kwds)) {
6263  Py_ssize_t kw_args;
6264  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6265  switch (pos_args) {
6266  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
6267  CYTHON_FALLTHROUGH;
6268  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6269  CYTHON_FALLTHROUGH;
6270  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6271  CYTHON_FALLTHROUGH;
6272  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6273  CYTHON_FALLTHROUGH;
6274  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6275  CYTHON_FALLTHROUGH;
6276  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6277  CYTHON_FALLTHROUGH;
6278  case 0: break;
6279  default: goto __pyx_L5_argtuple_error;
6280  }
6281  kw_args = PyDict_Size(__pyx_kwds);
6282  switch (pos_args) {
6283  case 0:
6284  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
6285  else goto __pyx_L5_argtuple_error;
6286  CYTHON_FALLTHROUGH;
6287  case 1:
6288  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
6289  else {
6290  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, 1); __PYX_ERR(0, 150, __pyx_L3_error)
6291  }
6292  CYTHON_FALLTHROUGH;
6293  case 2:
6294  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
6295  else {
6296  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, 2); __PYX_ERR(0, 150, __pyx_L3_error)
6297  }
6298  CYTHON_FALLTHROUGH;
6299  case 3:
6300  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6301  else {
6302  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, 3); __PYX_ERR(0, 150, __pyx_L3_error)
6303  }
6304  CYTHON_FALLTHROUGH;
6305  case 4:
6306  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
6307  else {
6308  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, 4); __PYX_ERR(0, 150, __pyx_L3_error)
6309  }
6310  CYTHON_FALLTHROUGH;
6311  case 5:
6312  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dr)) != 0)) kw_args--;
6313  else {
6314  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, 5); __PYX_ERR(0, 150, __pyx_L3_error)
6315  }
6316  }
6317  if (unlikely(kw_args > 0)) {
6318  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "NonlinearADR_Decay_DiracIC_dr") < 0)) __PYX_ERR(0, 150, __pyx_L3_error)
6319  }
6320  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
6321  goto __pyx_L5_argtuple_error;
6322  } else {
6323  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6324  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6325  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6326  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6327  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6328  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
6329  }
6330  __pyx_v_iwork = ((PyArrayObject *)values[0]);
6331  __pyx_v_rwork = ((PyArrayObject *)values[1]);
6332  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
6333  __pyx_v_x = ((PyArrayObject *)values[3]);
6334  __pyx_v_u = ((PyArrayObject *)values[4]);
6335  __pyx_v_dr = ((PyArrayObject *)values[5]);
6336  }
6337  goto __pyx_L4_argument_unpacking_done;
6338  __pyx_L5_argtuple_error:;
6339  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_dr", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 150, __pyx_L3_error)
6340  __pyx_L3_error:;
6341  __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
6342  __Pyx_RefNannyFinishContext();
6343  return NULL;
6344  __pyx_L4_argument_unpacking_done:;
6345  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 150, __pyx_L1_error)
6346  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 150, __pyx_L1_error)
6347  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 150, __pyx_L1_error)
6348  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 150, __pyx_L1_error)
6349  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 150, __pyx_L1_error)
6350  __pyx_r = __pyx_pf_20canalyticalSolutions_50NonlinearADR_Decay_DiracIC_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
6351 
6352  /* function exit code */
6353  goto __pyx_L0;
6354  __pyx_L1_error:;
6355  __pyx_r = NULL;
6356  __pyx_L0:;
6357  __Pyx_RefNannyFinishContext();
6358  return __pyx_r;
6359 }
6360 
6361 static PyObject *__pyx_pf_20canalyticalSolutions_50NonlinearADR_Decay_DiracIC_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
6362  PyObject *__pyx_r = NULL;
6363  __Pyx_RefNannyDeclarations
6364  PyObject *__pyx_t_1 = NULL;
6365  PyObject *__pyx_t_2 = NULL;
6366  PyObject *__pyx_t_3 = NULL;
6367  int __pyx_t_4;
6368  int __pyx_lineno = 0;
6369  const char *__pyx_filename = NULL;
6370  int __pyx_clineno = 0;
6371  __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_dr", 0);
6372 
6373  /* "canalyticalSolutions.pyx":151
6374  *
6375  * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
6376  * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
6377  *
6378  *
6379  */
6380  __Pyx_XDECREF(__pyx_r);
6381  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
6382  __Pyx_GOTREF(__pyx_t_1);
6383  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
6384  __Pyx_GOTREF(__pyx_t_2);
6385  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
6386  __Pyx_GOTREF(__pyx_t_3);
6387  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6388  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6389  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 151, __pyx_L1_error)
6390  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6391  __pyx_t_3 = __Pyx_PyInt_From_int(NonlinearADR_Decay_DiracIC_dr(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_dr->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
6392  __Pyx_GOTREF(__pyx_t_3);
6393  __pyx_r = __pyx_t_3;
6394  __pyx_t_3 = 0;
6395  goto __pyx_L0;
6396 
6397  /* "canalyticalSolutions.pyx":150
6398  *
6399  *
6400  * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
6401  * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
6402  *
6403  */
6404 
6405  /* function exit code */
6406  __pyx_L1_error:;
6407  __Pyx_XDECREF(__pyx_t_1);
6408  __Pyx_XDECREF(__pyx_t_2);
6409  __Pyx_XDECREF(__pyx_t_3);
6410  __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
6411  __pyx_r = NULL;
6412  __pyx_L0:;
6413  __Pyx_XGIVEREF(__pyx_r);
6414  __Pyx_RefNannyFinishContext();
6415  return __pyx_r;
6416 }
6417 
6418 /* "canalyticalSolutions.pyx":154
6419  *
6420  *
6421  * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6422  * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6423  *
6424  */
6425 
6426 /* Python wrapper */
6427 static PyObject *__pyx_pw_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6428 static PyMethodDef __pyx_mdef_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r = {"NonlinearADR_Decay_DiracIC_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r, METH_VARARGS|METH_KEYWORDS, 0};
6429 static PyObject *__pyx_pw_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6430  PyArrayObject *__pyx_v_iwork = 0;
6431  PyArrayObject *__pyx_v_rwork = 0;
6432  double __pyx_v_t;
6433  PyArrayObject *__pyx_v_x = 0;
6434  PyArrayObject *__pyx_v_u = 0;
6435  PyArrayObject *__pyx_v_r = 0;
6436  int __pyx_lineno = 0;
6437  const char *__pyx_filename = NULL;
6438  int __pyx_clineno = 0;
6439  PyObject *__pyx_r = 0;
6440  __Pyx_RefNannyDeclarations
6441  __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_r (wrapper)", 0);
6442  {
6443  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
6444  PyObject* values[6] = {0,0,0,0,0,0};
6445  if (unlikely(__pyx_kwds)) {
6446  Py_ssize_t kw_args;
6447  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6448  switch (pos_args) {
6449  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
6450  CYTHON_FALLTHROUGH;
6451  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6452  CYTHON_FALLTHROUGH;
6453  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6454  CYTHON_FALLTHROUGH;
6455  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6456  CYTHON_FALLTHROUGH;
6457  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6458  CYTHON_FALLTHROUGH;
6459  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6460  CYTHON_FALLTHROUGH;
6461  case 0: break;
6462  default: goto __pyx_L5_argtuple_error;
6463  }
6464  kw_args = PyDict_Size(__pyx_kwds);
6465  switch (pos_args) {
6466  case 0:
6467  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
6468  else goto __pyx_L5_argtuple_error;
6469  CYTHON_FALLTHROUGH;
6470  case 1:
6471  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
6472  else {
6473  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, 1); __PYX_ERR(0, 154, __pyx_L3_error)
6474  }
6475  CYTHON_FALLTHROUGH;
6476  case 2:
6477  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
6478  else {
6479  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, 2); __PYX_ERR(0, 154, __pyx_L3_error)
6480  }
6481  CYTHON_FALLTHROUGH;
6482  case 3:
6483  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6484  else {
6485  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, 3); __PYX_ERR(0, 154, __pyx_L3_error)
6486  }
6487  CYTHON_FALLTHROUGH;
6488  case 4:
6489  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
6490  else {
6491  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, 4); __PYX_ERR(0, 154, __pyx_L3_error)
6492  }
6493  CYTHON_FALLTHROUGH;
6494  case 5:
6495  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
6496  else {
6497  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, 5); __PYX_ERR(0, 154, __pyx_L3_error)
6498  }
6499  }
6500  if (unlikely(kw_args > 0)) {
6501  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "NonlinearADR_Decay_DiracIC_r") < 0)) __PYX_ERR(0, 154, __pyx_L3_error)
6502  }
6503  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
6504  goto __pyx_L5_argtuple_error;
6505  } else {
6506  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6507  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6508  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6509  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6510  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6511  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
6512  }
6513  __pyx_v_iwork = ((PyArrayObject *)values[0]);
6514  __pyx_v_rwork = ((PyArrayObject *)values[1]);
6515  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 154, __pyx_L3_error)
6516  __pyx_v_x = ((PyArrayObject *)values[3]);
6517  __pyx_v_u = ((PyArrayObject *)values[4]);
6518  __pyx_v_r = ((PyArrayObject *)values[5]);
6519  }
6520  goto __pyx_L4_argument_unpacking_done;
6521  __pyx_L5_argtuple_error:;
6522  __Pyx_RaiseArgtupleInvalid("NonlinearADR_Decay_DiracIC_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 154, __pyx_L3_error)
6523  __pyx_L3_error:;
6524  __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
6525  __Pyx_RefNannyFinishContext();
6526  return NULL;
6527  __pyx_L4_argument_unpacking_done:;
6528  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 154, __pyx_L1_error)
6529  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 154, __pyx_L1_error)
6530  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 154, __pyx_L1_error)
6531  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 154, __pyx_L1_error)
6532  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 154, __pyx_L1_error)
6533  __pyx_r = __pyx_pf_20canalyticalSolutions_52NonlinearADR_Decay_DiracIC_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
6534 
6535  /* function exit code */
6536  goto __pyx_L0;
6537  __pyx_L1_error:;
6538  __pyx_r = NULL;
6539  __pyx_L0:;
6540  __Pyx_RefNannyFinishContext();
6541  return __pyx_r;
6542 }
6543 
6544 static PyObject *__pyx_pf_20canalyticalSolutions_52NonlinearADR_Decay_DiracIC_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
6545  PyObject *__pyx_r = NULL;
6546  __Pyx_RefNannyDeclarations
6547  PyObject *__pyx_t_1 = NULL;
6548  PyObject *__pyx_t_2 = NULL;
6549  PyObject *__pyx_t_3 = NULL;
6550  int __pyx_t_4;
6551  int __pyx_lineno = 0;
6552  const char *__pyx_filename = NULL;
6553  int __pyx_clineno = 0;
6554  __Pyx_RefNannySetupContext("NonlinearADR_Decay_DiracIC_r", 0);
6555 
6556  /* "canalyticalSolutions.pyx":155
6557  *
6558  * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
6559  * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
6560  *
6561  *
6562  */
6563  __Pyx_XDECREF(__pyx_r);
6564  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
6565  __Pyx_GOTREF(__pyx_t_1);
6566  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error)
6567  __Pyx_GOTREF(__pyx_t_2);
6568  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
6569  __Pyx_GOTREF(__pyx_t_3);
6570  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6571  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6572  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 155, __pyx_L1_error)
6573  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6574  __pyx_t_3 = __Pyx_PyInt_From_int(NonlinearADR_Decay_DiracIC_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
6575  __Pyx_GOTREF(__pyx_t_3);
6576  __pyx_r = __pyx_t_3;
6577  __pyx_t_3 = 0;
6578  goto __pyx_L0;
6579 
6580  /* "canalyticalSolutions.pyx":154
6581  *
6582  *
6583  * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
6584  * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
6585  *
6586  */
6587 
6588  /* function exit code */
6589  __pyx_L1_error:;
6590  __Pyx_XDECREF(__pyx_t_1);
6591  __Pyx_XDECREF(__pyx_t_2);
6592  __Pyx_XDECREF(__pyx_t_3);
6593  __Pyx_AddTraceback("canalyticalSolutions.NonlinearADR_Decay_DiracIC_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
6594  __pyx_r = NULL;
6595  __pyx_L0:;
6596  __Pyx_XGIVEREF(__pyx_r);
6597  __Pyx_RefNannyFinishContext();
6598  return __pyx_r;
6599 }
6600 
6601 /* "canalyticalSolutions.pyx":158
6602  *
6603  *
6604  * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6605  * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6606  *
6607  */
6608 
6609 /* Python wrapper */
6610 static PyObject *__pyx_pw_20canalyticalSolutions_55NonlinearDAE(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6611 static PyMethodDef __pyx_mdef_20canalyticalSolutions_55NonlinearDAE = {"NonlinearDAE", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_55NonlinearDAE, METH_VARARGS|METH_KEYWORDS, 0};
6612 static PyObject *__pyx_pw_20canalyticalSolutions_55NonlinearDAE(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6613  PyArrayObject *__pyx_v_iwork = 0;
6614  PyArrayObject *__pyx_v_rwork = 0;
6615  double __pyx_v_t;
6616  PyArrayObject *__pyx_v_x = 0;
6617  PyArrayObject *__pyx_v_u = 0;
6618  int __pyx_lineno = 0;
6619  const char *__pyx_filename = NULL;
6620  int __pyx_clineno = 0;
6621  PyObject *__pyx_r = 0;
6622  __Pyx_RefNannyDeclarations
6623  __Pyx_RefNannySetupContext("NonlinearDAE (wrapper)", 0);
6624  {
6625  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
6626  PyObject* values[5] = {0,0,0,0,0};
6627  if (unlikely(__pyx_kwds)) {
6628  Py_ssize_t kw_args;
6629  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6630  switch (pos_args) {
6631  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6632  CYTHON_FALLTHROUGH;
6633  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6634  CYTHON_FALLTHROUGH;
6635  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6636  CYTHON_FALLTHROUGH;
6637  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6638  CYTHON_FALLTHROUGH;
6639  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6640  CYTHON_FALLTHROUGH;
6641  case 0: break;
6642  default: goto __pyx_L5_argtuple_error;
6643  }
6644  kw_args = PyDict_Size(__pyx_kwds);
6645  switch (pos_args) {
6646  case 0:
6647  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
6648  else goto __pyx_L5_argtuple_error;
6649  CYTHON_FALLTHROUGH;
6650  case 1:
6651  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
6652  else {
6653  __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, 1); __PYX_ERR(0, 158, __pyx_L3_error)
6654  }
6655  CYTHON_FALLTHROUGH;
6656  case 2:
6657  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
6658  else {
6659  __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, 2); __PYX_ERR(0, 158, __pyx_L3_error)
6660  }
6661  CYTHON_FALLTHROUGH;
6662  case 3:
6663  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6664  else {
6665  __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, 3); __PYX_ERR(0, 158, __pyx_L3_error)
6666  }
6667  CYTHON_FALLTHROUGH;
6668  case 4:
6669  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
6670  else {
6671  __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, 4); __PYX_ERR(0, 158, __pyx_L3_error)
6672  }
6673  }
6674  if (unlikely(kw_args > 0)) {
6675  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "NonlinearDAE") < 0)) __PYX_ERR(0, 158, __pyx_L3_error)
6676  }
6677  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
6678  goto __pyx_L5_argtuple_error;
6679  } else {
6680  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6681  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6682  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6683  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6684  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6685  }
6686  __pyx_v_iwork = ((PyArrayObject *)values[0]);
6687  __pyx_v_rwork = ((PyArrayObject *)values[1]);
6688  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L3_error)
6689  __pyx_v_x = ((PyArrayObject *)values[3]);
6690  __pyx_v_u = ((PyArrayObject *)values[4]);
6691  }
6692  goto __pyx_L4_argument_unpacking_done;
6693  __pyx_L5_argtuple_error:;
6694  __Pyx_RaiseArgtupleInvalid("NonlinearDAE", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 158, __pyx_L3_error)
6695  __pyx_L3_error:;
6696  __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE", __pyx_clineno, __pyx_lineno, __pyx_filename);
6697  __Pyx_RefNannyFinishContext();
6698  return NULL;
6699  __pyx_L4_argument_unpacking_done:;
6700  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 158, __pyx_L1_error)
6701  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 158, __pyx_L1_error)
6702  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 158, __pyx_L1_error)
6703  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 158, __pyx_L1_error)
6704  __pyx_r = __pyx_pf_20canalyticalSolutions_54NonlinearDAE(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
6705 
6706  /* function exit code */
6707  goto __pyx_L0;
6708  __pyx_L1_error:;
6709  __pyx_r = NULL;
6710  __pyx_L0:;
6711  __Pyx_RefNannyFinishContext();
6712  return __pyx_r;
6713 }
6714 
6715 static PyObject *__pyx_pf_20canalyticalSolutions_54NonlinearDAE(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6716  PyObject *__pyx_r = NULL;
6717  __Pyx_RefNannyDeclarations
6718  PyObject *__pyx_t_1 = NULL;
6719  PyObject *__pyx_t_2 = NULL;
6720  PyObject *__pyx_t_3 = NULL;
6721  int __pyx_t_4;
6722  int __pyx_lineno = 0;
6723  const char *__pyx_filename = NULL;
6724  int __pyx_clineno = 0;
6725  __Pyx_RefNannySetupContext("NonlinearDAE", 0);
6726 
6727  /* "canalyticalSolutions.pyx":159
6728  *
6729  * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6730  * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6731  *
6732  *
6733  */
6734  __Pyx_XDECREF(__pyx_r);
6735  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error)
6736  __Pyx_GOTREF(__pyx_t_1);
6737  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
6738  __Pyx_GOTREF(__pyx_t_2);
6739  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
6740  __Pyx_GOTREF(__pyx_t_3);
6741  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6742  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6743  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L1_error)
6744  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6745  __pyx_t_3 = __Pyx_PyInt_From_int(NonlinearDAE(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
6746  __Pyx_GOTREF(__pyx_t_3);
6747  __pyx_r = __pyx_t_3;
6748  __pyx_t_3 = 0;
6749  goto __pyx_L0;
6750 
6751  /* "canalyticalSolutions.pyx":158
6752  *
6753  *
6754  * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6755  * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6756  *
6757  */
6758 
6759  /* function exit code */
6760  __pyx_L1_error:;
6761  __Pyx_XDECREF(__pyx_t_1);
6762  __Pyx_XDECREF(__pyx_t_2);
6763  __Pyx_XDECREF(__pyx_t_3);
6764  __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE", __pyx_clineno, __pyx_lineno, __pyx_filename);
6765  __pyx_r = NULL;
6766  __pyx_L0:;
6767  __Pyx_XGIVEREF(__pyx_r);
6768  __Pyx_RefNannyFinishContext();
6769  return __pyx_r;
6770 }
6771 
6772 /* "canalyticalSolutions.pyx":162
6773  *
6774  *
6775  * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6776  * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6777  *
6778  */
6779 
6780 /* Python wrapper */
6781 static PyObject *__pyx_pw_20canalyticalSolutions_57NonlinearDAE_f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6782 static PyMethodDef __pyx_mdef_20canalyticalSolutions_57NonlinearDAE_f = {"NonlinearDAE_f", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_57NonlinearDAE_f, METH_VARARGS|METH_KEYWORDS, 0};
6783 static PyObject *__pyx_pw_20canalyticalSolutions_57NonlinearDAE_f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6784  PyArrayObject *__pyx_v_iwork = 0;
6785  PyArrayObject *__pyx_v_rwork = 0;
6786  double __pyx_v_t;
6787  PyArrayObject *__pyx_v_x = 0;
6788  PyArrayObject *__pyx_v_u = 0;
6789  int __pyx_lineno = 0;
6790  const char *__pyx_filename = NULL;
6791  int __pyx_clineno = 0;
6792  PyObject *__pyx_r = 0;
6793  __Pyx_RefNannyDeclarations
6794  __Pyx_RefNannySetupContext("NonlinearDAE_f (wrapper)", 0);
6795  {
6796  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
6797  PyObject* values[5] = {0,0,0,0,0};
6798  if (unlikely(__pyx_kwds)) {
6799  Py_ssize_t kw_args;
6800  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6801  switch (pos_args) {
6802  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6803  CYTHON_FALLTHROUGH;
6804  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6805  CYTHON_FALLTHROUGH;
6806  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6807  CYTHON_FALLTHROUGH;
6808  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6809  CYTHON_FALLTHROUGH;
6810  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6811  CYTHON_FALLTHROUGH;
6812  case 0: break;
6813  default: goto __pyx_L5_argtuple_error;
6814  }
6815  kw_args = PyDict_Size(__pyx_kwds);
6816  switch (pos_args) {
6817  case 0:
6818  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
6819  else goto __pyx_L5_argtuple_error;
6820  CYTHON_FALLTHROUGH;
6821  case 1:
6822  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
6823  else {
6824  __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, 1); __PYX_ERR(0, 162, __pyx_L3_error)
6825  }
6826  CYTHON_FALLTHROUGH;
6827  case 2:
6828  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
6829  else {
6830  __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, 2); __PYX_ERR(0, 162, __pyx_L3_error)
6831  }
6832  CYTHON_FALLTHROUGH;
6833  case 3:
6834  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
6835  else {
6836  __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, 3); __PYX_ERR(0, 162, __pyx_L3_error)
6837  }
6838  CYTHON_FALLTHROUGH;
6839  case 4:
6840  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
6841  else {
6842  __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, 4); __PYX_ERR(0, 162, __pyx_L3_error)
6843  }
6844  }
6845  if (unlikely(kw_args > 0)) {
6846  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "NonlinearDAE_f") < 0)) __PYX_ERR(0, 162, __pyx_L3_error)
6847  }
6848  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
6849  goto __pyx_L5_argtuple_error;
6850  } else {
6851  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6852  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6853  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6854  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6855  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6856  }
6857  __pyx_v_iwork = ((PyArrayObject *)values[0]);
6858  __pyx_v_rwork = ((PyArrayObject *)values[1]);
6859  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 162, __pyx_L3_error)
6860  __pyx_v_x = ((PyArrayObject *)values[3]);
6861  __pyx_v_u = ((PyArrayObject *)values[4]);
6862  }
6863  goto __pyx_L4_argument_unpacking_done;
6864  __pyx_L5_argtuple_error:;
6865  __Pyx_RaiseArgtupleInvalid("NonlinearDAE_f", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 162, __pyx_L3_error)
6866  __pyx_L3_error:;
6867  __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE_f", __pyx_clineno, __pyx_lineno, __pyx_filename);
6868  __Pyx_RefNannyFinishContext();
6869  return NULL;
6870  __pyx_L4_argument_unpacking_done:;
6871  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 162, __pyx_L1_error)
6872  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 162, __pyx_L1_error)
6873  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 162, __pyx_L1_error)
6874  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 162, __pyx_L1_error)
6875  __pyx_r = __pyx_pf_20canalyticalSolutions_56NonlinearDAE_f(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
6876 
6877  /* function exit code */
6878  goto __pyx_L0;
6879  __pyx_L1_error:;
6880  __pyx_r = NULL;
6881  __pyx_L0:;
6882  __Pyx_RefNannyFinishContext();
6883  return __pyx_r;
6884 }
6885 
6886 static PyObject *__pyx_pf_20canalyticalSolutions_56NonlinearDAE_f(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
6887  PyObject *__pyx_r = NULL;
6888  __Pyx_RefNannyDeclarations
6889  PyObject *__pyx_t_1 = NULL;
6890  PyObject *__pyx_t_2 = NULL;
6891  PyObject *__pyx_t_3 = NULL;
6892  int __pyx_t_4;
6893  int __pyx_lineno = 0;
6894  const char *__pyx_filename = NULL;
6895  int __pyx_clineno = 0;
6896  __Pyx_RefNannySetupContext("NonlinearDAE_f", 0);
6897 
6898  /* "canalyticalSolutions.pyx":163
6899  *
6900  * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
6901  * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
6902  *
6903  *
6904  */
6905  __Pyx_XDECREF(__pyx_r);
6906  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
6907  __Pyx_GOTREF(__pyx_t_1);
6908  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error)
6909  __Pyx_GOTREF(__pyx_t_2);
6910  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
6911  __Pyx_GOTREF(__pyx_t_3);
6912  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6913  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6914  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 163, __pyx_L1_error)
6915  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6916  __pyx_t_3 = __Pyx_PyInt_From_int(NonlinearDAE_f(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
6917  __Pyx_GOTREF(__pyx_t_3);
6918  __pyx_r = __pyx_t_3;
6919  __pyx_t_3 = 0;
6920  goto __pyx_L0;
6921 
6922  /* "canalyticalSolutions.pyx":162
6923  *
6924  *
6925  * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6926  * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6927  *
6928  */
6929 
6930  /* function exit code */
6931  __pyx_L1_error:;
6932  __Pyx_XDECREF(__pyx_t_1);
6933  __Pyx_XDECREF(__pyx_t_2);
6934  __Pyx_XDECREF(__pyx_t_3);
6935  __Pyx_AddTraceback("canalyticalSolutions.NonlinearDAE_f", __pyx_clineno, __pyx_lineno, __pyx_filename);
6936  __pyx_r = NULL;
6937  __pyx_L0:;
6938  __Pyx_XGIVEREF(__pyx_r);
6939  __Pyx_RefNannyFinishContext();
6940  return __pyx_r;
6941 }
6942 
6943 /* "canalyticalSolutions.pyx":166
6944  *
6945  *
6946  * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
6947  * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
6948  *
6949  */
6950 
6951 /* Python wrapper */
6952 static PyObject *__pyx_pw_20canalyticalSolutions_59PlanePoiseuilleFlow_u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6953 static PyMethodDef __pyx_mdef_20canalyticalSolutions_59PlanePoiseuilleFlow_u = {"PlanePoiseuilleFlow_u", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_59PlanePoiseuilleFlow_u, METH_VARARGS|METH_KEYWORDS, 0};
6954 static PyObject *__pyx_pw_20canalyticalSolutions_59PlanePoiseuilleFlow_u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6955  PyArrayObject *__pyx_v_iwork = 0;
6956  PyArrayObject *__pyx_v_rwork = 0;
6957  double __pyx_v_t;
6958  PyArrayObject *__pyx_v_x = 0;
6959  PyArrayObject *__pyx_v_u = 0;
6960  int __pyx_lineno = 0;
6961  const char *__pyx_filename = NULL;
6962  int __pyx_clineno = 0;
6963  PyObject *__pyx_r = 0;
6964  __Pyx_RefNannyDeclarations
6965  __Pyx_RefNannySetupContext("PlanePoiseuilleFlow_u (wrapper)", 0);
6966  {
6967  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
6968  PyObject* values[5] = {0,0,0,0,0};
6969  if (unlikely(__pyx_kwds)) {
6970  Py_ssize_t kw_args;
6971  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6972  switch (pos_args) {
6973  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6974  CYTHON_FALLTHROUGH;
6975  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6976  CYTHON_FALLTHROUGH;
6977  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6978  CYTHON_FALLTHROUGH;
6979  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6980  CYTHON_FALLTHROUGH;
6981  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6982  CYTHON_FALLTHROUGH;
6983  case 0: break;
6984  default: goto __pyx_L5_argtuple_error;
6985  }
6986  kw_args = PyDict_Size(__pyx_kwds);
6987  switch (pos_args) {
6988  case 0:
6989  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
6990  else goto __pyx_L5_argtuple_error;
6991  CYTHON_FALLTHROUGH;
6992  case 1:
6993  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
6994  else {
6995  __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, 1); __PYX_ERR(0, 166, __pyx_L3_error)
6996  }
6997  CYTHON_FALLTHROUGH;
6998  case 2:
6999  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7000  else {
7001  __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, 2); __PYX_ERR(0, 166, __pyx_L3_error)
7002  }
7003  CYTHON_FALLTHROUGH;
7004  case 3:
7005  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7006  else {
7007  __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, 3); __PYX_ERR(0, 166, __pyx_L3_error)
7008  }
7009  CYTHON_FALLTHROUGH;
7010  case 4:
7011  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
7012  else {
7013  __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, 4); __PYX_ERR(0, 166, __pyx_L3_error)
7014  }
7015  }
7016  if (unlikely(kw_args > 0)) {
7017  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PlanePoiseuilleFlow_u") < 0)) __PYX_ERR(0, 166, __pyx_L3_error)
7018  }
7019  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
7020  goto __pyx_L5_argtuple_error;
7021  } else {
7022  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7023  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7024  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7025  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7026  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7027  }
7028  __pyx_v_iwork = ((PyArrayObject *)values[0]);
7029  __pyx_v_rwork = ((PyArrayObject *)values[1]);
7030  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 166, __pyx_L3_error)
7031  __pyx_v_x = ((PyArrayObject *)values[3]);
7032  __pyx_v_u = ((PyArrayObject *)values[4]);
7033  }
7034  goto __pyx_L4_argument_unpacking_done;
7035  __pyx_L5_argtuple_error:;
7036  __Pyx_RaiseArgtupleInvalid("PlanePoiseuilleFlow_u", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 166, __pyx_L3_error)
7037  __pyx_L3_error:;
7038  __Pyx_AddTraceback("canalyticalSolutions.PlanePoiseuilleFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
7039  __Pyx_RefNannyFinishContext();
7040  return NULL;
7041  __pyx_L4_argument_unpacking_done:;
7042  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 166, __pyx_L1_error)
7043  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 166, __pyx_L1_error)
7044  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 166, __pyx_L1_error)
7045  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 166, __pyx_L1_error)
7046  __pyx_r = __pyx_pf_20canalyticalSolutions_58PlanePoiseuilleFlow_u(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7047 
7048  /* function exit code */
7049  goto __pyx_L0;
7050  __pyx_L1_error:;
7051  __pyx_r = NULL;
7052  __pyx_L0:;
7053  __Pyx_RefNannyFinishContext();
7054  return __pyx_r;
7055 }
7056 
7057 static PyObject *__pyx_pf_20canalyticalSolutions_58PlanePoiseuilleFlow_u(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7058  PyObject *__pyx_r = NULL;
7059  __Pyx_RefNannyDeclarations
7060  PyObject *__pyx_t_1 = NULL;
7061  PyObject *__pyx_t_2 = NULL;
7062  PyObject *__pyx_t_3 = NULL;
7063  int __pyx_t_4;
7064  int __pyx_lineno = 0;
7065  const char *__pyx_filename = NULL;
7066  int __pyx_clineno = 0;
7067  __Pyx_RefNannySetupContext("PlanePoiseuilleFlow_u", 0);
7068 
7069  /* "canalyticalSolutions.pyx":167
7070  *
7071  * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7072  * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7073  *
7074  *
7075  */
7076  __Pyx_XDECREF(__pyx_r);
7077  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error)
7078  __Pyx_GOTREF(__pyx_t_1);
7079  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 167, __pyx_L1_error)
7080  __Pyx_GOTREF(__pyx_t_2);
7081  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
7082  __Pyx_GOTREF(__pyx_t_3);
7083  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7084  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7085  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L1_error)
7086  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7087  __pyx_t_3 = __Pyx_PyInt_From_int(PlanePoiseuilleFlow_u(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
7088  __Pyx_GOTREF(__pyx_t_3);
7089  __pyx_r = __pyx_t_3;
7090  __pyx_t_3 = 0;
7091  goto __pyx_L0;
7092 
7093  /* "canalyticalSolutions.pyx":166
7094  *
7095  *
7096  * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7097  * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7098  *
7099  */
7100 
7101  /* function exit code */
7102  __pyx_L1_error:;
7103  __Pyx_XDECREF(__pyx_t_1);
7104  __Pyx_XDECREF(__pyx_t_2);
7105  __Pyx_XDECREF(__pyx_t_3);
7106  __Pyx_AddTraceback("canalyticalSolutions.PlanePoiseuilleFlow_u", __pyx_clineno, __pyx_lineno, __pyx_filename);
7107  __pyx_r = NULL;
7108  __pyx_L0:;
7109  __Pyx_XGIVEREF(__pyx_r);
7110  __Pyx_RefNannyFinishContext();
7111  return __pyx_r;
7112 }
7113 
7114 /* "canalyticalSolutions.pyx":170
7115  *
7116  *
7117  * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7118  * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7119  *
7120  */
7121 
7122 /* Python wrapper */
7123 static PyObject *__pyx_pw_20canalyticalSolutions_61PoiseuillePipeFlow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7124 static PyMethodDef __pyx_mdef_20canalyticalSolutions_61PoiseuillePipeFlow = {"PoiseuillePipeFlow", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_61PoiseuillePipeFlow, METH_VARARGS|METH_KEYWORDS, 0};
7125 static PyObject *__pyx_pw_20canalyticalSolutions_61PoiseuillePipeFlow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7126  PyArrayObject *__pyx_v_iwork = 0;
7127  PyArrayObject *__pyx_v_rwork = 0;
7128  double __pyx_v_t;
7129  PyArrayObject *__pyx_v_x = 0;
7130  PyArrayObject *__pyx_v_u = 0;
7131  int __pyx_lineno = 0;
7132  const char *__pyx_filename = NULL;
7133  int __pyx_clineno = 0;
7134  PyObject *__pyx_r = 0;
7135  __Pyx_RefNannyDeclarations
7136  __Pyx_RefNannySetupContext("PoiseuillePipeFlow (wrapper)", 0);
7137  {
7138  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
7139  PyObject* values[5] = {0,0,0,0,0};
7140  if (unlikely(__pyx_kwds)) {
7141  Py_ssize_t kw_args;
7142  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7143  switch (pos_args) {
7144  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7145  CYTHON_FALLTHROUGH;
7146  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7147  CYTHON_FALLTHROUGH;
7148  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7149  CYTHON_FALLTHROUGH;
7150  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7151  CYTHON_FALLTHROUGH;
7152  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7153  CYTHON_FALLTHROUGH;
7154  case 0: break;
7155  default: goto __pyx_L5_argtuple_error;
7156  }
7157  kw_args = PyDict_Size(__pyx_kwds);
7158  switch (pos_args) {
7159  case 0:
7160  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
7161  else goto __pyx_L5_argtuple_error;
7162  CYTHON_FALLTHROUGH;
7163  case 1:
7164  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
7165  else {
7166  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, 1); __PYX_ERR(0, 170, __pyx_L3_error)
7167  }
7168  CYTHON_FALLTHROUGH;
7169  case 2:
7170  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7171  else {
7172  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, 2); __PYX_ERR(0, 170, __pyx_L3_error)
7173  }
7174  CYTHON_FALLTHROUGH;
7175  case 3:
7176  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7177  else {
7178  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, 3); __PYX_ERR(0, 170, __pyx_L3_error)
7179  }
7180  CYTHON_FALLTHROUGH;
7181  case 4:
7182  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
7183  else {
7184  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, 4); __PYX_ERR(0, 170, __pyx_L3_error)
7185  }
7186  }
7187  if (unlikely(kw_args > 0)) {
7188  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PoiseuillePipeFlow") < 0)) __PYX_ERR(0, 170, __pyx_L3_error)
7189  }
7190  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
7191  goto __pyx_L5_argtuple_error;
7192  } else {
7193  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7194  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7195  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7196  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7197  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7198  }
7199  __pyx_v_iwork = ((PyArrayObject *)values[0]);
7200  __pyx_v_rwork = ((PyArrayObject *)values[1]);
7201  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 170, __pyx_L3_error)
7202  __pyx_v_x = ((PyArrayObject *)values[3]);
7203  __pyx_v_u = ((PyArrayObject *)values[4]);
7204  }
7205  goto __pyx_L4_argument_unpacking_done;
7206  __pyx_L5_argtuple_error:;
7207  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 170, __pyx_L3_error)
7208  __pyx_L3_error:;
7209  __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow", __pyx_clineno, __pyx_lineno, __pyx_filename);
7210  __Pyx_RefNannyFinishContext();
7211  return NULL;
7212  __pyx_L4_argument_unpacking_done:;
7213  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 170, __pyx_L1_error)
7214  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 170, __pyx_L1_error)
7215  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 170, __pyx_L1_error)
7216  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 170, __pyx_L1_error)
7217  __pyx_r = __pyx_pf_20canalyticalSolutions_60PoiseuillePipeFlow(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7218 
7219  /* function exit code */
7220  goto __pyx_L0;
7221  __pyx_L1_error:;
7222  __pyx_r = NULL;
7223  __pyx_L0:;
7224  __Pyx_RefNannyFinishContext();
7225  return __pyx_r;
7226 }
7227 
7228 static PyObject *__pyx_pf_20canalyticalSolutions_60PoiseuillePipeFlow(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7229  PyObject *__pyx_r = NULL;
7230  __Pyx_RefNannyDeclarations
7231  PyObject *__pyx_t_1 = NULL;
7232  PyObject *__pyx_t_2 = NULL;
7233  PyObject *__pyx_t_3 = NULL;
7234  int __pyx_t_4;
7235  int __pyx_lineno = 0;
7236  const char *__pyx_filename = NULL;
7237  int __pyx_clineno = 0;
7238  __Pyx_RefNannySetupContext("PoiseuillePipeFlow", 0);
7239 
7240  /* "canalyticalSolutions.pyx":171
7241  *
7242  * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7243  * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7244  *
7245  *
7246  */
7247  __Pyx_XDECREF(__pyx_r);
7248  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
7249  __Pyx_GOTREF(__pyx_t_1);
7250  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error)
7251  __Pyx_GOTREF(__pyx_t_2);
7252  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error)
7253  __Pyx_GOTREF(__pyx_t_3);
7254  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7255  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7256  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L1_error)
7257  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7258  __pyx_t_3 = __Pyx_PyInt_From_int(PoiseuillePipeFlow(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error)
7259  __Pyx_GOTREF(__pyx_t_3);
7260  __pyx_r = __pyx_t_3;
7261  __pyx_t_3 = 0;
7262  goto __pyx_L0;
7263 
7264  /* "canalyticalSolutions.pyx":170
7265  *
7266  *
7267  * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7268  * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7269  *
7270  */
7271 
7272  /* function exit code */
7273  __pyx_L1_error:;
7274  __Pyx_XDECREF(__pyx_t_1);
7275  __Pyx_XDECREF(__pyx_t_2);
7276  __Pyx_XDECREF(__pyx_t_3);
7277  __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow", __pyx_clineno, __pyx_lineno, __pyx_filename);
7278  __pyx_r = NULL;
7279  __pyx_L0:;
7280  __Pyx_XGIVEREF(__pyx_r);
7281  __Pyx_RefNannyFinishContext();
7282  return __pyx_r;
7283 }
7284 
7285 /* "canalyticalSolutions.pyx":174
7286  *
7287  *
7288  * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7289  * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7290  *
7291  */
7292 
7293 /* Python wrapper */
7294 static PyObject *__pyx_pw_20canalyticalSolutions_63PoiseuillePipeFlow_P(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7295 static PyMethodDef __pyx_mdef_20canalyticalSolutions_63PoiseuillePipeFlow_P = {"PoiseuillePipeFlow_P", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_63PoiseuillePipeFlow_P, METH_VARARGS|METH_KEYWORDS, 0};
7296 static PyObject *__pyx_pw_20canalyticalSolutions_63PoiseuillePipeFlow_P(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7297  PyArrayObject *__pyx_v_iwork = 0;
7298  PyArrayObject *__pyx_v_rwork = 0;
7299  double __pyx_v_t;
7300  PyArrayObject *__pyx_v_x = 0;
7301  PyArrayObject *__pyx_v_u = 0;
7302  int __pyx_lineno = 0;
7303  const char *__pyx_filename = NULL;
7304  int __pyx_clineno = 0;
7305  PyObject *__pyx_r = 0;
7306  __Pyx_RefNannyDeclarations
7307  __Pyx_RefNannySetupContext("PoiseuillePipeFlow_P (wrapper)", 0);
7308  {
7309  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
7310  PyObject* values[5] = {0,0,0,0,0};
7311  if (unlikely(__pyx_kwds)) {
7312  Py_ssize_t kw_args;
7313  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7314  switch (pos_args) {
7315  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7316  CYTHON_FALLTHROUGH;
7317  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7318  CYTHON_FALLTHROUGH;
7319  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7320  CYTHON_FALLTHROUGH;
7321  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7322  CYTHON_FALLTHROUGH;
7323  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7324  CYTHON_FALLTHROUGH;
7325  case 0: break;
7326  default: goto __pyx_L5_argtuple_error;
7327  }
7328  kw_args = PyDict_Size(__pyx_kwds);
7329  switch (pos_args) {
7330  case 0:
7331  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
7332  else goto __pyx_L5_argtuple_error;
7333  CYTHON_FALLTHROUGH;
7334  case 1:
7335  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
7336  else {
7337  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, 1); __PYX_ERR(0, 174, __pyx_L3_error)
7338  }
7339  CYTHON_FALLTHROUGH;
7340  case 2:
7341  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7342  else {
7343  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, 2); __PYX_ERR(0, 174, __pyx_L3_error)
7344  }
7345  CYTHON_FALLTHROUGH;
7346  case 3:
7347  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7348  else {
7349  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, 3); __PYX_ERR(0, 174, __pyx_L3_error)
7350  }
7351  CYTHON_FALLTHROUGH;
7352  case 4:
7353  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
7354  else {
7355  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, 4); __PYX_ERR(0, 174, __pyx_L3_error)
7356  }
7357  }
7358  if (unlikely(kw_args > 0)) {
7359  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PoiseuillePipeFlow_P") < 0)) __PYX_ERR(0, 174, __pyx_L3_error)
7360  }
7361  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
7362  goto __pyx_L5_argtuple_error;
7363  } else {
7364  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7365  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7366  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7367  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7368  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7369  }
7370  __pyx_v_iwork = ((PyArrayObject *)values[0]);
7371  __pyx_v_rwork = ((PyArrayObject *)values[1]);
7372  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 174, __pyx_L3_error)
7373  __pyx_v_x = ((PyArrayObject *)values[3]);
7374  __pyx_v_u = ((PyArrayObject *)values[4]);
7375  }
7376  goto __pyx_L4_argument_unpacking_done;
7377  __pyx_L5_argtuple_error:;
7378  __Pyx_RaiseArgtupleInvalid("PoiseuillePipeFlow_P", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 174, __pyx_L3_error)
7379  __pyx_L3_error:;
7380  __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
7381  __Pyx_RefNannyFinishContext();
7382  return NULL;
7383  __pyx_L4_argument_unpacking_done:;
7384  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 174, __pyx_L1_error)
7385  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 174, __pyx_L1_error)
7386  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 174, __pyx_L1_error)
7387  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 174, __pyx_L1_error)
7388  __pyx_r = __pyx_pf_20canalyticalSolutions_62PoiseuillePipeFlow_P(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7389 
7390  /* function exit code */
7391  goto __pyx_L0;
7392  __pyx_L1_error:;
7393  __pyx_r = NULL;
7394  __pyx_L0:;
7395  __Pyx_RefNannyFinishContext();
7396  return __pyx_r;
7397 }
7398 
7399 static PyObject *__pyx_pf_20canalyticalSolutions_62PoiseuillePipeFlow_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7400  PyObject *__pyx_r = NULL;
7401  __Pyx_RefNannyDeclarations
7402  PyObject *__pyx_t_1 = NULL;
7403  PyObject *__pyx_t_2 = NULL;
7404  PyObject *__pyx_t_3 = NULL;
7405  int __pyx_t_4;
7406  int __pyx_lineno = 0;
7407  const char *__pyx_filename = NULL;
7408  int __pyx_clineno = 0;
7409  __Pyx_RefNannySetupContext("PoiseuillePipeFlow_P", 0);
7410 
7411  /* "canalyticalSolutions.pyx":175
7412  *
7413  * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7414  * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7415  *
7416  *
7417  */
7418  __Pyx_XDECREF(__pyx_r);
7419  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
7420  __Pyx_GOTREF(__pyx_t_1);
7421  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
7422  __Pyx_GOTREF(__pyx_t_2);
7423  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
7424  __Pyx_GOTREF(__pyx_t_3);
7425  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7426  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7427  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 175, __pyx_L1_error)
7428  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7429  __pyx_t_3 = __Pyx_PyInt_From_int(PoiseuillePipeFlow_P(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
7430  __Pyx_GOTREF(__pyx_t_3);
7431  __pyx_r = __pyx_t_3;
7432  __pyx_t_3 = 0;
7433  goto __pyx_L0;
7434 
7435  /* "canalyticalSolutions.pyx":174
7436  *
7437  *
7438  * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7439  * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7440  *
7441  */
7442 
7443  /* function exit code */
7444  __pyx_L1_error:;
7445  __Pyx_XDECREF(__pyx_t_1);
7446  __Pyx_XDECREF(__pyx_t_2);
7447  __Pyx_XDECREF(__pyx_t_3);
7448  __Pyx_AddTraceback("canalyticalSolutions.PoiseuillePipeFlow_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
7449  __pyx_r = NULL;
7450  __pyx_L0:;
7451  __Pyx_XGIVEREF(__pyx_r);
7452  __Pyx_RefNannyFinishContext();
7453  return __pyx_r;
7454 }
7455 
7456 /* "canalyticalSolutions.pyx":178
7457  *
7458  *
7459  * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7460  * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7461  *
7462  */
7463 
7464 /* Python wrapper */
7465 static PyObject *__pyx_pw_20canalyticalSolutions_65poissonsEquationExp1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7466 static PyMethodDef __pyx_mdef_20canalyticalSolutions_65poissonsEquationExp1D = {"poissonsEquationExp1D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_65poissonsEquationExp1D, METH_VARARGS|METH_KEYWORDS, 0};
7467 static PyObject *__pyx_pw_20canalyticalSolutions_65poissonsEquationExp1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7468  PyArrayObject *__pyx_v_iwork = 0;
7469  PyArrayObject *__pyx_v_rwork = 0;
7470  double __pyx_v_t;
7471  PyArrayObject *__pyx_v_x = 0;
7472  PyArrayObject *__pyx_v_u = 0;
7473  int __pyx_lineno = 0;
7474  const char *__pyx_filename = NULL;
7475  int __pyx_clineno = 0;
7476  PyObject *__pyx_r = 0;
7477  __Pyx_RefNannyDeclarations
7478  __Pyx_RefNannySetupContext("poissonsEquationExp1D (wrapper)", 0);
7479  {
7480  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
7481  PyObject* values[5] = {0,0,0,0,0};
7482  if (unlikely(__pyx_kwds)) {
7483  Py_ssize_t kw_args;
7484  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7485  switch (pos_args) {
7486  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7487  CYTHON_FALLTHROUGH;
7488  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7489  CYTHON_FALLTHROUGH;
7490  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7491  CYTHON_FALLTHROUGH;
7492  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7493  CYTHON_FALLTHROUGH;
7494  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7495  CYTHON_FALLTHROUGH;
7496  case 0: break;
7497  default: goto __pyx_L5_argtuple_error;
7498  }
7499  kw_args = PyDict_Size(__pyx_kwds);
7500  switch (pos_args) {
7501  case 0:
7502  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
7503  else goto __pyx_L5_argtuple_error;
7504  CYTHON_FALLTHROUGH;
7505  case 1:
7506  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
7507  else {
7508  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, 1); __PYX_ERR(0, 178, __pyx_L3_error)
7509  }
7510  CYTHON_FALLTHROUGH;
7511  case 2:
7512  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7513  else {
7514  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, 2); __PYX_ERR(0, 178, __pyx_L3_error)
7515  }
7516  CYTHON_FALLTHROUGH;
7517  case 3:
7518  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7519  else {
7520  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, 3); __PYX_ERR(0, 178, __pyx_L3_error)
7521  }
7522  CYTHON_FALLTHROUGH;
7523  case 4:
7524  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
7525  else {
7526  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, 4); __PYX_ERR(0, 178, __pyx_L3_error)
7527  }
7528  }
7529  if (unlikely(kw_args > 0)) {
7530  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp1D") < 0)) __PYX_ERR(0, 178, __pyx_L3_error)
7531  }
7532  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
7533  goto __pyx_L5_argtuple_error;
7534  } else {
7535  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7536  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7537  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7538  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7539  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7540  }
7541  __pyx_v_iwork = ((PyArrayObject *)values[0]);
7542  __pyx_v_rwork = ((PyArrayObject *)values[1]);
7543  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 178, __pyx_L3_error)
7544  __pyx_v_x = ((PyArrayObject *)values[3]);
7545  __pyx_v_u = ((PyArrayObject *)values[4]);
7546  }
7547  goto __pyx_L4_argument_unpacking_done;
7548  __pyx_L5_argtuple_error:;
7549  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 178, __pyx_L3_error)
7550  __pyx_L3_error:;
7551  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7552  __Pyx_RefNannyFinishContext();
7553  return NULL;
7554  __pyx_L4_argument_unpacking_done:;
7555  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 178, __pyx_L1_error)
7556  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 178, __pyx_L1_error)
7557  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 178, __pyx_L1_error)
7558  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 178, __pyx_L1_error)
7559  __pyx_r = __pyx_pf_20canalyticalSolutions_64poissonsEquationExp1D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7560 
7561  /* function exit code */
7562  goto __pyx_L0;
7563  __pyx_L1_error:;
7564  __pyx_r = NULL;
7565  __pyx_L0:;
7566  __Pyx_RefNannyFinishContext();
7567  return __pyx_r;
7568 }
7569 
7570 static PyObject *__pyx_pf_20canalyticalSolutions_64poissonsEquationExp1D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7571  PyObject *__pyx_r = NULL;
7572  __Pyx_RefNannyDeclarations
7573  PyObject *__pyx_t_1 = NULL;
7574  PyObject *__pyx_t_2 = NULL;
7575  PyObject *__pyx_t_3 = NULL;
7576  int __pyx_t_4;
7577  int __pyx_lineno = 0;
7578  const char *__pyx_filename = NULL;
7579  int __pyx_clineno = 0;
7580  __Pyx_RefNannySetupContext("poissonsEquationExp1D", 0);
7581 
7582  /* "canalyticalSolutions.pyx":179
7583  *
7584  * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7585  * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7586  *
7587  *
7588  */
7589  __Pyx_XDECREF(__pyx_r);
7590  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
7591  __Pyx_GOTREF(__pyx_t_1);
7592  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
7593  __Pyx_GOTREF(__pyx_t_2);
7594  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
7595  __Pyx_GOTREF(__pyx_t_3);
7596  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7597  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7598  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L1_error)
7599  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7600  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp1D(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
7601  __Pyx_GOTREF(__pyx_t_3);
7602  __pyx_r = __pyx_t_3;
7603  __pyx_t_3 = 0;
7604  goto __pyx_L0;
7605 
7606  /* "canalyticalSolutions.pyx":178
7607  *
7608  *
7609  * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7610  * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7611  *
7612  */
7613 
7614  /* function exit code */
7615  __pyx_L1_error:;
7616  __Pyx_XDECREF(__pyx_t_1);
7617  __Pyx_XDECREF(__pyx_t_2);
7618  __Pyx_XDECREF(__pyx_t_3);
7619  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7620  __pyx_r = NULL;
7621  __pyx_L0:;
7622  __Pyx_XGIVEREF(__pyx_r);
7623  __Pyx_RefNannyFinishContext();
7624  return __pyx_r;
7625 }
7626 
7627 /* "canalyticalSolutions.pyx":182
7628  *
7629  *
7630  * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7631  * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7632  *
7633  */
7634 
7635 /* Python wrapper */
7636 static PyObject *__pyx_pw_20canalyticalSolutions_67poissonsEquationExp2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7637 static PyMethodDef __pyx_mdef_20canalyticalSolutions_67poissonsEquationExp2D = {"poissonsEquationExp2D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_67poissonsEquationExp2D, METH_VARARGS|METH_KEYWORDS, 0};
7638 static PyObject *__pyx_pw_20canalyticalSolutions_67poissonsEquationExp2D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7639  PyArrayObject *__pyx_v_iwork = 0;
7640  PyArrayObject *__pyx_v_rwork = 0;
7641  double __pyx_v_t;
7642  PyArrayObject *__pyx_v_x = 0;
7643  PyArrayObject *__pyx_v_u = 0;
7644  int __pyx_lineno = 0;
7645  const char *__pyx_filename = NULL;
7646  int __pyx_clineno = 0;
7647  PyObject *__pyx_r = 0;
7648  __Pyx_RefNannyDeclarations
7649  __Pyx_RefNannySetupContext("poissonsEquationExp2D (wrapper)", 0);
7650  {
7651  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
7652  PyObject* values[5] = {0,0,0,0,0};
7653  if (unlikely(__pyx_kwds)) {
7654  Py_ssize_t kw_args;
7655  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7656  switch (pos_args) {
7657  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7658  CYTHON_FALLTHROUGH;
7659  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7660  CYTHON_FALLTHROUGH;
7661  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7662  CYTHON_FALLTHROUGH;
7663  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7664  CYTHON_FALLTHROUGH;
7665  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7666  CYTHON_FALLTHROUGH;
7667  case 0: break;
7668  default: goto __pyx_L5_argtuple_error;
7669  }
7670  kw_args = PyDict_Size(__pyx_kwds);
7671  switch (pos_args) {
7672  case 0:
7673  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
7674  else goto __pyx_L5_argtuple_error;
7675  CYTHON_FALLTHROUGH;
7676  case 1:
7677  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
7678  else {
7679  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, 1); __PYX_ERR(0, 182, __pyx_L3_error)
7680  }
7681  CYTHON_FALLTHROUGH;
7682  case 2:
7683  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7684  else {
7685  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, 2); __PYX_ERR(0, 182, __pyx_L3_error)
7686  }
7687  CYTHON_FALLTHROUGH;
7688  case 3:
7689  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7690  else {
7691  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, 3); __PYX_ERR(0, 182, __pyx_L3_error)
7692  }
7693  CYTHON_FALLTHROUGH;
7694  case 4:
7695  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
7696  else {
7697  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, 4); __PYX_ERR(0, 182, __pyx_L3_error)
7698  }
7699  }
7700  if (unlikely(kw_args > 0)) {
7701  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp2D") < 0)) __PYX_ERR(0, 182, __pyx_L3_error)
7702  }
7703  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
7704  goto __pyx_L5_argtuple_error;
7705  } else {
7706  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7707  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7708  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7709  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7710  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7711  }
7712  __pyx_v_iwork = ((PyArrayObject *)values[0]);
7713  __pyx_v_rwork = ((PyArrayObject *)values[1]);
7714  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 182, __pyx_L3_error)
7715  __pyx_v_x = ((PyArrayObject *)values[3]);
7716  __pyx_v_u = ((PyArrayObject *)values[4]);
7717  }
7718  goto __pyx_L4_argument_unpacking_done;
7719  __pyx_L5_argtuple_error:;
7720  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 182, __pyx_L3_error)
7721  __pyx_L3_error:;
7722  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7723  __Pyx_RefNannyFinishContext();
7724  return NULL;
7725  __pyx_L4_argument_unpacking_done:;
7726  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 182, __pyx_L1_error)
7727  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 182, __pyx_L1_error)
7728  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 182, __pyx_L1_error)
7729  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 182, __pyx_L1_error)
7730  __pyx_r = __pyx_pf_20canalyticalSolutions_66poissonsEquationExp2D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7731 
7732  /* function exit code */
7733  goto __pyx_L0;
7734  __pyx_L1_error:;
7735  __pyx_r = NULL;
7736  __pyx_L0:;
7737  __Pyx_RefNannyFinishContext();
7738  return __pyx_r;
7739 }
7740 
7741 static PyObject *__pyx_pf_20canalyticalSolutions_66poissonsEquationExp2D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7742  PyObject *__pyx_r = NULL;
7743  __Pyx_RefNannyDeclarations
7744  PyObject *__pyx_t_1 = NULL;
7745  PyObject *__pyx_t_2 = NULL;
7746  PyObject *__pyx_t_3 = NULL;
7747  int __pyx_t_4;
7748  int __pyx_lineno = 0;
7749  const char *__pyx_filename = NULL;
7750  int __pyx_clineno = 0;
7751  __Pyx_RefNannySetupContext("poissonsEquationExp2D", 0);
7752 
7753  /* "canalyticalSolutions.pyx":183
7754  *
7755  * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7756  * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7757  *
7758  *
7759  */
7760  __Pyx_XDECREF(__pyx_r);
7761  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error)
7762  __Pyx_GOTREF(__pyx_t_1);
7763  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L1_error)
7764  __Pyx_GOTREF(__pyx_t_2);
7765  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error)
7766  __Pyx_GOTREF(__pyx_t_3);
7767  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7768  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7769  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 183, __pyx_L1_error)
7770  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7771  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp2D(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 183, __pyx_L1_error)
7772  __Pyx_GOTREF(__pyx_t_3);
7773  __pyx_r = __pyx_t_3;
7774  __pyx_t_3 = 0;
7775  goto __pyx_L0;
7776 
7777  /* "canalyticalSolutions.pyx":182
7778  *
7779  *
7780  * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7781  * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7782  *
7783  */
7784 
7785  /* function exit code */
7786  __pyx_L1_error:;
7787  __Pyx_XDECREF(__pyx_t_1);
7788  __Pyx_XDECREF(__pyx_t_2);
7789  __Pyx_XDECREF(__pyx_t_3);
7790  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7791  __pyx_r = NULL;
7792  __pyx_L0:;
7793  __Pyx_XGIVEREF(__pyx_r);
7794  __Pyx_RefNannyFinishContext();
7795  return __pyx_r;
7796 }
7797 
7798 /* "canalyticalSolutions.pyx":186
7799  *
7800  *
7801  * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7802  * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7803  *
7804  */
7805 
7806 /* Python wrapper */
7807 static PyObject *__pyx_pw_20canalyticalSolutions_69poissonsEquationExp3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7808 static PyMethodDef __pyx_mdef_20canalyticalSolutions_69poissonsEquationExp3D = {"poissonsEquationExp3D", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_69poissonsEquationExp3D, METH_VARARGS|METH_KEYWORDS, 0};
7809 static PyObject *__pyx_pw_20canalyticalSolutions_69poissonsEquationExp3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7810  PyArrayObject *__pyx_v_iwork = 0;
7811  PyArrayObject *__pyx_v_rwork = 0;
7812  double __pyx_v_t;
7813  PyArrayObject *__pyx_v_x = 0;
7814  PyArrayObject *__pyx_v_u = 0;
7815  int __pyx_lineno = 0;
7816  const char *__pyx_filename = NULL;
7817  int __pyx_clineno = 0;
7818  PyObject *__pyx_r = 0;
7819  __Pyx_RefNannyDeclarations
7820  __Pyx_RefNannySetupContext("poissonsEquationExp3D (wrapper)", 0);
7821  {
7822  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
7823  PyObject* values[5] = {0,0,0,0,0};
7824  if (unlikely(__pyx_kwds)) {
7825  Py_ssize_t kw_args;
7826  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7827  switch (pos_args) {
7828  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7829  CYTHON_FALLTHROUGH;
7830  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7831  CYTHON_FALLTHROUGH;
7832  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7833  CYTHON_FALLTHROUGH;
7834  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7835  CYTHON_FALLTHROUGH;
7836  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7837  CYTHON_FALLTHROUGH;
7838  case 0: break;
7839  default: goto __pyx_L5_argtuple_error;
7840  }
7841  kw_args = PyDict_Size(__pyx_kwds);
7842  switch (pos_args) {
7843  case 0:
7844  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
7845  else goto __pyx_L5_argtuple_error;
7846  CYTHON_FALLTHROUGH;
7847  case 1:
7848  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
7849  else {
7850  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, 1); __PYX_ERR(0, 186, __pyx_L3_error)
7851  }
7852  CYTHON_FALLTHROUGH;
7853  case 2:
7854  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
7855  else {
7856  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, 2); __PYX_ERR(0, 186, __pyx_L3_error)
7857  }
7858  CYTHON_FALLTHROUGH;
7859  case 3:
7860  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
7861  else {
7862  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, 3); __PYX_ERR(0, 186, __pyx_L3_error)
7863  }
7864  CYTHON_FALLTHROUGH;
7865  case 4:
7866  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
7867  else {
7868  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, 4); __PYX_ERR(0, 186, __pyx_L3_error)
7869  }
7870  }
7871  if (unlikely(kw_args > 0)) {
7872  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp3D") < 0)) __PYX_ERR(0, 186, __pyx_L3_error)
7873  }
7874  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
7875  goto __pyx_L5_argtuple_error;
7876  } else {
7877  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7878  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7879  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7880  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7881  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7882  }
7883  __pyx_v_iwork = ((PyArrayObject *)values[0]);
7884  __pyx_v_rwork = ((PyArrayObject *)values[1]);
7885  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 186, __pyx_L3_error)
7886  __pyx_v_x = ((PyArrayObject *)values[3]);
7887  __pyx_v_u = ((PyArrayObject *)values[4]);
7888  }
7889  goto __pyx_L4_argument_unpacking_done;
7890  __pyx_L5_argtuple_error:;
7891  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 186, __pyx_L3_error)
7892  __pyx_L3_error:;
7893  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7894  __Pyx_RefNannyFinishContext();
7895  return NULL;
7896  __pyx_L4_argument_unpacking_done:;
7897  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 186, __pyx_L1_error)
7898  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 186, __pyx_L1_error)
7899  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 186, __pyx_L1_error)
7900  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 186, __pyx_L1_error)
7901  __pyx_r = __pyx_pf_20canalyticalSolutions_68poissonsEquationExp3D(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
7902 
7903  /* function exit code */
7904  goto __pyx_L0;
7905  __pyx_L1_error:;
7906  __pyx_r = NULL;
7907  __pyx_L0:;
7908  __Pyx_RefNannyFinishContext();
7909  return __pyx_r;
7910 }
7911 
7912 static PyObject *__pyx_pf_20canalyticalSolutions_68poissonsEquationExp3D(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
7913  PyObject *__pyx_r = NULL;
7914  __Pyx_RefNannyDeclarations
7915  PyObject *__pyx_t_1 = NULL;
7916  PyObject *__pyx_t_2 = NULL;
7917  PyObject *__pyx_t_3 = NULL;
7918  int __pyx_t_4;
7919  int __pyx_lineno = 0;
7920  const char *__pyx_filename = NULL;
7921  int __pyx_clineno = 0;
7922  __Pyx_RefNannySetupContext("poissonsEquationExp3D", 0);
7923 
7924  /* "canalyticalSolutions.pyx":187
7925  *
7926  * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
7927  * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
7928  *
7929  *
7930  */
7931  __Pyx_XDECREF(__pyx_r);
7932  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
7933  __Pyx_GOTREF(__pyx_t_1);
7934  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error)
7935  __Pyx_GOTREF(__pyx_t_2);
7936  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
7937  __Pyx_GOTREF(__pyx_t_3);
7938  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7939  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7940  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L1_error)
7941  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7942  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp3D(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
7943  __Pyx_GOTREF(__pyx_t_3);
7944  __pyx_r = __pyx_t_3;
7945  __pyx_t_3 = 0;
7946  goto __pyx_L0;
7947 
7948  /* "canalyticalSolutions.pyx":186
7949  *
7950  *
7951  * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
7952  * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
7953  *
7954  */
7955 
7956  /* function exit code */
7957  __pyx_L1_error:;
7958  __Pyx_XDECREF(__pyx_t_1);
7959  __Pyx_XDECREF(__pyx_t_2);
7960  __Pyx_XDECREF(__pyx_t_3);
7961  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
7962  __pyx_r = NULL;
7963  __pyx_L0:;
7964  __Pyx_XGIVEREF(__pyx_r);
7965  __Pyx_RefNannyFinishContext();
7966  return __pyx_r;
7967 }
7968 
7969 /* "canalyticalSolutions.pyx":190
7970  *
7971  *
7972  * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
7973  * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
7974  *
7975  */
7976 
7977 /* Python wrapper */
7978 static PyObject *__pyx_pw_20canalyticalSolutions_71poissonsEquationExp3D_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7979 static PyMethodDef __pyx_mdef_20canalyticalSolutions_71poissonsEquationExp3D_dr = {"poissonsEquationExp3D_dr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_71poissonsEquationExp3D_dr, METH_VARARGS|METH_KEYWORDS, 0};
7980 static PyObject *__pyx_pw_20canalyticalSolutions_71poissonsEquationExp3D_dr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7981  PyArrayObject *__pyx_v_iwork = 0;
7982  PyArrayObject *__pyx_v_rwork = 0;
7983  double __pyx_v_t;
7984  PyArrayObject *__pyx_v_x = 0;
7985  PyArrayObject *__pyx_v_u = 0;
7986  PyArrayObject *__pyx_v_dr = 0;
7987  int __pyx_lineno = 0;
7988  const char *__pyx_filename = NULL;
7989  int __pyx_clineno = 0;
7990  PyObject *__pyx_r = 0;
7991  __Pyx_RefNannyDeclarations
7992  __Pyx_RefNannySetupContext("poissonsEquationExp3D_dr (wrapper)", 0);
7993  {
7994  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_dr,0};
7995  PyObject* values[6] = {0,0,0,0,0,0};
7996  if (unlikely(__pyx_kwds)) {
7997  Py_ssize_t kw_args;
7998  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7999  switch (pos_args) {
8000  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8001  CYTHON_FALLTHROUGH;
8002  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8003  CYTHON_FALLTHROUGH;
8004  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8005  CYTHON_FALLTHROUGH;
8006  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8007  CYTHON_FALLTHROUGH;
8008  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8009  CYTHON_FALLTHROUGH;
8010  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8011  CYTHON_FALLTHROUGH;
8012  case 0: break;
8013  default: goto __pyx_L5_argtuple_error;
8014  }
8015  kw_args = PyDict_Size(__pyx_kwds);
8016  switch (pos_args) {
8017  case 0:
8018  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
8019  else goto __pyx_L5_argtuple_error;
8020  CYTHON_FALLTHROUGH;
8021  case 1:
8022  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
8023  else {
8024  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, 1); __PYX_ERR(0, 190, __pyx_L3_error)
8025  }
8026  CYTHON_FALLTHROUGH;
8027  case 2:
8028  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8029  else {
8030  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, 2); __PYX_ERR(0, 190, __pyx_L3_error)
8031  }
8032  CYTHON_FALLTHROUGH;
8033  case 3:
8034  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8035  else {
8036  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, 3); __PYX_ERR(0, 190, __pyx_L3_error)
8037  }
8038  CYTHON_FALLTHROUGH;
8039  case 4:
8040  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
8041  else {
8042  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, 4); __PYX_ERR(0, 190, __pyx_L3_error)
8043  }
8044  CYTHON_FALLTHROUGH;
8045  case 5:
8046  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dr)) != 0)) kw_args--;
8047  else {
8048  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, 5); __PYX_ERR(0, 190, __pyx_L3_error)
8049  }
8050  }
8051  if (unlikely(kw_args > 0)) {
8052  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp3D_dr") < 0)) __PYX_ERR(0, 190, __pyx_L3_error)
8053  }
8054  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
8055  goto __pyx_L5_argtuple_error;
8056  } else {
8057  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8058  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8059  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8060  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8061  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8062  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8063  }
8064  __pyx_v_iwork = ((PyArrayObject *)values[0]);
8065  __pyx_v_rwork = ((PyArrayObject *)values[1]);
8066  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 190, __pyx_L3_error)
8067  __pyx_v_x = ((PyArrayObject *)values[3]);
8068  __pyx_v_u = ((PyArrayObject *)values[4]);
8069  __pyx_v_dr = ((PyArrayObject *)values[5]);
8070  }
8071  goto __pyx_L4_argument_unpacking_done;
8072  __pyx_L5_argtuple_error:;
8073  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_dr", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 190, __pyx_L3_error)
8074  __pyx_L3_error:;
8075  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
8076  __Pyx_RefNannyFinishContext();
8077  return NULL;
8078  __pyx_L4_argument_unpacking_done:;
8079  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 190, __pyx_L1_error)
8080  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 190, __pyx_L1_error)
8081  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 190, __pyx_L1_error)
8082  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 190, __pyx_L1_error)
8083  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dr), __pyx_ptype_5numpy_ndarray, 1, "dr", 0))) __PYX_ERR(0, 190, __pyx_L1_error)
8084  __pyx_r = __pyx_pf_20canalyticalSolutions_70poissonsEquationExp3D_dr(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_dr);
8085 
8086  /* function exit code */
8087  goto __pyx_L0;
8088  __pyx_L1_error:;
8089  __pyx_r = NULL;
8090  __pyx_L0:;
8091  __Pyx_RefNannyFinishContext();
8092  return __pyx_r;
8093 }
8094 
8095 static PyObject *__pyx_pf_20canalyticalSolutions_70poissonsEquationExp3D_dr(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_dr) {
8096  PyObject *__pyx_r = NULL;
8097  __Pyx_RefNannyDeclarations
8098  PyObject *__pyx_t_1 = NULL;
8099  PyObject *__pyx_t_2 = NULL;
8100  PyObject *__pyx_t_3 = NULL;
8101  int __pyx_t_4;
8102  int __pyx_lineno = 0;
8103  const char *__pyx_filename = NULL;
8104  int __pyx_clineno = 0;
8105  __Pyx_RefNannySetupContext("poissonsEquationExp3D_dr", 0);
8106 
8107  /* "canalyticalSolutions.pyx":191
8108  *
8109  * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int:
8110  * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data) # <<<<<<<<<<<<<<
8111  *
8112  *
8113  */
8114  __Pyx_XDECREF(__pyx_r);
8115  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
8116  __Pyx_GOTREF(__pyx_t_1);
8117  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error)
8118  __Pyx_GOTREF(__pyx_t_2);
8119  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
8120  __Pyx_GOTREF(__pyx_t_3);
8121  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8122  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8123  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 191, __pyx_L1_error)
8124  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8125  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp3D_dr(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_dr->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
8126  __Pyx_GOTREF(__pyx_t_3);
8127  __pyx_r = __pyx_t_3;
8128  __pyx_t_3 = 0;
8129  goto __pyx_L0;
8130 
8131  /* "canalyticalSolutions.pyx":190
8132  *
8133  *
8134  * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
8135  * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
8136  *
8137  */
8138 
8139  /* function exit code */
8140  __pyx_L1_error:;
8141  __Pyx_XDECREF(__pyx_t_1);
8142  __Pyx_XDECREF(__pyx_t_2);
8143  __Pyx_XDECREF(__pyx_t_3);
8144  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_dr", __pyx_clineno, __pyx_lineno, __pyx_filename);
8145  __pyx_r = NULL;
8146  __pyx_L0:;
8147  __Pyx_XGIVEREF(__pyx_r);
8148  __Pyx_RefNannyFinishContext();
8149  return __pyx_r;
8150 }
8151 
8152 /* "canalyticalSolutions.pyx":194
8153  *
8154  *
8155  * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8156  * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8157  *
8158  */
8159 
8160 /* Python wrapper */
8161 static PyObject *__pyx_pw_20canalyticalSolutions_73poissonsEquationExp1D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8162 static PyMethodDef __pyx_mdef_20canalyticalSolutions_73poissonsEquationExp1D_r = {"poissonsEquationExp1D_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_73poissonsEquationExp1D_r, METH_VARARGS|METH_KEYWORDS, 0};
8163 static PyObject *__pyx_pw_20canalyticalSolutions_73poissonsEquationExp1D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8164  PyArrayObject *__pyx_v_iwork = 0;
8165  PyArrayObject *__pyx_v_rwork = 0;
8166  double __pyx_v_t;
8167  PyArrayObject *__pyx_v_x = 0;
8168  PyArrayObject *__pyx_v_u = 0;
8169  PyArrayObject *__pyx_v_r = 0;
8170  int __pyx_lineno = 0;
8171  const char *__pyx_filename = NULL;
8172  int __pyx_clineno = 0;
8173  PyObject *__pyx_r = 0;
8174  __Pyx_RefNannyDeclarations
8175  __Pyx_RefNannySetupContext("poissonsEquationExp1D_r (wrapper)", 0);
8176  {
8177  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
8178  PyObject* values[6] = {0,0,0,0,0,0};
8179  if (unlikely(__pyx_kwds)) {
8180  Py_ssize_t kw_args;
8181  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8182  switch (pos_args) {
8183  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8184  CYTHON_FALLTHROUGH;
8185  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8186  CYTHON_FALLTHROUGH;
8187  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8188  CYTHON_FALLTHROUGH;
8189  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8190  CYTHON_FALLTHROUGH;
8191  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8192  CYTHON_FALLTHROUGH;
8193  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8194  CYTHON_FALLTHROUGH;
8195  case 0: break;
8196  default: goto __pyx_L5_argtuple_error;
8197  }
8198  kw_args = PyDict_Size(__pyx_kwds);
8199  switch (pos_args) {
8200  case 0:
8201  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
8202  else goto __pyx_L5_argtuple_error;
8203  CYTHON_FALLTHROUGH;
8204  case 1:
8205  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
8206  else {
8207  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, 1); __PYX_ERR(0, 194, __pyx_L3_error)
8208  }
8209  CYTHON_FALLTHROUGH;
8210  case 2:
8211  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8212  else {
8213  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, 2); __PYX_ERR(0, 194, __pyx_L3_error)
8214  }
8215  CYTHON_FALLTHROUGH;
8216  case 3:
8217  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8218  else {
8219  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, 3); __PYX_ERR(0, 194, __pyx_L3_error)
8220  }
8221  CYTHON_FALLTHROUGH;
8222  case 4:
8223  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
8224  else {
8225  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, 4); __PYX_ERR(0, 194, __pyx_L3_error)
8226  }
8227  CYTHON_FALLTHROUGH;
8228  case 5:
8229  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
8230  else {
8231  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, 5); __PYX_ERR(0, 194, __pyx_L3_error)
8232  }
8233  }
8234  if (unlikely(kw_args > 0)) {
8235  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp1D_r") < 0)) __PYX_ERR(0, 194, __pyx_L3_error)
8236  }
8237  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
8238  goto __pyx_L5_argtuple_error;
8239  } else {
8240  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8241  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8242  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8243  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8244  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8245  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8246  }
8247  __pyx_v_iwork = ((PyArrayObject *)values[0]);
8248  __pyx_v_rwork = ((PyArrayObject *)values[1]);
8249  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 194, __pyx_L3_error)
8250  __pyx_v_x = ((PyArrayObject *)values[3]);
8251  __pyx_v_u = ((PyArrayObject *)values[4]);
8252  __pyx_v_r = ((PyArrayObject *)values[5]);
8253  }
8254  goto __pyx_L4_argument_unpacking_done;
8255  __pyx_L5_argtuple_error:;
8256  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp1D_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 194, __pyx_L3_error)
8257  __pyx_L3_error:;
8258  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8259  __Pyx_RefNannyFinishContext();
8260  return NULL;
8261  __pyx_L4_argument_unpacking_done:;
8262  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 194, __pyx_L1_error)
8263  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 194, __pyx_L1_error)
8264  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 194, __pyx_L1_error)
8265  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 194, __pyx_L1_error)
8266  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 194, __pyx_L1_error)
8267  __pyx_r = __pyx_pf_20canalyticalSolutions_72poissonsEquationExp1D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
8268 
8269  /* function exit code */
8270  goto __pyx_L0;
8271  __pyx_L1_error:;
8272  __pyx_r = NULL;
8273  __pyx_L0:;
8274  __Pyx_RefNannyFinishContext();
8275  return __pyx_r;
8276 }
8277 
8278 static PyObject *__pyx_pf_20canalyticalSolutions_72poissonsEquationExp1D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
8279  PyObject *__pyx_r = NULL;
8280  __Pyx_RefNannyDeclarations
8281  PyObject *__pyx_t_1 = NULL;
8282  PyObject *__pyx_t_2 = NULL;
8283  PyObject *__pyx_t_3 = NULL;
8284  int __pyx_t_4;
8285  int __pyx_lineno = 0;
8286  const char *__pyx_filename = NULL;
8287  int __pyx_clineno = 0;
8288  __Pyx_RefNannySetupContext("poissonsEquationExp1D_r", 0);
8289 
8290  /* "canalyticalSolutions.pyx":195
8291  *
8292  * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
8293  * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
8294  *
8295  *
8296  */
8297  __Pyx_XDECREF(__pyx_r);
8298  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error)
8299  __Pyx_GOTREF(__pyx_t_1);
8300  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error)
8301  __Pyx_GOTREF(__pyx_t_2);
8302  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
8303  __Pyx_GOTREF(__pyx_t_3);
8304  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8305  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8306  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 195, __pyx_L1_error)
8307  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8308  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp1D_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
8309  __Pyx_GOTREF(__pyx_t_3);
8310  __pyx_r = __pyx_t_3;
8311  __pyx_t_3 = 0;
8312  goto __pyx_L0;
8313 
8314  /* "canalyticalSolutions.pyx":194
8315  *
8316  *
8317  * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8318  * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8319  *
8320  */
8321 
8322  /* function exit code */
8323  __pyx_L1_error:;
8324  __Pyx_XDECREF(__pyx_t_1);
8325  __Pyx_XDECREF(__pyx_t_2);
8326  __Pyx_XDECREF(__pyx_t_3);
8327  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp1D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8328  __pyx_r = NULL;
8329  __pyx_L0:;
8330  __Pyx_XGIVEREF(__pyx_r);
8331  __Pyx_RefNannyFinishContext();
8332  return __pyx_r;
8333 }
8334 
8335 /* "canalyticalSolutions.pyx":198
8336  *
8337  *
8338  * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8339  * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8340  *
8341  */
8342 
8343 /* Python wrapper */
8344 static PyObject *__pyx_pw_20canalyticalSolutions_75poissonsEquationExp2D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8345 static PyMethodDef __pyx_mdef_20canalyticalSolutions_75poissonsEquationExp2D_r = {"poissonsEquationExp2D_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_75poissonsEquationExp2D_r, METH_VARARGS|METH_KEYWORDS, 0};
8346 static PyObject *__pyx_pw_20canalyticalSolutions_75poissonsEquationExp2D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8347  PyArrayObject *__pyx_v_iwork = 0;
8348  PyArrayObject *__pyx_v_rwork = 0;
8349  double __pyx_v_t;
8350  PyArrayObject *__pyx_v_x = 0;
8351  PyArrayObject *__pyx_v_u = 0;
8352  PyArrayObject *__pyx_v_r = 0;
8353  int __pyx_lineno = 0;
8354  const char *__pyx_filename = NULL;
8355  int __pyx_clineno = 0;
8356  PyObject *__pyx_r = 0;
8357  __Pyx_RefNannyDeclarations
8358  __Pyx_RefNannySetupContext("poissonsEquationExp2D_r (wrapper)", 0);
8359  {
8360  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
8361  PyObject* values[6] = {0,0,0,0,0,0};
8362  if (unlikely(__pyx_kwds)) {
8363  Py_ssize_t kw_args;
8364  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8365  switch (pos_args) {
8366  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8367  CYTHON_FALLTHROUGH;
8368  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8369  CYTHON_FALLTHROUGH;
8370  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8371  CYTHON_FALLTHROUGH;
8372  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8373  CYTHON_FALLTHROUGH;
8374  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8375  CYTHON_FALLTHROUGH;
8376  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8377  CYTHON_FALLTHROUGH;
8378  case 0: break;
8379  default: goto __pyx_L5_argtuple_error;
8380  }
8381  kw_args = PyDict_Size(__pyx_kwds);
8382  switch (pos_args) {
8383  case 0:
8384  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
8385  else goto __pyx_L5_argtuple_error;
8386  CYTHON_FALLTHROUGH;
8387  case 1:
8388  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
8389  else {
8390  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, 1); __PYX_ERR(0, 198, __pyx_L3_error)
8391  }
8392  CYTHON_FALLTHROUGH;
8393  case 2:
8394  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8395  else {
8396  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, 2); __PYX_ERR(0, 198, __pyx_L3_error)
8397  }
8398  CYTHON_FALLTHROUGH;
8399  case 3:
8400  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8401  else {
8402  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, 3); __PYX_ERR(0, 198, __pyx_L3_error)
8403  }
8404  CYTHON_FALLTHROUGH;
8405  case 4:
8406  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
8407  else {
8408  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, 4); __PYX_ERR(0, 198, __pyx_L3_error)
8409  }
8410  CYTHON_FALLTHROUGH;
8411  case 5:
8412  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
8413  else {
8414  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, 5); __PYX_ERR(0, 198, __pyx_L3_error)
8415  }
8416  }
8417  if (unlikely(kw_args > 0)) {
8418  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp2D_r") < 0)) __PYX_ERR(0, 198, __pyx_L3_error)
8419  }
8420  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
8421  goto __pyx_L5_argtuple_error;
8422  } else {
8423  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8424  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8425  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8426  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8427  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8428  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8429  }
8430  __pyx_v_iwork = ((PyArrayObject *)values[0]);
8431  __pyx_v_rwork = ((PyArrayObject *)values[1]);
8432  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 198, __pyx_L3_error)
8433  __pyx_v_x = ((PyArrayObject *)values[3]);
8434  __pyx_v_u = ((PyArrayObject *)values[4]);
8435  __pyx_v_r = ((PyArrayObject *)values[5]);
8436  }
8437  goto __pyx_L4_argument_unpacking_done;
8438  __pyx_L5_argtuple_error:;
8439  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp2D_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 198, __pyx_L3_error)
8440  __pyx_L3_error:;
8441  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8442  __Pyx_RefNannyFinishContext();
8443  return NULL;
8444  __pyx_L4_argument_unpacking_done:;
8445  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 198, __pyx_L1_error)
8446  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 198, __pyx_L1_error)
8447  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 198, __pyx_L1_error)
8448  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 198, __pyx_L1_error)
8449  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 198, __pyx_L1_error)
8450  __pyx_r = __pyx_pf_20canalyticalSolutions_74poissonsEquationExp2D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
8451 
8452  /* function exit code */
8453  goto __pyx_L0;
8454  __pyx_L1_error:;
8455  __pyx_r = NULL;
8456  __pyx_L0:;
8457  __Pyx_RefNannyFinishContext();
8458  return __pyx_r;
8459 }
8460 
8461 static PyObject *__pyx_pf_20canalyticalSolutions_74poissonsEquationExp2D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
8462  PyObject *__pyx_r = NULL;
8463  __Pyx_RefNannyDeclarations
8464  PyObject *__pyx_t_1 = NULL;
8465  PyObject *__pyx_t_2 = NULL;
8466  PyObject *__pyx_t_3 = NULL;
8467  int __pyx_t_4;
8468  int __pyx_lineno = 0;
8469  const char *__pyx_filename = NULL;
8470  int __pyx_clineno = 0;
8471  __Pyx_RefNannySetupContext("poissonsEquationExp2D_r", 0);
8472 
8473  /* "canalyticalSolutions.pyx":199
8474  *
8475  * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
8476  * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
8477  *
8478  *
8479  */
8480  __Pyx_XDECREF(__pyx_r);
8481  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
8482  __Pyx_GOTREF(__pyx_t_1);
8483  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error)
8484  __Pyx_GOTREF(__pyx_t_2);
8485  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
8486  __Pyx_GOTREF(__pyx_t_3);
8487  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8488  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8489  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 199, __pyx_L1_error)
8490  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8491  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp2D_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
8492  __Pyx_GOTREF(__pyx_t_3);
8493  __pyx_r = __pyx_t_3;
8494  __pyx_t_3 = 0;
8495  goto __pyx_L0;
8496 
8497  /* "canalyticalSolutions.pyx":198
8498  *
8499  *
8500  * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8501  * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8502  *
8503  */
8504 
8505  /* function exit code */
8506  __pyx_L1_error:;
8507  __Pyx_XDECREF(__pyx_t_1);
8508  __Pyx_XDECREF(__pyx_t_2);
8509  __Pyx_XDECREF(__pyx_t_3);
8510  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp2D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8511  __pyx_r = NULL;
8512  __pyx_L0:;
8513  __Pyx_XGIVEREF(__pyx_r);
8514  __Pyx_RefNannyFinishContext();
8515  return __pyx_r;
8516 }
8517 
8518 /* "canalyticalSolutions.pyx":202
8519  *
8520  *
8521  * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8522  * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8523  *
8524  */
8525 
8526 /* Python wrapper */
8527 static PyObject *__pyx_pw_20canalyticalSolutions_77poissonsEquationExp3D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8528 static PyMethodDef __pyx_mdef_20canalyticalSolutions_77poissonsEquationExp3D_r = {"poissonsEquationExp3D_r", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_77poissonsEquationExp3D_r, METH_VARARGS|METH_KEYWORDS, 0};
8529 static PyObject *__pyx_pw_20canalyticalSolutions_77poissonsEquationExp3D_r(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8530  PyArrayObject *__pyx_v_iwork = 0;
8531  PyArrayObject *__pyx_v_rwork = 0;
8532  double __pyx_v_t;
8533  PyArrayObject *__pyx_v_x = 0;
8534  PyArrayObject *__pyx_v_u = 0;
8535  PyArrayObject *__pyx_v_r = 0;
8536  int __pyx_lineno = 0;
8537  const char *__pyx_filename = NULL;
8538  int __pyx_clineno = 0;
8539  PyObject *__pyx_r = 0;
8540  __Pyx_RefNannyDeclarations
8541  __Pyx_RefNannySetupContext("poissonsEquationExp3D_r (wrapper)", 0);
8542  {
8543  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,&__pyx_n_s_r,0};
8544  PyObject* values[6] = {0,0,0,0,0,0};
8545  if (unlikely(__pyx_kwds)) {
8546  Py_ssize_t kw_args;
8547  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8548  switch (pos_args) {
8549  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8550  CYTHON_FALLTHROUGH;
8551  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8552  CYTHON_FALLTHROUGH;
8553  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8554  CYTHON_FALLTHROUGH;
8555  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8556  CYTHON_FALLTHROUGH;
8557  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8558  CYTHON_FALLTHROUGH;
8559  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8560  CYTHON_FALLTHROUGH;
8561  case 0: break;
8562  default: goto __pyx_L5_argtuple_error;
8563  }
8564  kw_args = PyDict_Size(__pyx_kwds);
8565  switch (pos_args) {
8566  case 0:
8567  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
8568  else goto __pyx_L5_argtuple_error;
8569  CYTHON_FALLTHROUGH;
8570  case 1:
8571  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
8572  else {
8573  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, 1); __PYX_ERR(0, 202, __pyx_L3_error)
8574  }
8575  CYTHON_FALLTHROUGH;
8576  case 2:
8577  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8578  else {
8579  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, 2); __PYX_ERR(0, 202, __pyx_L3_error)
8580  }
8581  CYTHON_FALLTHROUGH;
8582  case 3:
8583  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8584  else {
8585  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, 3); __PYX_ERR(0, 202, __pyx_L3_error)
8586  }
8587  CYTHON_FALLTHROUGH;
8588  case 4:
8589  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
8590  else {
8591  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, 4); __PYX_ERR(0, 202, __pyx_L3_error)
8592  }
8593  CYTHON_FALLTHROUGH;
8594  case 5:
8595  if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
8596  else {
8597  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, 5); __PYX_ERR(0, 202, __pyx_L3_error)
8598  }
8599  }
8600  if (unlikely(kw_args > 0)) {
8601  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poissonsEquationExp3D_r") < 0)) __PYX_ERR(0, 202, __pyx_L3_error)
8602  }
8603  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
8604  goto __pyx_L5_argtuple_error;
8605  } else {
8606  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8607  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8608  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8609  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8610  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8611  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
8612  }
8613  __pyx_v_iwork = ((PyArrayObject *)values[0]);
8614  __pyx_v_rwork = ((PyArrayObject *)values[1]);
8615  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 202, __pyx_L3_error)
8616  __pyx_v_x = ((PyArrayObject *)values[3]);
8617  __pyx_v_u = ((PyArrayObject *)values[4]);
8618  __pyx_v_r = ((PyArrayObject *)values[5]);
8619  }
8620  goto __pyx_L4_argument_unpacking_done;
8621  __pyx_L5_argtuple_error:;
8622  __Pyx_RaiseArgtupleInvalid("poissonsEquationExp3D_r", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 202, __pyx_L3_error)
8623  __pyx_L3_error:;
8624  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8625  __Pyx_RefNannyFinishContext();
8626  return NULL;
8627  __pyx_L4_argument_unpacking_done:;
8628  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 202, __pyx_L1_error)
8629  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 202, __pyx_L1_error)
8630  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 202, __pyx_L1_error)
8631  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 202, __pyx_L1_error)
8632  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_r), __pyx_ptype_5numpy_ndarray, 1, "r", 0))) __PYX_ERR(0, 202, __pyx_L1_error)
8633  __pyx_r = __pyx_pf_20canalyticalSolutions_76poissonsEquationExp3D_r(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u, __pyx_v_r);
8634 
8635  /* function exit code */
8636  goto __pyx_L0;
8637  __pyx_L1_error:;
8638  __pyx_r = NULL;
8639  __pyx_L0:;
8640  __Pyx_RefNannyFinishContext();
8641  return __pyx_r;
8642 }
8643 
8644 static PyObject *__pyx_pf_20canalyticalSolutions_76poissonsEquationExp3D_r(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u, PyArrayObject *__pyx_v_r) {
8645  PyObject *__pyx_r = NULL;
8646  __Pyx_RefNannyDeclarations
8647  PyObject *__pyx_t_1 = NULL;
8648  PyObject *__pyx_t_2 = NULL;
8649  PyObject *__pyx_t_3 = NULL;
8650  int __pyx_t_4;
8651  int __pyx_lineno = 0;
8652  const char *__pyx_filename = NULL;
8653  int __pyx_clineno = 0;
8654  __Pyx_RefNannySetupContext("poissonsEquationExp3D_r", 0);
8655 
8656  /* "canalyticalSolutions.pyx":203
8657  *
8658  * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int:
8659  * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data) # <<<<<<<<<<<<<<
8660  *
8661  *
8662  */
8663  __Pyx_XDECREF(__pyx_r);
8664  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
8665  __Pyx_GOTREF(__pyx_t_1);
8666  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
8667  __Pyx_GOTREF(__pyx_t_2);
8668  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error)
8669  __Pyx_GOTREF(__pyx_t_3);
8670  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8671  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8672  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 203, __pyx_L1_error)
8673  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8674  __pyx_t_3 = __Pyx_PyInt_From_int(poissonsEquationExp3D_r(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data), ((double *)__pyx_v_r->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error)
8675  __Pyx_GOTREF(__pyx_t_3);
8676  __pyx_r = __pyx_t_3;
8677  __pyx_t_3 = 0;
8678  goto __pyx_L0;
8679 
8680  /* "canalyticalSolutions.pyx":202
8681  *
8682  *
8683  * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
8684  * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
8685  *
8686  */
8687 
8688  /* function exit code */
8689  __pyx_L1_error:;
8690  __Pyx_XDECREF(__pyx_t_1);
8691  __Pyx_XDECREF(__pyx_t_2);
8692  __Pyx_XDECREF(__pyx_t_3);
8693  __Pyx_AddTraceback("canalyticalSolutions.poissonsEquationExp3D_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
8694  __pyx_r = NULL;
8695  __pyx_L0:;
8696  __Pyx_XGIVEREF(__pyx_r);
8697  __Pyx_RefNannyFinishContext();
8698  return __pyx_r;
8699 }
8700 
8701 /* "canalyticalSolutions.pyx":206
8702  *
8703  *
8704  * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8705  * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8706  *
8707  */
8708 
8709 /* Python wrapper */
8710 static PyObject *__pyx_pw_20canalyticalSolutions_79STflowSphere_P(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8711 static PyMethodDef __pyx_mdef_20canalyticalSolutions_79STflowSphere_P = {"STflowSphere_P", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_79STflowSphere_P, METH_VARARGS|METH_KEYWORDS, 0};
8712 static PyObject *__pyx_pw_20canalyticalSolutions_79STflowSphere_P(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8713  PyArrayObject *__pyx_v_iwork = 0;
8714  PyArrayObject *__pyx_v_rwork = 0;
8715  double __pyx_v_t;
8716  PyArrayObject *__pyx_v_x = 0;
8717  PyArrayObject *__pyx_v_u = 0;
8718  int __pyx_lineno = 0;
8719  const char *__pyx_filename = NULL;
8720  int __pyx_clineno = 0;
8721  PyObject *__pyx_r = 0;
8722  __Pyx_RefNannyDeclarations
8723  __Pyx_RefNannySetupContext("STflowSphere_P (wrapper)", 0);
8724  {
8725  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
8726  PyObject* values[5] = {0,0,0,0,0};
8727  if (unlikely(__pyx_kwds)) {
8728  Py_ssize_t kw_args;
8729  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8730  switch (pos_args) {
8731  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8732  CYTHON_FALLTHROUGH;
8733  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8734  CYTHON_FALLTHROUGH;
8735  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8736  CYTHON_FALLTHROUGH;
8737  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8738  CYTHON_FALLTHROUGH;
8739  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8740  CYTHON_FALLTHROUGH;
8741  case 0: break;
8742  default: goto __pyx_L5_argtuple_error;
8743  }
8744  kw_args = PyDict_Size(__pyx_kwds);
8745  switch (pos_args) {
8746  case 0:
8747  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
8748  else goto __pyx_L5_argtuple_error;
8749  CYTHON_FALLTHROUGH;
8750  case 1:
8751  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
8752  else {
8753  __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, 1); __PYX_ERR(0, 206, __pyx_L3_error)
8754  }
8755  CYTHON_FALLTHROUGH;
8756  case 2:
8757  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8758  else {
8759  __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, 2); __PYX_ERR(0, 206, __pyx_L3_error)
8760  }
8761  CYTHON_FALLTHROUGH;
8762  case 3:
8763  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8764  else {
8765  __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, 3); __PYX_ERR(0, 206, __pyx_L3_error)
8766  }
8767  CYTHON_FALLTHROUGH;
8768  case 4:
8769  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
8770  else {
8771  __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, 4); __PYX_ERR(0, 206, __pyx_L3_error)
8772  }
8773  }
8774  if (unlikely(kw_args > 0)) {
8775  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "STflowSphere_P") < 0)) __PYX_ERR(0, 206, __pyx_L3_error)
8776  }
8777  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
8778  goto __pyx_L5_argtuple_error;
8779  } else {
8780  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8781  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8782  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8783  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8784  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8785  }
8786  __pyx_v_iwork = ((PyArrayObject *)values[0]);
8787  __pyx_v_rwork = ((PyArrayObject *)values[1]);
8788  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 206, __pyx_L3_error)
8789  __pyx_v_x = ((PyArrayObject *)values[3]);
8790  __pyx_v_u = ((PyArrayObject *)values[4]);
8791  }
8792  goto __pyx_L4_argument_unpacking_done;
8793  __pyx_L5_argtuple_error:;
8794  __Pyx_RaiseArgtupleInvalid("STflowSphere_P", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 206, __pyx_L3_error)
8795  __pyx_L3_error:;
8796  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
8797  __Pyx_RefNannyFinishContext();
8798  return NULL;
8799  __pyx_L4_argument_unpacking_done:;
8800  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 206, __pyx_L1_error)
8801  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 206, __pyx_L1_error)
8802  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 206, __pyx_L1_error)
8803  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 206, __pyx_L1_error)
8804  __pyx_r = __pyx_pf_20canalyticalSolutions_78STflowSphere_P(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
8805 
8806  /* function exit code */
8807  goto __pyx_L0;
8808  __pyx_L1_error:;
8809  __pyx_r = NULL;
8810  __pyx_L0:;
8811  __Pyx_RefNannyFinishContext();
8812  return __pyx_r;
8813 }
8814 
8815 static PyObject *__pyx_pf_20canalyticalSolutions_78STflowSphere_P(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
8816  PyObject *__pyx_r = NULL;
8817  __Pyx_RefNannyDeclarations
8818  PyObject *__pyx_t_1 = NULL;
8819  PyObject *__pyx_t_2 = NULL;
8820  PyObject *__pyx_t_3 = NULL;
8821  int __pyx_t_4;
8822  int __pyx_lineno = 0;
8823  const char *__pyx_filename = NULL;
8824  int __pyx_clineno = 0;
8825  __Pyx_RefNannySetupContext("STflowSphere_P", 0);
8826 
8827  /* "canalyticalSolutions.pyx":207
8828  *
8829  * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
8830  * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
8831  *
8832  *
8833  */
8834  __Pyx_XDECREF(__pyx_r);
8835  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error)
8836  __Pyx_GOTREF(__pyx_t_1);
8837  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 207, __pyx_L1_error)
8838  __Pyx_GOTREF(__pyx_t_2);
8839  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
8840  __Pyx_GOTREF(__pyx_t_3);
8841  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8842  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8843  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 207, __pyx_L1_error)
8844  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8845  __pyx_t_3 = __Pyx_PyInt_From_int(STflowSphere_P(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
8846  __Pyx_GOTREF(__pyx_t_3);
8847  __pyx_r = __pyx_t_3;
8848  __pyx_t_3 = 0;
8849  goto __pyx_L0;
8850 
8851  /* "canalyticalSolutions.pyx":206
8852  *
8853  *
8854  * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8855  * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8856  *
8857  */
8858 
8859  /* function exit code */
8860  __pyx_L1_error:;
8861  __Pyx_XDECREF(__pyx_t_1);
8862  __Pyx_XDECREF(__pyx_t_2);
8863  __Pyx_XDECREF(__pyx_t_3);
8864  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_P", __pyx_clineno, __pyx_lineno, __pyx_filename);
8865  __pyx_r = NULL;
8866  __pyx_L0:;
8867  __Pyx_XGIVEREF(__pyx_r);
8868  __Pyx_RefNannyFinishContext();
8869  return __pyx_r;
8870 }
8871 
8872 /* "canalyticalSolutions.pyx":210
8873  *
8874  *
8875  * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
8876  * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
8877  *
8878  */
8879 
8880 /* Python wrapper */
8881 static PyObject *__pyx_pw_20canalyticalSolutions_81STflowSphere_Vx(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8882 static PyMethodDef __pyx_mdef_20canalyticalSolutions_81STflowSphere_Vx = {"STflowSphere_Vx", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_81STflowSphere_Vx, METH_VARARGS|METH_KEYWORDS, 0};
8883 static PyObject *__pyx_pw_20canalyticalSolutions_81STflowSphere_Vx(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8884  PyArrayObject *__pyx_v_iwork = 0;
8885  PyArrayObject *__pyx_v_rwork = 0;
8886  double __pyx_v_t;
8887  PyArrayObject *__pyx_v_x = 0;
8888  PyArrayObject *__pyx_v_u = 0;
8889  int __pyx_lineno = 0;
8890  const char *__pyx_filename = NULL;
8891  int __pyx_clineno = 0;
8892  PyObject *__pyx_r = 0;
8893  __Pyx_RefNannyDeclarations
8894  __Pyx_RefNannySetupContext("STflowSphere_Vx (wrapper)", 0);
8895  {
8896  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
8897  PyObject* values[5] = {0,0,0,0,0};
8898  if (unlikely(__pyx_kwds)) {
8899  Py_ssize_t kw_args;
8900  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8901  switch (pos_args) {
8902  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8903  CYTHON_FALLTHROUGH;
8904  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8905  CYTHON_FALLTHROUGH;
8906  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8907  CYTHON_FALLTHROUGH;
8908  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8909  CYTHON_FALLTHROUGH;
8910  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8911  CYTHON_FALLTHROUGH;
8912  case 0: break;
8913  default: goto __pyx_L5_argtuple_error;
8914  }
8915  kw_args = PyDict_Size(__pyx_kwds);
8916  switch (pos_args) {
8917  case 0:
8918  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
8919  else goto __pyx_L5_argtuple_error;
8920  CYTHON_FALLTHROUGH;
8921  case 1:
8922  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
8923  else {
8924  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, 1); __PYX_ERR(0, 210, __pyx_L3_error)
8925  }
8926  CYTHON_FALLTHROUGH;
8927  case 2:
8928  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8929  else {
8930  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, 2); __PYX_ERR(0, 210, __pyx_L3_error)
8931  }
8932  CYTHON_FALLTHROUGH;
8933  case 3:
8934  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8935  else {
8936  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, 3); __PYX_ERR(0, 210, __pyx_L3_error)
8937  }
8938  CYTHON_FALLTHROUGH;
8939  case 4:
8940  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
8941  else {
8942  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, 4); __PYX_ERR(0, 210, __pyx_L3_error)
8943  }
8944  }
8945  if (unlikely(kw_args > 0)) {
8946  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "STflowSphere_Vx") < 0)) __PYX_ERR(0, 210, __pyx_L3_error)
8947  }
8948  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
8949  goto __pyx_L5_argtuple_error;
8950  } else {
8951  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8952  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8953  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8954  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
8955  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
8956  }
8957  __pyx_v_iwork = ((PyArrayObject *)values[0]);
8958  __pyx_v_rwork = ((PyArrayObject *)values[1]);
8959  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 210, __pyx_L3_error)
8960  __pyx_v_x = ((PyArrayObject *)values[3]);
8961  __pyx_v_u = ((PyArrayObject *)values[4]);
8962  }
8963  goto __pyx_L4_argument_unpacking_done;
8964  __pyx_L5_argtuple_error:;
8965  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vx", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 210, __pyx_L3_error)
8966  __pyx_L3_error:;
8967  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vx", __pyx_clineno, __pyx_lineno, __pyx_filename);
8968  __Pyx_RefNannyFinishContext();
8969  return NULL;
8970  __pyx_L4_argument_unpacking_done:;
8971  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 210, __pyx_L1_error)
8972  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 210, __pyx_L1_error)
8973  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 210, __pyx_L1_error)
8974  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 210, __pyx_L1_error)
8975  __pyx_r = __pyx_pf_20canalyticalSolutions_80STflowSphere_Vx(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
8976 
8977  /* function exit code */
8978  goto __pyx_L0;
8979  __pyx_L1_error:;
8980  __pyx_r = NULL;
8981  __pyx_L0:;
8982  __Pyx_RefNannyFinishContext();
8983  return __pyx_r;
8984 }
8985 
8986 static PyObject *__pyx_pf_20canalyticalSolutions_80STflowSphere_Vx(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
8987  PyObject *__pyx_r = NULL;
8988  __Pyx_RefNannyDeclarations
8989  PyObject *__pyx_t_1 = NULL;
8990  PyObject *__pyx_t_2 = NULL;
8991  PyObject *__pyx_t_3 = NULL;
8992  int __pyx_t_4;
8993  int __pyx_lineno = 0;
8994  const char *__pyx_filename = NULL;
8995  int __pyx_clineno = 0;
8996  __Pyx_RefNannySetupContext("STflowSphere_Vx", 0);
8997 
8998  /* "canalyticalSolutions.pyx":211
8999  *
9000  * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
9001  * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
9002  *
9003  *
9004  */
9005  __Pyx_XDECREF(__pyx_r);
9006  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
9007  __Pyx_GOTREF(__pyx_t_1);
9008  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error)
9009  __Pyx_GOTREF(__pyx_t_2);
9010  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
9011  __Pyx_GOTREF(__pyx_t_3);
9012  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9013  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9014  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
9015  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9016  __pyx_t_3 = __Pyx_PyInt_From_int(STflowSphere_Vx(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
9017  __Pyx_GOTREF(__pyx_t_3);
9018  __pyx_r = __pyx_t_3;
9019  __pyx_t_3 = 0;
9020  goto __pyx_L0;
9021 
9022  /* "canalyticalSolutions.pyx":210
9023  *
9024  *
9025  * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9026  * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9027  *
9028  */
9029 
9030  /* function exit code */
9031  __pyx_L1_error:;
9032  __Pyx_XDECREF(__pyx_t_1);
9033  __Pyx_XDECREF(__pyx_t_2);
9034  __Pyx_XDECREF(__pyx_t_3);
9035  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vx", __pyx_clineno, __pyx_lineno, __pyx_filename);
9036  __pyx_r = NULL;
9037  __pyx_L0:;
9038  __Pyx_XGIVEREF(__pyx_r);
9039  __Pyx_RefNannyFinishContext();
9040  return __pyx_r;
9041 }
9042 
9043 /* "canalyticalSolutions.pyx":214
9044  *
9045  *
9046  * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9047  * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9048  *
9049  */
9050 
9051 /* Python wrapper */
9052 static PyObject *__pyx_pw_20canalyticalSolutions_83STflowSphere_Vy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9053 static PyMethodDef __pyx_mdef_20canalyticalSolutions_83STflowSphere_Vy = {"STflowSphere_Vy", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_83STflowSphere_Vy, METH_VARARGS|METH_KEYWORDS, 0};
9054 static PyObject *__pyx_pw_20canalyticalSolutions_83STflowSphere_Vy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9055  PyArrayObject *__pyx_v_iwork = 0;
9056  PyArrayObject *__pyx_v_rwork = 0;
9057  double __pyx_v_t;
9058  PyArrayObject *__pyx_v_x = 0;
9059  PyArrayObject *__pyx_v_u = 0;
9060  int __pyx_lineno = 0;
9061  const char *__pyx_filename = NULL;
9062  int __pyx_clineno = 0;
9063  PyObject *__pyx_r = 0;
9064  __Pyx_RefNannyDeclarations
9065  __Pyx_RefNannySetupContext("STflowSphere_Vy (wrapper)", 0);
9066  {
9067  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
9068  PyObject* values[5] = {0,0,0,0,0};
9069  if (unlikely(__pyx_kwds)) {
9070  Py_ssize_t kw_args;
9071  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9072  switch (pos_args) {
9073  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9074  CYTHON_FALLTHROUGH;
9075  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9076  CYTHON_FALLTHROUGH;
9077  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9078  CYTHON_FALLTHROUGH;
9079  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9080  CYTHON_FALLTHROUGH;
9081  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9082  CYTHON_FALLTHROUGH;
9083  case 0: break;
9084  default: goto __pyx_L5_argtuple_error;
9085  }
9086  kw_args = PyDict_Size(__pyx_kwds);
9087  switch (pos_args) {
9088  case 0:
9089  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
9090  else goto __pyx_L5_argtuple_error;
9091  CYTHON_FALLTHROUGH;
9092  case 1:
9093  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
9094  else {
9095  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, 1); __PYX_ERR(0, 214, __pyx_L3_error)
9096  }
9097  CYTHON_FALLTHROUGH;
9098  case 2:
9099  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
9100  else {
9101  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, 2); __PYX_ERR(0, 214, __pyx_L3_error)
9102  }
9103  CYTHON_FALLTHROUGH;
9104  case 3:
9105  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
9106  else {
9107  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, 3); __PYX_ERR(0, 214, __pyx_L3_error)
9108  }
9109  CYTHON_FALLTHROUGH;
9110  case 4:
9111  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
9112  else {
9113  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, 4); __PYX_ERR(0, 214, __pyx_L3_error)
9114  }
9115  }
9116  if (unlikely(kw_args > 0)) {
9117  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "STflowSphere_Vy") < 0)) __PYX_ERR(0, 214, __pyx_L3_error)
9118  }
9119  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
9120  goto __pyx_L5_argtuple_error;
9121  } else {
9122  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9123  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9124  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9125  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9126  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9127  }
9128  __pyx_v_iwork = ((PyArrayObject *)values[0]);
9129  __pyx_v_rwork = ((PyArrayObject *)values[1]);
9130  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L3_error)
9131  __pyx_v_x = ((PyArrayObject *)values[3]);
9132  __pyx_v_u = ((PyArrayObject *)values[4]);
9133  }
9134  goto __pyx_L4_argument_unpacking_done;
9135  __pyx_L5_argtuple_error:;
9136  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vy", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 214, __pyx_L3_error)
9137  __pyx_L3_error:;
9138  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vy", __pyx_clineno, __pyx_lineno, __pyx_filename);
9139  __Pyx_RefNannyFinishContext();
9140  return NULL;
9141  __pyx_L4_argument_unpacking_done:;
9142  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 214, __pyx_L1_error)
9143  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 214, __pyx_L1_error)
9144  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 214, __pyx_L1_error)
9145  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 214, __pyx_L1_error)
9146  __pyx_r = __pyx_pf_20canalyticalSolutions_82STflowSphere_Vy(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
9147 
9148  /* function exit code */
9149  goto __pyx_L0;
9150  __pyx_L1_error:;
9151  __pyx_r = NULL;
9152  __pyx_L0:;
9153  __Pyx_RefNannyFinishContext();
9154  return __pyx_r;
9155 }
9156 
9157 static PyObject *__pyx_pf_20canalyticalSolutions_82STflowSphere_Vy(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
9158  PyObject *__pyx_r = NULL;
9159  __Pyx_RefNannyDeclarations
9160  PyObject *__pyx_t_1 = NULL;
9161  PyObject *__pyx_t_2 = NULL;
9162  PyObject *__pyx_t_3 = NULL;
9163  int __pyx_t_4;
9164  int __pyx_lineno = 0;
9165  const char *__pyx_filename = NULL;
9166  int __pyx_clineno = 0;
9167  __Pyx_RefNannySetupContext("STflowSphere_Vy", 0);
9168 
9169  /* "canalyticalSolutions.pyx":215
9170  *
9171  * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
9172  * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
9173  *
9174  *
9175  */
9176  __Pyx_XDECREF(__pyx_r);
9177  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 215, __pyx_L1_error)
9178  __Pyx_GOTREF(__pyx_t_1);
9179  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error)
9180  __Pyx_GOTREF(__pyx_t_2);
9181  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error)
9182  __Pyx_GOTREF(__pyx_t_3);
9183  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9184  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9185  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 215, __pyx_L1_error)
9186  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9187  __pyx_t_3 = __Pyx_PyInt_From_int(STflowSphere_Vy(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error)
9188  __Pyx_GOTREF(__pyx_t_3);
9189  __pyx_r = __pyx_t_3;
9190  __pyx_t_3 = 0;
9191  goto __pyx_L0;
9192 
9193  /* "canalyticalSolutions.pyx":214
9194  *
9195  *
9196  * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9197  * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9198  *
9199  */
9200 
9201  /* function exit code */
9202  __pyx_L1_error:;
9203  __Pyx_XDECREF(__pyx_t_1);
9204  __Pyx_XDECREF(__pyx_t_2);
9205  __Pyx_XDECREF(__pyx_t_3);
9206  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vy", __pyx_clineno, __pyx_lineno, __pyx_filename);
9207  __pyx_r = NULL;
9208  __pyx_L0:;
9209  __Pyx_XGIVEREF(__pyx_r);
9210  __Pyx_RefNannyFinishContext();
9211  return __pyx_r;
9212 }
9213 
9214 /* "canalyticalSolutions.pyx":218
9215  *
9216  *
9217  * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9218  * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9219  */
9220 
9221 /* Python wrapper */
9222 static PyObject *__pyx_pw_20canalyticalSolutions_85STflowSphere_Vz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9223 static PyMethodDef __pyx_mdef_20canalyticalSolutions_85STflowSphere_Vz = {"STflowSphere_Vz", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_20canalyticalSolutions_85STflowSphere_Vz, METH_VARARGS|METH_KEYWORDS, 0};
9224 static PyObject *__pyx_pw_20canalyticalSolutions_85STflowSphere_Vz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9225  PyArrayObject *__pyx_v_iwork = 0;
9226  PyArrayObject *__pyx_v_rwork = 0;
9227  double __pyx_v_t;
9228  PyArrayObject *__pyx_v_x = 0;
9229  PyArrayObject *__pyx_v_u = 0;
9230  int __pyx_lineno = 0;
9231  const char *__pyx_filename = NULL;
9232  int __pyx_clineno = 0;
9233  PyObject *__pyx_r = 0;
9234  __Pyx_RefNannyDeclarations
9235  __Pyx_RefNannySetupContext("STflowSphere_Vz (wrapper)", 0);
9236  {
9237  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iwork,&__pyx_n_s_rwork,&__pyx_n_s_t,&__pyx_n_s_x,&__pyx_n_s_u,0};
9238  PyObject* values[5] = {0,0,0,0,0};
9239  if (unlikely(__pyx_kwds)) {
9240  Py_ssize_t kw_args;
9241  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9242  switch (pos_args) {
9243  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9244  CYTHON_FALLTHROUGH;
9245  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9246  CYTHON_FALLTHROUGH;
9247  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9248  CYTHON_FALLTHROUGH;
9249  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9250  CYTHON_FALLTHROUGH;
9251  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9252  CYTHON_FALLTHROUGH;
9253  case 0: break;
9254  default: goto __pyx_L5_argtuple_error;
9255  }
9256  kw_args = PyDict_Size(__pyx_kwds);
9257  switch (pos_args) {
9258  case 0:
9259  if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_iwork)) != 0)) kw_args--;
9260  else goto __pyx_L5_argtuple_error;
9261  CYTHON_FALLTHROUGH;
9262  case 1:
9263  if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rwork)) != 0)) kw_args--;
9264  else {
9265  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, 1); __PYX_ERR(0, 218, __pyx_L3_error)
9266  }
9267  CYTHON_FALLTHROUGH;
9268  case 2:
9269  if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
9270  else {
9271  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, 2); __PYX_ERR(0, 218, __pyx_L3_error)
9272  }
9273  CYTHON_FALLTHROUGH;
9274  case 3:
9275  if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
9276  else {
9277  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, 3); __PYX_ERR(0, 218, __pyx_L3_error)
9278  }
9279  CYTHON_FALLTHROUGH;
9280  case 4:
9281  if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_u)) != 0)) kw_args--;
9282  else {
9283  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, 4); __PYX_ERR(0, 218, __pyx_L3_error)
9284  }
9285  }
9286  if (unlikely(kw_args > 0)) {
9287  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "STflowSphere_Vz") < 0)) __PYX_ERR(0, 218, __pyx_L3_error)
9288  }
9289  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
9290  goto __pyx_L5_argtuple_error;
9291  } else {
9292  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9293  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9294  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9295  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9296  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9297  }
9298  __pyx_v_iwork = ((PyArrayObject *)values[0]);
9299  __pyx_v_rwork = ((PyArrayObject *)values[1]);
9300  __pyx_v_t = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L3_error)
9301  __pyx_v_x = ((PyArrayObject *)values[3]);
9302  __pyx_v_u = ((PyArrayObject *)values[4]);
9303  }
9304  goto __pyx_L4_argument_unpacking_done;
9305  __pyx_L5_argtuple_error:;
9306  __Pyx_RaiseArgtupleInvalid("STflowSphere_Vz", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 218, __pyx_L3_error)
9307  __pyx_L3_error:;
9308  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vz", __pyx_clineno, __pyx_lineno, __pyx_filename);
9309  __Pyx_RefNannyFinishContext();
9310  return NULL;
9311  __pyx_L4_argument_unpacking_done:;
9312  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_iwork), __pyx_ptype_5numpy_ndarray, 1, "iwork", 0))) __PYX_ERR(0, 218, __pyx_L1_error)
9313  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rwork), __pyx_ptype_5numpy_ndarray, 1, "rwork", 0))) __PYX_ERR(0, 218, __pyx_L1_error)
9314  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 218, __pyx_L1_error)
9315  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_u), __pyx_ptype_5numpy_ndarray, 1, "u", 0))) __PYX_ERR(0, 218, __pyx_L1_error)
9316  __pyx_r = __pyx_pf_20canalyticalSolutions_84STflowSphere_Vz(__pyx_self, __pyx_v_iwork, __pyx_v_rwork, __pyx_v_t, __pyx_v_x, __pyx_v_u);
9317 
9318  /* function exit code */
9319  goto __pyx_L0;
9320  __pyx_L1_error:;
9321  __pyx_r = NULL;
9322  __pyx_L0:;
9323  __Pyx_RefNannyFinishContext();
9324  return __pyx_r;
9325 }
9326 
9327 static PyObject *__pyx_pf_20canalyticalSolutions_84STflowSphere_Vz(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_iwork, PyArrayObject *__pyx_v_rwork, double __pyx_v_t, PyArrayObject *__pyx_v_x, PyArrayObject *__pyx_v_u) {
9328  PyObject *__pyx_r = NULL;
9329  __Pyx_RefNannyDeclarations
9330  PyObject *__pyx_t_1 = NULL;
9331  PyObject *__pyx_t_2 = NULL;
9332  PyObject *__pyx_t_3 = NULL;
9333  int __pyx_t_4;
9334  int __pyx_lineno = 0;
9335  const char *__pyx_filename = NULL;
9336  int __pyx_clineno = 0;
9337  __Pyx_RefNannySetupContext("STflowSphere_Vz", 0);
9338 
9339  /* "canalyticalSolutions.pyx":219
9340  *
9341  * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int:
9342  * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data) # <<<<<<<<<<<<<<
9343  */
9344  __Pyx_XDECREF(__pyx_r);
9345  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error)
9346  __Pyx_GOTREF(__pyx_t_1);
9347  __pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_x->dimensions[(__pyx_v_x->nd - 1)])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error)
9348  __Pyx_GOTREF(__pyx_t_2);
9349  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error)
9350  __Pyx_GOTREF(__pyx_t_3);
9351  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9352  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9353  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 219, __pyx_L1_error)
9354  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9355  __pyx_t_3 = __Pyx_PyInt_From_int(STflowSphere_Vz(((int *)__pyx_v_iwork->data), ((double *)__pyx_v_rwork->data), __pyx_t_4, __pyx_v_t, ((double *)__pyx_v_x->data), ((double *)__pyx_v_u->data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error)
9356  __Pyx_GOTREF(__pyx_t_3);
9357  __pyx_r = __pyx_t_3;
9358  __pyx_t_3 = 0;
9359  goto __pyx_L0;
9360 
9361  /* "canalyticalSolutions.pyx":218
9362  *
9363  *
9364  * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
9365  * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
9366  */
9367 
9368  /* function exit code */
9369  __pyx_L1_error:;
9370  __Pyx_XDECREF(__pyx_t_1);
9371  __Pyx_XDECREF(__pyx_t_2);
9372  __Pyx_XDECREF(__pyx_t_3);
9373  __Pyx_AddTraceback("canalyticalSolutions.STflowSphere_Vz", __pyx_clineno, __pyx_lineno, __pyx_filename);
9374  __pyx_r = NULL;
9375  __pyx_L0:;
9376  __Pyx_XGIVEREF(__pyx_r);
9377  __Pyx_RefNannyFinishContext();
9378  return __pyx_r;
9379 }
9380 
9381 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":735
9382  * ctypedef npy_cdouble complex_t
9383  *
9384  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
9385  * return PyArray_MultiIterNew(1, <void*>a)
9386  *
9387  */
9388 
9389 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
9390  PyObject *__pyx_r = NULL;
9391  __Pyx_RefNannyDeclarations
9392  PyObject *__pyx_t_1 = NULL;
9393  int __pyx_lineno = 0;
9394  const char *__pyx_filename = NULL;
9395  int __pyx_clineno = 0;
9396  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
9397 
9398  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":736
9399  *
9400  * cdef inline object PyArray_MultiIterNew1(a):
9401  * return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
9402  *
9403  * cdef inline object PyArray_MultiIterNew2(a, b):
9404  */
9405  __Pyx_XDECREF(__pyx_r);
9406  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 736, __pyx_L1_error)
9407  __Pyx_GOTREF(__pyx_t_1);
9408  __pyx_r = __pyx_t_1;
9409  __pyx_t_1 = 0;
9410  goto __pyx_L0;
9411 
9412  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":735
9413  * ctypedef npy_cdouble complex_t
9414  *
9415  * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
9416  * return PyArray_MultiIterNew(1, <void*>a)
9417  *
9418  */
9419 
9420  /* function exit code */
9421  __pyx_L1_error:;
9422  __Pyx_XDECREF(__pyx_t_1);
9423  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
9424  __pyx_r = 0;
9425  __pyx_L0:;
9426  __Pyx_XGIVEREF(__pyx_r);
9427  __Pyx_RefNannyFinishContext();
9428  return __pyx_r;
9429 }
9430 
9431 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":738
9432  * return PyArray_MultiIterNew(1, <void*>a)
9433  *
9434  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
9435  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
9436  *
9437  */
9438 
9439 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
9440  PyObject *__pyx_r = NULL;
9441  __Pyx_RefNannyDeclarations
9442  PyObject *__pyx_t_1 = NULL;
9443  int __pyx_lineno = 0;
9444  const char *__pyx_filename = NULL;
9445  int __pyx_clineno = 0;
9446  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
9447 
9448  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":739
9449  *
9450  * cdef inline object PyArray_MultiIterNew2(a, b):
9451  * return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
9452  *
9453  * cdef inline object PyArray_MultiIterNew3(a, b, c):
9454  */
9455  __Pyx_XDECREF(__pyx_r);
9456  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 739, __pyx_L1_error)
9457  __Pyx_GOTREF(__pyx_t_1);
9458  __pyx_r = __pyx_t_1;
9459  __pyx_t_1 = 0;
9460  goto __pyx_L0;
9461 
9462  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":738
9463  * return PyArray_MultiIterNew(1, <void*>a)
9464  *
9465  * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
9466  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
9467  *
9468  */
9469 
9470  /* function exit code */
9471  __pyx_L1_error:;
9472  __Pyx_XDECREF(__pyx_t_1);
9473  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
9474  __pyx_r = 0;
9475  __pyx_L0:;
9476  __Pyx_XGIVEREF(__pyx_r);
9477  __Pyx_RefNannyFinishContext();
9478  return __pyx_r;
9479 }
9480 
9481 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":741
9482  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
9483  *
9484  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
9485  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
9486  *
9487  */
9488 
9489 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
9490  PyObject *__pyx_r = NULL;
9491  __Pyx_RefNannyDeclarations
9492  PyObject *__pyx_t_1 = NULL;
9493  int __pyx_lineno = 0;
9494  const char *__pyx_filename = NULL;
9495  int __pyx_clineno = 0;
9496  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
9497 
9498  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":742
9499  *
9500  * cdef inline object PyArray_MultiIterNew3(a, b, c):
9501  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
9502  *
9503  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
9504  */
9505  __Pyx_XDECREF(__pyx_r);
9506  __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(1, 742, __pyx_L1_error)
9507  __Pyx_GOTREF(__pyx_t_1);
9508  __pyx_r = __pyx_t_1;
9509  __pyx_t_1 = 0;
9510  goto __pyx_L0;
9511 
9512  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":741
9513  * return PyArray_MultiIterNew(2, <void*>a, <void*>b)
9514  *
9515  * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
9516  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
9517  *
9518  */
9519 
9520  /* function exit code */
9521  __pyx_L1_error:;
9522  __Pyx_XDECREF(__pyx_t_1);
9523  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
9524  __pyx_r = 0;
9525  __pyx_L0:;
9526  __Pyx_XGIVEREF(__pyx_r);
9527  __Pyx_RefNannyFinishContext();
9528  return __pyx_r;
9529 }
9530 
9531 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":744
9532  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
9533  *
9534  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
9535  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
9536  *
9537  */
9538 
9539 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) {
9540  PyObject *__pyx_r = NULL;
9541  __Pyx_RefNannyDeclarations
9542  PyObject *__pyx_t_1 = NULL;
9543  int __pyx_lineno = 0;
9544  const char *__pyx_filename = NULL;
9545  int __pyx_clineno = 0;
9546  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
9547 
9548  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":745
9549  *
9550  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
9551  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
9552  *
9553  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
9554  */
9555  __Pyx_XDECREF(__pyx_r);
9556  __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(1, 745, __pyx_L1_error)
9557  __Pyx_GOTREF(__pyx_t_1);
9558  __pyx_r = __pyx_t_1;
9559  __pyx_t_1 = 0;
9560  goto __pyx_L0;
9561 
9562  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":744
9563  * return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
9564  *
9565  * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
9566  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
9567  *
9568  */
9569 
9570  /* function exit code */
9571  __pyx_L1_error:;
9572  __Pyx_XDECREF(__pyx_t_1);
9573  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
9574  __pyx_r = 0;
9575  __pyx_L0:;
9576  __Pyx_XGIVEREF(__pyx_r);
9577  __Pyx_RefNannyFinishContext();
9578  return __pyx_r;
9579 }
9580 
9581 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":747
9582  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
9583  *
9584  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
9585  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
9586  *
9587  */
9588 
9589 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) {
9590  PyObject *__pyx_r = NULL;
9591  __Pyx_RefNannyDeclarations
9592  PyObject *__pyx_t_1 = NULL;
9593  int __pyx_lineno = 0;
9594  const char *__pyx_filename = NULL;
9595  int __pyx_clineno = 0;
9596  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
9597 
9598  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":748
9599  *
9600  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
9601  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
9602  *
9603  * cdef inline tuple PyDataType_SHAPE(dtype d):
9604  */
9605  __Pyx_XDECREF(__pyx_r);
9606  __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(1, 748, __pyx_L1_error)
9607  __Pyx_GOTREF(__pyx_t_1);
9608  __pyx_r = __pyx_t_1;
9609  __pyx_t_1 = 0;
9610  goto __pyx_L0;
9611 
9612  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":747
9613  * return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
9614  *
9615  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
9616  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
9617  *
9618  */
9619 
9620  /* function exit code */
9621  __pyx_L1_error:;
9622  __Pyx_XDECREF(__pyx_t_1);
9623  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
9624  __pyx_r = 0;
9625  __pyx_L0:;
9626  __Pyx_XGIVEREF(__pyx_r);
9627  __Pyx_RefNannyFinishContext();
9628  return __pyx_r;
9629 }
9630 
9631 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":750
9632  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
9633  *
9634  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
9635  * if PyDataType_HASSUBARRAY(d):
9636  * return <tuple>d.subarray.shape
9637  */
9638 
9639 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
9640  PyObject *__pyx_r = NULL;
9641  __Pyx_RefNannyDeclarations
9642  int __pyx_t_1;
9643  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
9644 
9645  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":751
9646  *
9647  * cdef inline tuple PyDataType_SHAPE(dtype d):
9648  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
9649  * return <tuple>d.subarray.shape
9650  * else:
9651  */
9652  __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
9653  if (__pyx_t_1) {
9654 
9655  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":752
9656  * cdef inline tuple PyDataType_SHAPE(dtype d):
9657  * if PyDataType_HASSUBARRAY(d):
9658  * return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
9659  * else:
9660  * return ()
9661  */
9662  __Pyx_XDECREF(__pyx_r);
9663  __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
9664  __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
9665  goto __pyx_L0;
9666 
9667  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":751
9668  *
9669  * cdef inline tuple PyDataType_SHAPE(dtype d):
9670  * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
9671  * return <tuple>d.subarray.shape
9672  * else:
9673  */
9674  }
9675 
9676  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":754
9677  * return <tuple>d.subarray.shape
9678  * else:
9679  * return () # <<<<<<<<<<<<<<
9680  *
9681  *
9682  */
9683  /*else*/ {
9684  __Pyx_XDECREF(__pyx_r);
9685  __Pyx_INCREF(__pyx_empty_tuple);
9686  __pyx_r = __pyx_empty_tuple;
9687  goto __pyx_L0;
9688  }
9689 
9690  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":750
9691  * return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
9692  *
9693  * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
9694  * if PyDataType_HASSUBARRAY(d):
9695  * return <tuple>d.subarray.shape
9696  */
9697 
9698  /* function exit code */
9699  __pyx_L0:;
9700  __Pyx_XGIVEREF(__pyx_r);
9701  __Pyx_RefNannyFinishContext();
9702  return __pyx_r;
9703 }
9704 
9705 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":929
9706  * int _import_umath() except -1
9707  *
9708  * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
9709  * Py_INCREF(base) # important to do this before stealing the reference below!
9710  * PyArray_SetBaseObject(arr, base)
9711  */
9712 
9713 static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
9714  __Pyx_RefNannyDeclarations
9715  __Pyx_RefNannySetupContext("set_array_base", 0);
9716 
9717  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":930
9718  *
9719  * cdef inline void set_array_base(ndarray arr, object base):
9720  * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
9721  * PyArray_SetBaseObject(arr, base)
9722  *
9723  */
9724  Py_INCREF(__pyx_v_base);
9725 
9726  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":931
9727  * cdef inline void set_array_base(ndarray arr, object base):
9728  * Py_INCREF(base) # important to do this before stealing the reference below!
9729  * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
9730  *
9731  * cdef inline object get_array_base(ndarray arr):
9732  */
9733  (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
9734 
9735  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":929
9736  * int _import_umath() except -1
9737  *
9738  * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
9739  * Py_INCREF(base) # important to do this before stealing the reference below!
9740  * PyArray_SetBaseObject(arr, base)
9741  */
9742 
9743  /* function exit code */
9744  __Pyx_RefNannyFinishContext();
9745 }
9746 
9747 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":933
9748  * PyArray_SetBaseObject(arr, base)
9749  *
9750  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
9751  * base = PyArray_BASE(arr)
9752  * if base is NULL:
9753  */
9754 
9755 static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
9756  PyObject *__pyx_v_base;
9757  PyObject *__pyx_r = NULL;
9758  __Pyx_RefNannyDeclarations
9759  int __pyx_t_1;
9760  __Pyx_RefNannySetupContext("get_array_base", 0);
9761 
9762  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":934
9763  *
9764  * cdef inline object get_array_base(ndarray arr):
9765  * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
9766  * if base is NULL:
9767  * return None
9768  */
9769  __pyx_v_base = PyArray_BASE(__pyx_v_arr);
9770 
9771  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":935
9772  * cdef inline object get_array_base(ndarray arr):
9773  * base = PyArray_BASE(arr)
9774  * if base is NULL: # <<<<<<<<<<<<<<
9775  * return None
9776  * return <object>base
9777  */
9778  __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
9779  if (__pyx_t_1) {
9780 
9781  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":936
9782  * base = PyArray_BASE(arr)
9783  * if base is NULL:
9784  * return None # <<<<<<<<<<<<<<
9785  * return <object>base
9786  *
9787  */
9788  __Pyx_XDECREF(__pyx_r);
9789  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9790  goto __pyx_L0;
9791 
9792  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":935
9793  * cdef inline object get_array_base(ndarray arr):
9794  * base = PyArray_BASE(arr)
9795  * if base is NULL: # <<<<<<<<<<<<<<
9796  * return None
9797  * return <object>base
9798  */
9799  }
9800 
9801  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":937
9802  * if base is NULL:
9803  * return None
9804  * return <object>base # <<<<<<<<<<<<<<
9805  *
9806  * # Versions of the import_* functions which are more suitable for
9807  */
9808  __Pyx_XDECREF(__pyx_r);
9809  __Pyx_INCREF(((PyObject *)__pyx_v_base));
9810  __pyx_r = ((PyObject *)__pyx_v_base);
9811  goto __pyx_L0;
9812 
9813  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":933
9814  * PyArray_SetBaseObject(arr, base)
9815  *
9816  * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
9817  * base = PyArray_BASE(arr)
9818  * if base is NULL:
9819  */
9820 
9821  /* function exit code */
9822  __pyx_L0:;
9823  __Pyx_XGIVEREF(__pyx_r);
9824  __Pyx_RefNannyFinishContext();
9825  return __pyx_r;
9826 }
9827 
9828 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":941
9829  * # Versions of the import_* functions which are more suitable for
9830  * # Cython code.
9831  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
9832  * try:
9833  * __pyx_import_array()
9834  */
9835 
9836 static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
9837  int __pyx_r;
9838  __Pyx_RefNannyDeclarations
9839  PyObject *__pyx_t_1 = NULL;
9840  PyObject *__pyx_t_2 = NULL;
9841  PyObject *__pyx_t_3 = NULL;
9842  int __pyx_t_4;
9843  PyObject *__pyx_t_5 = NULL;
9844  PyObject *__pyx_t_6 = NULL;
9845  PyObject *__pyx_t_7 = NULL;
9846  PyObject *__pyx_t_8 = NULL;
9847  int __pyx_lineno = 0;
9848  const char *__pyx_filename = NULL;
9849  int __pyx_clineno = 0;
9850  __Pyx_RefNannySetupContext("import_array", 0);
9851 
9852  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":942
9853  * # Cython code.
9854  * cdef inline int import_array() except -1:
9855  * try: # <<<<<<<<<<<<<<
9856  * __pyx_import_array()
9857  * except Exception:
9858  */
9859  {
9860  __Pyx_PyThreadState_declare
9861  __Pyx_PyThreadState_assign
9862  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
9863  __Pyx_XGOTREF(__pyx_t_1);
9864  __Pyx_XGOTREF(__pyx_t_2);
9865  __Pyx_XGOTREF(__pyx_t_3);
9866  /*try:*/ {
9867 
9868  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":943
9869  * cdef inline int import_array() except -1:
9870  * try:
9871  * __pyx_import_array() # <<<<<<<<<<<<<<
9872  * except Exception:
9873  * raise ImportError("numpy.core.multiarray failed to import")
9874  */
9875  __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 943, __pyx_L3_error)
9876 
9877  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":942
9878  * # Cython code.
9879  * cdef inline int import_array() except -1:
9880  * try: # <<<<<<<<<<<<<<
9881  * __pyx_import_array()
9882  * except Exception:
9883  */
9884  }
9885  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
9886  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
9887  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9888  goto __pyx_L8_try_end;
9889  __pyx_L3_error:;
9890 
9891  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":944
9892  * try:
9893  * __pyx_import_array()
9894  * except Exception: # <<<<<<<<<<<<<<
9895  * raise ImportError("numpy.core.multiarray failed to import")
9896  *
9897  */
9898  __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
9899  if (__pyx_t_4) {
9900  __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
9901  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 944, __pyx_L5_except_error)
9902  __Pyx_GOTREF(__pyx_t_5);
9903  __Pyx_GOTREF(__pyx_t_6);
9904  __Pyx_GOTREF(__pyx_t_7);
9905 
9906  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":945
9907  * __pyx_import_array()
9908  * except Exception:
9909  * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
9910  *
9911  * cdef inline int import_umath() except -1:
9912  */
9913  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 945, __pyx_L5_except_error)
9914  __Pyx_GOTREF(__pyx_t_8);
9915  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
9916  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9917  __PYX_ERR(1, 945, __pyx_L5_except_error)
9918  }
9919  goto __pyx_L5_except_error;
9920  __pyx_L5_except_error:;
9921 
9922  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":942
9923  * # Cython code.
9924  * cdef inline int import_array() except -1:
9925  * try: # <<<<<<<<<<<<<<
9926  * __pyx_import_array()
9927  * except Exception:
9928  */
9929  __Pyx_XGIVEREF(__pyx_t_1);
9930  __Pyx_XGIVEREF(__pyx_t_2);
9931  __Pyx_XGIVEREF(__pyx_t_3);
9932  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
9933  goto __pyx_L1_error;
9934  __pyx_L8_try_end:;
9935  }
9936 
9937  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":941
9938  * # Versions of the import_* functions which are more suitable for
9939  * # Cython code.
9940  * cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
9941  * try:
9942  * __pyx_import_array()
9943  */
9944 
9945  /* function exit code */
9946  __pyx_r = 0;
9947  goto __pyx_L0;
9948  __pyx_L1_error:;
9949  __Pyx_XDECREF(__pyx_t_5);
9950  __Pyx_XDECREF(__pyx_t_6);
9951  __Pyx_XDECREF(__pyx_t_7);
9952  __Pyx_XDECREF(__pyx_t_8);
9953  __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
9954  __pyx_r = -1;
9955  __pyx_L0:;
9956  __Pyx_RefNannyFinishContext();
9957  return __pyx_r;
9958 }
9959 
9960 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":947
9961  * raise ImportError("numpy.core.multiarray failed to import")
9962  *
9963  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
9964  * try:
9965  * _import_umath()
9966  */
9967 
9968 static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
9969  int __pyx_r;
9970  __Pyx_RefNannyDeclarations
9971  PyObject *__pyx_t_1 = NULL;
9972  PyObject *__pyx_t_2 = NULL;
9973  PyObject *__pyx_t_3 = NULL;
9974  int __pyx_t_4;
9975  PyObject *__pyx_t_5 = NULL;
9976  PyObject *__pyx_t_6 = NULL;
9977  PyObject *__pyx_t_7 = NULL;
9978  PyObject *__pyx_t_8 = NULL;
9979  int __pyx_lineno = 0;
9980  const char *__pyx_filename = NULL;
9981  int __pyx_clineno = 0;
9982  __Pyx_RefNannySetupContext("import_umath", 0);
9983 
9984  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":948
9985  *
9986  * cdef inline int import_umath() except -1:
9987  * try: # <<<<<<<<<<<<<<
9988  * _import_umath()
9989  * except Exception:
9990  */
9991  {
9992  __Pyx_PyThreadState_declare
9993  __Pyx_PyThreadState_assign
9994  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
9995  __Pyx_XGOTREF(__pyx_t_1);
9996  __Pyx_XGOTREF(__pyx_t_2);
9997  __Pyx_XGOTREF(__pyx_t_3);
9998  /*try:*/ {
9999 
10000  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":949
10001  * cdef inline int import_umath() except -1:
10002  * try:
10003  * _import_umath() # <<<<<<<<<<<<<<
10004  * except Exception:
10005  * raise ImportError("numpy.core.umath failed to import")
10006  */
10007  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 949, __pyx_L3_error)
10008 
10009  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":948
10010  *
10011  * cdef inline int import_umath() except -1:
10012  * try: # <<<<<<<<<<<<<<
10013  * _import_umath()
10014  * except Exception:
10015  */
10016  }
10017  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
10018  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10019  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10020  goto __pyx_L8_try_end;
10021  __pyx_L3_error:;
10022 
10023  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":950
10024  * try:
10025  * _import_umath()
10026  * except Exception: # <<<<<<<<<<<<<<
10027  * raise ImportError("numpy.core.umath failed to import")
10028  *
10029  */
10030  __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
10031  if (__pyx_t_4) {
10032  __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
10033  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 950, __pyx_L5_except_error)
10034  __Pyx_GOTREF(__pyx_t_5);
10035  __Pyx_GOTREF(__pyx_t_6);
10036  __Pyx_GOTREF(__pyx_t_7);
10037 
10038  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":951
10039  * _import_umath()
10040  * except Exception:
10041  * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
10042  *
10043  * cdef inline int import_ufunc() except -1:
10044  */
10045  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 951, __pyx_L5_except_error)
10046  __Pyx_GOTREF(__pyx_t_8);
10047  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
10048  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
10049  __PYX_ERR(1, 951, __pyx_L5_except_error)
10050  }
10051  goto __pyx_L5_except_error;
10052  __pyx_L5_except_error:;
10053 
10054  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":948
10055  *
10056  * cdef inline int import_umath() except -1:
10057  * try: # <<<<<<<<<<<<<<
10058  * _import_umath()
10059  * except Exception:
10060  */
10061  __Pyx_XGIVEREF(__pyx_t_1);
10062  __Pyx_XGIVEREF(__pyx_t_2);
10063  __Pyx_XGIVEREF(__pyx_t_3);
10064  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
10065  goto __pyx_L1_error;
10066  __pyx_L8_try_end:;
10067  }
10068 
10069  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":947
10070  * raise ImportError("numpy.core.multiarray failed to import")
10071  *
10072  * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
10073  * try:
10074  * _import_umath()
10075  */
10076 
10077  /* function exit code */
10078  __pyx_r = 0;
10079  goto __pyx_L0;
10080  __pyx_L1_error:;
10081  __Pyx_XDECREF(__pyx_t_5);
10082  __Pyx_XDECREF(__pyx_t_6);
10083  __Pyx_XDECREF(__pyx_t_7);
10084  __Pyx_XDECREF(__pyx_t_8);
10085  __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
10086  __pyx_r = -1;
10087  __pyx_L0:;
10088  __Pyx_RefNannyFinishContext();
10089  return __pyx_r;
10090 }
10091 
10092 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":953
10093  * raise ImportError("numpy.core.umath failed to import")
10094  *
10095  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
10096  * try:
10097  * _import_umath()
10098  */
10099 
10100 static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
10101  int __pyx_r;
10102  __Pyx_RefNannyDeclarations
10103  PyObject *__pyx_t_1 = NULL;
10104  PyObject *__pyx_t_2 = NULL;
10105  PyObject *__pyx_t_3 = NULL;
10106  int __pyx_t_4;
10107  PyObject *__pyx_t_5 = NULL;
10108  PyObject *__pyx_t_6 = NULL;
10109  PyObject *__pyx_t_7 = NULL;
10110  PyObject *__pyx_t_8 = NULL;
10111  int __pyx_lineno = 0;
10112  const char *__pyx_filename = NULL;
10113  int __pyx_clineno = 0;
10114  __Pyx_RefNannySetupContext("import_ufunc", 0);
10115 
10116  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":954
10117  *
10118  * cdef inline int import_ufunc() except -1:
10119  * try: # <<<<<<<<<<<<<<
10120  * _import_umath()
10121  * except Exception:
10122  */
10123  {
10124  __Pyx_PyThreadState_declare
10125  __Pyx_PyThreadState_assign
10126  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
10127  __Pyx_XGOTREF(__pyx_t_1);
10128  __Pyx_XGOTREF(__pyx_t_2);
10129  __Pyx_XGOTREF(__pyx_t_3);
10130  /*try:*/ {
10131 
10132  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":955
10133  * cdef inline int import_ufunc() except -1:
10134  * try:
10135  * _import_umath() # <<<<<<<<<<<<<<
10136  * except Exception:
10137  * raise ImportError("numpy.core.umath failed to import")
10138  */
10139  __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 955, __pyx_L3_error)
10140 
10141  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":954
10142  *
10143  * cdef inline int import_ufunc() except -1:
10144  * try: # <<<<<<<<<<<<<<
10145  * _import_umath()
10146  * except Exception:
10147  */
10148  }
10149  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
10150  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10151  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10152  goto __pyx_L8_try_end;
10153  __pyx_L3_error:;
10154 
10155  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":956
10156  * try:
10157  * _import_umath()
10158  * except Exception: # <<<<<<<<<<<<<<
10159  * raise ImportError("numpy.core.umath failed to import")
10160  *
10161  */
10162  __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
10163  if (__pyx_t_4) {
10164  __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
10165  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 956, __pyx_L5_except_error)
10166  __Pyx_GOTREF(__pyx_t_5);
10167  __Pyx_GOTREF(__pyx_t_6);
10168  __Pyx_GOTREF(__pyx_t_7);
10169 
10170  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":957
10171  * _import_umath()
10172  * except Exception:
10173  * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
10174  *
10175  * cdef extern from *:
10176  */
10177  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 957, __pyx_L5_except_error)
10178  __Pyx_GOTREF(__pyx_t_8);
10179  __Pyx_Raise(__pyx_t_8, 0, 0, 0);
10180  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
10181  __PYX_ERR(1, 957, __pyx_L5_except_error)
10182  }
10183  goto __pyx_L5_except_error;
10184  __pyx_L5_except_error:;
10185 
10186  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":954
10187  *
10188  * cdef inline int import_ufunc() except -1:
10189  * try: # <<<<<<<<<<<<<<
10190  * _import_umath()
10191  * except Exception:
10192  */
10193  __Pyx_XGIVEREF(__pyx_t_1);
10194  __Pyx_XGIVEREF(__pyx_t_2);
10195  __Pyx_XGIVEREF(__pyx_t_3);
10196  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
10197  goto __pyx_L1_error;
10198  __pyx_L8_try_end:;
10199  }
10200 
10201  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":953
10202  * raise ImportError("numpy.core.umath failed to import")
10203  *
10204  * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
10205  * try:
10206  * _import_umath()
10207  */
10208 
10209  /* function exit code */
10210  __pyx_r = 0;
10211  goto __pyx_L0;
10212  __pyx_L1_error:;
10213  __Pyx_XDECREF(__pyx_t_5);
10214  __Pyx_XDECREF(__pyx_t_6);
10215  __Pyx_XDECREF(__pyx_t_7);
10216  __Pyx_XDECREF(__pyx_t_8);
10217  __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
10218  __pyx_r = -1;
10219  __pyx_L0:;
10220  __Pyx_RefNannyFinishContext();
10221  return __pyx_r;
10222 }
10223 
10224 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":967
10225  *
10226  *
10227  * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<<
10228  * """
10229  * Cython equivalent of `isinstance(obj, np.timedelta64)`
10230  */
10231 
10232 static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
10233  int __pyx_r;
10234  __Pyx_RefNannyDeclarations
10235  __Pyx_RefNannySetupContext("is_timedelta64_object", 0);
10236 
10237  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":979
10238  * bool
10239  * """
10240  * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<<
10241  *
10242  *
10243  */
10244  __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type));
10245  goto __pyx_L0;
10246 
10247  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":967
10248  *
10249  *
10250  * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<<
10251  * """
10252  * Cython equivalent of `isinstance(obj, np.timedelta64)`
10253  */
10254 
10255  /* function exit code */
10256  __pyx_L0:;
10257  __Pyx_RefNannyFinishContext();
10258  return __pyx_r;
10259 }
10260 
10261 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":982
10262  *
10263  *
10264  * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<<
10265  * """
10266  * Cython equivalent of `isinstance(obj, np.datetime64)`
10267  */
10268 
10269 static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
10270  int __pyx_r;
10271  __Pyx_RefNannyDeclarations
10272  __Pyx_RefNannySetupContext("is_datetime64_object", 0);
10273 
10274  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":994
10275  * bool
10276  * """
10277  * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<<
10278  *
10279  *
10280  */
10281  __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type));
10282  goto __pyx_L0;
10283 
10284  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":982
10285  *
10286  *
10287  * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<<
10288  * """
10289  * Cython equivalent of `isinstance(obj, np.datetime64)`
10290  */
10291 
10292  /* function exit code */
10293  __pyx_L0:;
10294  __Pyx_RefNannyFinishContext();
10295  return __pyx_r;
10296 }
10297 
10298 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":997
10299  *
10300  *
10301  * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<<
10302  * """
10303  * returns the int64 value underlying scalar numpy datetime64 object
10304  */
10305 
10306 static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
10307  npy_datetime __pyx_r;
10308 
10309  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1004
10310  * also needed. That can be found using `get_datetime64_unit`.
10311  * """
10312  * return (<PyDatetimeScalarObject*>obj).obval # <<<<<<<<<<<<<<
10313  *
10314  *
10315  */
10316  __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval;
10317  goto __pyx_L0;
10318 
10319  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":997
10320  *
10321  *
10322  * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<<
10323  * """
10324  * returns the int64 value underlying scalar numpy datetime64 object
10325  */
10326 
10327  /* function exit code */
10328  __pyx_L0:;
10329  return __pyx_r;
10330 }
10331 
10332 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1007
10333  *
10334  *
10335  * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<<
10336  * """
10337  * returns the int64 value underlying scalar numpy timedelta64 object
10338  */
10339 
10340 static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
10341  npy_timedelta __pyx_r;
10342 
10343  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1011
10344  * returns the int64 value underlying scalar numpy timedelta64 object
10345  * """
10346  * return (<PyTimedeltaScalarObject*>obj).obval # <<<<<<<<<<<<<<
10347  *
10348  *
10349  */
10350  __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval;
10351  goto __pyx_L0;
10352 
10353  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1007
10354  *
10355  *
10356  * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<<
10357  * """
10358  * returns the int64 value underlying scalar numpy timedelta64 object
10359  */
10360 
10361  /* function exit code */
10362  __pyx_L0:;
10363  return __pyx_r;
10364 }
10365 
10366 /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1014
10367  *
10368  *
10369  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<<
10370  * """
10371  * returns the unit part of the dtype for a numpy datetime64 object.
10372  */
10373 
10374 static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
10375  NPY_DATETIMEUNIT __pyx_r;
10376 
10377  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1018
10378  * returns the unit part of the dtype for a numpy datetime64 object.
10379  * """
10380  * return <NPY_DATETIMEUNIT>(<PyDatetimeScalarObject*>obj).obmeta.base # <<<<<<<<<<<<<<
10381  */
10382  __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base);
10383  goto __pyx_L0;
10384 
10385  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1014
10386  *
10387  *
10388  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<<
10389  * """
10390  * returns the unit part of the dtype for a numpy datetime64 object.
10391  */
10392 
10393  /* function exit code */
10394  __pyx_L0:;
10395  return __pyx_r;
10396 }
10397 
10398 static PyMethodDef __pyx_methods[] = {
10399  {0, 0, 0, 0}
10400 };
10401 
10402 #if PY_MAJOR_VERSION >= 3
10403 #if CYTHON_PEP489_MULTI_PHASE_INIT
10404 static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
10405 static int __pyx_pymod_exec_canalyticalSolutions(PyObject* module); /*proto*/
10406 static PyModuleDef_Slot __pyx_moduledef_slots[] = {
10407  {Py_mod_create, (void*)__pyx_pymod_create},
10408  {Py_mod_exec, (void*)__pyx_pymod_exec_canalyticalSolutions},
10409  {0, NULL}
10410 };
10411 #endif
10412 
10413 static struct PyModuleDef __pyx_moduledef = {
10414  PyModuleDef_HEAD_INIT,
10415  "canalyticalSolutions",
10416  0, /* m_doc */
10417  #if CYTHON_PEP489_MULTI_PHASE_INIT
10418  0, /* m_size */
10419  #else
10420  -1, /* m_size */
10421  #endif
10422  __pyx_methods /* m_methods */,
10423  #if CYTHON_PEP489_MULTI_PHASE_INIT
10424  __pyx_moduledef_slots, /* m_slots */
10425  #else
10426  NULL, /* m_reload */
10427  #endif
10428  NULL, /* m_traverse */
10429  NULL, /* m_clear */
10430  NULL /* m_free */
10431 };
10432 #endif
10433 #ifndef CYTHON_SMALL_CODE
10434 #if defined(__clang__)
10435  #define CYTHON_SMALL_CODE
10436 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
10437  #define CYTHON_SMALL_CODE __attribute__((cold))
10438 #else
10439  #define CYTHON_SMALL_CODE
10440 #endif
10441 #endif
10442 
10443 static __Pyx_StringTabEntry __pyx_string_tab[] = {
10444  {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
10445  {&__pyx_n_s_LinearADR_Decay_DiracIC, __pyx_k_LinearADR_Decay_DiracIC, sizeof(__pyx_k_LinearADR_Decay_DiracIC), 0, 0, 1, 1},
10446  {&__pyx_n_s_LinearADR_Decay_DiracIC_dr, __pyx_k_LinearADR_Decay_DiracIC_dr, sizeof(__pyx_k_LinearADR_Decay_DiracIC_dr), 0, 0, 1, 1},
10447  {&__pyx_n_s_LinearADR_Decay_DiracIC_r, __pyx_k_LinearADR_Decay_DiracIC_r, sizeof(__pyx_k_LinearADR_Decay_DiracIC_r), 0, 0, 1, 1},
10448  {&__pyx_n_s_LinearADR_Sine, __pyx_k_LinearADR_Sine, sizeof(__pyx_k_LinearADR_Sine), 0, 0, 1, 1},
10449  {&__pyx_n_s_LinearADR_Sine_advectiveVelocity, __pyx_k_LinearADR_Sine_advectiveVelocity, sizeof(__pyx_k_LinearADR_Sine_advectiveVelocity), 0, 0, 1, 1},
10450  {&__pyx_n_s_LinearADR_Sine_diffusiveVelocity, __pyx_k_LinearADR_Sine_diffusiveVelocity, sizeof(__pyx_k_LinearADR_Sine_diffusiveVelocity), 0, 0, 1, 1},
10451  {&__pyx_n_s_LinearADR_Sine_dr, __pyx_k_LinearADR_Sine_dr, sizeof(__pyx_k_LinearADR_Sine_dr), 0, 0, 1, 1},
10452  {&__pyx_n_s_LinearADR_Sine_du, __pyx_k_LinearADR_Sine_du, sizeof(__pyx_k_LinearADR_Sine_du), 0, 0, 1, 1},
10453  {&__pyx_n_s_LinearADR_Sine_r, __pyx_k_LinearADR_Sine_r, sizeof(__pyx_k_LinearADR_Sine_r), 0, 0, 1, 1},
10454  {&__pyx_n_s_LinearADR_Sine_totalVelocity, __pyx_k_LinearADR_Sine_totalVelocity, sizeof(__pyx_k_LinearADR_Sine_totalVelocity), 0, 0, 1, 1},
10455  {&__pyx_n_s_LinearAD_DiracIC, __pyx_k_LinearAD_DiracIC, sizeof(__pyx_k_LinearAD_DiracIC), 0, 0, 1, 1},
10456  {&__pyx_n_s_LinearAD_DiracIC_advectiveVeloci, __pyx_k_LinearAD_DiracIC_advectiveVeloci, sizeof(__pyx_k_LinearAD_DiracIC_advectiveVeloci), 0, 0, 1, 1},
10457  {&__pyx_n_s_LinearAD_DiracIC_diffusiveVeloci, __pyx_k_LinearAD_DiracIC_diffusiveVeloci, sizeof(__pyx_k_LinearAD_DiracIC_diffusiveVeloci), 0, 0, 1, 1},
10458  {&__pyx_n_s_LinearAD_DiracIC_du, __pyx_k_LinearAD_DiracIC_du, sizeof(__pyx_k_LinearAD_DiracIC_du), 0, 0, 1, 1},
10459  {&__pyx_n_s_LinearAD_DiracIC_totalVelocity, __pyx_k_LinearAD_DiracIC_totalVelocity, sizeof(__pyx_k_LinearAD_DiracIC_totalVelocity), 0, 0, 1, 1},
10460  {&__pyx_n_s_LinearAD_SteadyState, __pyx_k_LinearAD_SteadyState, sizeof(__pyx_k_LinearAD_SteadyState), 0, 0, 1, 1},
10461  {&__pyx_n_s_NonlinearADR_Decay_DiracIC, __pyx_k_NonlinearADR_Decay_DiracIC, sizeof(__pyx_k_NonlinearADR_Decay_DiracIC), 0, 0, 1, 1},
10462  {&__pyx_n_s_NonlinearADR_Decay_DiracIC_dr, __pyx_k_NonlinearADR_Decay_DiracIC_dr, sizeof(__pyx_k_NonlinearADR_Decay_DiracIC_dr), 0, 0, 1, 1},
10463  {&__pyx_n_s_NonlinearADR_Decay_DiracIC_r, __pyx_k_NonlinearADR_Decay_DiracIC_r, sizeof(__pyx_k_NonlinearADR_Decay_DiracIC_r), 0, 0, 1, 1},
10464  {&__pyx_n_s_NonlinearAD_SteadyState, __pyx_k_NonlinearAD_SteadyState, sizeof(__pyx_k_NonlinearAD_SteadyState), 0, 0, 1, 1},
10465  {&__pyx_n_s_NonlinearDAE, __pyx_k_NonlinearDAE, sizeof(__pyx_k_NonlinearDAE), 0, 0, 1, 1},
10466  {&__pyx_n_s_NonlinearDAE_f, __pyx_k_NonlinearDAE_f, sizeof(__pyx_k_NonlinearDAE_f), 0, 0, 1, 1},
10467  {&__pyx_n_s_PlaneCouetteFlow_u, __pyx_k_PlaneCouetteFlow_u, sizeof(__pyx_k_PlaneCouetteFlow_u), 0, 0, 1, 1},
10468  {&__pyx_n_s_PlanePoiseuilleFlow_u, __pyx_k_PlanePoiseuilleFlow_u, sizeof(__pyx_k_PlanePoiseuilleFlow_u), 0, 0, 1, 1},
10469  {&__pyx_n_s_PoiseuillePipeFlow, __pyx_k_PoiseuillePipeFlow, sizeof(__pyx_k_PoiseuillePipeFlow), 0, 0, 1, 1},
10470  {&__pyx_n_s_PoiseuillePipeFlow_P, __pyx_k_PoiseuillePipeFlow_P, sizeof(__pyx_k_PoiseuillePipeFlow_P), 0, 0, 1, 1},
10471  {&__pyx_n_s_STflowSphere_P, __pyx_k_STflowSphere_P, sizeof(__pyx_k_STflowSphere_P), 0, 0, 1, 1},
10472  {&__pyx_n_s_STflowSphere_Vx, __pyx_k_STflowSphere_Vx, sizeof(__pyx_k_STflowSphere_Vx), 0, 0, 1, 1},
10473  {&__pyx_n_s_STflowSphere_Vy, __pyx_k_STflowSphere_Vy, sizeof(__pyx_k_STflowSphere_Vy), 0, 0, 1, 1},
10474  {&__pyx_n_s_STflowSphere_Vz, __pyx_k_STflowSphere_Vz, sizeof(__pyx_k_STflowSphere_Vz), 0, 0, 1, 1},
10475  {&__pyx_n_s_canalyticalSolutions, __pyx_k_canalyticalSolutions, sizeof(__pyx_k_canalyticalSolutions), 0, 0, 1, 1},
10476  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
10477  {&__pyx_n_s_diffusionSin1D, __pyx_k_diffusionSin1D, sizeof(__pyx_k_diffusionSin1D), 0, 0, 1, 1},
10478  {&__pyx_n_s_diffusionSin1D_r, __pyx_k_diffusionSin1D_r, sizeof(__pyx_k_diffusionSin1D_r), 0, 0, 1, 1},
10479  {&__pyx_n_s_diffusionSin2D, __pyx_k_diffusionSin2D, sizeof(__pyx_k_diffusionSin2D), 0, 0, 1, 1},
10480  {&__pyx_n_s_diffusionSin2D_r, __pyx_k_diffusionSin2D_r, sizeof(__pyx_k_diffusionSin2D_r), 0, 0, 1, 1},
10481  {&__pyx_n_s_diffusionSin3D, __pyx_k_diffusionSin3D, sizeof(__pyx_k_diffusionSin3D), 0, 0, 1, 1},
10482  {&__pyx_n_s_diffusionSin3D_r, __pyx_k_diffusionSin3D_r, sizeof(__pyx_k_diffusionSin3D_r), 0, 0, 1, 1},
10483  {&__pyx_n_s_dr, __pyx_k_dr, sizeof(__pyx_k_dr), 0, 0, 1, 1},
10484  {&__pyx_n_s_du, __pyx_k_du, sizeof(__pyx_k_du), 0, 0, 1, 1},
10485  {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
10486  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
10487  {&__pyx_n_s_iwork, __pyx_k_iwork, sizeof(__pyx_k_iwork), 0, 0, 1, 1},
10488  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
10489  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
10490  {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
10491  {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
10492  {&__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},
10493  {&__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},
10494  {&__pyx_n_s_poissonsEquationExp1D, __pyx_k_poissonsEquationExp1D, sizeof(__pyx_k_poissonsEquationExp1D), 0, 0, 1, 1},
10495  {&__pyx_n_s_poissonsEquationExp1D_r, __pyx_k_poissonsEquationExp1D_r, sizeof(__pyx_k_poissonsEquationExp1D_r), 0, 0, 1, 1},
10496  {&__pyx_n_s_poissonsEquationExp2D, __pyx_k_poissonsEquationExp2D, sizeof(__pyx_k_poissonsEquationExp2D), 0, 0, 1, 1},
10497  {&__pyx_n_s_poissonsEquationExp2D_r, __pyx_k_poissonsEquationExp2D_r, sizeof(__pyx_k_poissonsEquationExp2D_r), 0, 0, 1, 1},
10498  {&__pyx_n_s_poissonsEquationExp3D, __pyx_k_poissonsEquationExp3D, sizeof(__pyx_k_poissonsEquationExp3D), 0, 0, 1, 1},
10499  {&__pyx_n_s_poissonsEquationExp3D_dr, __pyx_k_poissonsEquationExp3D_dr, sizeof(__pyx_k_poissonsEquationExp3D_dr), 0, 0, 1, 1},
10500  {&__pyx_n_s_poissonsEquationExp3D_r, __pyx_k_poissonsEquationExp3D_r, sizeof(__pyx_k_poissonsEquationExp3D_r), 0, 0, 1, 1},
10501  {&__pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_k_proteus_canalyticalSolutions_pyx, sizeof(__pyx_k_proteus_canalyticalSolutions_pyx), 0, 0, 1, 0},
10502  {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
10503  {&__pyx_n_s_rwork, __pyx_k_rwork, sizeof(__pyx_k_rwork), 0, 0, 1, 1},
10504  {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
10505  {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
10506  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
10507  {&__pyx_n_s_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 0, 1, 1},
10508  {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
10509  {0, 0, 0, 0, 0, 0, 0}
10510 };
10511 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
10512  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 945, __pyx_L1_error)
10513  return 0;
10514  __pyx_L1_error:;
10515  return -1;
10516 }
10517 
10518 static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
10519  __Pyx_RefNannyDeclarations
10520  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
10521 
10522  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":945
10523  * __pyx_import_array()
10524  * except Exception:
10525  * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
10526  *
10527  * cdef inline int import_umath() except -1:
10528  */
10529  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 945, __pyx_L1_error)
10530  __Pyx_GOTREF(__pyx_tuple_);
10531  __Pyx_GIVEREF(__pyx_tuple_);
10532 
10533  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":951
10534  * _import_umath()
10535  * except Exception:
10536  * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
10537  *
10538  * cdef inline int import_ufunc() except -1:
10539  */
10540  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 951, __pyx_L1_error)
10541  __Pyx_GOTREF(__pyx_tuple__2);
10542  __Pyx_GIVEREF(__pyx_tuple__2);
10543 
10544  /* "canalyticalSolutions.pyx":50
10545  *
10546  *
10547  * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10548  * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10549  *
10550  */
10551  __pyx_tuple__3 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 50, __pyx_L1_error)
10552  __Pyx_GOTREF(__pyx_tuple__3);
10553  __Pyx_GIVEREF(__pyx_tuple__3);
10554  __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_PlaneCouetteFlow_u, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 50, __pyx_L1_error)
10555 
10556  /* "canalyticalSolutions.pyx":54
10557  *
10558  *
10559  * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10560  * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10561  *
10562  */
10563  __pyx_tuple__5 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 54, __pyx_L1_error)
10564  __Pyx_GOTREF(__pyx_tuple__5);
10565  __Pyx_GIVEREF(__pyx_tuple__5);
10566  __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_diffusionSin1D, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 54, __pyx_L1_error)
10567 
10568  /* "canalyticalSolutions.pyx":58
10569  *
10570  *
10571  * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10572  * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10573  *
10574  */
10575  __pyx_tuple__7 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 58, __pyx_L1_error)
10576  __Pyx_GOTREF(__pyx_tuple__7);
10577  __Pyx_GIVEREF(__pyx_tuple__7);
10578  __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_diffusionSin2D, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 58, __pyx_L1_error)
10579 
10580  /* "canalyticalSolutions.pyx":62
10581  *
10582  *
10583  * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10584  * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10585  *
10586  */
10587  __pyx_tuple__9 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 62, __pyx_L1_error)
10588  __Pyx_GOTREF(__pyx_tuple__9);
10589  __Pyx_GIVEREF(__pyx_tuple__9);
10590  __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_diffusionSin3D, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 62, __pyx_L1_error)
10591 
10592  /* "canalyticalSolutions.pyx":66
10593  *
10594  *
10595  * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10596  * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10597  *
10598  */
10599  __pyx_tuple__11 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 66, __pyx_L1_error)
10600  __Pyx_GOTREF(__pyx_tuple__11);
10601  __Pyx_GIVEREF(__pyx_tuple__11);
10602  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_diffusionSin1D_r, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 66, __pyx_L1_error)
10603 
10604  /* "canalyticalSolutions.pyx":70
10605  *
10606  *
10607  * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10608  * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10609  *
10610  */
10611  __pyx_tuple__13 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 70, __pyx_L1_error)
10612  __Pyx_GOTREF(__pyx_tuple__13);
10613  __Pyx_GIVEREF(__pyx_tuple__13);
10614  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_diffusionSin2D_r, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 70, __pyx_L1_error)
10615 
10616  /* "canalyticalSolutions.pyx":74
10617  *
10618  *
10619  * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10620  * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10621  *
10622  */
10623  __pyx_tuple__15 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 74, __pyx_L1_error)
10624  __Pyx_GOTREF(__pyx_tuple__15);
10625  __Pyx_GIVEREF(__pyx_tuple__15);
10626  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_diffusionSin3D_r, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 74, __pyx_L1_error)
10627 
10628  /* "canalyticalSolutions.pyx":78
10629  *
10630  *
10631  * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10632  * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10633  *
10634  */
10635  __pyx_tuple__17 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 78, __pyx_L1_error)
10636  __Pyx_GOTREF(__pyx_tuple__17);
10637  __Pyx_GIVEREF(__pyx_tuple__17);
10638  __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearAD_DiracIC, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 78, __pyx_L1_error)
10639 
10640  /* "canalyticalSolutions.pyx":82
10641  *
10642  *
10643  * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
10644  * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
10645  *
10646  */
10647  __pyx_tuple__19 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_f); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 82, __pyx_L1_error)
10648  __Pyx_GOTREF(__pyx_tuple__19);
10649  __Pyx_GIVEREF(__pyx_tuple__19);
10650  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearAD_DiracIC_advectiveVeloci, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 82, __pyx_L1_error)
10651 
10652  /* "canalyticalSolutions.pyx":86
10653  *
10654  *
10655  * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
10656  * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
10657  *
10658  */
10659  __pyx_tuple__21 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_f); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 86, __pyx_L1_error)
10660  __Pyx_GOTREF(__pyx_tuple__21);
10661  __Pyx_GIVEREF(__pyx_tuple__21);
10662  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearAD_DiracIC_diffusiveVeloci, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 86, __pyx_L1_error)
10663 
10664  /* "canalyticalSolutions.pyx":90
10665  *
10666  *
10667  * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
10668  * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
10669  *
10670  */
10671  __pyx_tuple__23 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_du); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 90, __pyx_L1_error)
10672  __Pyx_GOTREF(__pyx_tuple__23);
10673  __Pyx_GIVEREF(__pyx_tuple__23);
10674  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearAD_DiracIC_du, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 90, __pyx_L1_error)
10675 
10676  /* "canalyticalSolutions.pyx":94
10677  *
10678  *
10679  * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10680  * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10681  *
10682  */
10683  __pyx_tuple__25 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 94, __pyx_L1_error)
10684  __Pyx_GOTREF(__pyx_tuple__25);
10685  __Pyx_GIVEREF(__pyx_tuple__25);
10686  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearAD_DiracIC_totalVelocity, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 94, __pyx_L1_error)
10687 
10688  /* "canalyticalSolutions.pyx":98
10689  *
10690  *
10691  * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10692  * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10693  *
10694  */
10695  __pyx_tuple__27 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 98, __pyx_L1_error)
10696  __Pyx_GOTREF(__pyx_tuple__27);
10697  __Pyx_GIVEREF(__pyx_tuple__27);
10698  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearAD_SteadyState, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 98, __pyx_L1_error)
10699 
10700  /* "canalyticalSolutions.pyx":102
10701  *
10702  *
10703  * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10704  * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10705  *
10706  */
10707  __pyx_tuple__29 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 102, __pyx_L1_error)
10708  __Pyx_GOTREF(__pyx_tuple__29);
10709  __Pyx_GIVEREF(__pyx_tuple__29);
10710  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Decay_DiracIC, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 102, __pyx_L1_error)
10711 
10712  /* "canalyticalSolutions.pyx":106
10713  *
10714  *
10715  * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
10716  * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
10717  *
10718  */
10719  __pyx_tuple__31 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_dr); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 106, __pyx_L1_error)
10720  __Pyx_GOTREF(__pyx_tuple__31);
10721  __Pyx_GIVEREF(__pyx_tuple__31);
10722  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Decay_DiracIC_dr, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 106, __pyx_L1_error)
10723 
10724  /* "canalyticalSolutions.pyx":110
10725  *
10726  *
10727  * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10728  * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10729  *
10730  */
10731  __pyx_tuple__33 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 110, __pyx_L1_error)
10732  __Pyx_GOTREF(__pyx_tuple__33);
10733  __Pyx_GIVEREF(__pyx_tuple__33);
10734  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Decay_DiracIC_r, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 110, __pyx_L1_error)
10735 
10736  /* "canalyticalSolutions.pyx":114
10737  *
10738  *
10739  * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10740  * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10741  *
10742  */
10743  __pyx_tuple__35 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 114, __pyx_L1_error)
10744  __Pyx_GOTREF(__pyx_tuple__35);
10745  __Pyx_GIVEREF(__pyx_tuple__35);
10746  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 114, __pyx_L1_error)
10747 
10748  /* "canalyticalSolutions.pyx":118
10749  *
10750  *
10751  * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
10752  * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
10753  *
10754  */
10755  __pyx_tuple__37 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_f); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 118, __pyx_L1_error)
10756  __Pyx_GOTREF(__pyx_tuple__37);
10757  __Pyx_GIVEREF(__pyx_tuple__37);
10758  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine_advectiveVelocity, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 118, __pyx_L1_error)
10759 
10760  /* "canalyticalSolutions.pyx":122
10761  *
10762  *
10763  * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
10764  * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
10765  *
10766  */
10767  __pyx_tuple__39 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_f); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 122, __pyx_L1_error)
10768  __Pyx_GOTREF(__pyx_tuple__39);
10769  __Pyx_GIVEREF(__pyx_tuple__39);
10770  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine_diffusiveVelocity, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 122, __pyx_L1_error)
10771 
10772  /* "canalyticalSolutions.pyx":126
10773  *
10774  *
10775  * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
10776  * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
10777  *
10778  */
10779  __pyx_tuple__41 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_dr); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 126, __pyx_L1_error)
10780  __Pyx_GOTREF(__pyx_tuple__41);
10781  __Pyx_GIVEREF(__pyx_tuple__41);
10782  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine_dr, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 126, __pyx_L1_error)
10783 
10784  /* "canalyticalSolutions.pyx":130
10785  *
10786  *
10787  * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
10788  * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
10789  *
10790  */
10791  __pyx_tuple__43 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_du); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 130, __pyx_L1_error)
10792  __Pyx_GOTREF(__pyx_tuple__43);
10793  __Pyx_GIVEREF(__pyx_tuple__43);
10794  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine_du, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 130, __pyx_L1_error)
10795 
10796  /* "canalyticalSolutions.pyx":134
10797  *
10798  *
10799  * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10800  * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10801  *
10802  */
10803  __pyx_tuple__45 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 134, __pyx_L1_error)
10804  __Pyx_GOTREF(__pyx_tuple__45);
10805  __Pyx_GIVEREF(__pyx_tuple__45);
10806  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine_r, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 134, __pyx_L1_error)
10807 
10808  /* "canalyticalSolutions.pyx":138
10809  *
10810  *
10811  * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10812  * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10813  *
10814  */
10815  __pyx_tuple__47 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 138, __pyx_L1_error)
10816  __Pyx_GOTREF(__pyx_tuple__47);
10817  __Pyx_GIVEREF(__pyx_tuple__47);
10818  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_LinearADR_Sine_totalVelocity, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 138, __pyx_L1_error)
10819 
10820  /* "canalyticalSolutions.pyx":142
10821  *
10822  *
10823  * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10824  * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10825  *
10826  */
10827  __pyx_tuple__49 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 142, __pyx_L1_error)
10828  __Pyx_GOTREF(__pyx_tuple__49);
10829  __Pyx_GIVEREF(__pyx_tuple__49);
10830  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_NonlinearAD_SteadyState, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 142, __pyx_L1_error)
10831 
10832  /* "canalyticalSolutions.pyx":146
10833  *
10834  *
10835  * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10836  * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10837  *
10838  */
10839  __pyx_tuple__51 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 146, __pyx_L1_error)
10840  __Pyx_GOTREF(__pyx_tuple__51);
10841  __Pyx_GIVEREF(__pyx_tuple__51);
10842  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_NonlinearADR_Decay_DiracIC, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 146, __pyx_L1_error)
10843 
10844  /* "canalyticalSolutions.pyx":150
10845  *
10846  *
10847  * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
10848  * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
10849  *
10850  */
10851  __pyx_tuple__53 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_dr); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 150, __pyx_L1_error)
10852  __Pyx_GOTREF(__pyx_tuple__53);
10853  __Pyx_GIVEREF(__pyx_tuple__53);
10854  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_NonlinearADR_Decay_DiracIC_dr, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 150, __pyx_L1_error)
10855 
10856  /* "canalyticalSolutions.pyx":154
10857  *
10858  *
10859  * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10860  * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10861  *
10862  */
10863  __pyx_tuple__55 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 154, __pyx_L1_error)
10864  __Pyx_GOTREF(__pyx_tuple__55);
10865  __Pyx_GIVEREF(__pyx_tuple__55);
10866  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_NonlinearADR_Decay_DiracIC_r, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 154, __pyx_L1_error)
10867 
10868  /* "canalyticalSolutions.pyx":158
10869  *
10870  *
10871  * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10872  * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10873  *
10874  */
10875  __pyx_tuple__57 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 158, __pyx_L1_error)
10876  __Pyx_GOTREF(__pyx_tuple__57);
10877  __Pyx_GIVEREF(__pyx_tuple__57);
10878  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_NonlinearDAE, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 158, __pyx_L1_error)
10879 
10880  /* "canalyticalSolutions.pyx":162
10881  *
10882  *
10883  * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10884  * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10885  *
10886  */
10887  __pyx_tuple__59 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 162, __pyx_L1_error)
10888  __Pyx_GOTREF(__pyx_tuple__59);
10889  __Pyx_GIVEREF(__pyx_tuple__59);
10890  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_NonlinearDAE_f, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 162, __pyx_L1_error)
10891 
10892  /* "canalyticalSolutions.pyx":166
10893  *
10894  *
10895  * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10896  * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10897  *
10898  */
10899  __pyx_tuple__61 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 166, __pyx_L1_error)
10900  __Pyx_GOTREF(__pyx_tuple__61);
10901  __Pyx_GIVEREF(__pyx_tuple__61);
10902  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_PlanePoiseuilleFlow_u, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 166, __pyx_L1_error)
10903 
10904  /* "canalyticalSolutions.pyx":170
10905  *
10906  *
10907  * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10908  * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10909  *
10910  */
10911  __pyx_tuple__63 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 170, __pyx_L1_error)
10912  __Pyx_GOTREF(__pyx_tuple__63);
10913  __Pyx_GIVEREF(__pyx_tuple__63);
10914  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 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_canalyticalSolutions_pyx, __pyx_n_s_PoiseuillePipeFlow, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 170, __pyx_L1_error)
10915 
10916  /* "canalyticalSolutions.pyx":174
10917  *
10918  *
10919  * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10920  * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10921  *
10922  */
10923  __pyx_tuple__65 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 174, __pyx_L1_error)
10924  __Pyx_GOTREF(__pyx_tuple__65);
10925  __Pyx_GIVEREF(__pyx_tuple__65);
10926  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_PoiseuillePipeFlow_P, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 174, __pyx_L1_error)
10927 
10928  /* "canalyticalSolutions.pyx":178
10929  *
10930  *
10931  * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10932  * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10933  *
10934  */
10935  __pyx_tuple__67 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 178, __pyx_L1_error)
10936  __Pyx_GOTREF(__pyx_tuple__67);
10937  __Pyx_GIVEREF(__pyx_tuple__67);
10938  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp1D, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 178, __pyx_L1_error)
10939 
10940  /* "canalyticalSolutions.pyx":182
10941  *
10942  *
10943  * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10944  * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10945  *
10946  */
10947  __pyx_tuple__69 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 182, __pyx_L1_error)
10948  __Pyx_GOTREF(__pyx_tuple__69);
10949  __Pyx_GIVEREF(__pyx_tuple__69);
10950  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 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_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp2D, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 182, __pyx_L1_error)
10951 
10952  /* "canalyticalSolutions.pyx":186
10953  *
10954  *
10955  * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
10956  * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
10957  *
10958  */
10959  __pyx_tuple__71 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 186, __pyx_L1_error)
10960  __Pyx_GOTREF(__pyx_tuple__71);
10961  __Pyx_GIVEREF(__pyx_tuple__71);
10962  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp3D, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 186, __pyx_L1_error)
10963 
10964  /* "canalyticalSolutions.pyx":190
10965  *
10966  *
10967  * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
10968  * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
10969  *
10970  */
10971  __pyx_tuple__73 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_dr); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 190, __pyx_L1_error)
10972  __Pyx_GOTREF(__pyx_tuple__73);
10973  __Pyx_GIVEREF(__pyx_tuple__73);
10974  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_proteus_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp3D_dr, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 190, __pyx_L1_error)
10975 
10976  /* "canalyticalSolutions.pyx":194
10977  *
10978  *
10979  * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10980  * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10981  *
10982  */
10983  __pyx_tuple__75 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 194, __pyx_L1_error)
10984  __Pyx_GOTREF(__pyx_tuple__75);
10985  __Pyx_GIVEREF(__pyx_tuple__75);
10986  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 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_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp1D_r, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 194, __pyx_L1_error)
10987 
10988  /* "canalyticalSolutions.pyx":198
10989  *
10990  *
10991  * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
10992  * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
10993  *
10994  */
10995  __pyx_tuple__77 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 198, __pyx_L1_error)
10996  __Pyx_GOTREF(__pyx_tuple__77);
10997  __Pyx_GIVEREF(__pyx_tuple__77);
10998  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 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_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp2D_r, 198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 198, __pyx_L1_error)
10999 
11000  /* "canalyticalSolutions.pyx":202
11001  *
11002  *
11003  * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11004  * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11005  *
11006  */
11007  __pyx_tuple__79 = PyTuple_Pack(6, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u, __pyx_n_s_r); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 202, __pyx_L1_error)
11008  __Pyx_GOTREF(__pyx_tuple__79);
11009  __Pyx_GIVEREF(__pyx_tuple__79);
11010  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 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_canalyticalSolutions_pyx, __pyx_n_s_poissonsEquationExp3D_r, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 202, __pyx_L1_error)
11011 
11012  /* "canalyticalSolutions.pyx":206
11013  *
11014  *
11015  * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11016  * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11017  *
11018  */
11019  __pyx_tuple__81 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 206, __pyx_L1_error)
11020  __Pyx_GOTREF(__pyx_tuple__81);
11021  __Pyx_GIVEREF(__pyx_tuple__81);
11022  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 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_canalyticalSolutions_pyx, __pyx_n_s_STflowSphere_P, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 206, __pyx_L1_error)
11023 
11024  /* "canalyticalSolutions.pyx":210
11025  *
11026  *
11027  * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11028  * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11029  *
11030  */
11031  __pyx_tuple__83 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 210, __pyx_L1_error)
11032  __Pyx_GOTREF(__pyx_tuple__83);
11033  __Pyx_GIVEREF(__pyx_tuple__83);
11034  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 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_canalyticalSolutions_pyx, __pyx_n_s_STflowSphere_Vx, 210, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 210, __pyx_L1_error)
11035 
11036  /* "canalyticalSolutions.pyx":214
11037  *
11038  *
11039  * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11040  * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11041  *
11042  */
11043  __pyx_tuple__85 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 214, __pyx_L1_error)
11044  __Pyx_GOTREF(__pyx_tuple__85);
11045  __Pyx_GIVEREF(__pyx_tuple__85);
11046  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 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_canalyticalSolutions_pyx, __pyx_n_s_STflowSphere_Vy, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 214, __pyx_L1_error)
11047 
11048  /* "canalyticalSolutions.pyx":218
11049  *
11050  *
11051  * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11052  * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11053  */
11054  __pyx_tuple__87 = PyTuple_Pack(5, __pyx_n_s_iwork, __pyx_n_s_rwork, __pyx_n_s_t, __pyx_n_s_x, __pyx_n_s_u); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 218, __pyx_L1_error)
11055  __Pyx_GOTREF(__pyx_tuple__87);
11056  __Pyx_GIVEREF(__pyx_tuple__87);
11057  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 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_canalyticalSolutions_pyx, __pyx_n_s_STflowSphere_Vz, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 218, __pyx_L1_error)
11058  __Pyx_RefNannyFinishContext();
11059  return 0;
11060  __pyx_L1_error:;
11061  __Pyx_RefNannyFinishContext();
11062  return -1;
11063 }
11064 
11065 static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
11066  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
11067  return 0;
11068  __pyx_L1_error:;
11069  return -1;
11070 }
11071 
11072 static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
11073 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
11074 static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
11075 static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
11076 static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
11077 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
11078 static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
11079 
11080 static int __Pyx_modinit_global_init_code(void) {
11081  __Pyx_RefNannyDeclarations
11082  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
11083  /*--- Global init code ---*/
11084  __Pyx_RefNannyFinishContext();
11085  return 0;
11086 }
11087 
11088 static int __Pyx_modinit_variable_export_code(void) {
11089  __Pyx_RefNannyDeclarations
11090  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
11091  /*--- Variable export code ---*/
11092  __Pyx_RefNannyFinishContext();
11093  return 0;
11094 }
11095 
11096 static int __Pyx_modinit_function_export_code(void) {
11097  __Pyx_RefNannyDeclarations
11098  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
11099  /*--- Function export code ---*/
11100  __Pyx_RefNannyFinishContext();
11101  return 0;
11102 }
11103 
11104 static int __Pyx_modinit_type_init_code(void) {
11105  __Pyx_RefNannyDeclarations
11106  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
11107  /*--- Type init code ---*/
11108  __Pyx_RefNannyFinishContext();
11109  return 0;
11110 }
11111 
11112 static int __Pyx_modinit_type_import_code(void) {
11113  __Pyx_RefNannyDeclarations
11114  PyObject *__pyx_t_1 = NULL;
11115  int __pyx_lineno = 0;
11116  const char *__pyx_filename = NULL;
11117  int __pyx_clineno = 0;
11118  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
11119  /*--- Type import code ---*/
11120  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error)
11121  __Pyx_GOTREF(__pyx_t_1);
11122  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
11123  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
11124  sizeof(PyTypeObject),
11125  #else
11126  sizeof(PyHeapTypeObject),
11127  #endif
11128  __Pyx_ImportType_CheckSize_Warn);
11129  if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error)
11130  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11131  __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error)
11132  __Pyx_GOTREF(__pyx_t_1);
11133  __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
11134  if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 200, __pyx_L1_error)
11135  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore);
11136  if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 223, __pyx_L1_error)
11137  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore);
11138  if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 227, __pyx_L1_error)
11139  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
11140  if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 239, __pyx_L1_error)
11141  __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11142  if (!__pyx_ptype_5numpy_generic) __PYX_ERR(1, 771, __pyx_L1_error)
11143  __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11144  if (!__pyx_ptype_5numpy_number) __PYX_ERR(1, 773, __pyx_L1_error)
11145  __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11146  if (!__pyx_ptype_5numpy_integer) __PYX_ERR(1, 775, __pyx_L1_error)
11147  __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11148  if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 777, __pyx_L1_error)
11149  __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11150  if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 779, __pyx_L1_error)
11151  __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11152  if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 781, __pyx_L1_error)
11153  __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11154  if (!__pyx_ptype_5numpy_floating) __PYX_ERR(1, 783, __pyx_L1_error)
11155  __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11156  if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 785, __pyx_L1_error)
11157  __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11158  if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 787, __pyx_L1_error)
11159  __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn);
11160  if (!__pyx_ptype_5numpy_character) __PYX_ERR(1, 789, __pyx_L1_error)
11161  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore);
11162  if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 827, __pyx_L1_error)
11163  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11164  __Pyx_RefNannyFinishContext();
11165  return 0;
11166  __pyx_L1_error:;
11167  __Pyx_XDECREF(__pyx_t_1);
11168  __Pyx_RefNannyFinishContext();
11169  return -1;
11170 }
11171 
11172 static int __Pyx_modinit_variable_import_code(void) {
11173  __Pyx_RefNannyDeclarations
11174  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
11175  /*--- Variable import code ---*/
11176  __Pyx_RefNannyFinishContext();
11177  return 0;
11178 }
11179 
11180 static int __Pyx_modinit_function_import_code(void) {
11181  __Pyx_RefNannyDeclarations
11182  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
11183  /*--- Function import code ---*/
11184  __Pyx_RefNannyFinishContext();
11185  return 0;
11186 }
11187 
11188 
11189 #ifndef CYTHON_NO_PYINIT_EXPORT
11190 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
11191 #elif PY_MAJOR_VERSION < 3
11192 #ifdef __cplusplus
11193 #define __Pyx_PyMODINIT_FUNC extern "C" void
11194 #else
11195 #define __Pyx_PyMODINIT_FUNC void
11196 #endif
11197 #else
11198 #ifdef __cplusplus
11199 #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
11200 #else
11201 #define __Pyx_PyMODINIT_FUNC PyObject *
11202 #endif
11203 #endif
11204 
11205 
11206 #if PY_MAJOR_VERSION < 3
11207 __Pyx_PyMODINIT_FUNC initcanalyticalSolutions(void) CYTHON_SMALL_CODE; /*proto*/
11208 __Pyx_PyMODINIT_FUNC initcanalyticalSolutions(void)
11209 #else
11210 __Pyx_PyMODINIT_FUNC PyInit_canalyticalSolutions(void) CYTHON_SMALL_CODE; /*proto*/
11211 __Pyx_PyMODINIT_FUNC PyInit_canalyticalSolutions(void)
11212 #if CYTHON_PEP489_MULTI_PHASE_INIT
11213 {
11214  return PyModuleDef_Init(&__pyx_moduledef);
11215 }
11216 static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
11217  #if PY_VERSION_HEX >= 0x030700A1
11218  static PY_INT64_T main_interpreter_id = -1;
11219  PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
11220  if (main_interpreter_id == -1) {
11221  main_interpreter_id = current_id;
11222  return (unlikely(current_id == -1)) ? -1 : 0;
11223  } else if (unlikely(main_interpreter_id != current_id))
11224  #else
11225  static PyInterpreterState *main_interpreter = NULL;
11226  PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
11227  if (!main_interpreter) {
11228  main_interpreter = current_interpreter;
11229  } else if (unlikely(main_interpreter != current_interpreter))
11230  #endif
11231  {
11232  PyErr_SetString(
11233  PyExc_ImportError,
11234  "Interpreter change detected - this module can only be loaded into one interpreter per process.");
11235  return -1;
11236  }
11237  return 0;
11238 }
11239 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) {
11240  PyObject *value = PyObject_GetAttrString(spec, from_name);
11241  int result = 0;
11242  if (likely(value)) {
11243  if (allow_none || value != Py_None) {
11244  result = PyDict_SetItemString(moddict, to_name, value);
11245  }
11246  Py_DECREF(value);
11247  } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
11248  PyErr_Clear();
11249  } else {
11250  result = -1;
11251  }
11252  return result;
11253 }
11254 static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
11255  PyObject *module = NULL, *moddict, *modname;
11256  if (__Pyx_check_single_interpreter())
11257  return NULL;
11258  if (__pyx_m)
11259  return __Pyx_NewRef(__pyx_m);
11260  modname = PyObject_GetAttrString(spec, "name");
11261  if (unlikely(!modname)) goto bad;
11262  module = PyModule_NewObject(modname);
11263  Py_DECREF(modname);
11264  if (unlikely(!module)) goto bad;
11265  moddict = PyModule_GetDict(module);
11266  if (unlikely(!moddict)) goto bad;
11267  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
11268  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
11269  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
11270  if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
11271  return module;
11272 bad:
11273  Py_XDECREF(module);
11274  return NULL;
11275 }
11276 
11277 
11278 static CYTHON_SMALL_CODE int __pyx_pymod_exec_canalyticalSolutions(PyObject *__pyx_pyinit_module)
11279 #endif
11280 #endif
11281 {
11282  PyObject *__pyx_t_1 = NULL;
11283  int __pyx_lineno = 0;
11284  const char *__pyx_filename = NULL;
11285  int __pyx_clineno = 0;
11286  __Pyx_RefNannyDeclarations
11287  #if CYTHON_PEP489_MULTI_PHASE_INIT
11288  if (__pyx_m) {
11289  if (__pyx_m == __pyx_pyinit_module) return 0;
11290  PyErr_SetString(PyExc_RuntimeError, "Module 'canalyticalSolutions' has already been imported. Re-initialisation is not supported.");
11291  return -1;
11292  }
11293  #elif PY_MAJOR_VERSION >= 3
11294  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
11295  #endif
11296  #if CYTHON_REFNANNY
11297 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
11298 if (!__Pyx_RefNanny) {
11299  PyErr_Clear();
11300  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
11301  if (!__Pyx_RefNanny)
11302  Py_FatalError("failed to import 'refnanny' module");
11303 }
11304 #endif
11305  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_canalyticalSolutions(void)", 0);
11306  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11307  #ifdef __Pxy_PyFrame_Initialize_Offsets
11308  __Pxy_PyFrame_Initialize_Offsets();
11309  #endif
11310  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
11311  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
11312  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
11313  #ifdef __Pyx_CyFunction_USED
11314  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11315  #endif
11316  #ifdef __Pyx_FusedFunction_USED
11317  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11318  #endif
11319  #ifdef __Pyx_Coroutine_USED
11320  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11321  #endif
11322  #ifdef __Pyx_Generator_USED
11323  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11324  #endif
11325  #ifdef __Pyx_AsyncGen_USED
11326  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11327  #endif
11328  #ifdef __Pyx_StopAsyncIteration_USED
11329  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11330  #endif
11331  /*--- Library function declarations ---*/
11332  /*--- Threads initialization code ---*/
11333  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
11334  PyEval_InitThreads();
11335  #endif
11336  /*--- Module creation code ---*/
11337  #if CYTHON_PEP489_MULTI_PHASE_INIT
11338  __pyx_m = __pyx_pyinit_module;
11339  Py_INCREF(__pyx_m);
11340  #else
11341  #if PY_MAJOR_VERSION < 3
11342  __pyx_m = Py_InitModule4("canalyticalSolutions", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
11343  #else
11344  __pyx_m = PyModule_Create(&__pyx_moduledef);
11345  #endif
11346  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
11347  #endif
11348  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
11349  Py_INCREF(__pyx_d);
11350  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
11351  Py_INCREF(__pyx_b);
11352  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
11353  Py_INCREF(__pyx_cython_runtime);
11354  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
11355  /*--- Initialize various global constants etc. ---*/
11356  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11357  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
11358  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11359  #endif
11360  if (__pyx_module_is_main_canalyticalSolutions) {
11361  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11362  }
11363  #if PY_MAJOR_VERSION >= 3
11364  {
11365  PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
11366  if (!PyDict_GetItemString(modules, "canalyticalSolutions")) {
11367  if (unlikely(PyDict_SetItemString(modules, "canalyticalSolutions", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
11368  }
11369  }
11370  #endif
11371  /*--- Builtin init code ---*/
11372  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11373  /*--- Constants init code ---*/
11374  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11375  /*--- Global type/function init code ---*/
11376  (void)__Pyx_modinit_global_init_code();
11377  (void)__Pyx_modinit_variable_export_code();
11378  (void)__Pyx_modinit_function_export_code();
11379  (void)__Pyx_modinit_type_init_code();
11380  if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
11381  (void)__Pyx_modinit_variable_import_code();
11382  (void)__Pyx_modinit_function_import_code();
11383  /*--- Execution code ---*/
11384  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
11385  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11386  #endif
11387 
11388  /* "canalyticalSolutions.pyx":2
11389  * # A type of -*- python -*- file
11390  * import numpy as np # <<<<<<<<<<<<<<
11391  * cimport numpy as np
11392  * cdef extern from "analyticalSolutions.h":
11393  */
11394  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
11395  __Pyx_GOTREF(__pyx_t_1);
11396  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
11397  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11398 
11399  /* "canalyticalSolutions.pyx":50
11400  *
11401  *
11402  * def PlaneCouetteFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11403  * return cPlaneCouetteFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11404  *
11405  */
11406  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_1PlaneCouetteFlow_u, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error)
11407  __Pyx_GOTREF(__pyx_t_1);
11408  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PlaneCouetteFlow_u, __pyx_t_1) < 0) __PYX_ERR(0, 50, __pyx_L1_error)
11409  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11410 
11411  /* "canalyticalSolutions.pyx":54
11412  *
11413  *
11414  * def diffusionSin1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11415  * return cdiffusionSin1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11416  *
11417  */
11418  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_3diffusionSin1D, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
11419  __Pyx_GOTREF(__pyx_t_1);
11420  if (PyDict_SetItem(__pyx_d, __pyx_n_s_diffusionSin1D, __pyx_t_1) < 0) __PYX_ERR(0, 54, __pyx_L1_error)
11421  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11422 
11423  /* "canalyticalSolutions.pyx":58
11424  *
11425  *
11426  * def diffusionSin2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11427  * return cdiffusionSin2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11428  *
11429  */
11430  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_5diffusionSin2D, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)
11431  __Pyx_GOTREF(__pyx_t_1);
11432  if (PyDict_SetItem(__pyx_d, __pyx_n_s_diffusionSin2D, __pyx_t_1) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
11433  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11434 
11435  /* "canalyticalSolutions.pyx":62
11436  *
11437  *
11438  * def diffusionSin3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11439  * return cdiffusionSin3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11440  *
11441  */
11442  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_7diffusionSin3D, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
11443  __Pyx_GOTREF(__pyx_t_1);
11444  if (PyDict_SetItem(__pyx_d, __pyx_n_s_diffusionSin3D, __pyx_t_1) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
11445  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11446 
11447  /* "canalyticalSolutions.pyx":66
11448  *
11449  *
11450  * def diffusionSin1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11451  * return cdiffusionSin1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11452  *
11453  */
11454  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_9diffusionSin1D_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error)
11455  __Pyx_GOTREF(__pyx_t_1);
11456  if (PyDict_SetItem(__pyx_d, __pyx_n_s_diffusionSin1D_r, __pyx_t_1) < 0) __PYX_ERR(0, 66, __pyx_L1_error)
11457  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11458 
11459  /* "canalyticalSolutions.pyx":70
11460  *
11461  *
11462  * def diffusionSin2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11463  * return cdiffusionSin2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11464  *
11465  */
11466  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_11diffusionSin2D_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
11467  __Pyx_GOTREF(__pyx_t_1);
11468  if (PyDict_SetItem(__pyx_d, __pyx_n_s_diffusionSin2D_r, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error)
11469  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11470 
11471  /* "canalyticalSolutions.pyx":74
11472  *
11473  *
11474  * def diffusionSin3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11475  * return cdiffusionSin3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11476  *
11477  */
11478  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_13diffusionSin3D_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
11479  __Pyx_GOTREF(__pyx_t_1);
11480  if (PyDict_SetItem(__pyx_d, __pyx_n_s_diffusionSin3D_r, __pyx_t_1) < 0) __PYX_ERR(0, 74, __pyx_L1_error)
11481  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11482 
11483  /* "canalyticalSolutions.pyx":78
11484  *
11485  *
11486  * def LinearAD_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11487  * return cLinearAD_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11488  *
11489  */
11490  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_15LinearAD_DiracIC, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error)
11491  __Pyx_GOTREF(__pyx_t_1);
11492  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearAD_DiracIC, __pyx_t_1) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
11493  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11494 
11495  /* "canalyticalSolutions.pyx":82
11496  *
11497  *
11498  * def LinearAD_DiracIC_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
11499  * return cLinearAD_DiracIC_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
11500  *
11501  */
11502  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_17LinearAD_DiracIC_advectiveVelocity, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
11503  __Pyx_GOTREF(__pyx_t_1);
11504  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearAD_DiracIC_advectiveVeloci, __pyx_t_1) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
11505  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11506 
11507  /* "canalyticalSolutions.pyx":86
11508  *
11509  *
11510  * def LinearAD_DiracIC_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
11511  * return cLinearAD_DiracIC_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
11512  *
11513  */
11514  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_19LinearAD_DiracIC_diffusiveVelocity, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error)
11515  __Pyx_GOTREF(__pyx_t_1);
11516  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearAD_DiracIC_diffusiveVeloci, __pyx_t_1) < 0) __PYX_ERR(0, 86, __pyx_L1_error)
11517  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11518 
11519  /* "canalyticalSolutions.pyx":90
11520  *
11521  *
11522  * def LinearAD_DiracIC_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
11523  * return cLinearAD_DiracIC_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
11524  *
11525  */
11526  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_21LinearAD_DiracIC_du, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error)
11527  __Pyx_GOTREF(__pyx_t_1);
11528  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearAD_DiracIC_du, __pyx_t_1) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
11529  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11530 
11531  /* "canalyticalSolutions.pyx":94
11532  *
11533  *
11534  * def LinearAD_DiracIC_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11535  * return cLinearAD_DiracIC_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11536  *
11537  */
11538  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_23LinearAD_DiracIC_totalVelocity, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error)
11539  __Pyx_GOTREF(__pyx_t_1);
11540  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearAD_DiracIC_totalVelocity, __pyx_t_1) < 0) __PYX_ERR(0, 94, __pyx_L1_error)
11541  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11542 
11543  /* "canalyticalSolutions.pyx":98
11544  *
11545  *
11546  * def LinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11547  * return cLinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11548  *
11549  */
11550  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_25LinearAD_SteadyState, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error)
11551  __Pyx_GOTREF(__pyx_t_1);
11552  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearAD_SteadyState, __pyx_t_1) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
11553  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11554 
11555  /* "canalyticalSolutions.pyx":102
11556  *
11557  *
11558  * def LinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11559  * return cLinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11560  *
11561  */
11562  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_27LinearADR_Decay_DiracIC, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
11563  __Pyx_GOTREF(__pyx_t_1);
11564  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Decay_DiracIC, __pyx_t_1) < 0) __PYX_ERR(0, 102, __pyx_L1_error)
11565  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11566 
11567  /* "canalyticalSolutions.pyx":106
11568  *
11569  *
11570  * def LinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
11571  * return cLinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
11572  *
11573  */
11574  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_29LinearADR_Decay_DiracIC_dr, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
11575  __Pyx_GOTREF(__pyx_t_1);
11576  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Decay_DiracIC_dr, __pyx_t_1) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
11577  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11578 
11579  /* "canalyticalSolutions.pyx":110
11580  *
11581  *
11582  * def LinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11583  * return cLinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11584  *
11585  */
11586  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_31LinearADR_Decay_DiracIC_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
11587  __Pyx_GOTREF(__pyx_t_1);
11588  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Decay_DiracIC_r, __pyx_t_1) < 0) __PYX_ERR(0, 110, __pyx_L1_error)
11589  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11590 
11591  /* "canalyticalSolutions.pyx":114
11592  *
11593  *
11594  * def LinearADR_Sine(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11595  * return cLinearADR_Sine( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11596  *
11597  */
11598  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_33LinearADR_Sine, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
11599  __Pyx_GOTREF(__pyx_t_1);
11600  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine, __pyx_t_1) < 0) __PYX_ERR(0, 114, __pyx_L1_error)
11601  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11602 
11603  /* "canalyticalSolutions.pyx":118
11604  *
11605  *
11606  * def LinearADR_Sine_advectiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
11607  * return cLinearADR_Sine_advectiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
11608  *
11609  */
11610  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_35LinearADR_Sine_advectiveVelocity, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
11611  __Pyx_GOTREF(__pyx_t_1);
11612  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine_advectiveVelocity, __pyx_t_1) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
11613  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11614 
11615  /* "canalyticalSolutions.pyx":122
11616  *
11617  *
11618  * def LinearADR_Sine_diffusiveVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray f) -> int: # <<<<<<<<<<<<<<
11619  * return cLinearADR_Sine_diffusiveVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > f.data)
11620  *
11621  */
11622  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_37LinearADR_Sine_diffusiveVelocity, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error)
11623  __Pyx_GOTREF(__pyx_t_1);
11624  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine_diffusiveVelocity, __pyx_t_1) < 0) __PYX_ERR(0, 122, __pyx_L1_error)
11625  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11626 
11627  /* "canalyticalSolutions.pyx":126
11628  *
11629  *
11630  * def LinearADR_Sine_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
11631  * return cLinearADR_Sine_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
11632  *
11633  */
11634  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_39LinearADR_Sine_dr, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
11635  __Pyx_GOTREF(__pyx_t_1);
11636  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine_dr, __pyx_t_1) < 0) __PYX_ERR(0, 126, __pyx_L1_error)
11637  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11638 
11639  /* "canalyticalSolutions.pyx":130
11640  *
11641  *
11642  * def LinearADR_Sine_du(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray du) -> int: # <<<<<<<<<<<<<<
11643  * return cLinearADR_Sine_du( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > du.data)
11644  *
11645  */
11646  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_41LinearADR_Sine_du, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error)
11647  __Pyx_GOTREF(__pyx_t_1);
11648  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine_du, __pyx_t_1) < 0) __PYX_ERR(0, 130, __pyx_L1_error)
11649  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11650 
11651  /* "canalyticalSolutions.pyx":134
11652  *
11653  *
11654  * def LinearADR_Sine_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11655  * return cLinearADR_Sine_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11656  *
11657  */
11658  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_43LinearADR_Sine_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error)
11659  __Pyx_GOTREF(__pyx_t_1);
11660  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine_r, __pyx_t_1) < 0) __PYX_ERR(0, 134, __pyx_L1_error)
11661  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11662 
11663  /* "canalyticalSolutions.pyx":138
11664  *
11665  *
11666  * def LinearADR_Sine_totalVelocity(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11667  * return cLinearADR_Sine_totalVelocity( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11668  *
11669  */
11670  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_45LinearADR_Sine_totalVelocity, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
11671  __Pyx_GOTREF(__pyx_t_1);
11672  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LinearADR_Sine_totalVelocity, __pyx_t_1) < 0) __PYX_ERR(0, 138, __pyx_L1_error)
11673  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11674 
11675  /* "canalyticalSolutions.pyx":142
11676  *
11677  *
11678  * def NonlinearAD_SteadyState(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11679  * return cNonlinearAD_SteadyState( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11680  *
11681  */
11682  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_47NonlinearAD_SteadyState, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
11683  __Pyx_GOTREF(__pyx_t_1);
11684  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NonlinearAD_SteadyState, __pyx_t_1) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
11685  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11686 
11687  /* "canalyticalSolutions.pyx":146
11688  *
11689  *
11690  * def NonlinearADR_Decay_DiracIC(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11691  * return cNonlinearADR_Decay_DiracIC( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11692  *
11693  */
11694  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_49NonlinearADR_Decay_DiracIC, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
11695  __Pyx_GOTREF(__pyx_t_1);
11696  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NonlinearADR_Decay_DiracIC, __pyx_t_1) < 0) __PYX_ERR(0, 146, __pyx_L1_error)
11697  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11698 
11699  /* "canalyticalSolutions.pyx":150
11700  *
11701  *
11702  * def NonlinearADR_Decay_DiracIC_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
11703  * return cNonlinearADR_Decay_DiracIC_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
11704  *
11705  */
11706  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_51NonlinearADR_Decay_DiracIC_dr, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error)
11707  __Pyx_GOTREF(__pyx_t_1);
11708  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NonlinearADR_Decay_DiracIC_dr, __pyx_t_1) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
11709  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11710 
11711  /* "canalyticalSolutions.pyx":154
11712  *
11713  *
11714  * def NonlinearADR_Decay_DiracIC_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11715  * return cNonlinearADR_Decay_DiracIC_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11716  *
11717  */
11718  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_53NonlinearADR_Decay_DiracIC_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error)
11719  __Pyx_GOTREF(__pyx_t_1);
11720  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NonlinearADR_Decay_DiracIC_r, __pyx_t_1) < 0) __PYX_ERR(0, 154, __pyx_L1_error)
11721  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11722 
11723  /* "canalyticalSolutions.pyx":158
11724  *
11725  *
11726  * def NonlinearDAE(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11727  * return cNonlinearDAE( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11728  *
11729  */
11730  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_55NonlinearDAE, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
11731  __Pyx_GOTREF(__pyx_t_1);
11732  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NonlinearDAE, __pyx_t_1) < 0) __PYX_ERR(0, 158, __pyx_L1_error)
11733  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11734 
11735  /* "canalyticalSolutions.pyx":162
11736  *
11737  *
11738  * def NonlinearDAE_f(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11739  * return cNonlinearDAE_f( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11740  *
11741  */
11742  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_57NonlinearDAE_f, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
11743  __Pyx_GOTREF(__pyx_t_1);
11744  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NonlinearDAE_f, __pyx_t_1) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
11745  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11746 
11747  /* "canalyticalSolutions.pyx":166
11748  *
11749  *
11750  * def PlanePoiseuilleFlow_u(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11751  * return cPlanePoiseuilleFlow_u( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11752  *
11753  */
11754  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_59PlanePoiseuilleFlow_u, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
11755  __Pyx_GOTREF(__pyx_t_1);
11756  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PlanePoiseuilleFlow_u, __pyx_t_1) < 0) __PYX_ERR(0, 166, __pyx_L1_error)
11757  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11758 
11759  /* "canalyticalSolutions.pyx":170
11760  *
11761  *
11762  * def PoiseuillePipeFlow(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11763  * return cPoiseuillePipeFlow( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11764  *
11765  */
11766  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_61PoiseuillePipeFlow, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
11767  __Pyx_GOTREF(__pyx_t_1);
11768  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PoiseuillePipeFlow, __pyx_t_1) < 0) __PYX_ERR(0, 170, __pyx_L1_error)
11769  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11770 
11771  /* "canalyticalSolutions.pyx":174
11772  *
11773  *
11774  * def PoiseuillePipeFlow_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11775  * return cPoiseuillePipeFlow_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11776  *
11777  */
11778  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_63PoiseuillePipeFlow_P, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
11779  __Pyx_GOTREF(__pyx_t_1);
11780  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PoiseuillePipeFlow_P, __pyx_t_1) < 0) __PYX_ERR(0, 174, __pyx_L1_error)
11781  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11782 
11783  /* "canalyticalSolutions.pyx":178
11784  *
11785  *
11786  * def poissonsEquationExp1D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11787  * return cpoissonsEquationExp1D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11788  *
11789  */
11790  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_65poissonsEquationExp1D, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
11791  __Pyx_GOTREF(__pyx_t_1);
11792  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp1D, __pyx_t_1) < 0) __PYX_ERR(0, 178, __pyx_L1_error)
11793  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11794 
11795  /* "canalyticalSolutions.pyx":182
11796  *
11797  *
11798  * def poissonsEquationExp2D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11799  * return cpoissonsEquationExp2D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11800  *
11801  */
11802  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_67poissonsEquationExp2D, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 182, __pyx_L1_error)
11803  __Pyx_GOTREF(__pyx_t_1);
11804  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp2D, __pyx_t_1) < 0) __PYX_ERR(0, 182, __pyx_L1_error)
11805  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11806 
11807  /* "canalyticalSolutions.pyx":186
11808  *
11809  *
11810  * def poissonsEquationExp3D(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11811  * return cpoissonsEquationExp3D( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11812  *
11813  */
11814  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_69poissonsEquationExp3D, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error)
11815  __Pyx_GOTREF(__pyx_t_1);
11816  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp3D, __pyx_t_1) < 0) __PYX_ERR(0, 186, __pyx_L1_error)
11817  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11818 
11819  /* "canalyticalSolutions.pyx":190
11820  *
11821  *
11822  * def poissonsEquationExp3D_dr(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray dr) -> int: # <<<<<<<<<<<<<<
11823  * return cpoissonsEquationExp3D_dr( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > dr.data)
11824  *
11825  */
11826  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_71poissonsEquationExp3D_dr, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
11827  __Pyx_GOTREF(__pyx_t_1);
11828  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp3D_dr, __pyx_t_1) < 0) __PYX_ERR(0, 190, __pyx_L1_error)
11829  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11830 
11831  /* "canalyticalSolutions.pyx":194
11832  *
11833  *
11834  * def poissonsEquationExp1D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11835  * return cpoissonsEquationExp1D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11836  *
11837  */
11838  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_73poissonsEquationExp1D_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
11839  __Pyx_GOTREF(__pyx_t_1);
11840  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp1D_r, __pyx_t_1) < 0) __PYX_ERR(0, 194, __pyx_L1_error)
11841  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11842 
11843  /* "canalyticalSolutions.pyx":198
11844  *
11845  *
11846  * def poissonsEquationExp2D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11847  * return cpoissonsEquationExp2D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11848  *
11849  */
11850  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_75poissonsEquationExp2D_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error)
11851  __Pyx_GOTREF(__pyx_t_1);
11852  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp2D_r, __pyx_t_1) < 0) __PYX_ERR(0, 198, __pyx_L1_error)
11853  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11854 
11855  /* "canalyticalSolutions.pyx":202
11856  *
11857  *
11858  * def poissonsEquationExp3D_r(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u, np.ndarray r) -> int: # <<<<<<<<<<<<<<
11859  * return cpoissonsEquationExp3D_r( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data, < double * > r.data)
11860  *
11861  */
11862  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_77poissonsEquationExp3D_r, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error)
11863  __Pyx_GOTREF(__pyx_t_1);
11864  if (PyDict_SetItem(__pyx_d, __pyx_n_s_poissonsEquationExp3D_r, __pyx_t_1) < 0) __PYX_ERR(0, 202, __pyx_L1_error)
11865  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11866 
11867  /* "canalyticalSolutions.pyx":206
11868  *
11869  *
11870  * def STflowSphere_P(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11871  * return cSTflowSphere_P( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11872  *
11873  */
11874  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_79STflowSphere_P, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error)
11875  __Pyx_GOTREF(__pyx_t_1);
11876  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STflowSphere_P, __pyx_t_1) < 0) __PYX_ERR(0, 206, __pyx_L1_error)
11877  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11878 
11879  /* "canalyticalSolutions.pyx":210
11880  *
11881  *
11882  * def STflowSphere_Vx(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11883  * return cSTflowSphere_Vx( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11884  *
11885  */
11886  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_81STflowSphere_Vx, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error)
11887  __Pyx_GOTREF(__pyx_t_1);
11888  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STflowSphere_Vx, __pyx_t_1) < 0) __PYX_ERR(0, 210, __pyx_L1_error)
11889  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11890 
11891  /* "canalyticalSolutions.pyx":214
11892  *
11893  *
11894  * def STflowSphere_Vy(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11895  * return cSTflowSphere_Vy( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11896  *
11897  */
11898  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_83STflowSphere_Vy, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error)
11899  __Pyx_GOTREF(__pyx_t_1);
11900  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STflowSphere_Vy, __pyx_t_1) < 0) __PYX_ERR(0, 214, __pyx_L1_error)
11901  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11902 
11903  /* "canalyticalSolutions.pyx":218
11904  *
11905  *
11906  * def STflowSphere_Vz(np.ndarray iwork, np.ndarray rwork, double t, np.ndarray x, np.ndarray u) -> int: # <<<<<<<<<<<<<<
11907  * return cSTflowSphere_Vz( < int * > iwork.data, < double * > rwork.data, x.size/x.shape[x.ndim-1], t, < double * > x.data, < double * > u.data)
11908  */
11909  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_20canalyticalSolutions_85STflowSphere_Vz, NULL, __pyx_n_s_canalyticalSolutions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error)
11910  __Pyx_GOTREF(__pyx_t_1);
11911  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STflowSphere_Vz, __pyx_t_1) < 0) __PYX_ERR(0, 218, __pyx_L1_error)
11912  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11913 
11914  /* "canalyticalSolutions.pyx":1
11915  * # A type of -*- python -*- file # <<<<<<<<<<<<<<
11916  * import numpy as np
11917  * cimport numpy as np
11918  */
11919  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
11920  __Pyx_GOTREF(__pyx_t_1);
11921  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11922  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11923 
11924  /* "../miniconda3/envs/proteus-dev-up/lib/python3.10/site-packages/numpy/__init__.pxd":1014
11925  *
11926  *
11927  * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<<
11928  * """
11929  * returns the unit part of the dtype for a numpy datetime64 object.
11930  */
11931 
11932  /*--- Wrapped vars code ---*/
11933 
11934  goto __pyx_L0;
11935  __pyx_L1_error:;
11936  __Pyx_XDECREF(__pyx_t_1);
11937  if (__pyx_m) {
11938  if (__pyx_d) {
11939  __Pyx_AddTraceback("init canalyticalSolutions", __pyx_clineno, __pyx_lineno, __pyx_filename);
11940  }
11941  Py_CLEAR(__pyx_m);
11942  } else if (!PyErr_Occurred()) {
11943  PyErr_SetString(PyExc_ImportError, "init canalyticalSolutions");
11944  }
11945  __pyx_L0:;
11946  __Pyx_RefNannyFinishContext();
11947  #if CYTHON_PEP489_MULTI_PHASE_INIT
11948  return (__pyx_m != NULL) ? 0 : -1;
11949  #elif PY_MAJOR_VERSION >= 3
11950  return __pyx_m;
11951  #else
11952  return;
11953  #endif
11954 }
11955 
11956 /* --- Runtime support code --- */
11957 /* Refnanny */
11958 #if CYTHON_REFNANNY
11959 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
11960  PyObject *m = NULL, *p = NULL;
11961  void *r = NULL;
11962  m = PyImport_ImportModule(modname);
11963  if (!m) goto end;
11964  p = PyObject_GetAttrString(m, "RefNannyAPI");
11965  if (!p) goto end;
11966  r = PyLong_AsVoidPtr(p);
11967 end:
11968  Py_XDECREF(p);
11969  Py_XDECREF(m);
11970  return (__Pyx_RefNannyAPIStruct *)r;
11971 }
11972 #endif
11973 
11974 /* RaiseArgTupleInvalid */
11975 static void __Pyx_RaiseArgtupleInvalid(
11976  const char* func_name,
11977  int exact,
11978  Py_ssize_t num_min,
11979  Py_ssize_t num_max,
11980  Py_ssize_t num_found)
11981 {
11982  Py_ssize_t num_expected;
11983  const char *more_or_less;
11984  if (num_found < num_min) {
11985  num_expected = num_min;
11986  more_or_less = "at least";
11987  } else {
11988  num_expected = num_max;
11989  more_or_less = "at most";
11990  }
11991  if (exact) {
11992  more_or_less = "exactly";
11993  }
11994  PyErr_Format(PyExc_TypeError,
11995  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
11996  func_name, more_or_less, num_expected,
11997  (num_expected == 1) ? "" : "s", num_found);
11998 }
11999 
12000 /* RaiseDoubleKeywords */
12001 static void __Pyx_RaiseDoubleKeywordsError(
12002  const char* func_name,
12003  PyObject* kw_name)
12004 {
12005  PyErr_Format(PyExc_TypeError,
12006  #if PY_MAJOR_VERSION >= 3
12007  "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
12008  #else
12009  "%s() got multiple values for keyword argument '%s'", func_name,
12010  PyString_AsString(kw_name));
12011  #endif
12012 }
12013 
12014 /* ParseKeywords */
12015 static int __Pyx_ParseOptionalKeywords(
12016  PyObject *kwds,
12017  PyObject **argnames[],
12018  PyObject *kwds2,
12019  PyObject *values[],
12020  Py_ssize_t num_pos_args,
12021  const char* function_name)
12022 {
12023  PyObject *key = 0, *value = 0;
12024  Py_ssize_t pos = 0;
12025  PyObject*** name;
12026  PyObject*** first_kw_arg = argnames + num_pos_args;
12027  while (PyDict_Next(kwds, &pos, &key, &value)) {
12028  name = first_kw_arg;
12029  while (*name && (**name != key)) name++;
12030  if (*name) {
12031  values[name-argnames] = value;
12032  continue;
12033  }
12034  name = first_kw_arg;
12035  #if PY_MAJOR_VERSION < 3
12036  if (likely(PyString_Check(key))) {
12037  while (*name) {
12038  if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
12039  && _PyString_Eq(**name, key)) {
12040  values[name-argnames] = value;
12041  break;
12042  }
12043  name++;
12044  }
12045  if (*name) continue;
12046  else {
12047  PyObject*** argname = argnames;
12048  while (argname != first_kw_arg) {
12049  if ((**argname == key) || (
12050  (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
12051  && _PyString_Eq(**argname, key))) {
12052  goto arg_passed_twice;
12053  }
12054  argname++;
12055  }
12056  }
12057  } else
12058  #endif
12059  if (likely(PyUnicode_Check(key))) {
12060  while (*name) {
12061  int cmp = (**name == key) ? 0 :
12062  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
12063  (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
12064  #endif
12065  PyUnicode_Compare(**name, key);
12066  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
12067  if (cmp == 0) {
12068  values[name-argnames] = value;
12069  break;
12070  }
12071  name++;
12072  }
12073  if (*name) continue;
12074  else {
12075  PyObject*** argname = argnames;
12076  while (argname != first_kw_arg) {
12077  int cmp = (**argname == key) ? 0 :
12078  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
12079  (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
12080  #endif
12081  PyUnicode_Compare(**argname, key);
12082  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
12083  if (cmp == 0) goto arg_passed_twice;
12084  argname++;
12085  }
12086  }
12087  } else
12088  goto invalid_keyword_type;
12089  if (kwds2) {
12090  if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
12091  } else {
12092  goto invalid_keyword;
12093  }
12094  }
12095  return 0;
12096 arg_passed_twice:
12097  __Pyx_RaiseDoubleKeywordsError(function_name, key);
12098  goto bad;
12099 invalid_keyword_type:
12100  PyErr_Format(PyExc_TypeError,
12101  "%.200s() keywords must be strings", function_name);
12102  goto bad;
12103 invalid_keyword:
12104  PyErr_Format(PyExc_TypeError,
12105  #if PY_MAJOR_VERSION < 3
12106  "%.200s() got an unexpected keyword argument '%.200s'",
12107  function_name, PyString_AsString(key));
12108  #else
12109  "%s() got an unexpected keyword argument '%U'",
12110  function_name, key);
12111  #endif
12112 bad:
12113  return -1;
12114 }
12115 
12116 /* ArgTypeTest */
12117 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
12118 {
12119  if (unlikely(!type)) {
12120  PyErr_SetString(PyExc_SystemError, "Missing type object");
12121  return 0;
12122  }
12123  else if (exact) {
12124  #if PY_MAJOR_VERSION == 2
12125  if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
12126  #endif
12127  }
12128  else {
12129  if (likely(__Pyx_TypeCheck(obj, type))) return 1;
12130  }
12131  PyErr_Format(PyExc_TypeError,
12132  "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
12133  name, type->tp_name, Py_TYPE(obj)->tp_name);
12134  return 0;
12135 }
12136 
12137 /* PyObjectGetAttrStr */
12138 #if CYTHON_USE_TYPE_SLOTS
12139 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
12140  PyTypeObject* tp = Py_TYPE(obj);
12141  if (likely(tp->tp_getattro))
12142  return tp->tp_getattro(obj, attr_name);
12143 #if PY_MAJOR_VERSION < 3
12144  if (likely(tp->tp_getattr))
12145  return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
12146 #endif
12147  return PyObject_GetAttr(obj, attr_name);
12148 }
12149 #endif
12150 
12151 /* GetBuiltinName */
12152 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
12153  PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
12154  if (unlikely(!result)) {
12155  PyErr_Format(PyExc_NameError,
12156 #if PY_MAJOR_VERSION >= 3
12157  "name '%U' is not defined", name);
12158 #else
12159  "name '%.200s' is not defined", PyString_AS_STRING(name));
12160 #endif
12161  }
12162  return result;
12163 }
12164 
12165 /* GetTopmostException */
12166 #if CYTHON_USE_EXC_INFO_STACK
12167 static _PyErr_StackItem *
12168 __Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
12169 {
12170  _PyErr_StackItem *exc_info = tstate->exc_info;
12171  while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
12172  exc_info->previous_item != NULL)
12173  {
12174  exc_info = exc_info->previous_item;
12175  }
12176  return exc_info;
12177 }
12178 #endif
12179 
12180 /* SaveResetException */
12181 #if CYTHON_FAST_THREAD_STATE
12182 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
12183  #if CYTHON_USE_EXC_INFO_STACK
12184  _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
12185  *type = exc_info->exc_type;
12186  *value = exc_info->exc_value;
12187  *tb = exc_info->exc_traceback;
12188  #else
12189  *type = tstate->exc_type;
12190  *value = tstate->exc_value;
12191  *tb = tstate->exc_traceback;
12192  #endif
12193  Py_XINCREF(*type);
12194  Py_XINCREF(*value);
12195  Py_XINCREF(*tb);
12196 }
12197 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
12198  PyObject *tmp_type, *tmp_value, *tmp_tb;
12199  #if CYTHON_USE_EXC_INFO_STACK
12200  _PyErr_StackItem *exc_info = tstate->exc_info;
12201  tmp_type = exc_info->exc_type;
12202  tmp_value = exc_info->exc_value;
12203  tmp_tb = exc_info->exc_traceback;
12204  exc_info->exc_type = type;
12205  exc_info->exc_value = value;
12206  exc_info->exc_traceback = tb;
12207  #else
12208  tmp_type = tstate->exc_type;
12209  tmp_value = tstate->exc_value;
12210  tmp_tb = tstate->exc_traceback;
12211  tstate->exc_type = type;
12212  tstate->exc_value = value;
12213  tstate->exc_traceback = tb;
12214  #endif
12215  Py_XDECREF(tmp_type);
12216  Py_XDECREF(tmp_value);
12217  Py_XDECREF(tmp_tb);
12218 }
12219 #endif
12220 
12221 /* PyErrExceptionMatches */
12222 #if CYTHON_FAST_THREAD_STATE
12223 static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
12224  Py_ssize_t i, n;
12225  n = PyTuple_GET_SIZE(tuple);
12226 #if PY_MAJOR_VERSION >= 3
12227  for (i=0; i<n; i++) {
12228  if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
12229  }
12230 #endif
12231  for (i=0; i<n; i++) {
12232  if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
12233  }
12234  return 0;
12235 }
12236 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
12237  PyObject *exc_type = tstate->curexc_type;
12238  if (exc_type == err) return 1;
12239  if (unlikely(!exc_type)) return 0;
12240  if (unlikely(PyTuple_Check(err)))
12241  return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
12242  return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
12243 }
12244 #endif
12245 
12246 /* GetException */
12247 #if CYTHON_FAST_THREAD_STATE
12248 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
12249 #else
12250 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
12251 #endif
12252 {
12253  PyObject *local_type, *local_value, *local_tb;
12254 #if CYTHON_FAST_THREAD_STATE
12255  PyObject *tmp_type, *tmp_value, *tmp_tb;
12256  local_type = tstate->curexc_type;
12257  local_value = tstate->curexc_value;
12258  local_tb = tstate->curexc_traceback;
12259  tstate->curexc_type = 0;
12260  tstate->curexc_value = 0;
12261  tstate->curexc_traceback = 0;
12262 #else
12263  PyErr_Fetch(&local_type, &local_value, &local_tb);
12264 #endif
12265  PyErr_NormalizeException(&local_type, &local_value, &local_tb);
12266 #if CYTHON_FAST_THREAD_STATE
12267  if (unlikely(tstate->curexc_type))
12268 #else
12269  if (unlikely(PyErr_Occurred()))
12270 #endif
12271  goto bad;
12272  #if PY_MAJOR_VERSION >= 3
12273  if (local_tb) {
12274  if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
12275  goto bad;
12276  }
12277  #endif
12278  Py_XINCREF(local_tb);
12279  Py_XINCREF(local_type);
12280  Py_XINCREF(local_value);
12281  *type = local_type;
12282  *value = local_value;
12283  *tb = local_tb;
12284 #if CYTHON_FAST_THREAD_STATE
12285  #if CYTHON_USE_EXC_INFO_STACK
12286  {
12287  _PyErr_StackItem *exc_info = tstate->exc_info;
12288  tmp_type = exc_info->exc_type;
12289  tmp_value = exc_info->exc_value;
12290  tmp_tb = exc_info->exc_traceback;
12291  exc_info->exc_type = local_type;
12292  exc_info->exc_value = local_value;
12293  exc_info->exc_traceback = local_tb;
12294  }
12295  #else
12296  tmp_type = tstate->exc_type;
12297  tmp_value = tstate->exc_value;
12298  tmp_tb = tstate->exc_traceback;
12299  tstate->exc_type = local_type;
12300  tstate->exc_value = local_value;
12301  tstate->exc_traceback = local_tb;
12302  #endif
12303  Py_XDECREF(tmp_type);
12304  Py_XDECREF(tmp_value);
12305  Py_XDECREF(tmp_tb);
12306 #else
12307  PyErr_SetExcInfo(local_type, local_value, local_tb);
12308 #endif
12309  return 0;
12310 bad:
12311  *type = 0;
12312  *value = 0;
12313  *tb = 0;
12314  Py_XDECREF(local_type);
12315  Py_XDECREF(local_value);
12316  Py_XDECREF(local_tb);
12317  return -1;
12318 }
12319 
12320 /* PyObjectCall */
12321 #if CYTHON_COMPILING_IN_CPYTHON
12322 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
12323  PyObject *result;
12324  ternaryfunc call = Py_TYPE(func)->tp_call;
12325  if (unlikely(!call))
12326  return PyObject_Call(func, arg, kw);
12327  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
12328  return NULL;
12329  result = (*call)(func, arg, kw);
12330  Py_LeaveRecursiveCall();
12331  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
12332  PyErr_SetString(
12333  PyExc_SystemError,
12334  "NULL result without error in PyObject_Call");
12335  }
12336  return result;
12337 }
12338 #endif
12339 
12340 /* PyErrFetchRestore */
12341 #if CYTHON_FAST_THREAD_STATE
12342 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
12343  PyObject *tmp_type, *tmp_value, *tmp_tb;
12344  tmp_type = tstate->curexc_type;
12345  tmp_value = tstate->curexc_value;
12346  tmp_tb = tstate->curexc_traceback;
12347  tstate->curexc_type = type;
12348  tstate->curexc_value = value;
12349  tstate->curexc_traceback = tb;
12350  Py_XDECREF(tmp_type);
12351  Py_XDECREF(tmp_value);
12352  Py_XDECREF(tmp_tb);
12353 }
12354 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
12355  *type = tstate->curexc_type;
12356  *value = tstate->curexc_value;
12357  *tb = tstate->curexc_traceback;
12358  tstate->curexc_type = 0;
12359  tstate->curexc_value = 0;
12360  tstate->curexc_traceback = 0;
12361 }
12362 #endif
12363 
12364 /* RaiseException */
12365 #if PY_MAJOR_VERSION < 3
12366 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
12367  CYTHON_UNUSED PyObject *cause) {
12368  __Pyx_PyThreadState_declare
12369  Py_XINCREF(type);
12370  if (!value || value == Py_None)
12371  value = NULL;
12372  else
12373  Py_INCREF(value);
12374  if (!tb || tb == Py_None)
12375  tb = NULL;
12376  else {
12377  Py_INCREF(tb);
12378  if (!PyTraceBack_Check(tb)) {
12379  PyErr_SetString(PyExc_TypeError,
12380  "raise: arg 3 must be a traceback or None");
12381  goto raise_error;
12382  }
12383  }
12384  if (PyType_Check(type)) {
12385 #if CYTHON_COMPILING_IN_PYPY
12386  if (!value) {
12387  Py_INCREF(Py_None);
12388  value = Py_None;
12389  }
12390 #endif
12391  PyErr_NormalizeException(&type, &value, &tb);
12392  } else {
12393  if (value) {
12394  PyErr_SetString(PyExc_TypeError,
12395  "instance exception may not have a separate value");
12396  goto raise_error;
12397  }
12398  value = type;
12399  type = (PyObject*) Py_TYPE(type);
12400  Py_INCREF(type);
12401  if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
12402  PyErr_SetString(PyExc_TypeError,
12403  "raise: exception class must be a subclass of BaseException");
12404  goto raise_error;
12405  }
12406  }
12407  __Pyx_PyThreadState_assign
12408  __Pyx_ErrRestore(type, value, tb);
12409  return;
12410 raise_error:
12411  Py_XDECREF(value);
12412  Py_XDECREF(type);
12413  Py_XDECREF(tb);
12414  return;
12415 }
12416 #else
12417 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
12418  PyObject* owned_instance = NULL;
12419  if (tb == Py_None) {
12420  tb = 0;
12421  } else if (tb && !PyTraceBack_Check(tb)) {
12422  PyErr_SetString(PyExc_TypeError,
12423  "raise: arg 3 must be a traceback or None");
12424  goto bad;
12425  }
12426  if (value == Py_None)
12427  value = 0;
12428  if (PyExceptionInstance_Check(type)) {
12429  if (value) {
12430  PyErr_SetString(PyExc_TypeError,
12431  "instance exception may not have a separate value");
12432  goto bad;
12433  }
12434  value = type;
12435  type = (PyObject*) Py_TYPE(value);
12436  } else if (PyExceptionClass_Check(type)) {
12437  PyObject *instance_class = NULL;
12438  if (value && PyExceptionInstance_Check(value)) {
12439  instance_class = (PyObject*) Py_TYPE(value);
12440  if (instance_class != type) {
12441  int is_subclass = PyObject_IsSubclass(instance_class, type);
12442  if (!is_subclass) {
12443  instance_class = NULL;
12444  } else if (unlikely(is_subclass == -1)) {
12445  goto bad;
12446  } else {
12447  type = instance_class;
12448  }
12449  }
12450  }
12451  if (!instance_class) {
12452  PyObject *args;
12453  if (!value)
12454  args = PyTuple_New(0);
12455  else if (PyTuple_Check(value)) {
12456  Py_INCREF(value);
12457  args = value;
12458  } else
12459  args = PyTuple_Pack(1, value);
12460  if (!args)
12461  goto bad;
12462  owned_instance = PyObject_Call(type, args, NULL);
12463  Py_DECREF(args);
12464  if (!owned_instance)
12465  goto bad;
12466  value = owned_instance;
12467  if (!PyExceptionInstance_Check(value)) {
12468  PyErr_Format(PyExc_TypeError,
12469  "calling %R should have returned an instance of "
12470  "BaseException, not %R",
12471  type, Py_TYPE(value));
12472  goto bad;
12473  }
12474  }
12475  } else {
12476  PyErr_SetString(PyExc_TypeError,
12477  "raise: exception class must be a subclass of BaseException");
12478  goto bad;
12479  }
12480  if (cause) {
12481  PyObject *fixed_cause;
12482  if (cause == Py_None) {
12483  fixed_cause = NULL;
12484  } else if (PyExceptionClass_Check(cause)) {
12485  fixed_cause = PyObject_CallObject(cause, NULL);
12486  if (fixed_cause == NULL)
12487  goto bad;
12488  } else if (PyExceptionInstance_Check(cause)) {
12489  fixed_cause = cause;
12490  Py_INCREF(fixed_cause);
12491  } else {
12492  PyErr_SetString(PyExc_TypeError,
12493  "exception causes must derive from "
12494  "BaseException");
12495  goto bad;
12496  }
12497  PyException_SetCause(value, fixed_cause);
12498  }
12499  PyErr_SetObject(type, value);
12500  if (tb) {
12501 #if CYTHON_COMPILING_IN_PYPY
12502  PyObject *tmp_type, *tmp_value, *tmp_tb;
12503  PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
12504  Py_INCREF(tb);
12505  PyErr_Restore(tmp_type, tmp_value, tb);
12506  Py_XDECREF(tmp_tb);
12507 #else
12508  PyThreadState *tstate = __Pyx_PyThreadState_Current;
12509  PyObject* tmp_tb = tstate->curexc_traceback;
12510  if (tb != tmp_tb) {
12511  Py_INCREF(tb);
12512  tstate->curexc_traceback = tb;
12513  Py_XDECREF(tmp_tb);
12514  }
12515 #endif
12516  }
12517 bad:
12518  Py_XDECREF(owned_instance);
12519  return;
12520 }
12521 #endif
12522 
12523 /* TypeImport */
12524 #ifndef __PYX_HAVE_RT_ImportType
12525 #define __PYX_HAVE_RT_ImportType
12526 static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
12527  size_t size, enum __Pyx_ImportType_CheckSize check_size)
12528 {
12529  PyObject *result = 0;
12530  char warning[200];
12531  Py_ssize_t basicsize;
12532 #ifdef Py_LIMITED_API
12533  PyObject *py_basicsize;
12534 #endif
12535  result = PyObject_GetAttrString(module, class_name);
12536  if (!result)
12537  goto bad;
12538  if (!PyType_Check(result)) {
12539  PyErr_Format(PyExc_TypeError,
12540  "%.200s.%.200s is not a type object",
12541  module_name, class_name);
12542  goto bad;
12543  }
12544 #ifndef Py_LIMITED_API
12545  basicsize = ((PyTypeObject *)result)->tp_basicsize;
12546 #else
12547  py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
12548  if (!py_basicsize)
12549  goto bad;
12550  basicsize = PyLong_AsSsize_t(py_basicsize);
12551  Py_DECREF(py_basicsize);
12552  py_basicsize = 0;
12553  if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
12554  goto bad;
12555 #endif
12556  if ((size_t)basicsize < size) {
12557  PyErr_Format(PyExc_ValueError,
12558  "%.200s.%.200s size changed, may indicate binary incompatibility. "
12559  "Expected %zd from C header, got %zd from PyObject",
12560  module_name, class_name, size, basicsize);
12561  goto bad;
12562  }
12563  if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
12564  PyErr_Format(PyExc_ValueError,
12565  "%.200s.%.200s size changed, may indicate binary incompatibility. "
12566  "Expected %zd from C header, got %zd from PyObject",
12567  module_name, class_name, size, basicsize);
12568  goto bad;
12569  }
12570  else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
12571  PyOS_snprintf(warning, sizeof(warning),
12572  "%s.%s size changed, may indicate binary incompatibility. "
12573  "Expected %zd from C header, got %zd from PyObject",
12574  module_name, class_name, size, basicsize);
12575  if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
12576  }
12577  return (PyTypeObject *)result;
12578 bad:
12579  Py_XDECREF(result);
12580  return NULL;
12581 }
12582 #endif
12583 
12584 /* Import */
12585 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
12586  PyObject *empty_list = 0;
12587  PyObject *module = 0;
12588  PyObject *global_dict = 0;
12589  PyObject *empty_dict = 0;
12590  PyObject *list;
12591  #if PY_MAJOR_VERSION < 3
12592  PyObject *py_import;
12593  py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
12594  if (!py_import)
12595  goto bad;
12596  #endif
12597  if (from_list)
12598  list = from_list;
12599  else {
12600  empty_list = PyList_New(0);
12601  if (!empty_list)
12602  goto bad;
12603  list = empty_list;
12604  }
12605  global_dict = PyModule_GetDict(__pyx_m);
12606  if (!global_dict)
12607  goto bad;
12608  empty_dict = PyDict_New();
12609  if (!empty_dict)
12610  goto bad;
12611  {
12612  #if PY_MAJOR_VERSION >= 3
12613  if (level == -1) {
12614  if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
12615  module = PyImport_ImportModuleLevelObject(
12616  name, global_dict, empty_dict, list, 1);
12617  if (!module) {
12618  if (!PyErr_ExceptionMatches(PyExc_ImportError))
12619  goto bad;
12620  PyErr_Clear();
12621  }
12622  }
12623  level = 0;
12624  }
12625  #endif
12626  if (!module) {
12627  #if PY_MAJOR_VERSION < 3
12628  PyObject *py_level = PyInt_FromLong(level);
12629  if (!py_level)
12630  goto bad;
12631  module = PyObject_CallFunctionObjArgs(py_import,
12632  name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
12633  Py_DECREF(py_level);
12634  #else
12635  module = PyImport_ImportModuleLevelObject(
12636  name, global_dict, empty_dict, list, level);
12637  #endif
12638  }
12639  }
12640 bad:
12641  #if PY_MAJOR_VERSION < 3
12642  Py_XDECREF(py_import);
12643  #endif
12644  Py_XDECREF(empty_list);
12645  Py_XDECREF(empty_dict);
12646  return module;
12647 }
12648 
12649 /* PyDictVersioning */
12650 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
12651 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
12652  PyObject *dict = Py_TYPE(obj)->tp_dict;
12653  return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
12654 }
12655 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
12656  PyObject **dictptr = NULL;
12657  Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
12658  if (offset) {
12659 #if CYTHON_COMPILING_IN_CPYTHON
12660  dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
12661 #else
12662  dictptr = _PyObject_GetDictPtr(obj);
12663 #endif
12664  }
12665  return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
12666 }
12667 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
12668  PyObject *dict = Py_TYPE(obj)->tp_dict;
12669  if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
12670  return 0;
12671  return obj_dict_version == __Pyx_get_object_dict_version(obj);
12672 }
12673 #endif
12674 
12675 /* CLineInTraceback */
12676 #ifndef CYTHON_CLINE_IN_TRACEBACK
12677 static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
12678  PyObject *use_cline;
12679  PyObject *ptype, *pvalue, *ptraceback;
12680 #if CYTHON_COMPILING_IN_CPYTHON
12681  PyObject **cython_runtime_dict;
12682 #endif
12683  if (unlikely(!__pyx_cython_runtime)) {
12684  return c_line;
12685  }
12686  __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
12687 #if CYTHON_COMPILING_IN_CPYTHON
12688  cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
12689  if (likely(cython_runtime_dict)) {
12690  __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
12691  use_cline, *cython_runtime_dict,
12692  __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
12693  } else
12694 #endif
12695  {
12696  PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
12697  if (use_cline_obj) {
12698  use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
12699  Py_DECREF(use_cline_obj);
12700  } else {
12701  PyErr_Clear();
12702  use_cline = NULL;
12703  }
12704  }
12705  if (!use_cline) {
12706  c_line = 0;
12707  (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
12708  }
12709  else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
12710  c_line = 0;
12711  }
12712  __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
12713  return c_line;
12714 }
12715 #endif
12716 
12717 /* CodeObjectCache */
12718 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
12719  int start = 0, mid = 0, end = count - 1;
12720  if (end >= 0 && code_line > entries[end].code_line) {
12721  return count;
12722  }
12723  while (start < end) {
12724  mid = start + (end - start) / 2;
12725  if (code_line < entries[mid].code_line) {
12726  end = mid;
12727  } else if (code_line > entries[mid].code_line) {
12728  start = mid + 1;
12729  } else {
12730  return mid;
12731  }
12732  }
12733  if (code_line <= entries[mid].code_line) {
12734  return mid;
12735  } else {
12736  return mid + 1;
12737  }
12738 }
12739 static PyCodeObject *__pyx_find_code_object(int code_line) {
12740  PyCodeObject* code_object;
12741  int pos;
12742  if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
12743  return NULL;
12744  }
12745  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
12746  if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
12747  return NULL;
12748  }
12749  code_object = __pyx_code_cache.entries[pos].code_object;
12750  Py_INCREF(code_object);
12751  return code_object;
12752 }
12753 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
12754  int pos, i;
12755  __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
12756  if (unlikely(!code_line)) {
12757  return;
12758  }
12759  if (unlikely(!entries)) {
12760  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
12761  if (likely(entries)) {
12762  __pyx_code_cache.entries = entries;
12763  __pyx_code_cache.max_count = 64;
12764  __pyx_code_cache.count = 1;
12765  entries[0].code_line = code_line;
12766  entries[0].code_object = code_object;
12767  Py_INCREF(code_object);
12768  }
12769  return;
12770  }
12771  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
12772  if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
12773  PyCodeObject* tmp = entries[pos].code_object;
12774  entries[pos].code_object = code_object;
12775  Py_DECREF(tmp);
12776  return;
12777  }
12778  if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
12779  int new_max = __pyx_code_cache.max_count + 64;
12780  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
12781  __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
12782  if (unlikely(!entries)) {
12783  return;
12784  }
12785  __pyx_code_cache.entries = entries;
12786  __pyx_code_cache.max_count = new_max;
12787  }
12788  for (i=__pyx_code_cache.count; i>pos; i--) {
12789  entries[i] = entries[i-1];
12790  }
12791  entries[pos].code_line = code_line;
12792  entries[pos].code_object = code_object;
12793  __pyx_code_cache.count++;
12794  Py_INCREF(code_object);
12795 }
12796 
12797 /* AddTraceback */
12798 #include "compile.h"
12799 #include "frameobject.h"
12800 #include "traceback.h"
12801 #if PY_VERSION_HEX >= 0x030b00a6
12802  #ifndef Py_BUILD_CORE
12803  #define Py_BUILD_CORE 1
12804  #endif
12805  #include "internal/pycore_frame.h"
12806 #endif
12807 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
12808  const char *funcname, int c_line,
12809  int py_line, const char *filename) {
12810  PyCodeObject *py_code = NULL;
12811  PyObject *py_funcname = NULL;
12812  #if PY_MAJOR_VERSION < 3
12813  PyObject *py_srcfile = NULL;
12814  py_srcfile = PyString_FromString(filename);
12815  if (!py_srcfile) goto bad;
12816  #endif
12817  if (c_line) {
12818  #if PY_MAJOR_VERSION < 3
12819  py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
12820  if (!py_funcname) goto bad;
12821  #else
12822  py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
12823  if (!py_funcname) goto bad;
12824  funcname = PyUnicode_AsUTF8(py_funcname);
12825  if (!funcname) goto bad;
12826  #endif
12827  }
12828  else {
12829  #if PY_MAJOR_VERSION < 3
12830  py_funcname = PyString_FromString(funcname);
12831  if (!py_funcname) goto bad;
12832  #endif
12833  }
12834  #if PY_MAJOR_VERSION < 3
12835  py_code = __Pyx_PyCode_New(
12836  0,
12837  0,
12838  0,
12839  0,
12840  0,
12841  __pyx_empty_bytes, /*PyObject *code,*/
12842  __pyx_empty_tuple, /*PyObject *consts,*/
12843  __pyx_empty_tuple, /*PyObject *names,*/
12844  __pyx_empty_tuple, /*PyObject *varnames,*/
12845  __pyx_empty_tuple, /*PyObject *freevars,*/
12846  __pyx_empty_tuple, /*PyObject *cellvars,*/
12847  py_srcfile, /*PyObject *filename,*/
12848  py_funcname, /*PyObject *name,*/
12849  py_line,
12850  __pyx_empty_bytes /*PyObject *lnotab*/
12851  );
12852  Py_DECREF(py_srcfile);
12853  #else
12854  py_code = PyCode_NewEmpty(filename, funcname, py_line);
12855  #endif
12856  Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
12857  return py_code;
12858 bad:
12859  Py_XDECREF(py_funcname);
12860  #if PY_MAJOR_VERSION < 3
12861  Py_XDECREF(py_srcfile);
12862  #endif
12863  return NULL;
12864 }
12865 static void __Pyx_AddTraceback(const char *funcname, int c_line,
12866  int py_line, const char *filename) {
12867  PyCodeObject *py_code = 0;
12868  PyFrameObject *py_frame = 0;
12869  PyThreadState *tstate = __Pyx_PyThreadState_Current;
12870  PyObject *ptype, *pvalue, *ptraceback;
12871  if (c_line) {
12872  c_line = __Pyx_CLineForTraceback(tstate, c_line);
12873  }
12874  py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
12875  if (!py_code) {
12876  __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
12877  py_code = __Pyx_CreateCodeObjectForTraceback(
12878  funcname, c_line, py_line, filename);
12879  if (!py_code) {
12880  /* If the code object creation fails, then we should clear the
12881  fetched exception references and propagate the new exception */
12882  Py_XDECREF(ptype);
12883  Py_XDECREF(pvalue);
12884  Py_XDECREF(ptraceback);
12885  goto bad;
12886  }
12887  __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
12888  __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
12889  }
12890  py_frame = PyFrame_New(
12891  tstate, /*PyThreadState *tstate,*/
12892  py_code, /*PyCodeObject *code,*/
12893  __pyx_d, /*PyObject *globals,*/
12894  0 /*PyObject *locals*/
12895  );
12896  if (!py_frame) goto bad;
12897  __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
12898  PyTraceBack_Here(py_frame);
12899 bad:
12900  Py_XDECREF(py_code);
12901  Py_XDECREF(py_frame);
12902 }
12903 
12904 /* CIntFromPyVerify */
12905 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
12906  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
12907 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
12908  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
12909 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
12910  {\
12911  func_type value = func_value;\
12912  if (sizeof(target_type) < sizeof(func_type)) {\
12913  if (unlikely(value != (func_type) (target_type) value)) {\
12914  func_type zero = 0;\
12915  if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
12916  return (target_type) -1;\
12917  if (is_unsigned && unlikely(value < zero))\
12918  goto raise_neg_overflow;\
12919  else\
12920  goto raise_overflow;\
12921  }\
12922  }\
12923  return (target_type) value;\
12924  }
12925 
12926 /* Declarations */
12927 #if CYTHON_CCOMPLEX
12928  #ifdef __cplusplus
12929  static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
12930  return ::std::complex< float >(x, y);
12931  }
12932  #else
12933  static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
12934  return x + y*(__pyx_t_float_complex)_Complex_I;
12935  }
12936  #endif
12937 #else
12938  static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
12939  __pyx_t_float_complex z;
12940  z.real = x;
12941  z.imag = y;
12942  return z;
12943  }
12944 #endif
12945 
12946 /* Arithmetic */
12947 #if CYTHON_CCOMPLEX
12948 #else
12949  static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
12950  return (a.real == b.real) && (a.imag == b.imag);
12951  }
12952  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
12953  __pyx_t_float_complex z;
12954  z.real = a.real + b.real;
12955  z.imag = a.imag + b.imag;
12956  return z;
12957  }
12958  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
12959  __pyx_t_float_complex z;
12960  z.real = a.real - b.real;
12961  z.imag = a.imag - b.imag;
12962  return z;
12963  }
12964  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
12965  __pyx_t_float_complex z;
12966  z.real = a.real * b.real - a.imag * b.imag;
12967  z.imag = a.real * b.imag + a.imag * b.real;
12968  return z;
12969  }
12970  #if 1
12971  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
12972  if (b.imag == 0) {
12973  return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
12974  } else if (fabsf(b.real) >= fabsf(b.imag)) {
12975  if (b.real == 0 && b.imag == 0) {
12976  return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
12977  } else {
12978  float r = b.imag / b.real;
12979  float s = (float)(1.0) / (b.real + b.imag * r);
12980  return __pyx_t_float_complex_from_parts(
12981  (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
12982  }
12983  } else {
12984  float r = b.real / b.imag;
12985  float s = (float)(1.0) / (b.imag + b.real * r);
12986  return __pyx_t_float_complex_from_parts(
12987  (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
12988  }
12989  }
12990  #else
12991  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
12992  if (b.imag == 0) {
12993  return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
12994  } else {
12995  float denom = b.real * b.real + b.imag * b.imag;
12996  return __pyx_t_float_complex_from_parts(
12997  (a.real * b.real + a.imag * b.imag) / denom,
12998  (a.imag * b.real - a.real * b.imag) / denom);
12999  }
13000  }
13001  #endif
13002  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
13003  __pyx_t_float_complex z;
13004  z.real = -a.real;
13005  z.imag = -a.imag;
13006  return z;
13007  }
13008  static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
13009  return (a.real == 0) && (a.imag == 0);
13010  }
13011  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
13012  __pyx_t_float_complex z;
13013  z.real = a.real;
13014  z.imag = -a.imag;
13015  return z;
13016  }
13017  #if 1
13018  static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
13019  #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
13020  return sqrtf(z.real*z.real + z.imag*z.imag);
13021  #else
13022  return hypotf(z.real, z.imag);
13023  #endif
13024  }
13025  static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
13026  __pyx_t_float_complex z;
13027  float r, lnr, theta, z_r, z_theta;
13028  if (b.imag == 0 && b.real == (int)b.real) {
13029  if (b.real < 0) {
13030  float denom = a.real * a.real + a.imag * a.imag;
13031  a.real = a.real / denom;
13032  a.imag = -a.imag / denom;
13033  b.real = -b.real;
13034  }
13035  switch ((int)b.real) {
13036  case 0:
13037  z.real = 1;
13038  z.imag = 0;
13039  return z;
13040  case 1:
13041  return a;
13042  case 2:
13043  return __Pyx_c_prod_float(a, a);
13044  case 3:
13045  z = __Pyx_c_prod_float(a, a);
13046  return __Pyx_c_prod_float(z, a);
13047  case 4:
13048  z = __Pyx_c_prod_float(a, a);
13049  return __Pyx_c_prod_float(z, z);
13050  }
13051  }
13052  if (a.imag == 0) {
13053  if (a.real == 0) {
13054  return a;
13055  } else if (b.imag == 0) {
13056  z.real = powf(a.real, b.real);
13057  z.imag = 0;
13058  return z;
13059  } else if (a.real > 0) {
13060  r = a.real;
13061  theta = 0;
13062  } else {
13063  r = -a.real;
13064  theta = atan2f(0.0, -1.0);
13065  }
13066  } else {
13067  r = __Pyx_c_abs_float(a);
13068  theta = atan2f(a.imag, a.real);
13069  }
13070  lnr = logf(r);
13071  z_r = expf(lnr * b.real - theta * b.imag);
13072  z_theta = theta * b.real + lnr * b.imag;
13073  z.real = z_r * cosf(z_theta);
13074  z.imag = z_r * sinf(z_theta);
13075  return z;
13076  }
13077  #endif
13078 #endif
13079 
13080 /* Declarations */
13081 #if CYTHON_CCOMPLEX
13082  #ifdef __cplusplus
13083  static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
13084  return ::std::complex< double >(x, y);
13085  }
13086  #else
13087  static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
13088  return x + y*(__pyx_t_double_complex)_Complex_I;
13089  }
13090  #endif
13091 #else
13092  static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
13093  __pyx_t_double_complex z;
13094  z.real = x;
13095  z.imag = y;
13096  return z;
13097  }
13098 #endif
13099 
13100 /* Arithmetic */
13101 #if CYTHON_CCOMPLEX
13102 #else
13103  static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13104  return (a.real == b.real) && (a.imag == b.imag);
13105  }
13106  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13107  __pyx_t_double_complex z;
13108  z.real = a.real + b.real;
13109  z.imag = a.imag + b.imag;
13110  return z;
13111  }
13112  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13113  __pyx_t_double_complex z;
13114  z.real = a.real - b.real;
13115  z.imag = a.imag - b.imag;
13116  return z;
13117  }
13118  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13119  __pyx_t_double_complex z;
13120  z.real = a.real * b.real - a.imag * b.imag;
13121  z.imag = a.real * b.imag + a.imag * b.real;
13122  return z;
13123  }
13124  #if 1
13125  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13126  if (b.imag == 0) {
13127  return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
13128  } else if (fabs(b.real) >= fabs(b.imag)) {
13129  if (b.real == 0 && b.imag == 0) {
13130  return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
13131  } else {
13132  double r = b.imag / b.real;
13133  double s = (double)(1.0) / (b.real + b.imag * r);
13134  return __pyx_t_double_complex_from_parts(
13135  (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
13136  }
13137  } else {
13138  double r = b.real / b.imag;
13139  double s = (double)(1.0) / (b.imag + b.real * r);
13140  return __pyx_t_double_complex_from_parts(
13141  (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
13142  }
13143  }
13144  #else
13145  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13146  if (b.imag == 0) {
13147  return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
13148  } else {
13149  double denom = b.real * b.real + b.imag * b.imag;
13150  return __pyx_t_double_complex_from_parts(
13151  (a.real * b.real + a.imag * b.imag) / denom,
13152  (a.imag * b.real - a.real * b.imag) / denom);
13153  }
13154  }
13155  #endif
13156  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
13157  __pyx_t_double_complex z;
13158  z.real = -a.real;
13159  z.imag = -a.imag;
13160  return z;
13161  }
13162  static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
13163  return (a.real == 0) && (a.imag == 0);
13164  }
13165  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
13166  __pyx_t_double_complex z;
13167  z.real = a.real;
13168  z.imag = -a.imag;
13169  return z;
13170  }
13171  #if 1
13172  static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
13173  #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
13174  return sqrt(z.real*z.real + z.imag*z.imag);
13175  #else
13176  return hypot(z.real, z.imag);
13177  #endif
13178  }
13179  static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
13180  __pyx_t_double_complex z;
13181  double r, lnr, theta, z_r, z_theta;
13182  if (b.imag == 0 && b.real == (int)b.real) {
13183  if (b.real < 0) {
13184  double denom = a.real * a.real + a.imag * a.imag;
13185  a.real = a.real / denom;
13186  a.imag = -a.imag / denom;
13187  b.real = -b.real;
13188  }
13189  switch ((int)b.real) {
13190  case 0:
13191  z.real = 1;
13192  z.imag = 0;
13193  return z;
13194  case 1:
13195  return a;
13196  case 2:
13197  return __Pyx_c_prod_double(a, a);
13198  case 3:
13199  z = __Pyx_c_prod_double(a, a);
13200  return __Pyx_c_prod_double(z, a);
13201  case 4:
13202  z = __Pyx_c_prod_double(a, a);
13203  return __Pyx_c_prod_double(z, z);
13204  }
13205  }
13206  if (a.imag == 0) {
13207  if (a.real == 0) {
13208  return a;
13209  } else if (b.imag == 0) {
13210  z.real = pow(a.real, b.real);
13211  z.imag = 0;
13212  return z;
13213  } else if (a.real > 0) {
13214  r = a.real;
13215  theta = 0;
13216  } else {
13217  r = -a.real;
13218  theta = atan2(0.0, -1.0);
13219  }
13220  } else {
13221  r = __Pyx_c_abs_double(a);
13222  theta = atan2(a.imag, a.real);
13223  }
13224  lnr = log(r);
13225  z_r = exp(lnr * b.real - theta * b.imag);
13226  z_theta = theta * b.real + lnr * b.imag;
13227  z.real = z_r * cos(z_theta);
13228  z.imag = z_r * sin(z_theta);
13229  return z;
13230  }
13231  #endif
13232 #endif
13233 
13234 /* CIntToPy */
13235 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Py_intptr_t(Py_intptr_t value) {
13236 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13237 #pragma GCC diagnostic push
13238 #pragma GCC diagnostic ignored "-Wconversion"
13239 #endif
13240  const Py_intptr_t neg_one = (Py_intptr_t) -1, const_zero = (Py_intptr_t) 0;
13241 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13242 #pragma GCC diagnostic pop
13243 #endif
13244  const int is_unsigned = neg_one > const_zero;
13245  if (is_unsigned) {
13246  if (sizeof(Py_intptr_t) < sizeof(long)) {
13247  return PyInt_FromLong((long) value);
13248  } else if (sizeof(Py_intptr_t) <= sizeof(unsigned long)) {
13249  return PyLong_FromUnsignedLong((unsigned long) value);
13250 #ifdef HAVE_LONG_LONG
13251  } else if (sizeof(Py_intptr_t) <= sizeof(unsigned PY_LONG_LONG)) {
13252  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
13253 #endif
13254  }
13255  } else {
13256  if (sizeof(Py_intptr_t) <= sizeof(long)) {
13257  return PyInt_FromLong((long) value);
13258 #ifdef HAVE_LONG_LONG
13259  } else if (sizeof(Py_intptr_t) <= sizeof(PY_LONG_LONG)) {
13260  return PyLong_FromLongLong((PY_LONG_LONG) value);
13261 #endif
13262  }
13263  }
13264  {
13265  int one = 1; int little = (int)*(unsigned char *)&one;
13266  unsigned char *bytes = (unsigned char *)&value;
13267  return _PyLong_FromByteArray(bytes, sizeof(Py_intptr_t),
13268  little, !is_unsigned);
13269  }
13270 }
13271 
13272 /* CIntFromPy */
13273 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
13274 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13275 #pragma GCC diagnostic push
13276 #pragma GCC diagnostic ignored "-Wconversion"
13277 #endif
13278  const int neg_one = (int) -1, const_zero = (int) 0;
13279 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13280 #pragma GCC diagnostic pop
13281 #endif
13282  const int is_unsigned = neg_one > const_zero;
13283 #if PY_MAJOR_VERSION < 3
13284  if (likely(PyInt_Check(x))) {
13285  if (sizeof(int) < sizeof(long)) {
13286  __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
13287  } else {
13288  long val = PyInt_AS_LONG(x);
13289  if (is_unsigned && unlikely(val < 0)) {
13290  goto raise_neg_overflow;
13291  }
13292  return (int) val;
13293  }
13294  } else
13295 #endif
13296  if (likely(PyLong_Check(x))) {
13297  if (is_unsigned) {
13298 #if CYTHON_USE_PYLONG_INTERNALS
13299  const digit* digits = ((PyLongObject*)x)->ob_digit;
13300  switch (Py_SIZE(x)) {
13301  case 0: return (int) 0;
13302  case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
13303  case 2:
13304  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
13305  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
13306  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13307  } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
13308  return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
13309  }
13310  }
13311  break;
13312  case 3:
13313  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
13314  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
13315  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13316  } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
13317  return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
13318  }
13319  }
13320  break;
13321  case 4:
13322  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
13323  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
13324  __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])))
13325  } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
13326  return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
13327  }
13328  }
13329  break;
13330  }
13331 #endif
13332 #if CYTHON_COMPILING_IN_CPYTHON
13333  if (unlikely(Py_SIZE(x) < 0)) {
13334  goto raise_neg_overflow;
13335  }
13336 #else
13337  {
13338  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
13339  if (unlikely(result < 0))
13340  return (int) -1;
13341  if (unlikely(result == 1))
13342  goto raise_neg_overflow;
13343  }
13344 #endif
13345  if (sizeof(int) <= sizeof(unsigned long)) {
13346  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
13347 #ifdef HAVE_LONG_LONG
13348  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
13349  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
13350 #endif
13351  }
13352  } else {
13353 #if CYTHON_USE_PYLONG_INTERNALS
13354  const digit* digits = ((PyLongObject*)x)->ob_digit;
13355  switch (Py_SIZE(x)) {
13356  case 0: return (int) 0;
13357  case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
13358  case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
13359  case -2:
13360  if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
13361  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
13362  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13363  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
13364  return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
13365  }
13366  }
13367  break;
13368  case 2:
13369  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
13370  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
13371  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13372  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
13373  return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
13374  }
13375  }
13376  break;
13377  case -3:
13378  if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
13379  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
13380  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13381  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
13382  return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
13383  }
13384  }
13385  break;
13386  case 3:
13387  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
13388  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
13389  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13390  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
13391  return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
13392  }
13393  }
13394  break;
13395  case -4:
13396  if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
13397  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
13398  __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])))
13399  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
13400  return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
13401  }
13402  }
13403  break;
13404  case 4:
13405  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
13406  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
13407  __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])))
13408  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
13409  return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
13410  }
13411  }
13412  break;
13413  }
13414 #endif
13415  if (sizeof(int) <= sizeof(long)) {
13416  __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
13417 #ifdef HAVE_LONG_LONG
13418  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
13419  __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
13420 #endif
13421  }
13422  }
13423  {
13424 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
13425  PyErr_SetString(PyExc_RuntimeError,
13426  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
13427 #else
13428  int val;
13429  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
13430  #if PY_MAJOR_VERSION < 3
13431  if (likely(v) && !PyLong_Check(v)) {
13432  PyObject *tmp = v;
13433  v = PyNumber_Long(tmp);
13434  Py_DECREF(tmp);
13435  }
13436  #endif
13437  if (likely(v)) {
13438  int one = 1; int is_little = (int)*(unsigned char *)&one;
13439  unsigned char *bytes = (unsigned char *)&val;
13440  int ret = _PyLong_AsByteArray((PyLongObject *)v,
13441  bytes, sizeof(val),
13442  is_little, !is_unsigned);
13443  Py_DECREF(v);
13444  if (likely(!ret))
13445  return val;
13446  }
13447 #endif
13448  return (int) -1;
13449  }
13450  } else {
13451  int val;
13452  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
13453  if (!tmp) return (int) -1;
13454  val = __Pyx_PyInt_As_int(tmp);
13455  Py_DECREF(tmp);
13456  return val;
13457  }
13458 raise_overflow:
13459  PyErr_SetString(PyExc_OverflowError,
13460  "value too large to convert to int");
13461  return (int) -1;
13462 raise_neg_overflow:
13463  PyErr_SetString(PyExc_OverflowError,
13464  "can't convert negative value to int");
13465  return (int) -1;
13466 }
13467 
13468 /* CIntToPy */
13469 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
13470 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13471 #pragma GCC diagnostic push
13472 #pragma GCC diagnostic ignored "-Wconversion"
13473 #endif
13474  const int neg_one = (int) -1, const_zero = (int) 0;
13475 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13476 #pragma GCC diagnostic pop
13477 #endif
13478  const int is_unsigned = neg_one > const_zero;
13479  if (is_unsigned) {
13480  if (sizeof(int) < sizeof(long)) {
13481  return PyInt_FromLong((long) value);
13482  } else if (sizeof(int) <= sizeof(unsigned long)) {
13483  return PyLong_FromUnsignedLong((unsigned long) value);
13484 #ifdef HAVE_LONG_LONG
13485  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
13486  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
13487 #endif
13488  }
13489  } else {
13490  if (sizeof(int) <= sizeof(long)) {
13491  return PyInt_FromLong((long) value);
13492 #ifdef HAVE_LONG_LONG
13493  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
13494  return PyLong_FromLongLong((PY_LONG_LONG) value);
13495 #endif
13496  }
13497  }
13498  {
13499  int one = 1; int little = (int)*(unsigned char *)&one;
13500  unsigned char *bytes = (unsigned char *)&value;
13501  return _PyLong_FromByteArray(bytes, sizeof(int),
13502  little, !is_unsigned);
13503  }
13504 }
13505 
13506 /* CIntToPy */
13507 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
13508 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13509 #pragma GCC diagnostic push
13510 #pragma GCC diagnostic ignored "-Wconversion"
13511 #endif
13512  const long neg_one = (long) -1, const_zero = (long) 0;
13513 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13514 #pragma GCC diagnostic pop
13515 #endif
13516  const int is_unsigned = neg_one > const_zero;
13517  if (is_unsigned) {
13518  if (sizeof(long) < sizeof(long)) {
13519  return PyInt_FromLong((long) value);
13520  } else if (sizeof(long) <= sizeof(unsigned long)) {
13521  return PyLong_FromUnsignedLong((unsigned long) value);
13522 #ifdef HAVE_LONG_LONG
13523  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
13524  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
13525 #endif
13526  }
13527  } else {
13528  if (sizeof(long) <= sizeof(long)) {
13529  return PyInt_FromLong((long) value);
13530 #ifdef HAVE_LONG_LONG
13531  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
13532  return PyLong_FromLongLong((PY_LONG_LONG) value);
13533 #endif
13534  }
13535  }
13536  {
13537  int one = 1; int little = (int)*(unsigned char *)&one;
13538  unsigned char *bytes = (unsigned char *)&value;
13539  return _PyLong_FromByteArray(bytes, sizeof(long),
13540  little, !is_unsigned);
13541  }
13542 }
13543 
13544 /* CIntFromPy */
13545 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
13546 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13547 #pragma GCC diagnostic push
13548 #pragma GCC diagnostic ignored "-Wconversion"
13549 #endif
13550  const long neg_one = (long) -1, const_zero = (long) 0;
13551 #ifdef __Pyx_HAS_GCC_DIAGNOSTIC
13552 #pragma GCC diagnostic pop
13553 #endif
13554  const int is_unsigned = neg_one > const_zero;
13555 #if PY_MAJOR_VERSION < 3
13556  if (likely(PyInt_Check(x))) {
13557  if (sizeof(long) < sizeof(long)) {
13558  __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
13559  } else {
13560  long val = PyInt_AS_LONG(x);
13561  if (is_unsigned && unlikely(val < 0)) {
13562  goto raise_neg_overflow;
13563  }
13564  return (long) val;
13565  }
13566  } else
13567 #endif
13568  if (likely(PyLong_Check(x))) {
13569  if (is_unsigned) {
13570 #if CYTHON_USE_PYLONG_INTERNALS
13571  const digit* digits = ((PyLongObject*)x)->ob_digit;
13572  switch (Py_SIZE(x)) {
13573  case 0: return (long) 0;
13574  case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
13575  case 2:
13576  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
13577  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
13578  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13579  } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
13580  return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
13581  }
13582  }
13583  break;
13584  case 3:
13585  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
13586  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
13587  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13588  } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
13589  return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
13590  }
13591  }
13592  break;
13593  case 4:
13594  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
13595  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
13596  __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])))
13597  } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
13598  return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
13599  }
13600  }
13601  break;
13602  }
13603 #endif
13604 #if CYTHON_COMPILING_IN_CPYTHON
13605  if (unlikely(Py_SIZE(x) < 0)) {
13606  goto raise_neg_overflow;
13607  }
13608 #else
13609  {
13610  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
13611  if (unlikely(result < 0))
13612  return (long) -1;
13613  if (unlikely(result == 1))
13614  goto raise_neg_overflow;
13615  }
13616 #endif
13617  if (sizeof(long) <= sizeof(unsigned long)) {
13618  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
13619 #ifdef HAVE_LONG_LONG
13620  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
13621  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
13622 #endif
13623  }
13624  } else {
13625 #if CYTHON_USE_PYLONG_INTERNALS
13626  const digit* digits = ((PyLongObject*)x)->ob_digit;
13627  switch (Py_SIZE(x)) {
13628  case 0: return (long) 0;
13629  case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
13630  case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
13631  case -2:
13632  if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
13633  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
13634  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13635  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
13636  return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
13637  }
13638  }
13639  break;
13640  case 2:
13641  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
13642  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
13643  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13644  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
13645  return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
13646  }
13647  }
13648  break;
13649  case -3:
13650  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
13651  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
13652  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13653  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
13654  return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
13655  }
13656  }
13657  break;
13658  case 3:
13659  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
13660  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
13661  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
13662  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
13663  return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
13664  }
13665  }
13666  break;
13667  case -4:
13668  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
13669  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
13670  __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])))
13671  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
13672  return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
13673  }
13674  }
13675  break;
13676  case 4:
13677  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
13678  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
13679  __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])))
13680  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
13681  return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
13682  }
13683  }
13684  break;
13685  }
13686 #endif
13687  if (sizeof(long) <= sizeof(long)) {
13688  __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
13689 #ifdef HAVE_LONG_LONG
13690  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
13691  __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
13692 #endif
13693  }
13694  }
13695  {
13696 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
13697  PyErr_SetString(PyExc_RuntimeError,
13698  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
13699 #else
13700  long val;
13701  PyObject *v = __Pyx_PyNumber_IntOrLong(x);
13702  #if PY_MAJOR_VERSION < 3
13703  if (likely(v) && !PyLong_Check(v)) {
13704  PyObject *tmp = v;
13705  v = PyNumber_Long(tmp);
13706  Py_DECREF(tmp);
13707  }
13708  #endif
13709  if (likely(v)) {
13710  int one = 1; int is_little = (int)*(unsigned char *)&one;
13711  unsigned char *bytes = (unsigned char *)&val;
13712  int ret = _PyLong_AsByteArray((PyLongObject *)v,
13713  bytes, sizeof(val),
13714  is_little, !is_unsigned);
13715  Py_DECREF(v);
13716  if (likely(!ret))
13717  return val;
13718  }
13719 #endif
13720  return (long) -1;
13721  }
13722  } else {
13723  long val;
13724  PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
13725  if (!tmp) return (long) -1;
13726  val = __Pyx_PyInt_As_long(tmp);
13727  Py_DECREF(tmp);
13728  return val;
13729  }
13730 raise_overflow:
13731  PyErr_SetString(PyExc_OverflowError,
13732  "value too large to convert to long");
13733  return (long) -1;
13734 raise_neg_overflow:
13735  PyErr_SetString(PyExc_OverflowError,
13736  "can't convert negative value to long");
13737  return (long) -1;
13738 }
13739 
13740 /* FastTypeChecks */
13741 #if CYTHON_COMPILING_IN_CPYTHON
13742 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
13743  while (a) {
13744  a = a->tp_base;
13745  if (a == b)
13746  return 1;
13747  }
13748  return b == &PyBaseObject_Type;
13749 }
13750 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
13751  PyObject *mro;
13752  if (a == b) return 1;
13753  mro = a->tp_mro;
13754  if (likely(mro)) {
13755  Py_ssize_t i, n;
13756  n = PyTuple_GET_SIZE(mro);
13757  for (i = 0; i < n; i++) {
13758  if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
13759  return 1;
13760  }
13761  return 0;
13762  }
13763  return __Pyx_InBases(a, b);
13764 }
13765 #if PY_MAJOR_VERSION == 2
13766 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
13767  PyObject *exception, *value, *tb;
13768  int res;
13769  __Pyx_PyThreadState_declare
13770  __Pyx_PyThreadState_assign
13771  __Pyx_ErrFetch(&exception, &value, &tb);
13772  res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
13773  if (unlikely(res == -1)) {
13774  PyErr_WriteUnraisable(err);
13775  res = 0;
13776  }
13777  if (!res) {
13778  res = PyObject_IsSubclass(err, exc_type2);
13779  if (unlikely(res == -1)) {
13780  PyErr_WriteUnraisable(err);
13781  res = 0;
13782  }
13783  }
13784  __Pyx_ErrRestore(exception, value, tb);
13785  return res;
13786 }
13787 #else
13788 static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
13789  int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
13790  if (!res) {
13791  res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
13792  }
13793  return res;
13794 }
13795 #endif
13796 static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
13797  Py_ssize_t i, n;
13798  assert(PyExceptionClass_Check(exc_type));
13799  n = PyTuple_GET_SIZE(tuple);
13800 #if PY_MAJOR_VERSION >= 3
13801  for (i=0; i<n; i++) {
13802  if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
13803  }
13804 #endif
13805  for (i=0; i<n; i++) {
13806  PyObject *t = PyTuple_GET_ITEM(tuple, i);
13807  #if PY_MAJOR_VERSION < 3
13808  if (likely(exc_type == t)) return 1;
13809  #endif
13810  if (likely(PyExceptionClass_Check(t))) {
13811  if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
13812  } else {
13813  }
13814  }
13815  return 0;
13816 }
13817 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
13818  if (likely(err == exc_type)) return 1;
13819  if (likely(PyExceptionClass_Check(err))) {
13820  if (likely(PyExceptionClass_Check(exc_type))) {
13821  return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
13822  } else if (likely(PyTuple_Check(exc_type))) {
13823  return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
13824  } else {
13825  }
13826  }
13827  return PyErr_GivenExceptionMatches(err, exc_type);
13828 }
13829 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
13830  assert(PyExceptionClass_Check(exc_type1));
13831  assert(PyExceptionClass_Check(exc_type2));
13832  if (likely(err == exc_type1 || err == exc_type2)) return 1;
13833  if (likely(PyExceptionClass_Check(err))) {
13834  return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
13835  }
13836  return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
13837 }
13838 #endif
13839 
13840 /* CheckBinaryVersion */
13841 static int __Pyx_check_binary_version(void) {
13842  char ctversion[5];
13843  int same=1, i, found_dot;
13844  const char* rt_from_call = Py_GetVersion();
13845  PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
13846  found_dot = 0;
13847  for (i = 0; i < 4; i++) {
13848  if (!ctversion[i]) {
13849  same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
13850  break;
13851  }
13852  if (rt_from_call[i] != ctversion[i]) {
13853  same = 0;
13854  break;
13855  }
13856  }
13857  if (!same) {
13858  char rtversion[5] = {'\0'};
13859  char message[200];
13860  for (i=0; i<4; ++i) {
13861  if (rt_from_call[i] == '.') {
13862  if (found_dot) break;
13863  found_dot = 1;
13864  } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
13865  break;
13866  }
13867  rtversion[i] = rt_from_call[i];
13868  }
13869  PyOS_snprintf(message, sizeof(message),
13870  "compiletime version %s of module '%.100s' "
13871  "does not match runtime version %s",
13872  ctversion, __Pyx_MODULE_NAME, rtversion);
13873  return PyErr_WarnEx(NULL, message, 1);
13874  }
13875  return 0;
13876 }
13877 
13878 /* InitStrings */
13879 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
13880  while (t->p) {
13881  #if PY_MAJOR_VERSION < 3
13882  if (t->is_unicode) {
13883  *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
13884  } else if (t->intern) {
13885  *t->p = PyString_InternFromString(t->s);
13886  } else {
13887  *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
13888  }
13889  #else
13890  if (t->is_unicode | t->is_str) {
13891  if (t->intern) {
13892  *t->p = PyUnicode_InternFromString(t->s);
13893  } else if (t->encoding) {
13894  *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
13895  } else {
13896  *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
13897  }
13898  } else {
13899  *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
13900  }
13901  #endif
13902  if (!*t->p)
13903  return -1;
13904  if (PyObject_Hash(*t->p) == -1)
13905  return -1;
13906  ++t;
13907  }
13908  return 0;
13909 }
13910 
13911 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
13912  return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
13913 }
13914 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
13915  Py_ssize_t ignore;
13916  return __Pyx_PyObject_AsStringAndSize(o, &ignore);
13917 }
13918 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
13919 #if !CYTHON_PEP393_ENABLED
13920 static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
13921  char* defenc_c;
13922  PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
13923  if (!defenc) return NULL;
13924  defenc_c = PyBytes_AS_STRING(defenc);
13925 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
13926  {
13927  char* end = defenc_c + PyBytes_GET_SIZE(defenc);
13928  char* c;
13929  for (c = defenc_c; c < end; c++) {
13930  if ((unsigned char) (*c) >= 128) {
13931  PyUnicode_AsASCIIString(o);
13932  return NULL;
13933  }
13934  }
13935  }
13936 #endif
13937  *length = PyBytes_GET_SIZE(defenc);
13938  return defenc_c;
13939 }
13940 #else
13941 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
13942  if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
13943 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
13944  if (likely(PyUnicode_IS_ASCII(o))) {
13945  *length = PyUnicode_GET_LENGTH(o);
13946  return PyUnicode_AsUTF8(o);
13947  } else {
13948  PyUnicode_AsASCIIString(o);
13949  return NULL;
13950  }
13951 #else
13952  return PyUnicode_AsUTF8AndSize(o, length);
13953 #endif
13954 }
13955 #endif
13956 #endif
13957 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
13958 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
13959  if (
13960 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
13961  __Pyx_sys_getdefaultencoding_not_ascii &&
13962 #endif
13963  PyUnicode_Check(o)) {
13964  return __Pyx_PyUnicode_AsStringAndSize(o, length);
13965  } else
13966 #endif
13967 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
13968  if (PyByteArray_Check(o)) {
13969  *length = PyByteArray_GET_SIZE(o);
13970  return PyByteArray_AS_STRING(o);
13971  } else
13972 #endif
13973  {
13974  char* result;
13975  int r = PyBytes_AsStringAndSize(o, &result, length);
13976  if (unlikely(r < 0)) {
13977  return NULL;
13978  } else {
13979  return result;
13980  }
13981  }
13982 }
13983 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
13984  int is_true = x == Py_True;
13985  if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
13986  else return PyObject_IsTrue(x);
13987 }
13988 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
13989  int retval;
13990  if (unlikely(!x)) return -1;
13991  retval = __Pyx_PyObject_IsTrue(x);
13992  Py_DECREF(x);
13993  return retval;
13994 }
13995 static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
13996 #if PY_MAJOR_VERSION >= 3
13997  if (PyLong_Check(result)) {
13998  if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
13999  "__int__ returned non-int (type %.200s). "
14000  "The ability to return an instance of a strict subclass of int "
14001  "is deprecated, and may be removed in a future version of Python.",
14002  Py_TYPE(result)->tp_name)) {
14003  Py_DECREF(result);
14004  return NULL;
14005  }
14006  return result;
14007  }
14008 #endif
14009  PyErr_Format(PyExc_TypeError,
14010  "__%.4s__ returned non-%.4s (type %.200s)",
14011  type_name, type_name, Py_TYPE(result)->tp_name);
14012  Py_DECREF(result);
14013  return NULL;
14014 }
14015 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
14016 #if CYTHON_USE_TYPE_SLOTS
14017  PyNumberMethods *m;
14018 #endif
14019  const char *name = NULL;
14020  PyObject *res = NULL;
14021 #if PY_MAJOR_VERSION < 3
14022  if (likely(PyInt_Check(x) || PyLong_Check(x)))
14023 #else
14024  if (likely(PyLong_Check(x)))
14025 #endif
14026  return __Pyx_NewRef(x);
14027 #if CYTHON_USE_TYPE_SLOTS
14028  m = Py_TYPE(x)->tp_as_number;
14029  #if PY_MAJOR_VERSION < 3
14030  if (m && m->nb_int) {
14031  name = "int";
14032  res = m->nb_int(x);
14033  }
14034  else if (m && m->nb_long) {
14035  name = "long";
14036  res = m->nb_long(x);
14037  }
14038  #else
14039  if (likely(m && m->nb_int)) {
14040  name = "int";
14041  res = m->nb_int(x);
14042  }
14043  #endif
14044 #else
14045  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
14046  res = PyNumber_Int(x);
14047  }
14048 #endif
14049  if (likely(res)) {
14050 #if PY_MAJOR_VERSION < 3
14051  if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
14052 #else
14053  if (unlikely(!PyLong_CheckExact(res))) {
14054 #endif
14055  return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
14056  }
14057  }
14058  else if (!PyErr_Occurred()) {
14059  PyErr_SetString(PyExc_TypeError,
14060  "an integer is required");
14061  }
14062  return res;
14063 }
14064 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
14065  Py_ssize_t ival;
14066  PyObject *x;
14067 #if PY_MAJOR_VERSION < 3
14068  if (likely(PyInt_CheckExact(b))) {
14069  if (sizeof(Py_ssize_t) >= sizeof(long))
14070  return PyInt_AS_LONG(b);
14071  else
14072  return PyInt_AsSsize_t(b);
14073  }
14074 #endif
14075  if (likely(PyLong_CheckExact(b))) {
14076  #if CYTHON_USE_PYLONG_INTERNALS
14077  const digit* digits = ((PyLongObject*)b)->ob_digit;
14078  const Py_ssize_t size = Py_SIZE(b);
14079  if (likely(__Pyx_sst_abs(size) <= 1)) {
14080  ival = likely(size) ? digits[0] : 0;
14081  if (size == -1) ival = -ival;
14082  return ival;
14083  } else {
14084  switch (size) {
14085  case 2:
14086  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
14087  return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
14088  }
14089  break;
14090  case -2:
14091  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
14092  return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
14093  }
14094  break;
14095  case 3:
14096  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
14097  return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
14098  }
14099  break;
14100  case -3:
14101  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
14102  return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
14103  }
14104  break;
14105  case 4:
14106  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
14107  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]));
14108  }
14109  break;
14110  case -4:
14111  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
14112  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]));
14113  }
14114  break;
14115  }
14116  }
14117  #endif
14118  return PyLong_AsSsize_t(b);
14119  }
14120  x = PyNumber_Index(b);
14121  if (!x) return -1;
14122  ival = PyInt_AsSsize_t(x);
14123  Py_DECREF(x);
14124  return ival;
14125 }
14126 static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
14127  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
14128  return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
14129 #if PY_MAJOR_VERSION < 3
14130  } else if (likely(PyInt_CheckExact(o))) {
14131  return PyInt_AS_LONG(o);
14132 #endif
14133  } else {
14134  Py_ssize_t ival;
14135  PyObject *x;
14136  x = PyNumber_Index(o);
14137  if (!x) return -1;
14138  ival = PyInt_AsLong(x);
14139  Py_DECREF(x);
14140  return ival;
14141  }
14142 }
14143 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
14144  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
14145 }
14146 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
14147  return PyInt_FromSize_t(ival);
14148 }
14149 
14150 
14151 #endif /* Py_PYTHON_H */
LinearADR_Sine_diffusiveVelocity
int LinearADR_Sine_diffusiveVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (diffusive velocity)
Definition: analyticalSolutions.c:802
STflowSphere_Vy
int STflowSphere_Vy(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
Definition: analyticalSolutions.c:1992
diffusionSin1D_r
int diffusionSin1D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 1D diffusion (reaction)
Definition: analyticalSolutions.c:172
poissonsEquationExp3D
int poissonsEquationExp3D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 3D.
Definition: analyticalSolutions.c:1690
LinearADR_Sine_dr
int LinearADR_Sine_dr(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *dr)
Linear Avection Diffusion Reaction Sine function (dr)
Definition: analyticalSolutions.c:851
PoiseuillePipeFlow_P
int PoiseuillePipeFlow_P(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow through a circular pipe.
Definition: analyticalSolutions.c:1554
NonlinearADR_Decay_DiracIC_dr
int NonlinearADR_Decay_DiracIC_dr(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *dr)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition (dr)
Definition: analyticalSolutions.c:1216
poissonsEquationExp2D
int poissonsEquationExp2D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 2D.
Definition: analyticalSolutions.c:1659
f
Double f
Definition: Headers.h:64
LinearAD_DiracIC_advectiveVelocity
int LinearAD_DiracIC_advectiveVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(advective velocity)
Definition: analyticalSolutions.c:337
poissonsEquationExp1D_r
int poissonsEquationExp1D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 1D (reaction)
Definition: analyticalSolutions.c:1754
poissonsEquationExp1D
int poissonsEquationExp1D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 1D.
Definition: analyticalSolutions.c:1620
s
Double s
Definition: Headers.h:84
NonlinearDAE_f
int NonlinearDAE_f(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Nonlinear Differential-algebraic equations.
Definition: analyticalSolutions.c:1330
NonlinearDAE
int NonlinearDAE(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Nonlinear Differential-algebraic equations.
Definition: analyticalSolutions.c:1287
PoiseuillePipeFlow
int PoiseuillePipeFlow(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow through a circular pipe.
Definition: analyticalSolutions.c:1466
n
Int n
Definition: Headers.h:28
diffusionSin2D
int diffusionSin2D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 2D diffusion.
Definition: analyticalSolutions.c:111
diffusionSin3D
int diffusionSin3D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 3D diffusion.
Definition: analyticalSolutions.c:141
LinearAD_SteadyState
int LinearAD_SteadyState(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Linear Advection-Diffusion Steady State.
Definition: analyticalSolutions.c:508
v
Double v
Definition: Headers.h:95
NonlinearADR_Decay_DiracIC_r
int NonlinearADR_Decay_DiracIC_r(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *r)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition (reaction)
Definition: analyticalSolutions.c:1257
STflowSphere_Vx
int STflowSphere_Vx(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
Definition: analyticalSolutions.c:1929
poissonsEquationExp3D_dr
int poissonsEquationExp3D_dr(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *dr)
Poisson Exponential Equation 3D (dr)
Definition: analyticalSolutions.c:1724
LinearADR_Sine_du
int LinearADR_Sine_du(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (du)
Definition: analyticalSolutions.c:890
T
Double T
Definition: Headers.h:87
poissonsEquationExp3D_r
int poissonsEquationExp3D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 3D (reaction)
Definition: analyticalSolutions.c:1822
z
Double * z
Definition: Headers.h:49
u
Double u
Definition: Headers.h:89
c
Double c
Definition: Headers.h:54
LinearADR_Sine_advectiveVelocity
int LinearADR_Sine_advectiveVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (advective velocity)
Definition: analyticalSolutions.c:749
diffusionSin2D_r
int diffusionSin2D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 2D diffusion (reaction)
Definition: analyticalSolutions.c:200
poissonsEquationExp2D_r
int poissonsEquationExp2D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 2D (reaction)
Definition: analyticalSolutions.c:1787
NonlinearADR_Decay_DiracIC
int NonlinearADR_Decay_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition.
Definition: analyticalSolutions.c:1164
PlaneCouetteFlow_u
int PlaneCouetteFlow_u(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Couette Flow between two parallel plates. One moving relative to the other with constant seperation (...
Definition: analyticalSolutions.c:36
LinearADR_Decay_DiracIC
int LinearADR_Decay_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition.
Definition: analyticalSolutions.c:566
STflowSphere_Vz
int STflowSphere_Vz(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
Definition: analyticalSolutions.c:2055
LinearAD_DiracIC_totalVelocity
int LinearAD_DiracIC_totalVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(total velocity)
Definition: analyticalSolutions.c:471
LinearADR_Decay_DiracIC_r
int LinearADR_Decay_DiracIC_r(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *r)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition (reaction)
Definition: analyticalSolutions.c:652
LinearADR_Sine_totalVelocity
int LinearADR_Sine_totalVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (total velocity)
Definition: analyticalSolutions.c:997
LinearADR_Sine_r
int LinearADR_Sine_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Linear Avection Diffusion Reaction Sine function (reaction)
Definition: analyticalSolutions.c:938
LinearAD_DiracIC_du
int LinearAD_DiracIC_du(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition (du)
Definition: analyticalSolutions.c:423
LinearADR_Sine
int LinearADR_Sine(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Linear Avection Diffusion Reaction Sine function.
Definition: analyticalSolutions.c:691
LinearAD_DiracIC
int LinearAD_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Linear Advective Diffusion Dirac Initial Condition.
Definition: analyticalSolutions.c:273
LinearAD_DiracIC_diffusiveVelocity
int LinearAD_DiracIC_diffusiveVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(diffusive velocity)
Definition: analyticalSolutions.c:381
PlanePoiseuilleFlow_u
int PlanePoiseuilleFlow_u(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow between two parallel fixed plates with constant seperation (width).
Definition: analyticalSolutions.c:1380
r
Double r
Definition: Headers.h:83
NonlinearAD_SteadyState
int NonlinearAD_SteadyState(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Nonlinear Advection-Diffusion Steady State.
Definition: analyticalSolutions.c:1036
analyticalSolutions.h
LinearADR_Decay_DiracIC_dr
int LinearADR_Decay_DiracIC_dr(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *dr)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition (dr)
Definition: analyticalSolutions.c:613
pos
double pos(double a)
Definition: testFMMandFSW.cpp:8
STflowSphere_P
int STflowSphere_P(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
Definition: analyticalSolutions.c:1864
diffusionSin3D_r
int diffusionSin3D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 3D diffusion (reaction)
Definition: analyticalSolutions.c:231
diffusionSin1D
int diffusionSin1D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 1D diffusion.
Definition: analyticalSolutions.c:84