Skip to content

Mesh ideas

Simon Byrne edited this page Jul 27, 2021 · 2 revisions

Currently ClimaCore:

  1. Domain: mathematical domain, e.g. RectangularDomain
  2. Mesh: how to divide up domain into elements, e.g. EquispacedRectangular
  3. Topology: how the elements are connected
  4. Space: place quadrature points, compute metric terms

Warping

  1. Wrapper around a domain WarpedDomain(domain, (x,y) -> (x, y + sin(x))
  2. Mesh: applied to the underlying domain
  3. Topology: applied to the underlying mesh
  4. Space: place quadrature points on underlying mesh, then transform (and calculate Jacobian, etc)

CubedSphere

  1. domain = SphereDomain(radius=...)
  2. mesh = EquiangularCubedSphere(domain)
  • 6 charts
    • each with their own warping function (SquareDomain -> SphereDomain)
    • each has their own "flat" mesh, which might connect to other meshes?
  • implicit underlying cube mesh, which has 6 facets/patches/charts
  1. Topology:
  • CubeTopology:
    • store # faces per cube
    • has 6 facets
  • Unstructured
  1. Space: rule to place nodes & compute Jacobians a. directly from warp func b. via polynomial interpolations (a la ClimateMachine) c. Guba (specific to sphere: bilinear interpolate, re-normalize)

Fully unstructured...

Key ideas

  • a warped mesh has an underlying "flat" mesh, with a warping function from (flatcoord, facet) -> coord
  • placing quadrature points/dofs & grid refinement require a flat mesh
    • alternatively we can place quadrature points like HOMME
  • topology/connectivity depends only on the flat mesh (can use standard grid partitioning)
  • some notion of facets/charts: a warping function is homeomorphic within a given chart (i.e. we can compute partial derivatives)
Clone this wiki locally