Triangular Mesh with ICON Topology

The classes ICONMultimeshNodes and ICONCellGridNodes define node sets based on an ICON icosahedral mesh:

  • class ICONCellGridNodes: data grid, representing cell circumcenters

  • class ICONMultimeshNodes: hidden mesh, representing the vertices of a grid hierarchy

Both classes, together with the corresponding edge builders

  • class ICONTopologicalProcessorEdges

  • class ICONTopologicalEncoderEdges

  • class ICONTopologicalDecoderEdges

are based on the mesh hierarchy that is reconstructed from an ICON mesh file in NetCDF format, making use of the refinement_level_v and refinement_level_c property contained therein.

  • refinement_level_v[vertex] = 0,1,2, …,

    where 0 denotes the vertices of the base grid, ie. the icosahedron including the step of root subdivision RXXB00.

  • refinement_level_c[cell]: cell refinement level index such that value 0 denotes the cells of the base grid, ie. the icosahedron including the step of root subdivision RXXB00.

To avoid multiple runs of the reconstruction algorithm, a separate ICONNodes instance is created and used by the builders, see the following YAML example:

nodes:
  # ICON mesh
  icon_mesh:
    node_builder:
      _target_: anemoi.graphs.nodes.ICONNodes
      name: "icon_grid_0026_R03B07_G"
      grid_filename: "icon_grid_0026_R03B07_G.nc"
      max_level_multimesh: 3
      max_level_dataset: 3
  # Data nodes
  data:
    node_builder:
      _target_: anemoi.graphs.nodes.ICONCellGridNodes
      icon_mesh: "icon_mesh"
  # Hidden nodes
  hidden:
    node_builder:
      _target_: anemoi.graphs.nodes.ICONMultimeshNodes
      icon_mesh: "icon_mesh"

edges:
  # Processor configuration
  - source_name: "hidden"
    target_name: "hidden"
    edge_builders:
    - _target_: anemoi.graphs.edges.ICONTopologicalProcessorEdges
      icon_mesh: "icon_mesh"