Fix bug when calculating UGRID cell areas when non-spatial coordinates span the discrete axis
When calculating UGRID cell areas with non-spatial coordinates span that span the discrete axis, an IndexError sometimes occurs:
IndexError: Invalid indices [0, 0, 0] for array with shape (13824, 4) >>> print (f) Field: air_pressure_at_mean_sea_level (ncvar%pmsl) -------------------------------------------------- Data : air_pressure_at_mean_sea_level(time(2), ncdim%ensemble(3), ncdim%nMesh2d_face(13824)) Pa Cell methods : time: mean (interval: 6 h) Dimension coords: ncvar%ensemble(ncdim%ensemble(3)) = [0.0, 1.0, 2.0] Auxiliary coords: longitude(ncdim%nMesh2d_face(13824)) = [70.3125, ..., 112.86804962158203] degrees_east : latitude(ncdim%nMesh2d_face(13824)) = [0.8827333450317383, ..., -47.359893798828125] degrees_north : time(time(2)) = [1978-09-01 12:00:00, 1978-09-02 12:00:00] 360_day Topologies : cell:face(ncdim%nMesh2d_face(13824), 4) = [[0, ..., 13755]] >>> f.cell_area(great_circle=True) Traceback ... IndexError: Invalid indices [0, 0, 0] for array with shape (13824, 4)
Whether or not this happens depends on the arbitrary of the auxiliary coordinates stored inside the field (specifically within the embedded Constructs instance).
>>> cf.environment(paths=False) Platform: Linux-5.15.0-94-generic-x86_64-with-glibc2.35 HDF5 library: 1.14.2 netcdf library: 4.9.2 udunits2 library: /home/david/miniconda3/lib/libudunits2.so.0 esmpy/ESMF: 8.4.2 Python: 3.11.4 dask: 2023.12.1 netCDF4: 1.6.4 psutil: 5.9.5 packaging: 23.0 numpy: 1.25.2 scipy: 1.11.3 matplotlib: 3.8.0 cftime: 1.6.2 cfunits: 3.3.6 cfplot: 3.3.0 cfdm: 1.11.0.0 cf: 3.16.0