It’s probably useful to distinguish between those fields in the restart file that are initial conditions and those that are brought in from ancillary (forcing) data. In the case of the ancillary information, it may be better that we write new ancillary files (this would presumably include the vegetation distribution) and then use the ‘reconfiguration’ step of the UM to bring these into the restart file.
For the new ESM1.6 vegetation distribution I’ve been working on, my ‘nearest neighbour’ for the C/N/P pools had a number of options. Except for veg type 10 (c4 crops) which was new, it only used tiles of the same pft as the one we needed to fill. It did a local fill if it could - I defined this as an average of any tile of that type within +/-2 grid-cells, ignoring area-weighting and whether you hit a boundary of the dataset (i.e. ignored 0=360 longitude). If no tiles existed within this region, I averaged tiles within all longitudes within +/-10 degrees (+/- 8 grid-cells). This covered every case I needed but I wrote in a global average if the local or regional cases didn’t work. If useful, my fortran code is /g/data/p66/rml599/luh2/luh3/restart-fields/modifyCpools.F90.
I guess the main challenge with a tool is whether there is a generic enough solution or whether there are always/often going to be special cases that need to be accommodated. I picked my averaging regions based on a check of how many tiles would be solved at various levels of local or regional averaging.