summarylogtreecommitdiffstats
path: root/r836.patch
blob: b3cc0a96ba5d0fd498aeb31ce1ced177e1e5cb41 (plain)
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