CPL_field extends the ndarray to build up a physical field. This is an encapsulated relationship, the field object contains an array of field data, extending it to include domain extents, functions to interpolate or average values in space. So far, there is no inheritance used with field as we can get the required flexitbility from dynamic dispatch (e.g. add_to_array can include a radius, in which case the fraction inside a cell will be calculated).