In nextSIM-DG, fields that are treated as DGFields by the model are often initialised from HField data in an initial condition file. They may subsequently be written out as DGField restarts and later runs can read in the restart from DGField. This means that we need to separate out the reading and writing part of a field to improve generality. The overloaded = operator of ModelArray may be used to "project" from HField to DGField so we'll probably need to make use of this.