turns out I was wrong - the UGRID spec does allow for either ordering of dimensions:
"""
The face_dimension attribute specifies which netcdf dimension is used to indicate the index of the face in the connectivity arrays. This is needed because some applications store the data with the fastest varying index first, and some with that index last.
"""
turns out I was wrong - the UGRID spec does allow for either ordering of dimensions:
""" The face_dimension attribute specifies which netcdf dimension is used to indicate the index of the face in the connectivity arrays. This is needed because some applications store the data with the fastest varying index first, and some with that index last. """
So, for instance, the ADCIRC:
face_node_connectivity.dims = (num_node_per_face, num_faces)
is legal, but there should be an attribute in the mesh coord:
face_dimension= 'num_faces'
So we can add that in pre-processing, and use it in the actual code.