.. pygslodeiv2 documentation master file, created by
   sphinx-quickstart on Sun Apr  3 01:12:16 2016.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to pygslodeiv2's documentation!
=======================================

Contents:

.. toctree::
   :maxdepth: 4

   pygslodeiv2


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

Overview
========

.. image:: http://hera.physchem.kth.se:9090/api/badges/bjodah/pygslodeiv2/status.svg
   :target: http://hera.physchem.kth.se:9090/bjodah/pygslodeiv2
   :alt: Build status
.. image:: https://img.shields.io/pypi/v/pygslodeiv2.svg
   :target: https://pypi.python.org/pypi/pygslodeiv2
   :alt: PyPI version
.. image:: https://img.shields.io/badge/python-2.7,3.4,3.5-blue.svg
   :target: https://www.python.org/
   :alt: Python version
.. image:: https://img.shields.io/pypi/l/pygslodeiv2.svg
   :target: https://github.com/bjodah/pygslodeiv2/blob/master/LICENSE
   :alt: License
.. image:: http://hera.physchem.kth.se/~pygslodeiv2/branches/master/htmlcov/coverage.svg
   :target: http://hera.physchem.kth.se/~pygslodeiv2/branches/master/htmlcov
   :alt: coverage


`pygslodeiv2 <https://github.com/bjodah/pygslodeiv2>`_ provides a
`Python <http://www.python.org>`_ binding to the
`Ordinary Differential Equation <https://en.wikipedia.org/wiki/Ordinary_differential_equation>`_
integration routines exposed by the `odeiv2 interface <https://www.gnu.org/software/gsl/manual/html_node/Ordinary-Differential-Equations.html>`_ of
`GSL - GNU Scientific Library <http://www.gnu.org/software/gsl/>`_.
The odeiv2 interface allows a user to numerically integrate (systems of) differential equations.

The following `stepping functions <https://www.gnu.org/software/gsl/manual/html_node/Stepping-Functions.html>`_ are available:

- rk2
- rk4
- rkf45
- rkck
- rk8pd
- rk1imp
- rk2imp
- rk4imp
- bsimp
- msadams
- msbdf

Note that all implicit steppers (those ending with "imp") and msbdf require a user supplied
callback for calculating the jacobian.

Documentation
-------------
Autogenerated API documentation for latest stable release is found here:
`<https://pythonhosted.org/pygslodeiv2>`_
(and development docs for the current master branch are found here:
`<http://hera.physchem.kth.se/~pygslodeiv2/branches/master/html>`_).

Installation
------------
Simplest way to install is to use the `conda package manager <http://conda.pydata.org/docs/>`_:

::

   $ conda install -c bjodah pygslodeiv2 pytest
   $ python -m pytest --pyargs pygslodeiv2

tests should pass.

Binary distribution is available here:
`<https://anaconda.org/bjodah/pygslodeiv2>`_, conda recipes for stable releases are available here: 
`<http://hera.physchem.kth.se/~pygslodeiv2/conda-recipes>`_.

Source distribution is available here (requires GSL v1.16 or v2.1 shared lib with headers):
`<https://pypi.python.org/pypi/pygslodeiv2>`_ (with mirrored files kept here:
`<http://hera.physchem.kth.se/~pygslodeiv2/releases>`_)

Examples
--------
The classic van der Pol oscillator (see `examples/van_der_pol.py <examples/van_der_pol.py>`_)

.. code:: python

   >>> import numpy as np
   >>> from pygslodeiv2 import integrate_predefined  # also: integrate_adaptive
   >>> mu = 1.0
   >>> def f(t, y, dydt):
   ...     dydt[0] = y[1]
   ...     dydt[1] = -y[0] + mu*y[1]*(1 - y[0]**2)
   ... 
   >>> def j(t, y, Jmat, dfdt):
   ...     Jmat[0, 0] = 0
   ...     Jmat[0, 1] = 1
   ...     Jmat[1, 0] = -1 -mu*2*y[1]*y[0]
   ...     Jmat[1, 1] = mu*(1 - y[0]**2)
   ...     dfdt[0] = 0
   ...     dfdt[1] = 0
   ...
   >>> y0 = [1, 0]; dt0=1e-8; t0=0.0; atol=1e-8; rtol=1e-8
   >>> tout = np.linspace(0, 10.0, 200)
   >>> yout, info = integrate_predefined(f, j, y0, tout, dt0, atol, rtol,
   ...                                   method='bsimp')  # Implicit Bulirsch-Stoer
   >>> import matplotlib.pyplot as plt
   >>> series = plt.plot(tout, yout)
   >>> plt.show()  # doctest: +SKIP


.. image:: https://raw.githubusercontent.com/bjodah/pygslodeiv2/master/examples/van_der_pol.png

For more examples see `examples/ <https://github.com/bjodah/pygslodeiv2/tree/master/examples>`_, and rendered jupyter notebooks here:
`<http://hera.physchem.kth.se/~pygslodeiv2/branches/master/examples>`_


License
-------
The source code is Open Source and is released under GNU GPL v3. See `LICENSE <LICENSE>`_ for further details.
Contributors are welcome to suggest improvements at https://github.com/bjodah/pygslodeiv2

Author
------
Björn I. Dahlgren, contact:

- gmail address: bjodah
- kth.se address: bda