Blob Blame History Raw
2018-03-18  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* rk2imp.c and evolve.c: Added debug printouts, run indent -gnu -nut.
	Thanks for Dominic Steinitz for the additions!
	* test.c: Added identifiers to debug printouts.

2017-11-04  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* cscal.c: Corrected bug #52336 in cscal.c: Decreased maximum step
	length increase coefficient (now named maxscale) from 5.0 to 4.9
	because value of 5.0 hits a singularity in msbdf stepper with
	order 3, causing a floating point exception. Thanks to Andrew
	Benson for reporting this bug!

2017-10-22  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* msadams.c: Corrected bug #52230 in msadams_apply, where solver
	crashed to order change -2 error. This could happen in a very rare
	case when two consecutive failed steps suggest decreasing
	order. Fix is to reset solver if that happens. Thanks for Michael
	Kaufman for reporting this bug and testing the fix!

2013-06-08  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* driver.c: Removed redundant if clause. Thanks to
	David Binderman for the report!
	
2013-01-27  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* msbdf.c: Corrected bug which enabled order to be changed 
	by two (first by stability enhancement, then by order evaluation
	after a rejected step). Thanks for Frantisek Kluknavsky and
	Andreas Schwab for bug reports!
	
	* msbdf.c: Added more state variables explicitly to be reset in 
	msbdf_reset. 

	*msbdf.c: Added abscorscaled to remove division of abscor for 
	use in msbdf_eval_order and subsequent backwards multiplication.
	
	*test.c: test_extreme_problems: Increased ringmod case tolerances 
	from 1e-7 to 1e-12 to increase precision. Because that
	increases computational burden, I also decreased end time 
	from 1e-3 to 1e-5. That decreased the acidity of the test 
	significantly, but the test case is now more appropriate 
	for normal "make check". Thanks for Frantisek Kluknavsky
	for pointing out bad design of the test case.

2012-09-10  Rhys Ulerich  <rhys.ulerich@gmail.com>

	* test.c: Correct two out-of-order declarations.
	Thanks to Brian Gladman for spotting the problem.

2012-03-10  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* driver.c: Added function gsl_odeiv2_driver_reset_hstart to
	allow resetting step size, possibly change its sign, too.
	Check for non-zero hstart in initializations.

	* test.c: Modified test_driver to carry out tests with all
	steppers. Small printout changes.

2012-01-21  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* rkf45.c: Bug correction: Set gives_exact_dydt_out to 1 in
	rkf45_type

2012-01-14  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* evolve.c: Modified initial derivative evaluation in evolve_apply
	to reuse previously calculated values. This saves calls to the
	user function. Thanks for Illes Farkas for pointing out redundant
	function calls!

2011-06-28  Brian Gough  <bjg@network-theory.co.uk>

	* rk4imp.c (rk4imp_apply): use M_SQRT3 instead of sqrt(3) in array
	initialiser.

2011-05-02  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_odeiv2.h: fix header guard to __GSL_ODEIV2_H__

2011-05-01  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>

	* Replaced ChangeLog with contents of ode-initval2 development log
	file (ChangeLog-odeiv2_development) and reformatted the log file.

2010-10-16  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>

	* Modified evolve and driver so that when user function returns
	GSL_EBADFUNC, then ode-initval2 functions return immediately with
	that same return value.

	* Corrected bug in msadams for saving ordm1coeff to state. Thanks
	to Andrew Benson for pointing out this bug!

2010-10-10  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>

	* driver.c: Corrected error in driver_evolve_apply, integration to
	negative direction should work now.

	* Added evolve_apply_fixed_step and driver_apply_fixed_step for
	users who want to use a constant step size to evolve the system.

	* test.c: added test cases for driver (negative evolution,
	apply_fixed_step).

	* gsl_odeiv2.h: cleaning and add apply_fixed_step functions.

	* doc/ode-initval.texi: Replaced derivative apostrophe with \prime
	(because my new system fails to make ps otherwise). Added new
	documentation about apply_fixed_step functions.

2010-10-09  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>

	* ode-initval2 bzr development branch now at savannah:
	http://bzr.savannah.gnu.org/r/gsl/ode-initval2/

2010-01-02  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* Changes from ode-initval2-0.9 to ode-initval2-1.0:

	* Removed set_control member from step object and added a
	set_driver member to evolve, control and step objects, so that the
	driver object and consequently evolve, control and step objects
	are all accessible from another. Currently only some steppers
	utilize this. They access the control_errlevel function via
	state->driver->c instead of state->control. This modification to
	the framework enables implementation of more efficient ODE
	solvers, which utilize communication among evolve, control and
	stepper objects. This also means that some steppers now require a
	driver object, and it is best to use those stepper methods through
	driver object functions.

	* cstd.c and cscal.c: Added a sanity check for errlev <= 0

	* run indent -gnu -nut for *.c *.h

	* driver.c: added function odeiv2_driver_alloc_standard_new and
	odeiv2_driver_alloc_yp_new

	* driver.c: changed n and nmax in driver struct to unsigned long
	int

	* modified documentation accordingly with small nomenclature
	changes and made year updates to source files

2009-11-01  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* Merged with master and modified source to be published as a
	package for gsl-1.13.

2009-05-09  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* Agreed with Brian Gough that the modification I've made cannot
	be incorporated to GSL until a major version number change, due to
	changes in API.

	* Replated rk2imp with imprk2 and rk4imp with imprk4. Also renamed
	impeuler to rk1imp for consistency.

	* Deleted steppers that are deprecated considering new major
	release: gear1, gear2, and rk2simp. Modified test.c accordingly.

2009-05-01  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* Merged with master (evolve.c and test.c needed some manual
	work).

	* driver.c: Modified alloc-functions to minimal interface, added
	set_hmax, set_nmax and set_hmin functions.

	* test.c: Added test for minimum allowed step size.
	Applied indent -gnu -nut.

	* doc/ode-initval.texi: Updated documentation, added Driver
	section, updated examples.

2009-04-05  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* Several uninitialized variable corrections from Brian Gough
	added

	* modnewton1, impeuler, imprk2, imprk4: removed unneeded arguments
	from solve and init

	* msadams and msbdf modifications:

	* added ordprevbackup, ordwaitbackup (backups) and failcount (to
	detect repeated steps rejections).

	* added checks to make sure order is not changed by more than one
	order. Added sanity check to catch it.

	* corrected failure and rejection handling for first step

	* Added a heuristic stability enhancement for msbdf. This is yet
	to be tested in practice.

	* test.c: Added more benchmark test cases. The results seem
	sensible.

	* test.c: Note for benchmark_precision: msbdf performs badly in
	rhs_func_exp. Newton iteration starts to fail to converge at some
	point, and this forces very small step sizes to be used. I
	currently think that this is not a bug, but that msbdf is just not
	suitable for this problem. I think that msbdf's prediction step
	does not give a good initial guess for Newton iteration in this
	case.

	* I tried to increase max_iter in msbdf from 3 to 7 (value used in
	modnewton1), and as a result, the performance was better for this
	case (Newton iteration convergence was better). However, I would
	not increase max_iter, because the default value of 3 is the value
	used by the authors in the references, and because it would
	decrease the efficiency of msbdf (method would use more function
	evaluations per step, and convergence might still not be
	achieved). It is best to useanother stepper in this kind of a
	case.

2009-02-28  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* new stepper: msbdf. This is a variable-coefficient linear
	multistep backward differentiation formula (BDF) method in
	Nordsieck form. It appears to handle stiff cases well and it is
	efficient!

	* test.c: Ordered functions in file. Added extreme test case.

	* modnewton1: Convergence test now takes the desired error level
	via control object into account. Modified steppers that use
	modnewton1 accordingly.

	* modnewton1: Removed reuse_decomp. The variable was useless since
	iteration matrix is reconstructed at each stepper call.

	* modnewton1: Dropped max_iter from 10 to 7. Hairer and Wanner
	suggests a "relatively high number", but many iterations per step
	is costly.

	* steppers that use step doubling for error estimates: Introduced
	constant GSL_ODEIV_ERR_SAFETY in gsl_odeiv.h that is used to
	multiply the error estimates (yerr). This way user can modify this
	coefficient in one place if a change is wanted.

	* driver.c: This is a high level wrapper for ode-initval, which
	was wished for in TODO. Added test_driver to test.c to test it. Is
	this functionality enough?

	* ode-initval.texi: Added documentation for new steppers. Moved
	note about user error codes to system definition.

	* Some finetuning / code cleanup.

2009-01-21  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* New explicit stepper: msadams (An explicit variable-coefficient
	linear multistep Adams method in Nordsieck form). Functional
	iteration is used to solve the non-linear equation system. The
	algorithms described in the references (see msadams.c) have been
	adapted to fit GSL odeiv framework. Currently this is beta, but
	the stepper now passes the odeiv test suite.

	* control.c, cstd.c, cscal.c: Added errlev function which
	calculates desired error level. This is used in masadams (and can
	be used in imp* steppers, too) to control accuracy of functional
	iteration. User must call gsl_odeiv_step_set_control after
	allocating step and control objects to pass the information about
	control object to stepper. This change (or something similar) is
	needed to pass tolerance for the stepper routines that need
	it. Modified stepper routines accordingly.

	* evolve.c: Changed the step length scaling coefficient for
	stepper failure from 0.1 to 0.5, because msadams seems to cope
	much better with this change in stiff[0,1] test case.

	* gsl_odeiv.h: gsl_odeiv_control and control_type introduced
	earlier because gsl_odeiv_step_type now refers to it.

2008-11-01  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>

	* 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 to be included in a reference book.