The current ice_grid module is unwieldy and the file is >4000 lines.
There is lots of discussion about possible ways to split this up here
We decided it was not worth it to try and split the ice_grid module without changing the interfaces to/from it. The best approach seemed to be keep the current ice_grid module, and that would contain the public grid data, and then move all methods out into a group of other modules. Each different grid load method (e.g. gridbox, popgrid, rectgrid) could then access the public data.
Another idea would be to keep the data in module ice_grid and have that be the "data" module. Then we could move the current public methods into a separate module called something like ice_grid_methods. Then the use statement only has to change for CICE subroutines that use the methods, not the data. We could then add some middle layers called something like ice_grid_popgrid, ice_grid_momgrid, ice_grid_othergrids and also some infrastructure files like ice_grid_bathy and ice_grid_average if that would work. Personally, I'm not convinced this is the way to go overall. I'm not that troubled by the ice_grid file as it stands and I worry that if things get split apart, we add some risk that a change in one file for one grid breaks another grid implementation. If it's all in one file, we sort of force it to be "one".
The obvious candidates for new modules are the bathymetry - see #987 and the grid average / neighbour routines.
The current ice_grid module is unwieldy and the file is >4000 lines.
There is lots of discussion about possible ways to split this up here
We decided it was not worth it to try and split the ice_grid module without changing the interfaces to/from it. The best approach seemed to be keep the current ice_grid module, and that would contain the public grid data, and then move all methods out into a group of other modules. Each different grid load method (e.g. gridbox, popgrid, rectgrid) could then access the public data.
This approach is summarised here:
The obvious candidates for new modules are the bathymetry - see #987 and the grid average / neighbour routines.