diff --git a/TODO b/TODO index 3a7bd352..17d531f2 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,62 @@ OK * rename rb_controller to stiff_controller error_steppers OK * check the preamble +error_stepper: + +xerr = error( x , xold ) + +explicit_error_stepper: + +xerr = error( x , xold , dxdtold ) + +explicit_error_stepper_fsal: + +xerr = error( x , dxdt , xold , dxdtold ) + + +default_error: + +xerr[i] / ( m_abs + m_eps * xold[i] ) + +default_error_explicit: + +xerr[i] / ( m_abs + m_eps * ( a_x * xold[i] + a_dtdt * dxdtold[i] ) ) + +rb: + +xerr[i] / ( m_abs + m_eps * max( x[i] , xold[i] ) ) + +norm: + +val = max_i( xerr[i] ); + +val = 1 / n * sum_i * xerr[i] * xerr[i]; + + +VORSCHLAG: + +ein default_error_checker + +mit norm_policy, error_funktor; + +error_funktor: je nach stepper + +norm_policy +{ +public: + + typedef Value result_type; + + template< class T1 , class T2 > + result_type operator( T1 t1 , T2 t2 ) const + { + } + + result_type result( result_type res ) const + { + } +}; + * REFACTORING AND CLEANUP diff --git a/libs/numeric/odeint/doc/details.qbk b/libs/numeric/odeint/doc/details.qbk index bbaae5be..e6db42b8 100644 --- a/libs/numeric/odeint/doc/details.qbk +++ b/libs/numeric/odeint/doc/details.qbk @@ -42,7 +42,7 @@ Note that if you are using a simple __stepper or __error_stepper and want to mak The actual step size will change due to error control during time evolution. However, if an observer is provided the step size will be adjusted such that the algorithm always calculates /x(t)/ at ['t = t[sub 0] + n dt] and calls the observer at that point. Note that the use of __controlled_stepper is reasonable here only if `dt` is considerably larger than typical step sizes used by the stepper. -* If `stepper` is a __dense_out_stepper then `dt` is the initial step size. +* If `stepper` is a __dense_outout_stepper then `dt` is the initial step size. The actual step size will be adjusted during integration due to error control. If an observer is provided dense output is used to calculate /x(t)/ at ['t = t[sub 0] + n dt]. @@ -67,7 +67,7 @@ If provided, the observer is called at each step. The actual step size is changed according to error control of the stepper. For the last step, the step size will be reduced to ensure we end exactly at `t1`. If provided, the observer is called after each time step (and before the first step at `t0`). -* If stepper is a __dense_out_stepper then `dt` is the initial step size and `integrate_adaptive` behaves just like for __controlled_stepper above. No dense output is used. +* If stepper is a __dense_output_stepper then `dt` is the initial step size and `integrate_adaptive` behaves just like for __controlled_stepper above. No dense output is used. [heading Observer calls at given time points]