This is the mail archive of the gsl-discuss@sourceware.org mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ode-initval implicit solvers and development


Hello,

while waiting for a reference book on multistep methods to arrive, I've made some more modifications to current ode-initval, which I hope are now close to being ready to be included into GSL. The .git directory that should include the changes can be found at

http://iki.fi/tuomo.keskitalo/gsl/ode-initval-additions/.git

The changes to current GSL git repository include:

- New implicit solvers: imprk4 (replaces imprk42 in previous test
package), imprk2 (replaces imprk21 in previous test package) and
impeuler, which use modified Newton iteration to solve the implicit
equations. I decided to dump imprk42 and imprk21 because I was unsure
how to calculate the error estimates for them. I think that these new
implicit methods could be used instead of rk4imp, rk2imp, gear2 and
gear1, which use functional iteration (which is inefficient for stiff
problems.) However, even these new solvers can not be used efficiently
for truly nasty stiff problems, and better solvers are still needed.

- modnewton1.c: a modified Newton solver for solution of non-linear
equations of implicit solvers. Jacobian evaluation has been moved from
modnewton1 to imprk2, imprk4 and impeuler.

- evolve.c: modification to decrease step size if stepper fails,
instead of giving up immediately.

- evolve.c: A bug fix: Exit with GSL_FAILURE if step size reaches
machine precision instead of continuing with old step size.

- test.c: added Robertson stiff test

- test.c: embedded test_oregonator to test_compare_stiff_probelms to
test several stiff problems. Note: the tested integration interval is
rather short due to inefficiency of solvers other than bsimp in these
problems.

- test.c: modified test_compare_vanderpol and
test_compare_stiff_problems to check against results from first
ode-solver. Changed rk4 or bsimp to first place.

- test.c: modified stepfn and stepfn2 and expanded these to be tested
with all explicit solvers

- test.c: removed stepfn3 and added test_broken and test_stepsize_fail
to check that evolve decreases step size below machine precision and
exits with a failure code in the end if user functions fail
continuously.

Changes in ode-initval.texi:

- Removed untrue sentence concerning stepping functions: "The
step-size @var{h} will be set to the step-size which caused the
error."

- Changed gsl_odeiv_system variable name from dydt to sys for clarity.

- Added "explicit" or "implicit" to stepper introductions for clarity.

- Reformulated description of evolve_apply and step_apply and made
changes to reflect the modifications to the code.

- Clarified the point on integrating over discontinuities. It is best
to integrate in sequences.

- Removed the text suggesting the user to force a step size to
integrate over the edge of a discontinuity. The applicability of this
kind of a numerical tweak depends on the case, and should in my
opinion not be included in a reference book.

- Added literature references.

Please feel free to comment on the proposed changes.

Regards,
Tuomo

--
Tuomo.Keskitalo@iki.fi
http://iki.fi/tuomo.keskitalo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]