-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #28 from jschueller/sundials5
Sundials 5.x port Also contains lots of updates to line endings, now everything is LF.
- Loading branch information
Showing
76 changed files
with
21,403 additions
and
21,394 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,38 @@ | ||
|
||
|
||
============= | ||
The Museum | ||
============= | ||
|
||
Assimulo includes an ODE solver museum. Integrators written in FORTRAN and C | ||
were developped at least since the mid-sixties. Many of those are hard to access | ||
others are only available as print-outs. | ||
|
||
``The harsch requirement that a useful numerical method must | ||
permit an efficient, robust, and reliable implementation has | ||
withered the beautiful flowers which bloomed on thousands of journal pages.`` [Stetter93]_ | ||
|
||
|
||
Following this motto, the Assimulo Museum aims at showing these flowers at least in an herbarium. | ||
|
||
At the moment the Assimulo Museum includes | ||
|
||
* DASP3 (scan) | ||
* ODASSL | ||
|
||
wrapping is in preperation for | ||
|
||
* METAN1 | ||
* EULEX | ||
* DIFFSUB | ||
* MEXAX | ||
|
||
.. note:: | ||
|
||
Codes marked by (scan) are reconstructed from a scan and an OCR process. They are tested but | ||
still they might include bugs due to the reconstruction process. | ||
|
||
All other codes are original and untouched. | ||
|
||
.. [Stetter93] Hans Stetter In: Mathematics of Computation 1943-1993: A half-century | ||
of computational mathematics: Mathematics of Computations 50th Aniversary Symposium. August 9-13, 1993. Vancouver, Britisch-Columbia, CA.) | ||
|
||
|
||
============= | ||
The Museum | ||
============= | ||
|
||
Assimulo includes an ODE solver museum. Integrators written in FORTRAN and C | ||
were developped at least since the mid-sixties. Many of those are hard to access | ||
others are only available as print-outs. | ||
|
||
``The harsch requirement that a useful numerical method must | ||
permit an efficient, robust, and reliable implementation has | ||
withered the beautiful flowers which bloomed on thousands of journal pages.`` [Stetter93]_ | ||
|
||
|
||
Following this motto, the Assimulo Museum aims at showing these flowers at least in an herbarium. | ||
|
||
At the moment the Assimulo Museum includes | ||
|
||
* DASP3 (scan) | ||
* ODASSL | ||
|
||
wrapping is in preperation for | ||
|
||
* METAN1 | ||
* EULEX | ||
* DIFFSUB | ||
* MEXAX | ||
|
||
.. note:: | ||
|
||
Codes marked by (scan) are reconstructed from a scan and an OCR process. They are tested but | ||
still they might include bugs due to the reconstruction process. | ||
|
||
All other codes are original and untouched. | ||
|
||
.. [Stetter93] Hans Stetter In: Mathematics of Computation 1943-1993: A half-century | ||
of computational mathematics: Mathematics of Computations 50th Aniversary Symposium. August 9-13, 1993. Vancouver, Britisch-Columbia, CA.) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,70 +1,70 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
# Copyright (C) 2010 Modelon AB | ||
# | ||
# This program is free software: you can redistribute it and/or modify | ||
# it under the terms of the GNU Lesser General Public License as published by | ||
# the Free Software Foundation, version 3 of the License. | ||
# | ||
# This program is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU Lesser General Public License for more details. | ||
# | ||
# You should have received a copy of the GNU Lesser General Public License | ||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
import numpy as N | ||
import nose | ||
from assimulo.solvers import CVode | ||
from assimulo.problem import Explicit_Problem | ||
|
||
def run_example(with_plots=True): | ||
""" | ||
The same as example :doc:`EXAMPLE_cvode_basic` but now integrated backwards in time. | ||
on return: | ||
- :dfn:`exp_mod` problem instance | ||
- :dfn:`exp_sim` solver instance | ||
""" | ||
#Define the rhs | ||
def f(t,y): | ||
ydot = -y[0] | ||
return N.array([ydot]) | ||
|
||
#Define an Assimulo problem | ||
exp_mod = Explicit_Problem(f,t0=5, y0=0.02695, name = r'CVode Test Example (reverse time): $\dot y = - y$ ') | ||
|
||
#Define an explicit solver | ||
exp_sim = CVode(exp_mod) #Create a CVode solver | ||
|
||
#Sets the parameters | ||
exp_sim.iter = 'Newton' #Default 'FixedPoint' | ||
exp_sim.discr = 'BDF' #Default 'Adams' | ||
exp_sim.atol = [1e-8] #Default 1e-6 | ||
exp_sim.rtol = 1e-8 #Default 1e-6 | ||
exp_sim.backward = True | ||
|
||
#Simulate | ||
t, y = exp_sim.simulate(0) #Simulate 5 seconds (t0=5 -> tf=0) | ||
|
||
#Plot | ||
if with_plots: | ||
import pylab as P | ||
P.plot(t, y, color="b") | ||
P.title(exp_mod.name) | ||
P.ylabel('y') | ||
P.xlabel('Time') | ||
P.show() | ||
|
||
#Basic test | ||
nose.tools.assert_almost_equal(float(y[-1]), 4.00000000, 3) | ||
|
||
return exp_mod, exp_sim | ||
|
||
if __name__=='__main__': | ||
mod,sim = run_example() | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
# Copyright (C) 2010 Modelon AB | ||
# | ||
# This program is free software: you can redistribute it and/or modify | ||
# it under the terms of the GNU Lesser General Public License as published by | ||
# the Free Software Foundation, version 3 of the License. | ||
# | ||
# This program is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU Lesser General Public License for more details. | ||
# | ||
# You should have received a copy of the GNU Lesser General Public License | ||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
import numpy as N | ||
import nose | ||
from assimulo.solvers import CVode | ||
from assimulo.problem import Explicit_Problem | ||
|
||
def run_example(with_plots=True): | ||
""" | ||
The same as example :doc:`EXAMPLE_cvode_basic` but now integrated backwards in time. | ||
on return: | ||
- :dfn:`exp_mod` problem instance | ||
- :dfn:`exp_sim` solver instance | ||
""" | ||
#Define the rhs | ||
def f(t,y): | ||
ydot = -y[0] | ||
return N.array([ydot]) | ||
|
||
#Define an Assimulo problem | ||
exp_mod = Explicit_Problem(f,t0=5, y0=0.02695, name = r'CVode Test Example (reverse time): $\dot y = - y$ ') | ||
|
||
#Define an explicit solver | ||
exp_sim = CVode(exp_mod) #Create a CVode solver | ||
|
||
#Sets the parameters | ||
exp_sim.iter = 'Newton' #Default 'FixedPoint' | ||
exp_sim.discr = 'BDF' #Default 'Adams' | ||
exp_sim.atol = [1e-8] #Default 1e-6 | ||
exp_sim.rtol = 1e-8 #Default 1e-6 | ||
exp_sim.backward = True | ||
|
||
#Simulate | ||
t, y = exp_sim.simulate(0) #Simulate 5 seconds (t0=5 -> tf=0) | ||
|
||
#Plot | ||
if with_plots: | ||
import pylab as P | ||
P.plot(t, y, color="b") | ||
P.title(exp_mod.name) | ||
P.ylabel('y') | ||
P.xlabel('Time') | ||
P.show() | ||
|
||
#Basic test | ||
nose.tools.assert_almost_equal(float(y[-1]), 4.00000000, 3) | ||
|
||
return exp_mod, exp_sim | ||
|
||
if __name__=='__main__': | ||
mod,sim = run_example() |
Oops, something went wrong.