Split nonlinear operator features

Issue #203 new
David Dickinson created an issue

Current next (preparing for 8.2) has an option to split the nonlinear operator from the main algorithm. This offers some potential benefits. Some things left to do:

  • Add some heurisitic to monitor the separation between linear and non-linear time scales – if the linear step is set too large then the operator splitting leads to very different results. Essentially need to choose a delt not too large – we need some way to monitor what is “too large”. One option might be to look at the change in g coming from the nonlinear advance and from the subsequent linear advance and warning if the ratio of these is too extreme (possibly reducing the linear time step in this case).
  • Look at possible optimisations. These include advancing h rather than g in the nonlinear integrator in order to avoid two g_adjust calls per nonlinear step and trying to advance the nonlinear term whilst in a layout compatible with FFTs such that we don’t communicate several times per nonlinear evaluation as done currently. This could reduce the MPI time quite a bit.
  • Document the new algorithm option and justify the approach taken.
  • Explore if there’s any benefit from switching scheme during the run, e.g. switching order of rk scheme if taking too many steps per linear advance, switching from RK to beuler after overshoot etc.
  • Use both rtol and atol in the error control, so something like control such that error < rtol*max(abs(solution)) + atol or similar.

Comments (1)

  1. Log in to comment