1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
Index: src/lib/sundials_callbacks.pxi
===================================================================
--- assimulo/lib/sundials_callbacks.pxi (revision 835)
+++ assimulo/lib/sundials_callbacks.pxi (revision 836)
@@ -103,7 +103,8 @@
Sparse Jacobian function.
"""
cdef ProblemData pData = <ProblemData>problem_data
- cdef N.ndarray y = nv2arr(yv)
+ #cdef N.ndarray y = nv2arr(yv)
+ cdef N.ndarray y = pData.work_y
cdef int i
cdef int nnz = Jacobian.NNZ
cdef int ret_nnz
@@ -111,7 +112,8 @@
cdef realtype* data = Jacobian.data
cdef int* rowvals = Jacobian.rowvals
cdef int* colptrs = Jacobian.colptrs
-
+
+ nv2arr_inplace(yv, y)
"""
realtype *data;
int *rowvals;
@@ -160,8 +162,11 @@
#cdef ndarray[realtype, ndim=2, mode='c'] jac #Used for return from the user function
cdef realtype* col_i=DENSE_COL(Jacobian,0)
#(<ndarray>pData.y).data = <realtype*>((<N_VectorContent_Serial>yv.content).data)
- cdef N.ndarray y = nv2arr(yv)
+ #cdef N.ndarray y = nv2arr(yv)
+ cdef N.ndarray y = pData.work_y
cdef int i,j
+
+ nv2arr_inplace(yv, y)
if pData.dimSens>0: #Sensitivity activated
p = realtype2arr(pData.p,pData.dimSens)
@@ -358,11 +363,16 @@
cdef N.ndarray[realtype, ndim=1, mode='c'] res #Used for return from the user function
#(<ndarray>pData.y).data = <realtype*>((<N_VectorContent_Serial>yv.content).data)
#(<ndarray>pData.yd).data = <realtype*>((<N_VectorContent_Serial>yvdot.content).data)
- cdef N.ndarray y = nv2arr(yv)
- cdef N.ndarray yd = nv2arr(yvdot)
+ cdef N.ndarray y = pData.work_y
+ cdef N.ndarray yd = pData.work_yd
+ # cdef N.ndarray y = nv2arr(yv)
+ # cdef N.ndarray yd = nv2arr(yvdot)
cdef realtype* resptr=(<N_VectorContent_Serial>residual.content).data
cdef int i
+ nv2arr_inplace(yv, y)
+ nv2arr_inplace(yvdot, yd)
+
if pData.dimSens!=0: #SENSITIVITY
p = realtype2arr(pData.p,pData.dimSens)
try:
@@ -411,10 +421,15 @@
cdef realtype* col_i=DENSE_COL(Jacobian,0)
#(<ndarray>pData.y).data = <realtype*>((<N_VectorContent_Serial>yv.content).data)
#(<ndarray>pData.yd).data = <realtype*>((<N_VectorContent_Serial>yvdot.content).data)
- cdef N.ndarray y = nv2arr(yv)
- cdef N.ndarray yd = nv2arr(yvdot)
+ cdef N.ndarray y = pData.work_y
+ cdef N.ndarray yd = pData.work_yd
+ #cdef N.ndarray y = nv2arr(yv)
+ #cdef N.ndarray yd = nv2arr(yvdot)
cdef int i,j
+ nv2arr_inplace(yv, y)
+ nv2arr_inplace(yvdot, yd)
+
if pData.dimSens!=0: #SENSITIVITY
p = realtype2arr(pData.p,pData.dimSens)
try:
@@ -461,10 +476,15 @@
cdef N.ndarray[realtype, ndim=1, mode='c'] root #Used for return from the user function
#(<ndarray>pData.y).data = <realtype*>((<N_VectorContent_Serial>yv.content).data)
#(<ndarray>pData.yd).data = <realtype*>((<N_VectorContent_Serial>yvdot.content).data)
- cdef N.ndarray y = nv2arr(yv)
- cdef N.ndarray yd = nv2arr(yvdot)
+ cdef N.ndarray y = pData.work_y
+ cdef N.ndarray yd = pData.work_yd
+ #cdef N.ndarray y = nv2arr(yv)
+ #cdef N.ndarray yd = nv2arr(yvdot)
cdef int i
+ nv2arr_inplace(yv, y)
+ nv2arr_inplace(yvdot, yd)
+
try:
if pData.sw != NULL:
root=(<object>pData.ROOT)(t,y,yd,<list>pData.sw) #Call to the Python root function
|