Version
2026.7.1
How did you install UXarray?
Source
What happened?
We encountered an instance while exploring #1717 that lead to different connectivity dimensions existing on the grid after reading in the file located at test/meshfiles/ugrid/fesom/fesom.mesh.diag.nc. Like we saw the dimensions of face_edge_connectivity as (n_face, n_max_face_nodes) vs it normally being (n_face, n_max_face_edges). Below is a few examples of other meshfiles being read in, and looking at their connectivity. All other examples were read in as expected, with one exception that had a different outcome.
Relation to 1717
This is a seemingly separate but related concern to what we saw with n2 being read in instead of two. We want to decide and document this behavior, where n_max_face_nodes can take the place of n_max_face_faces or n_max_face_edges, and if this can cause downstream problems.
This is what we saw with this file (face_X_connectivity ->n_max_face_nodes):

This is what we expected, and saw in other files (face_X_connectivity -> n_max_face_X):

File location / Attributes
This was a file in the FESOM folder, within the existing ugrid folder, as opposed to the standalone FESOM folder. It was read in as a UGRID file following the UGRID pathway within the grid creation pipeline, not the FESOM pipeline.
We attempted to look into whether this is a FESOM problem, or a UGRID problem, and it showed to be a little hard to narrow down and decide where to go from here. Given this was very unexpected, we need to do more testing to narrow down.
More examples
Here's more examples from both different and similar files:
They each varied a lot, and were shown to contain a multitude of different connectivities, but none had the wrong names or had different dimensions like we saw in the original example.
- Some had many connectivities existing on load
- Some had nearly none or 1
- Some were UGRID, some were not
- A regular FESOM2 file was read fine
fesom/soufflet-netcdf/grid.nc
After notes:
- Ugrid connectivity names exist in uxarray/blob/main/uxarray/conventions/ugrid.py and are defined as
face_node_connectivity -> ('n_face', 'n_max_face_nodes')
face_edge_connectivity -> ('n_face', 'n_max_face_edges')
face_face_connectivity -> ('n_face', 'n_max_face_faces')
edge_node_connectivity -> ('n_edge', 'two')
edge_face_connectivity -> ('n_edge', 'two')
node_edge_connectivity -> ('n_node', 'n_max_node_edges')
node_face_connectivity -> ('n_node', 'n_max_node_faces')
- This MPAS file is also read in as UGRID, which was unexpected:
- You can use
grid.source_grid_spec to look at which path the grid was read in though: (MPAS, UGRID, ICON, FESOM2, ESFM, Exodus, Scrip)
What did you expect to happen?
All files to be read in and have their connectivities and their dimensions to match the conventions described above
Can you provide a MCVE to repoduce the bug?
MESHFILES = "../../uxarray/test/meshfiles/"
mesh_diag = ux.open_grid(MESHFILES + "ugrid/fesom/fesom.mesh.diag.nc")
mesh_diag
Version
2026.7.1
How did you install UXarray?
Source
What happened?
We encountered an instance while exploring #1717 that lead to different connectivity dimensions existing on the grid after reading in the file located at test/meshfiles/ugrid/fesom/fesom.mesh.diag.nc. Like we saw the dimensions of
face_edge_connectivityas (n_face,n_max_face_nodes) vs it normally being (n_face,n_max_face_edges). Below is a few examples of other meshfiles being read in, and looking at their connectivity. All other examples were read in as expected, with one exception that had a different outcome.Relation to 1717
This is a seemingly separate but related concern to what we saw with
n2being read in instead oftwo. We want to decide and document this behavior, wheren_max_face_nodescan take the place ofn_max_face_facesorn_max_face_edges, and if this can cause downstream problems.This is what we saw with this file (

face_X_connectivity->n_max_face_nodes):This is what we expected, and saw in other files (

face_X_connectivity->n_max_face_X):File location / Attributes
This was a file in the FESOM folder, within the existing ugrid folder, as opposed to the standalone FESOM folder. It was read in as a UGRID file following the UGRID pathway within the grid creation pipeline, not the FESOM pipeline.
We attempted to look into whether this is a FESOM problem, or a UGRID problem, and it showed to be a little hard to narrow down and decide where to go from here. Given this was very unexpected, we need to do more testing to narrow down.
More examples
Here's more examples from both different and similar files:
They each varied a lot, and were shown to contain a multitude of different connectivities, but none had the wrong names or had different dimensions like we saw in the original example.
fesom/soufflet-netcdf/grid.ncAfter notes:
grid.source_grid_specto look at which path the grid was read in though: (MPAS, UGRID, ICON, FESOM2, ESFM, Exodus, Scrip)What did you expect to happen?
All files to be read in and have their connectivities and their dimensions to match the conventions described above
Can you provide a MCVE to repoduce the bug?