Skip to content

Notes for the new implementation

headmyshoulder edited this page Oct 2, 2011 · 1 revision

Goals

  • One controller for
    • classical control
    • PI control
    • Rosenbrock (classical control)
  • controller with different error checkers (norms and scale functiontions)
  • controller with different step size selectors (PI-control)

Working plan

  • Define test cases
  • Implement basic blocks (test cases should now compile but not)
  • Implement controller
  • Implement error_checkers which are needed for the goals
  • Implement step size selectors
  • Modify generating function

Test cases

  • rk54_ck with
    • control from odeint-v2
    • control from NR
    • PI control
  • rk_dopri
    • control from odeint-v2
    • control from NR
    • PI control
  • rosenbrock4
    • control from odeint-v2
    • control from NR

Notes

  • standard controller< Stepper , typename Stepper::stepper_type >
    • compose controller into error_checker (different name?) and rejection and step size
    • only error_checker depends on algebra
    • compose error_checker into norm and scale function

Open issues

  • algebra for rosenbrock4?
  • algebras
    • put everything into the make_controlled function?
  • dense output
  • find names
    • controller
      • standard_controller
      • classical controller
    • error checker
      • error_checker
      • error
    • step size control
      • step_size_controller
      • step_size_adjuster
  • include dt in error_checker?
  • does PI-controller differ from classical control?

Details

  • Specialization for
    • ErrorStepper, do_step( sys , in , t , dt , out , err );
      • error_checker( xold , x , err );
    • ExplicitErrorStepper, do_step( sys , in , dxdt , t , dt , out , err );
      • error_checker( xold , dxdtold , x , err );
    • ExplicitErrorStepperFsal, do_step( sys , in , dxdtin , t , dt , out , dxdtout , err );
      • error_checker( xold , dxdtold , x , dxdt , err );
  • Define the new concepts ( ExplicitErrorStepper , ExplicitErrorStepperFSAL )
  • include out-of-place transform into the stepper concepts?
  • OK Define new stepper categories ( explicit_error_stepper , explicit_error_stepper_fsal )
    • they already exist