Update the way DataPostprocessor receives its input.
In the past, the two functions we use to postprocess data got lists of arguments
for the solution, its derivatives, the evaluation points, and normal vectors.
This is not flexible enough: We can not easily add other information that
we have needed in the past or that users have requested, such as a pointer
to the cell we're currently on, or the material-id of the cell.
Rather than adding each possible argument anyone may want to use
individually to the list of the postprocessor function arguments, we use
a technique here that has proven useful in ASPECT: the functions simply
take a reference to a structure that contains these individual pieces
of information. We can extend the members of these structures without
backward compatibility issues because the functions still get a
reference to the same structure, we just grow the structure
itself. Functions that never used the new members of the structure
will continue to work as they always did.
In the beginning the Universe was created. This has made a lot of
people very angry and has been widely regarded as a bad move.
Douglas Adams