This is an update that comes from our higher-resolution model fork but that I'd like to backport as it is useful in general but it touches the chemistry API.
The idea is to add a bunch of functions to the chemisty interface that return what Z and what the individual metal array is to be used in the different sections of the code (SF, feedback, cooling). The idea is then that these modules do not have to know what the exact structure of the chemistry data is. In our case it allows us to switch between a model that uses smoothed metals and one that doesn't just by changing the compilation flag for chemistry.
It does not break GEAR but maybe you want to adopt the same chemistry functions as well. Feel free to push to this branch if you want to.