Geometry
Global Geometry
ClimaCore.Geometry.AbstractGlobalGeometry — TypeAbstractGlobalGeometryDetermines the conversion from local coordinates and vector bases to a Cartesian basis.
ClimaCore.Geometry.CartesianGlobalGeometry — TypeCartesianGlobalGeometry()Specifies that the local coordinates align with the Cartesian coordinates, e.g. XYZPoint aligns with Cartesian123Point, and UVWVector aligns with Cartesian123Vector.
LocalGeometry
ClimaCore.Geometry.LocalGeometry — TypeLocalGeometryThe necessary local metric information defined at each node.
Internals
ClimaCore.Geometry.Δz_metric_component — FunctionΔz_metric_component(::Type{<:AbstractPoint})The index of the z-component of an abstract point in an AxisTensor.
Coordinates
ClimaCore.Geometry.AbstractPoint — TypeAbstractPointRepresents a point in space.
The following types are supported:
XPoint(x)YPoint(y)ZPoint(z)XYPoint(x, y)XZPoint(x, z)XYZPoint(x, y, z)LatPoint(lat)LongPoint(long)LatLongPoint(lat, long)LatLongZPoint(lat, long, z)Cartesian1Point(x1)Cartesian2Point(x2)Cartesian3Point(x3)Cartesian12Point(x1, x2)Cartesian13Point(x1, x3)Cartesian123Point(x1, x2, x3)
ClimaCore.Geometry.float_type — Functionfloat_type(T)Return the floating point type backing T: T can either be an object or a type.
Points represent locations in space, specified by coordinates in a given coordinate system (Cartesian, spherical, etc), whereas vectors, on the other hand, represent displacements in space.
An analogy with time works well: times (also called instants or datetimes) are locations in time, while, durations are displacements in time.
Note 1: Latitude and longitude are specified via angles (and, therefore, trigonometric functions: cosd, sind, acosd, asind, tand,...) in degrees, not in radians. Moreover, lat (usually denoted by $\theta$) $\in [-90.0, 90.0]$, and long (usually denoted by $\lambda$) $\in [-180.0, 180.0]$.
Note 2:: In a Geometry.LatLongZPoint(lat, long, z), z represents the elevation above the surface of the sphere with radius R (implicitly accounted for in the geoemtry).
Note 3: There are also a set of specific Cartesian points (Cartesian1Point(x1), Cartesian2Point(x2), etc). These are occasionally useful for converting everything to a full Cartesian domain (e.g. for visualization purposes). These are distinct from XYZPoint as ZPoint can mean different things in different domains.