Olly Lomax (MetOffice) presented on implementing the cubed sphere mesh in atlas:

 

Q&A:

Dan Holdaway: A comment on the interpolation of staggered winds: there is no direct interpolation of D-Grid winds. Winds are instead interpolated using 4th order interpolation to the A-Grid. They are also rotated to east-north coordinates so they can be interpolated to another A-Grid or to observation locations. Since it’s a 4th order interpolation, it’s quite accurate. If using grid-to-grid interpolation they are interpolated back to the D-Grid with rotation to the new grid coordinate.

Olly: We use finite element representation of the winds which is discontinuous, which can add a complication because we generally want a continuous interpolant.


Dan: The main issue with fv3 isn’t the projection, but the inverse of the projection, because the projection is not a continuous function.

Olly: There can be a couple of ways out of it. Elegant: fitting a high order bivariate polynomial; and hacky: taking a mesh generated in atlas and moving points around, the kd-tree should be able to find the moved cells.


Chris Snyder: Olly and Dan: Could you say more precisely what the projection does, or how it is specified?

Olly: in a simplest context the projection takes computational coordinate x, y  and maps it to lon, lat. Usually one of the ways is easy, and the other not.

Chris: Is it a continuous function?

Olly: Yes, the intention is that projection is continuous.


Dan: The experience is that it can be quite difficult to add a grid to atlas. What would it take to add another grid? Do you plan to document the process?

Olly: I have documented the interpolation, but not for the cubed sphere grid yet (in the plans). A lot of the standard grids are in atlas. Mesh generation and bookkeeping for the halo points are the hardest parts. Difficulty of mesh generation varies between geometries. One could also use Delaunay triangulation, but it can be quite degenerate. Unstructured mesh can be used: it would be reasonable for simple cases.


Dan: Have you tried comparing interpolating to Gaussian from Unstructured vs from Cubed Sphere?

Olly: We haven’t done it yet. I suspect gains in accuracy aren’t that big. Difficulty with Unstructured (i.e. Delaunay) for cubed sphere: doesn’t domain-decompose well, and k-nearest neighbor isn’t as accurate as the interpolation on the structured grid.


Andrew Lorenc: Most models are designed so their u,v directions do not change on the grid scale.  So the model, u,v can be interpolated individually.

Olly: Yes, we do something similar.


Yonggang Yu: Can we input two random sets of global grid points, Grid-A and Grid-B, asking atlas to interpolate in between the two automatically?

Olly: The general rule is: grid A has to have a fully implemented geometry (functionspace and mesh), grid B only has to have defined lons/lats.


Tom Auligne: how close are we to using atlas in interpolation in H(x) (don’t need an inverse, just the adjoint).

Olly: It depends. Cubed-sphere specific one is a bit of work. Atlas has “free” adjoints (because it uses sparse matrix representation for weights). Interpolation to obs just through atlas is almost entirely there. But if the model doesn’t have an implementation of a functionspace, it doesn’t help.

Yannick: as part of GetValues restructuring we’ll add an option for the models that have functionspace implemented. The ones that don’t will default to unstructured interpolation which would still work.

Olly: Absolutely, and the unstructured interpolation is fantastic in that regard.

  • No labels