Coordinates and Domain ¶ x ⃗ ∈ Ω ⊂ R D s \begin{aligned}
\vec{\mathbf{x}} \in \Omega \sub \mathbb{R}^{D_s}
\end{aligned} x ∈ Ω ⊂ R D s where x ⃗ \vec{\mathbf{x}} x is a vector of coordinate values, i.e. x ⃗ = [ x 1 , x 2 , … ] ⊤ \vec{\mathbf{x}}=[x_1, x_2, \ldots]^\top x = [ x 1 , x 2 , … ] ⊤ .
t ∈ T ⊂ R + \begin{aligned}
t \in \mathcal{T} \sub \mathbb{R}^+
\end{aligned} t ∈ T ⊂ R + where t t t is a scalar value along the real number line.
domain: Domain = Domain(xmin, xmax, dx)
Field ¶ u ( x ⃗ , t ) : R D s × R + → R \boldsymbol{u}(\vec{\mathbf{x}}, t): \mathbb{R}^{D_s}\times\mathbb{R}^+ \rightarrow \mathbb{R} u ( x , t ) : R D s × R + → R u: Field = Field(values, domain)
State ¶ A state is a collection of different fields, i.e. u ⃗ = [ u 1 , u 2 , … ] ⊤ \vec{\boldsymbol{u}}=[u_1, u_2, \ldots]^\top u = [ u 1 , u 2 , … ] ⊤
u ⃗ ( x ⃗ , t ) : R D s × R + → R D u \vec{\boldsymbol{u}}(\vec{\mathbf{x}}, t): \mathbb{R}^{D_s}\times\mathbb{R}^+ \rightarrow \mathbb{R}^{D_u} u ( x , t ) : R D s × R + → R D u For example, in the SW we have the height and the velocity vecto,
whereas in the QG equations, we have the potential vorticity and the stream function.
state: State = State(u, v, h)
Partial Differential Equations ¶ ∂ t u ⃗ ( x ⃗ , t ) = F [ u ⃗ ; θ ] ( x ⃗ , t ) F : R D u × R D θ → R D u \begin{aligned}
\partial_t \vec{\boldsymbol{u}}(\vec{\mathbf{x}}, t) &=
\boldsymbol{F}
\left[\vec{\boldsymbol{u}}; \boldsymbol{\theta}\right]
(\vec{\mathbf{x}}, t) && &&
\boldsymbol{F}: \mathbb{R}^{D_u} \times \mathbb{R}^{D_\theta}
\rightarrow \mathbb{R}^{D_u}
\end{aligned} ∂ t u ( x , t ) = F [ u ; θ ] ( x , t ) F : R D u × R D θ → R D u F: Callable = equation_of_motion(t, state, params)
Initial Conditions Function ¶ u ⃗ 0 : = u ⃗ ( x ⃗ , 0 ) = F I C [ u ⃗ ; θ ] ( x ⃗ ) F I C : R D u → R D u x ⃗ ∈ Ω ⊂ R D s \begin{aligned}
\vec{\boldsymbol{u}}_0 :=
\vec{\boldsymbol{u}}(\vec{\mathbf{x}}, 0) &=
\boldsymbol{F}_{IC}
\left[\vec{\boldsymbol{u}}; \boldsymbol{\theta}\right]
(\vec{\mathbf{x}})
&& &&
\boldsymbol{F}_{IC}: \mathbb{R}^{D_u}
\rightarrow \mathbb{R}^{D_u} && &&
\vec{\mathbf{x}} \in \Omega \sub \mathbb{R}^{D_s}
\end{aligned} u 0 := u ( x , 0 ) = F I C [ u ; θ ] ( x ) F I C : R D u → R D u x ∈ Ω ⊂ R D s F_ic: Callable = FIC(domain, params)
Boundary Conditions Function ¶ u ⃗ b : = u ⃗ ( x ⃗ , t ) = F B C [ u ⃗ ; θ ] ( x ⃗ ) F B C : R D u → R D u x ⃗ ∈ ∂ Ω ⊂ R D s t ∈ T ⊂ R + \begin{aligned}
\vec{\boldsymbol{u}}_b :=
\vec{\boldsymbol{u}}(\vec{\mathbf{x}}, t) &=
\boldsymbol{F}_{BC}
\left[\vec{\boldsymbol{u}}; \boldsymbol{\theta}\right]
(\vec{\mathbf{x}}) && &&
\boldsymbol{F}_{BC}: \mathbb{R}^{D_u}
\rightarrow \mathbb{R}^{D_u} && &&
\vec{\mathbf{x}} \in \partial\Omega \sub \mathbb{R}^{D_s} && &&
t \in \mathcal{T} \sub \mathbb{R}^+
\end{aligned} u b := u ( x , t ) = F BC [ u ; θ ] ( x ) F BC : R D u → R D u x ∈ ∂ Ω ⊂ R D s t ∈ T ⊂ R + F_bc: Callable = FBC(t, state, params)
Time Stepper ¶ u ⃗ ( x ⃗ , t ) = u ⃗ ( x ⃗ , 0 ) + ∫ 0 t F [ u ⃗ ; θ ] ( x ⃗ , τ ) d τ \vec{\boldsymbol{u}}(\vec{\mathbf{x}}, t) =
\vec{\boldsymbol{u}}(\vec{\mathbf{x}}, 0) +
\int_0^t
\boldsymbol{F}
\left[\vec{\boldsymbol{u}}; \boldsymbol{\theta}\right]
(\vec{\mathbf{x}}, \tau) d\tau u ( x , t ) = u ( x , 0 ) + ∫ 0 t F [ u ; θ ] ( x , τ ) d τ state: State = TimeStepper(F, params, state, t0, t1, dt)
Summary Table ¶ Symbol Name R D s \mathbb{R}^{D_s} R D s Spatial Coordinate Space R + \mathbb{R}^+ R + Temporal Coordinate Space x ⃗ \vec{\mathbf{x}} x Spatial Coordinates t t t Temporal Coordinate Ω \Omega Ω Spatial Domain ∂ Ω \partial\Omega ∂ Ω Boundary of Spatial Domain T \mathcal{T} T Temporal Domain u u u scalar field u \boldsymbol{u} u vector field u ⃗ \vec{\boldsymbol{u}} u state F \boldsymbol{F} F equation of motion operator (RHS ) F I C \boldsymbol{F}_{IC} F I C initial condition function F B C \boldsymbol{F}_{BC} F BC boundary condition functions θ \boldsymbol{\theta} θ parameters (PDE , spatiotemporal discretization) ∫ , TimeStepper \int,\text{TimeStepper} ∫ , TimeStepper Time stepper