Skip to content

Handle auxiliary fields in EquationSystem and pass them into the filters

Kilian Lackhove requested to merge lackhove/nektar:feature/AuxFields2 into master

This MR is my latest approach to passing aux fields into the filters. This is useful because it allows access o additional fields, such as the velocity in the ADRSolver or the forcing fields of the various forcings. See !548 (closed) and !559 (closed) for earlier implementations.

The basic idea is to pass the coefficients, expansions and metadata separately into the filters. This should be compatible with the planned data/logic split of the ExpLists, @ccantwel mentioned in !548 (closed). The v_ExtraFldOutput method is fully replaced by this new implementation and all solvers were adjusted accordingly.

Currently, the HistoryPoints and CheckPoint filters are fully ported and extended to handle the auxFields. Since it has all the metadata available, the Checkpoints filter now has all the features the checkpoint handling of UnsteadySystem has. The FieldConvert filter was adjusted to demonstrate how the other filters might be ported. At this time, it does ignore the auxFields, but that can be added in the future.

The other filters now derive from an abstract LegacyFilter class which provides backwards functionality and work just as before.

the only part i am not that happy with is the string based fieldMetaDataMap.I hope we can replace that with something more flexible once the new structure of the ExpList is clearer.

Until now, i have been maintaining my own copy of the HistoryPoints filter in the APESolver, similar to what is done in the CardiacEPSolver, but i feel like libSolverUtils is a better place for this functionality as it reduces code duplication and can be used to simplify the Chekpointing in the future.

Merge request reports