Summer of Code - Getting Started: Difference between revisions

Line 55: Line 55:
== ode15{i,s} : Matlab Compatible DAE solvers ==
== ode15{i,s} : Matlab Compatible DAE solvers ==


An initial implementation of a Matlab compatible ode15{i,s} solver,
An initial implementation of Matlab compatible Differential Algebraic Equations (DAE) solvers, {{manual|ode15i}} and {{manual|ode15s}}, based on [https://computing.llnl.gov/projects/sundials SUNDIALS],  
based on [http://computation.llnl.gov/projects/sundials SUNDIALS],  
was done by [https://gsoc2016ode15s.blogspot.com/ Francesco Faccio during GSoC 2016]. The code is maintained in the main Octave repository and consists mainly of the following three files: [https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc {{path|libinterp/dldfcn/__ode15__.cc}}], [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m {{path|scripts/ode/ode15i.m}}] and [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m {{path|scripts/ode/ode15s.m}}].
was done by Francesco Faccio during GSOC 2016.
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].
The resulting code has been pushed into the main Octave repository in the development branch and
consists mainly of the following three files
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc __ode15__.cc],
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m ode15i.m] and
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m ode15s.m].
The list of outstanding tracker tickets concerning this implementation can be found
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]


Possible useful improvements that could be done in a new project include:
The {{manual|decic}} function for selecting consistent initial conditions for ode15i can be made more Matlab compatible by using [https://faculty.smu.edu/shampine/cic.pdf another algorithm].  Another useful extension is to make ode15{i,s} work with datatypes other than double and to improve interpolation at intermediate time steps.


* Implement a better function for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]
* make ode15{i,s} work with datatypes other than double
* improve interpolation at intermediate time steps.
* general code profiling and optimization
Other tasks, not strictly connected to ode15{i,s} but closely related, that could be added
to a possible project plan would be improving documentation and tests in odepkg and removing
overlaps with the documentation in core Octave.
* '''Required skills'''
* '''Required skills'''
: Knowledge of Octave, C/C++; familiarity with numerical methods for DAEs
: Knowledge of Octave, C/C++; familiarity with numerical methods for DAEs