Mercurial > octave
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