moving calculation of body force to start of timestep, not end. This appears to improve convergence behavior.
also unifying 'calculate' and 'evaluate' subroutines to simplify code.
some additional arguments have to be passed to CalcResidual to make this work.