New broadcasting methods based on face-buffer abstractions
Follow up of !56 (merged) to implement new methods in order to avoid excessive ifs in face and bdry loops as well as to avoid having to inline the @with_signature
functions into the broadcasting methods.
This also added a interpolate_face_data!
method which will be needed later on for AMR.
I did a benchmark against current main and this is now a bit faster (on the Helmholtz problem with [4,4]x[64,64]
grid: ~10ms vs ~9ms for rhs evaluation per step). The improvement is even better than what this benchmark shows, because we now do more work (copying data to boundary buffers) and are still faster.
This PR does not yet convert all @with_signature
methods to use the new broadcasting. Will do in another PR.