The LSU and Parma groups developed, and used for publications, a set of two thorns for analysis of hydro quantities, in particular for mode analysis. We would like to have those included in the Einstein Toolkit. We are aware that a few things are still missing for that (documentation, test suites), but before we go that extra step and create all of that, we want to be sure the following is seen as 'ok':
The main thorn (GRHydro_Analysis, not to be specific to GRHydro, it only inherits hydrobase - could and should probably be renamed) does reductions of quite a few quantities. In practice, the memory required for this turned out to be a problem on some machines. These reductions are done at ANALYSIS, which means even telling Cactus to allocate/deallocate not once, globally, but instead doing that every time step does not help.
Thus, there is a second thorn, a utility thorn called 'TempPool'. It's task is nothing else than to provide an array of grid functions that are always allocated, but which can be used by other thorns for, e.g., reductions - and, and this is the interesting part - can be re-used by other thorns, for other reductions after that; within the same time step in ANALYSIS. This is how TempPool is used by GRHydro_Analysis.
TempPool is not tied to GRHydro_Analysis. Any other thorn can also request storage there, but there currently isn't another thorn doing so. It just seemed to good idea to split this functionality. The book keeping already now makes sure that the number of allocated grid functions is only as large as the maximum any thorn using it requests.
The relevant code can be found here:
I'd like another developer to have a look and give input. Once/If this is deemed ok to be included on technical grounds, we will add the necessary documentation and test suites and make a proper proposal for inclusion.