Commit Graph

160 Commits

Author SHA1 Message Date
Mario Mulansky
2bbc186b43 Merge branch 'develop' of github.com:boostorg/odeint into develop 2019-04-20 11:56:36 -07:00
Mario Mulansky
fc43a2ef44 Merge branch 'master' of github.com:headmyshoulder/odeint-v2 into develop 2019-04-20 11:49:37 -07:00
Mario Mulansky
db8b39ae27
Change eigen algebra to support Eigen>=3.3 (#237)
* Change eigen algebra to support Eigen>=3.3

An internal change in Eigen made odeint incompatible with Eigen
versions >=3.3. This commit changes odeint in such a way that it
does not rely on the changed behvior, so it is now compatible with
old and new Eigen.

Fixes #194

* Remove obsolete Eigen fail compile test

* Remove compile-fail test for C++98 unwrap_reference
2019-03-16 16:20:44 -07:00
Mario Mulansky
ee44ba9e36
Revert "Fixed incorrect constant in Dormand–Prince Runge–Kutta Butcher tableau. (#235)" (#236)
This reverts commit 75fe4e19ad.
2019-03-02 11:42:32 -08:00
Garret McGraw
75fe4e19ad Fixed incorrect constant in Dormand–Prince Runge–Kutta Butcher tableau. (#235) 2019-03-02 11:17:09 -08:00
Markus Friedrich
5dd9519b7b Enable the adaption of the maximal step size of dense output steppers. (#225)
* Enable the adaption of the maximal step size of dense output steppers.

For efficient simulation of "hybrid" systems the integrator must approach
the sample points where the discrete variables change their value.

(hybrid systems = systems of ODEs which include discrete variables, beeing
internal variables of the system which only change their value at discrete
sample points)

Approaching sample points can be done by adapting the maximal integrator
step size to min(max_step_size, next_sample_point_time - current_time)
before each do_step.

To achive this in odeint for all dense output steppers the following
changes must be done (which does not change the existing API):
- make private members in bulirsch_stoer_dense_out,
  default_step_adjuster, rosenbrock4_controller protected.
- allow std::ref/boost::ref for step_adjuster in controlled_runge_kutta
  and controlled_runge_kutta and for stepper in rosenbrock4_dense_output
  by unwrapping these before use.
This allows to pass the step adjusters by reference to the dense output
steppers which than allows to change the maximal step size (in the step
adjuster) before each call to do_step.

* Added test for a reference controller in the Rosenbrock4 dense output stepper.

* Make in bulirsch_stoer_dense_out only the required m_max_dt member
protected not all.

Extend the test in rosenbrock4.cpp to test that the controller is a
reference and the maximal step size is applied.

* Fixed build with gcc-4.8
2018-02-12 20:13:12 -08:00
Markus Friedrich
a393540e17 Fixed dense_output_runge_kutta<Stepper, stepper_tag>::do_step(...) (#224)
do_step must return the pair (t, t+dt) but (t, dt) is returned.

Note that dense_output_runge_kutta<Stepper, explicit_controlled_stepper_fsal_tag>::do_step(...)
works correctly.
2018-01-20 11:24:22 -08:00
Valentin Hartmann
30fd68fbb3 adds controlled initialization (#216)
- errors might already occur during the first few steps if the stepsize is chosen too big
- initialize_controlled takes advantage of controlled steppers to initialize the controlled abm stepper
2018-01-05 17:22:52 +01:00
Valentin Hartmann
34def567d2 fix initialization with external stepper (#215)
- time was not increased over the iterations
- prediction of dxdt was taken before integrating with the supplied stepper instead of after
2017-11-12 12:12:17 -08:00
corell-hd
3f3192d84f add template parameter to vector_space_norm_inf
Adding an additional template parameter which defaults to void allows for template specialization using SFINAE.
2017-10-13 04:06:51 +02:00
Valentin Hartmann
540f46f42c Improvement to Order Selection, Error approximation in the ABM stepper (#218)
* improves the order selection and modifies the error estimation accordingly

- assumes constant stepsize for the next step to approximate error
- moves the complete order adjustment to the class order_adjustment
- slight changes to adaptive_adams_coefficients

* changed the commit according to the requests and comments
2017-09-25 15:22:51 -07:00
ds283
f1098483ea Switch fabs for std::abs
- controlled_adams_bashforth_moulton.hpp, adaptive_adams_coefficients.hpp and pid_step_adjuster.hpp extract absolute values using fabs() without a namespace qualifier

- if the integration value type is not double then this can cause problems, since fabs() is not required to have a long double overload. In such cases it is safer to use std::abs, and also this matches the rest of the odeint-v2 codebase
2017-07-23 22:31:35 +01:00
Valentin Hartmann
11bf5d56c5 replace assignment with boost::copy 2017-07-08 21:21:47 +02:00
Valentin Hartmann
b38159f51a add relative error to step adjuster 2017-07-07 17:25:26 +02:00
Valentin Hartmann
c673986a13 formatting 2017-07-06 20:07:56 +02:00
Valentin Hartmann
fa6621e43c updated order selection 2017-07-06 19:38:51 +02:00
Valentin Hartmann
4a3477ed0b fixed ratio-selection 2017-07-05 17:53:48 +02:00
Valentin Hartmann
ef866e14aa templating the pid adjuster 2017-07-04 22:03:58 +02:00
Valentin Hartmann
a21f49a736 slight changes to initialization to allow for order correction 2017-07-04 21:15:15 +02:00
Valentin Hartmann
b500829677 enabling negative coefficients 2017-07-04 11:48:55 +02:00
Valentin Hartmann
ca96850106 fixed wrong order assignment when failing a step 2017-07-04 01:21:35 +02:00
Valentin Hartmann
5a6c6bba5c added detail:: to ref 2017-07-03 16:59:14 +02:00
Valentin Hartmann
12714d481a fix issues with compiling on travis 2017-07-03 16:43:48 +02:00
Valentin Hartmann
dceea2015a slight formatting changes 2017-07-03 15:25:51 +02:00
Valentin Hartmann
848d7f1938 completed testcases 2017-07-03 14:42:41 +02:00
Valentin Hartmann
1b767b38d6 adapting tests to new formulation 2017-07-02 19:16:10 +02:00
Valentin Hartmann
a463262c7d slight changes to stepsize control 2017-07-02 15:16:32 +02:00
Valentin Hartmann
c5aab45386 moving to new formulation 2017-07-02 15:14:09 +02:00
Valentin Hartmann
7fe4477acf Tests for numeric precision, initializing procedure for steppers 2017-06-23 15:05:20 +02:00
Valentin Hartmann
dc2fbddd7a added self-initialization to adaptive adams stepper 2017-06-23 11:14:22 +02:00
Valentin Hartmann
92e76299f1 corrected indentation 2017-06-22 17:50:49 +02:00
Valentin Hartmann
d0dad9a53a changed tabs to spaces in all files 2017-06-22 17:44:49 +02:00
Valentin Hartmann
b29586d9d3 implemented adaptive adams bashforth moulton to enable make_controlled 2017-06-21 18:13:25 +02:00
Valentin Hartmann
16801429c9 modifications to stepper to allow make_controlled 2017-06-20 17:04:15 +02:00
Valentin Hartmann
5fe4175a61 removed print used in debugging 2017-06-19 16:28:29 +02:00
Valentin Hartmann
28b01caee7 minor naming changes 2017-06-19 16:13:58 +02:00
Valentin Hartmann
ca966c2736 compiles without c++11 2017-06-19 10:41:38 +02:00
Valentin Hartmann
fa769dd236 Fixed small bug and added more functionality to the controller 2017-06-19 10:04:37 +02:00
Valentin Hartmann
2f098f7d86 removed tmp-file 2017-05-25 18:45:38 +02:00
Valentin Hartmann
8e2b3c2550 fixed minor things in stepper 2017-05-25 16:40:31 +02:00
Valentin Hartmann
233ebc5792 changes to files to fix warnings 2017-05-24 16:31:40 +02:00
Valentin Hartmann
6a00e946f7 Initial commit from Bitbucket to Github 2017-05-23 09:29:37 +02:00
Denis Demidov
491df811e3 Provide algebra dispatcher for boost::multi_array
Fixes #205
2017-05-10 11:35:13 +03:00
Mario Mulansky
c0e1cf30f9 Merge pull request #19 from boostorg/from_headmyshoulder
Merge from headmyshoulder/odeint-v2
2017-05-09 20:57:34 -07:00
Mario Mulansky
67e1908720 Merge branch 'master' into odeint_boost_develop
Merging headmyshoulder/master into boostorg/develop
2017-05-09 20:49:33 -07:00
Tim Keitt
f1255a8319 Fix unused variable warning 2017-01-26 12:05:53 -06:00
Karsten Ahnert
b816e93fcf fixing #12107 2016-04-01 21:39:42 +02:00
akumta
9c4a5d8f42 update for ticket #12034 2016-02-29 19:50:21 -08:00
Mario Mulansky
31c29dd948 fixes #189
A bug introduced with the recent max_dt facility prevented the rosenbrock
controller to increase step size in most cases (if max_dt=0). This is fixed
now, and a regression test case has been added.
2016-01-19 15:37:50 +01:00
Mario Mulansky
cc9b1963e7 BS stepper: correct exponents for optimal h
Becoming suspicious by the difference of the exponents used for computing the
new step size in the BS and BS denseout stepper (see
0f943fbf8b) I checked again the Hairer book and
I'm now convinced there was a mistake in our implementation and both
steppers should use 1/(2*k+1) as exponent. The background is the this exponent
represents the order of the error of the k-th iteration, and this order is
always 2k+1, independent of the interval_sequence. This error is computed from
the difference of the k-th and k-1 - th iteration, which have the orders 2k+2
2k respectively, which means the computed error has order 2k+1.
2015-12-28 15:26:00 +01:00