changeset 22902:284bbb0328f2

Update odei5{i,s} code for Octave 4.3.0+ and Sundials 2.7.0. * libinterp/dldfunctions/__ode15__.cc : Specify CSC format for sparse matrices, use new API function name for clearing sparse matrix. * scripts/ode/ode15{i,s}.m : use correct calling sequence for odemergeoptions.
author Carlo de Falco <carlo.defalco@polimi.it>
date Tue, 01 Nov 2016 06:41:29 +0100
parents 4c56f3ffec04
children 51c9eded34ee
files libinterp/dldfcn/__ode15__.cc scripts/ode/ode15i.m scripts/ode/ode15s.m
diffstat 3 files changed, 24 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/dldfcn/__ode15__.cc	Tue Aug 23 03:19:11 2016 +0200
+++ b/libinterp/dldfcn/__ode15__.cc	Tue Nov 01 06:41:29 2016 +0100
@@ -323,7 +323,7 @@
     if (havejacsparse)
       {
         int flag =
-          IDAKLU (mem, num, num*num);
+          IDAKLU (mem, num, num*num, CSC_MAT);
         if (flag != 0)
           {
             error ("IDAKLU solver not initialized");
@@ -396,15 +396,15 @@
     else
       jac = (*jacspcell) (spdfdy, spdfdyp, cj);
 
-    SlsSetToZero (Jac);
+    SparseSetMatToZero (Jac);
 
     for (int i = 0; i < num + 1; i++)
-      Jac -> colptrs [i] = jac.cidx (i);
+      *(Jac -> colptrs)[i] = jac.cidx(i);
 
     for (int i = 0; i < jac.nnz (); i++)
       {
-        Jac -> rowvals [i] = jac.ridx (i);
-        Jac -> data [i] = jac.data (i);
+        *(Jac -> rowvals)[i] = jac.ridx (i);
+        Jac -> data[i] = jac.data (i);
       }    
 
     END_INTERRUPT_WITH_EXCEPTIONS;
--- a/scripts/ode/ode15i.m	Tue Aug 23 03:19:11 2016 +0200
+++ b/scripts/ode/ode15i.m	Tue Nov 01 06:41:29 2016 +0100
@@ -151,27 +151,24 @@
     endif
   endif
 
-  persistent defaults   = [];
-  persistent classes    = [];
-  persistent attributes = [];
-
-  [defaults, classes, attributes] = odedefaults (n, trange(1),
-                                                 trange(end));
+  [defaults, classes, attributes] = ...
+  odedefaults (n, trange(1), trange(end));
 
-  defaults   = rmfield (defaults,   {"NonNegative", "Mass", ...
-                                     "MStateDependence", "MvPattern", ...
-                                     "MassSingular", "InitialSlope", "BDF"});
-  classes    = rmfield (classes,    {"NonNegative", "Mass", ...
-                                     "MStateDependence", "MvPattern", ...
-                                     "MassSingular", "InitialSlope", "BDF"});
-  attributes = rmfield (attributes, {"NonNegative", "Mass", ...
-                                     "MStateDependence", "MvPattern", ...
-                                     "MassSingular", "InitialSlope", "BDF"});
+  persistent ignorefields = {"NonNegative", "Mass", ...
+                             "MStateDependence", "MvPattern", ...
+                             "MassSingular", "InitialSlope", "BDF"};
+  
+  defaults   = rmfield (defaults, ignorefields);
+  classes    = rmfield (classes, ignorefields);
+  attributes = rmfield (attributes, ignorefields);
 
   classes        = odeset (classes, 'Vectorized', {});
-  attributes     = odeset (attributes, 'Jacobian', {}, 'Vectorized', {});
+  attributes     = ...
+  odeset (attributes, 'Jacobian', {}, 'Vectorized', {});
 
-  options = odemergeopts (options, defaults, classes, attributes, solver);
+  options = ...
+  odemergeopts ("ode15i", options, defaults,
+                classes, attributes, solver);
 
   ## Jacobian
   options.havejac       = false;
--- a/scripts/ode/ode15s.m	Tue Aug 23 03:19:11 2016 +0200
+++ b/scripts/ode/ode15s.m	Tue Nov 01 06:41:29 2016 +0100
@@ -158,17 +158,16 @@
     endif
   endif
 
-  persistent defaults   = [];
-  persistent classes    = [];
-  persistent attributes = [];
 
-  [defaults, classes, attributes] = odedefaults (n, trange(1),
-                                                 trange(end));
+  [defaults, classes, attributes] = ...
+  odedefaults (n, trange(1), trange(end));
 
   classes    = odeset (classes, 'Vectorized', {});
   attributes = odeset (attributes, 'Jacobian', {}, 'Vectorized', {});
 
-  options = odemergeopts (options, defaults, classes, attributes, solver);
+  options = ...
+  odemergeopts ("ode15s", options, defaults,
+                classes, attributes, solver);
 
   ## Mass