Convergence of the IMEX(2,3,3) scheme seems to be sub-optimal with a convergence rate of 2 instead of 3. The implicit and explicit schemes implemented are both third-order when tested with pure implicit and pure explicit solvers. The suboptimal convergence observed with the IMEX implementation appears to be inappropriate application of boundary conditions. The IMEX(1,2,2) is also affected by boundary condition issue. The underlying problem is the last staged of the IMEX(1,2,2) and (2,3,3) schemes do not correspond to the final step update, resulting in inappropriate application of boundary conditions for the next step.
The proposed solution is the make sure that the boundary conditions are properly applied by calling
DoProjection at the end of the solution update for cases when the last stage does not correspond to the final step.
For the IMEX(2,3,3) scheme, with the original implementation, the L2 and Linf norms are
L 2 error (variable u) : 5.3464e-08 L inf error (variable u) : 5.99158e-07
With the new implementation, the L2 and Linf norms are
L 2 error (variable u) : 1.60509e-09 L inf error (variable u) : 9.67463e-09
The convergence rate obtained is
2.5486536653121945 2.423739790720115 2.3411954353180304
Please suggest any people who would be appropriate to review your code.
Please add any other information that could be useful for reviewers.
[ ] Functions and classes, or changes to them, are documented. [ ] User guide/documentation is updated.
Changelog is updated.
Suitable tests added for new functionality.
Contributed code is correctly formatted. (See the contributing guidelines). [ ] License added to any new files.
No extraneous files have been added (e.g. compiler output or test data files).