Draft: [PL/TRM] Deduplicated IP data accessors
This MR adds some utility functions for:
- accessing IP data in IPWriter compatible storage order (as opposed to extrapolator compatible storage order; both orders are transposed to each other)
- accessing vector valued IP data
- extrapolating data having IPWriter compatible storage order
Finally, the IP data accessors have been deduplicated: We don't need two accessors (one for IPWriter, one for extrapolator) for IP data anymore.
Subsequently, the following will be implemented:
- deduplication of IP data access in all processes
- simplifying the IP data accessor signature for the extrapolator (e.g., do not pass time, solution vector, dof table anymore).
Note: In this MR I chose that the IPWriter storage order is the central one. Extrapolator compatible storage will be derived from that. That might entail some small performance losses. But on the other hand that choice simplifies the signature of IP data accessors, cf:
std::vector<double> getSigma() const;
vs.
std::vector<double> const& getIntPtSigma(
const double t,
std::vector<GlobalVector*> const& x,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const;
Follow-up of !4237 (merged).