Blame ode-initval2/ChangeLog

Packit 67cb25
2018-03-18  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* rk2imp.c and evolve.c: Added debug printouts, run indent -gnu -nut.
Packit 67cb25
	Thanks for Dominic Steinitz for the additions!
Packit 67cb25
	* test.c: Added identifiers to debug printouts.
Packit 67cb25
Packit 67cb25
2017-11-04  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* cscal.c: Corrected bug #52336 in cscal.c: Decreased maximum step
Packit 67cb25
	length increase coefficient (now named maxscale) from 5.0 to 4.9
Packit 67cb25
	because value of 5.0 hits a singularity in msbdf stepper with
Packit 67cb25
	order 3, causing a floating point exception. Thanks to Andrew
Packit 67cb25
	Benson for reporting this bug!
Packit 67cb25
Packit 67cb25
2017-10-22  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* msadams.c: Corrected bug #52230 in msadams_apply, where solver
Packit 67cb25
	crashed to order change -2 error. This could happen in a very rare
Packit 67cb25
	case when two consecutive failed steps suggest decreasing
Packit 67cb25
	order. Fix is to reset solver if that happens. Thanks for Michael
Packit 67cb25
	Kaufman for reporting this bug and testing the fix!
Packit 67cb25
Packit 67cb25
2013-06-08  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* driver.c: Removed redundant if clause. Thanks to
Packit 67cb25
	David Binderman for the report!
Packit 67cb25
	
Packit 67cb25
2013-01-27  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* msbdf.c: Corrected bug which enabled order to be changed 
Packit 67cb25
	by two (first by stability enhancement, then by order evaluation
Packit 67cb25
	after a rejected step). Thanks for Frantisek Kluknavsky and
Packit 67cb25
	Andreas Schwab for bug reports!
Packit 67cb25
	
Packit 67cb25
	* msbdf.c: Added more state variables explicitly to be reset in 
Packit 67cb25
	msbdf_reset. 
Packit 67cb25
Packit 67cb25
	*msbdf.c: Added abscorscaled to remove division of abscor for 
Packit 67cb25
	use in msbdf_eval_order and subsequent backwards multiplication.
Packit 67cb25
	
Packit 67cb25
	*test.c: test_extreme_problems: Increased ringmod case tolerances 
Packit 67cb25
	from 1e-7 to 1e-12 to increase precision. Because that
Packit 67cb25
	increases computational burden, I also decreased end time 
Packit 67cb25
	from 1e-3 to 1e-5. That decreased the acidity of the test 
Packit 67cb25
	significantly, but the test case is now more appropriate 
Packit 67cb25
	for normal "make check". Thanks for Frantisek Kluknavsky
Packit 67cb25
	for pointing out bad design of the test case.
Packit 67cb25
Packit 67cb25
2012-09-10  Rhys Ulerich  <rhys.ulerich@gmail.com>
Packit 67cb25
Packit 67cb25
	* test.c: Correct two out-of-order declarations.
Packit 67cb25
	Thanks to Brian Gladman for spotting the problem.
Packit 67cb25
Packit 67cb25
2012-03-10  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* driver.c: Added function gsl_odeiv2_driver_reset_hstart to
Packit 67cb25
	allow resetting step size, possibly change its sign, too.
Packit 67cb25
	Check for non-zero hstart in initializations.
Packit 67cb25
Packit 67cb25
	* test.c: Modified test_driver to carry out tests with all
Packit 67cb25
	steppers. Small printout changes.
Packit 67cb25
Packit 67cb25
2012-01-21  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* rkf45.c: Bug correction: Set gives_exact_dydt_out to 1 in
Packit 67cb25
	rkf45_type
Packit 67cb25
Packit 67cb25
2012-01-14  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* evolve.c: Modified initial derivative evaluation in evolve_apply
Packit 67cb25
	to reuse previously calculated values. This saves calls to the
Packit 67cb25
	user function. Thanks for Illes Farkas for pointing out redundant
Packit 67cb25
	function calls!
Packit 67cb25
Packit 67cb25
2011-06-28  Brian Gough  <bjg@network-theory.co.uk>
Packit 67cb25
Packit 67cb25
	* rk4imp.c (rk4imp_apply): use M_SQRT3 instead of sqrt(3) in array
Packit 67cb25
	initialiser.
Packit 67cb25
Packit 67cb25
2011-05-02  Brian Gough  <bjg@network-theory.co.uk>
Packit 67cb25
Packit 67cb25
	* gsl_odeiv2.h: fix header guard to __GSL_ODEIV2_H__
Packit 67cb25
Packit 67cb25
2011-05-01  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Replaced ChangeLog with contents of ode-initval2 development log
Packit 67cb25
	file (ChangeLog-odeiv2_development) and reformatted the log file.
Packit 67cb25
Packit 67cb25
2010-10-16  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Modified evolve and driver so that when user function returns
Packit 67cb25
	GSL_EBADFUNC, then ode-initval2 functions return immediately with
Packit 67cb25
	that same return value.
Packit 67cb25
Packit 67cb25
	* Corrected bug in msadams for saving ordm1coeff to state. Thanks
Packit 67cb25
	to Andrew Benson for pointing out this bug!
Packit 67cb25
Packit 67cb25
2010-10-10  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* driver.c: Corrected error in driver_evolve_apply, integration to
Packit 67cb25
	negative direction should work now.
Packit 67cb25
Packit 67cb25
	* Added evolve_apply_fixed_step and driver_apply_fixed_step for
Packit 67cb25
	users who want to use a constant step size to evolve the system.
Packit 67cb25
Packit 67cb25
	* test.c: added test cases for driver (negative evolution,
Packit 67cb25
	apply_fixed_step).
Packit 67cb25
Packit 67cb25
	* gsl_odeiv2.h: cleaning and add apply_fixed_step functions.
Packit 67cb25
Packit 67cb25
	* doc/ode-initval.texi: Replaced derivative apostrophe with \prime
Packit 67cb25
	(because my new system fails to make ps otherwise). Added new
Packit 67cb25
	documentation about apply_fixed_step functions.
Packit 67cb25
Packit 67cb25
2010-10-09  Tuomo Keskitalo  <Tuomo.Keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* ode-initval2 bzr development branch now at savannah:
Packit 67cb25
	http://bzr.savannah.gnu.org/r/gsl/ode-initval2/
Packit 67cb25
Packit 67cb25
2010-01-02  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Changes from ode-initval2-0.9 to ode-initval2-1.0:
Packit 67cb25
Packit 67cb25
	* Removed set_control member from step object and added a
Packit 67cb25
	set_driver member to evolve, control and step objects, so that the
Packit 67cb25
	driver object and consequently evolve, control and step objects
Packit 67cb25
	are all accessible from another. Currently only some steppers
Packit 67cb25
	utilize this. They access the control_errlevel function via
Packit 67cb25
	state->driver->c instead of state->control. This modification to
Packit 67cb25
	the framework enables implementation of more efficient ODE
Packit 67cb25
	solvers, which utilize communication among evolve, control and
Packit 67cb25
	stepper objects. This also means that some steppers now require a
Packit 67cb25
	driver object, and it is best to use those stepper methods through
Packit 67cb25
	driver object functions.
Packit 67cb25
Packit 67cb25
	* cstd.c and cscal.c: Added a sanity check for errlev <= 0
Packit 67cb25
Packit 67cb25
	* run indent -gnu -nut for *.c *.h
Packit 67cb25
Packit 67cb25
	* driver.c: added function odeiv2_driver_alloc_standard_new and
Packit 67cb25
	odeiv2_driver_alloc_yp_new
Packit 67cb25
Packit 67cb25
	* driver.c: changed n and nmax in driver struct to unsigned long
Packit 67cb25
	int
Packit 67cb25
Packit 67cb25
	* modified documentation accordingly with small nomenclature
Packit 67cb25
	changes and made year updates to source files
Packit 67cb25
Packit 67cb25
2009-11-01  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Merged with master and modified source to be published as a
Packit 67cb25
	package for gsl-1.13.
Packit 67cb25
Packit 67cb25
2009-05-09  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Agreed with Brian Gough that the modification I've made cannot
Packit 67cb25
	be incorporated to GSL until a major version number change, due to
Packit 67cb25
	changes in API.
Packit 67cb25
Packit 67cb25
	* Replated rk2imp with imprk2 and rk4imp with imprk4. Also renamed
Packit 67cb25
	impeuler to rk1imp for consistency.
Packit 67cb25
Packit 67cb25
	* Deleted steppers that are deprecated considering new major
Packit 67cb25
	release: gear1, gear2, and rk2simp. Modified test.c accordingly.
Packit 67cb25
Packit 67cb25
2009-05-01  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Merged with master (evolve.c and test.c needed some manual
Packit 67cb25
	work).
Packit 67cb25
Packit 67cb25
	* driver.c: Modified alloc-functions to minimal interface, added
Packit 67cb25
	set_hmax, set_nmax and set_hmin functions.
Packit 67cb25
Packit 67cb25
	* test.c: Added test for minimum allowed step size.
Packit 67cb25
	Applied indent -gnu -nut.
Packit 67cb25
Packit 67cb25
	* doc/ode-initval.texi: Updated documentation, added Driver
Packit 67cb25
	section, updated examples.
Packit 67cb25
Packit 67cb25
2009-04-05  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* Several uninitialized variable corrections from Brian Gough
Packit 67cb25
	added
Packit 67cb25
Packit 67cb25
	* modnewton1, impeuler, imprk2, imprk4: removed unneeded arguments
Packit 67cb25
	from solve and init
Packit 67cb25
Packit 67cb25
	* msadams and msbdf modifications:
Packit 67cb25
Packit 67cb25
	* added ordprevbackup, ordwaitbackup (backups) and failcount (to
Packit 67cb25
	detect repeated steps rejections).
Packit 67cb25
Packit 67cb25
	* added checks to make sure order is not changed by more than one
Packit 67cb25
	order. Added sanity check to catch it.
Packit 67cb25
Packit 67cb25
	* corrected failure and rejection handling for first step
Packit 67cb25
Packit 67cb25
	* Added a heuristic stability enhancement for msbdf. This is yet
Packit 67cb25
	to be tested in practice.
Packit 67cb25
Packit 67cb25
	* test.c: Added more benchmark test cases. The results seem
Packit 67cb25
	sensible.
Packit 67cb25
Packit 67cb25
	* test.c: Note for benchmark_precision: msbdf performs badly in
Packit 67cb25
	rhs_func_exp. Newton iteration starts to fail to converge at some
Packit 67cb25
	point, and this forces very small step sizes to be used. I
Packit 67cb25
	currently think that this is not a bug, but that msbdf is just not
Packit 67cb25
	suitable for this problem. I think that msbdf's prediction step
Packit 67cb25
	does not give a good initial guess for Newton iteration in this
Packit 67cb25
	case.
Packit 67cb25
Packit 67cb25
	* I tried to increase max_iter in msbdf from 3 to 7 (value used in
Packit 67cb25
	modnewton1), and as a result, the performance was better for this
Packit 67cb25
	case (Newton iteration convergence was better). However, I would
Packit 67cb25
	not increase max_iter, because the default value of 3 is the value
Packit 67cb25
	used by the authors in the references, and because it would
Packit 67cb25
	decrease the efficiency of msbdf (method would use more function
Packit 67cb25
	evaluations per step, and convergence might still not be
Packit 67cb25
	achieved). It is best to useanother stepper in this kind of a
Packit 67cb25
	case.
Packit 67cb25
Packit 67cb25
2009-02-28  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* new stepper: msbdf. This is a variable-coefficient linear
Packit 67cb25
	multistep backward differentiation formula (BDF) method in
Packit 67cb25
	Nordsieck form. It appears to handle stiff cases well and it is
Packit 67cb25
	efficient!
Packit 67cb25
Packit 67cb25
	* test.c: Ordered functions in file. Added extreme test case.
Packit 67cb25
Packit 67cb25
	* modnewton1: Convergence test now takes the desired error level
Packit 67cb25
	via control object into account. Modified steppers that use
Packit 67cb25
	modnewton1 accordingly.
Packit 67cb25
Packit 67cb25
	* modnewton1: Removed reuse_decomp. The variable was useless since
Packit 67cb25
	iteration matrix is reconstructed at each stepper call.
Packit 67cb25
Packit 67cb25
	* modnewton1: Dropped max_iter from 10 to 7. Hairer and Wanner
Packit 67cb25
	suggests a "relatively high number", but many iterations per step
Packit 67cb25
	is costly.
Packit 67cb25
Packit 67cb25
	* steppers that use step doubling for error estimates: Introduced
Packit 67cb25
	constant GSL_ODEIV_ERR_SAFETY in gsl_odeiv.h that is used to
Packit 67cb25
	multiply the error estimates (yerr). This way user can modify this
Packit 67cb25
	coefficient in one place if a change is wanted.
Packit 67cb25
Packit 67cb25
	* driver.c: This is a high level wrapper for ode-initval, which
Packit 67cb25
	was wished for in TODO. Added test_driver to test.c to test it. Is
Packit 67cb25
	this functionality enough?
Packit 67cb25
Packit 67cb25
	* ode-initval.texi: Added documentation for new steppers. Moved
Packit 67cb25
	note about user error codes to system definition.
Packit 67cb25
Packit 67cb25
	* Some finetuning / code cleanup.
Packit 67cb25
Packit 67cb25
2009-01-21  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* New explicit stepper: msadams (An explicit variable-coefficient
Packit 67cb25
	linear multistep Adams method in Nordsieck form). Functional
Packit 67cb25
	iteration is used to solve the non-linear equation system. The
Packit 67cb25
	algorithms described in the references (see msadams.c) have been
Packit 67cb25
	adapted to fit GSL odeiv framework. Currently this is beta, but
Packit 67cb25
	the stepper now passes the odeiv test suite.
Packit 67cb25
Packit 67cb25
	* control.c, cstd.c, cscal.c: Added errlev function which
Packit 67cb25
	calculates desired error level. This is used in masadams (and can
Packit 67cb25
	be used in imp* steppers, too) to control accuracy of functional
Packit 67cb25
	iteration. User must call gsl_odeiv_step_set_control after
Packit 67cb25
	allocating step and control objects to pass the information about
Packit 67cb25
	control object to stepper. This change (or something similar) is
Packit 67cb25
	needed to pass tolerance for the stepper routines that need
Packit 67cb25
	it. Modified stepper routines accordingly.
Packit 67cb25
Packit 67cb25
	* evolve.c: Changed the step length scaling coefficient for
Packit 67cb25
	stepper failure from 0.1 to 0.5, because msadams seems to cope
Packit 67cb25
	much better with this change in stiff[0,1] test case.
Packit 67cb25
Packit 67cb25
	* gsl_odeiv.h: gsl_odeiv_control and control_type introduced
Packit 67cb25
	earlier because gsl_odeiv_step_type now refers to it.
Packit 67cb25
Packit 67cb25
2008-11-01  Tuomo Keskitalo  <tuomo.keskitalo@iki.fi>
Packit 67cb25
Packit 67cb25
	* New implicit solvers: imprk4 (replaces imprk42 in previous test
Packit 67cb25
	package), imprk2 (replaces imprk21 in previous test package) and
Packit 67cb25
	impeuler, which use modified Newton iteration to solve the
Packit 67cb25
	implicit equations. I decided to dump imprk42 and imprk21 because
Packit 67cb25
	I was unsure how to calculate the error estimates for them. I
Packit 67cb25
	think that these new implicit methods could be used instead of
Packit 67cb25
	rk4imp, rk2imp, gear2 and gear1, which use functional
Packit 67cb25
	iteration (which is inefficient for stiff problems.) However, even
Packit 67cb25
	these new solvers can not be used efficiently for truly nasty
Packit 67cb25
	stiff problems, and better solvers are still needed.
Packit 67cb25
Packit 67cb25
	* modnewton1.c: a modified Newton solver for solution of
Packit 67cb25
	non-linear equations of implicit solvers. Jacobian evaluation has
Packit 67cb25
	been moved from modnewton1 to imprk2, imprk4 and impeuler.
Packit 67cb25
Packit 67cb25
	* evolve.c: modification to decrease step size if stepper fails,
Packit 67cb25
	instead of giving up immediately.
Packit 67cb25
Packit 67cb25
	* evolve.c: A bug fix: Exit with GSL_FAILURE if step size reaches
Packit 67cb25
	machine precision instead of continuing with old step size.
Packit 67cb25
Packit 67cb25
	* test.c: added Robertson stiff test
Packit 67cb25
Packit 67cb25
	* test.c: embedded test_oregonator to test_compare_stiff_probelms
Packit 67cb25
	to test several stiff problems. Note: the tested integration
Packit 67cb25
	interval is rather short due to inefficiency of solvers other than
Packit 67cb25
	bsimp in these problems.
Packit 67cb25
Packit 67cb25
	* test.c: modified test_compare_vanderpol and
Packit 67cb25
	test_compare_stiff_problems to check against results from first
Packit 67cb25
	ode-solver. Changed rk4 or bsimp to first place.
Packit 67cb25
Packit 67cb25
	* test.c: modified stepfn and stepfn2 and expanded these to be
Packit 67cb25
	tested with all explicit solvers
Packit 67cb25
Packit 67cb25
	* test.c: removed stepfn3 and added test_broken and
Packit 67cb25
	test_stepsize_fail to check that evolve decreases step size below
Packit 67cb25
	machine precision and exits with a failure code in the end if user
Packit 67cb25
	functions fail continuously.
Packit 67cb25
Packit 67cb25
	* Changes in ode-initval.texi:
Packit 67cb25
Packit 67cb25
	* removed untrue sentence concerning stepping functions: "The
Packit 67cb25
	step-size @var{h} will be set to the step-size which caused the
Packit 67cb25
	error."
Packit 67cb25
Packit 67cb25
	* Changed gsl_odeiv_system variable name from dydt to sys for
Packit 67cb25
	clarity
Packit 67cb25
Packit 67cb25
	* added "explicit" or "implicit" to stepper introductions for
Packit 67cb25
	clarity
Packit 67cb25
Packit 67cb25
	* reformulated description of evolve_apply and step_apply and made
Packit 67cb25
	changes to reflect the modifications to the code.
Packit 67cb25
Packit 67cb25
	* clarified the point on integrating over discontinuities. It is
Packit 67cb25
	best to integrate in sequences.
Packit 67cb25
Packit 67cb25
	* removed the text suggesting the user to force a step size to
Packit 67cb25
	integrate over the edge of a discontinuity. The applicability of
Packit 67cb25
	this kind of a numerical tweak depends on the case, and should in
Packit 67cb25
	my opinion not to be included in a reference book.