Below is my preferred notation for modeling.
Spatiotemporal Field ¶ Coordinates ¶ Spatial Coordinates ¶ s ∈ Ω ⊆ R D s \mathbf{s} \in \Omega \subseteq \mathbb{R}^{D_s} s ∈ Ω ⊆ R D s For example, we can have:
Cartesian : s = [ x , y , z ] Spherical : s = [ Longitude , Latitude , Depth/Altitude ] \begin{aligned}
\text{Cartesian}: && && \mathbf{s} &= [x,y,z]\\
\text{Spherical}: && && \mathbf{s} &= [\text{Longitude},\text{Latitude},\text{Depth/Altitude}]
\end{aligned} Cartesian : Spherical : s s = [ x , y , z ] = [ Longitude , Latitude , Depth/Altitude ] Some spatial coordinate systems include some idealized ones like Spherical, Cartesian and Cylindrical.
Cartesian Coordinates : s = [ x , y , z ] ∈ R 3 Spherical Coordinates : s = [ λ , φ , r ] ∈ R 3 Cylindrical Coordinates : s = [ ρ , φ , z ] ∈ R 3 \begin{aligned}
\text{Cartesian Coordinates}: &&
\mathbf{s} &= [x,y,z] \in\mathbb{R}^{3} \\
\text{Spherical Coordinates}: &&
\mathbf{s} &= [\lambda, \varphi, r] \in\mathbb{R}^{3} \\
\text{Cylindrical Coordinates}: &&
\mathbf{s} &= [\rho, \varphi, z] \in\mathbb{R}^{3}
\end{aligned} Cartesian Coordinates : Spherical Coordinates : Cylindrical Coordinates : s s s = [ x , y , z ] ∈ R 3 = [ λ , φ , r ] ∈ R 3 = [ ρ , φ , z ] ∈ R 3 However, there are some more geographic coordinate systems. Most of these can be found within the Coordinate Reference System (CRS).
Note : in many cases, we have coordinate transformations whereby we can move between different coordinate systems.
For example, we can simply move between Cartesian coordinate system and the spherical coordinate system.
There are also many examples of the Coordinate Reference System (CRS) which allows users to use their own custom system depending upon their field of view.
Temporal Coordinates ¶ t ∈ T ⊆ R + t \in \mathcal{T} \subseteq \mathbb{R}^+ t ∈ T ⊆ R + For example, we can have:
t = [ seconds , minutes , hours , days , seasons , years , … ] \begin{aligned}
t &= [\text{seconds},\text{minutes},\text{hours},\text{days},\text{seasons},\text{years},\ldots]
\end{aligned} t = [ seconds , minutes , hours , days , seasons , years , … ] Domain ¶ Spatial Domain ¶ The domain is the region or convex hull which is a subset of the coordinate space, R \mathbb{R} R .
Spatial Domain : x ∈ Ω ⊆ R D s \begin{aligned}
\text{Spatial Domain}: &&
\boldsymbol{x}\in\Omega\subseteq\mathbb{R}^{D_s}
\end{aligned} Spatial Domain : x ∈ Ω ⊆ R D s The spatial domain can be though of as the convex hull.
Boundaries ¶ We also have boundaries associated with the domain, i.e., along the convex hull of the spatial domain or at the end-points of the line.
Spatial Domain Boundaries : x ∈ ∂ Ω ⊆ R D s \begin{aligned}
\text{Spatial Domain Boundaries}: &&
\boldsymbol{x}\in\partial\Omega\subseteq\mathbb{R}^{D_s}
\end{aligned} Spatial Domain Boundaries : x ∈ ∂ Ω ⊆ R D s Temporal Domain ¶ The domain is the region or convex hull which is a subset of the coordinate space, R \mathbb{R} R .
Temporal Domain : t ∈ T ⊆ R + \begin{aligned}
\text{Temporal Domain}: &&
t\in\mathcal{T}\subseteq\mathbb{R}^+
\end{aligned} Temporal Domain : t ∈ T ⊆ R + The temporal domain is a real, ordered number line of positive integers.
Boundaries ¶ We also have boundaries associated with the domain, i.e., along the convex hull of the spatial domain or at the end-points of the line.
Temporal Domain Boundaries : t ∈ ∂ T ⊆ R + \begin{aligned}
\text{Temporal Domain Boundaries}: &&
t\in\partial\mathcal{T}\subseteq\mathbb{R}^+
\end{aligned} Temporal Domain Boundaries : t ∈ ∂ T ⊆ R + Field ¶ A field is a scaler or vector-value which is associated with a coordinate within some domain.
u ⃗ = u ⃗ ( x , t ) u ⃗ : R D s × R + → R D u \begin{aligned}
\vec{\boldsymbol{u}}=\vec{\boldsymbol{u}}(\boldsymbol{x}, t) && &&
\vec{\boldsymbol{u}}:\mathbb{R}^{D_s}\times\mathbb{R}^+\rightarrow \mathbb{R}^{D_u}
\end{aligned} u = u ( x , t ) u : R D s × R + → R D u These could include some essential variables like height, temperature, or salinity. However, these could also be some derived variables like NDVI, sadness or poverty. In the geoscience case, thes can include some subjective variables like polar amplification, tropical amplification, and/or vortex stratification.
Pseudo-Code ¶ # initialize domain
domain: Domain = ...
# initialize values
init_fn: Callable = ...
u_values: Array["Nx Ny"] = init_fn(domain)
# initialize field
u: Field = Field(u_values, domain)
Discretized Domain ¶ Discretized Spatial Domain : x ∈ Ω ⊆ R D s Discretized Temporal Domain : t ∈ T ⊆ R + \begin{aligned}
\text{Discretized Spatial Domain}: &&
\boldsymbol{x}\in\boldsymbol{\Omega}\subseteq\mathbb{R}^{D_s} \\
\text{Discretized Temporal Domain}: &&
t\in\boldsymbol{\mathcal{T}}\subseteq\mathbb{R}^+
\end{aligned} Discretized Spatial Domain : Discretized Temporal Domain : x ∈ Ω ⊆ R D s t ∈ T ⊆ R + Boundaries ¶ We also have boundaries associated with the domain, i.e., along the convex hull of the spatial domain or at the end-points of the line.
Spatial Domain Boundaries : x ∈ ∂ Ω ⊆ R D s Temporal Domain Boundaries : t ∈ ∂ T ⊆ R + \begin{aligned}
\text{Spatial Domain Boundaries}: &&
\boldsymbol{x}\in\partial\boldsymbol{\Omega}\subseteq\mathbb{R}^{D_s} \\
\text{Temporal Domain Boundaries}: &&
t\in\partial\boldsymbol{\mathcal{T}}\subseteq\mathbb{R}^+
\end{aligned} Spatial Domain Boundaries : Temporal Domain Boundaries : x ∈ ∂ Ω ⊆ R D s t ∈ ∂ T ⊆ R + Coordinates ¶ Because we have a discretized domain, we don’t have an infinite set of coordinates that we can get from the domain. So, we can stack
Spatial Coordinates : X ∈ R D Ω × D s Temporal Coordinates : T ∈ R D T \begin{aligned}
\text{Spatial Coordinates}: &&
\mathbf{X}\in\mathbb{R}^{D_\Omega\times D_s} \\
\text{Temporal Coordinates}: &&
\mathbf{T}\in\mathbb{R}^{D_\mathcal{T}}
\end{aligned} Spatial Coordinates : Temporal Coordinates : X ∈ R D Ω × D s T ∈ R D T StepSize ¶ Again, because we have a discretized domain, we don’t have an infinite set of coordinates that we can get from the domain. In addition to stacking the coordinates, we can also draw
Spatial Coordinate Step : Δ x ∈ R D Ω × D s Temporal Coordinates : Δ t ∈ R D T \begin{aligned}
\text{Spatial Coordinate Step}: &&
\Delta\mathbf{x}\in\mathbb{R}^{D_\Omega\times D_s} \\
\text{Temporal Coordinates}: &&
\Delta t\in\mathbb{R}^{D_\mathcal{T}}
\end{aligned} Spatial Coordinate Step : Temporal Coordinates : Δ x ∈ R D Ω × D s Δ t ∈ R D T In many cases, we can make some simplifications about the size. For example, we can have a constant step size in space, e.g., Cartesian grid.
dx: Array[""] = ...
dy: Array[""] = ...
We can have a variable stepsize in each direction independently. This is analogous to a Rectilinear grid.
dx: Array["Dx"] = ...
dy: Array["Dy"] = ...
We can also have a variable stepsize in each direction. This is often referred to as a Curvilinear Grid.
dx: Array["Dx Dy"] = ...
dy: Array["Dx Dy"] = ...