Skip to content

Commit 0f719fa

Browse files
authored
Merge pull request #2322 from onzerem/on/advect-heat-doc
Add 1D Heat and Advection Examples to Documentation
2 parents 852f253 + 41cf104 commit 0f719fa

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

docs/src/examples.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,103 @@
22

33
## 1D Column examples
44

5+
### Heat equation
6+
7+
The 1D Column heat example in [`examples/column/heat.jl`](https://github.com/CliMA/ClimaCore.jl/blob/main/examples/column/heat.jl).
8+
9+
#### Equations and discretizations
10+
11+
Follows the heat equation
12+
13+
```math
14+
\begin{equation}
15+
\frac{\partial T}{\partial t} = \alpha \cdot \nabla^2 T.
16+
\label{eq:1d-column-heat-continuity}
17+
\end{equation}
18+
```
19+
20+
This is discretized using the following
21+
22+
```math
23+
\begin{equation}
24+
\frac{\partial T}{\partial t} \approx \alpha \cdot D(G(T)).
25+
\label{eq:1d-column-heat-discrete}
26+
\end{equation}
27+
```
28+
29+
#### Prognostic Variables
30+
31+
* ``\alpha``: thermal diffusivity measured in $\frac{m^2}{s}$
32+
* ``T``: temperature
33+
34+
#### Differentiation Operators
35+
36+
* ``D`` is the [face-to-center divergence](https://clima.github.io/ClimaCore.jl/dev/operators/#ClimaCore.Operators.DivergenceF2C) operator, called `divf2c` in the example code
37+
* ``G`` is the [center-to-face gradient](https://clima.github.io/ClimaCore.jl/dev/operators/#ClimaCore.Operators.GradientC2F) operator, called `gradc2f` in the example code
38+
39+
#### Set Up
40+
41+
This test case is set up in a 1D column domain ``z \in [0, 1]`` and discretized into a mesh of 10 elements. A homogeneous Dirichlet boundary condition is set at the bottom boundary, `bcs_bottom`, setting the temperature to 0. A Neumann boundary condition is applied to the top boundary, `bcs_top`, setting the temperature gradient to 1.
42+
43+
### Advection equation
44+
45+
The 1D Column advection example in [`examples/column/advect.jl`](https://github.com/CliMA/ClimaCore.jl/blob/main/examples/column/advect.jl).
46+
47+
#### Equations and Discretizations
48+
49+
Follows the advection equation
50+
51+
```math
52+
\begin{equation}
53+
\frac{\partial \theta}{\partial t} = -\frac{\partial (v \theta)}{\partial z} .
54+
\label{eq:1d-column-advection-continuity}
55+
\end{equation}
56+
```
57+
This is discretized using the following
58+
59+
```math
60+
\begin{equation}
61+
\frac{\partial \theta}{\partial t} \approx - D(v, \theta) .
62+
\label{eq:1d-column-advection-discrete}
63+
\end{equation}
64+
```
65+
66+
#### Prognostic Variables
67+
68+
* ``\theta``: the scalar field
69+
* ``v``: the velocity field
70+
71+
#### Tendencies
72+
73+
The example code solves the equation for 4 different tendencies with the following discretizations:
74+
75+
- Tendency 1:
76+
77+
$$D = \partial(UB),$$
78+
79+
where ``\partial`` is the [`face-to-center divergence`](https://clima.github.io/ClimaCore.jl/dev/operators/#ClimaCore.Operators.DivergenceF2C) and $UB$ is the [`center-to-face upwind biased product`](https://clima.github.io/ClimaCore.jl/dev/operators/#ClimaCore.Operators.UpwindBiasedProductC2F) operator.
80+
- Tendency 2:
81+
82+
$$D = \partial(UB) + \textrm{fcc}(v, \theta),$$
83+
84+
where $\textrm{fcc}(v, \theta)$ is the [`center-to-center flux correction`](https://github.com/CliMA/ClimaCore.jl/blob/main/src/Operators/finitedifference.jl#L2617) operator.
85+
- Tendency 3:
86+
87+
$$D = A,$$
88+
89+
where $A$ is the [`center-to-center vertical advection`](https://clima.github.io/ClimaCore.jl/dev/operators/#ClimaCore.Operators.AdvectionC2C) operator.
90+
- Tendency 4:
91+
92+
$$D = A + \textrm{fcc}(v, \theta),$$
93+
94+
where $\textrm{fcc}(v, \theta)$ is the [`center-to-center flux correction`](https://github.com/CliMA/ClimaCore.jl/blob/main/src/Operators/finitedifference.jl#L2617) operator.
95+
96+
#### Set Up
97+
98+
This test case is set up in a 1D column domain ``z \in [0, 4\pi]``, discretized into a mesh of 128 elements. The velocity field is defined as a sinusoidal wave. The boundary conditions are operator dependent, so they depend on the tendency.
99+
* For tendencies 1 and 2 where the upwind biased operator ``UB`` is used, the left boundary is defined as ``sin(a - t)``. The right boundary is ``sin(b - t)``. Here ``a`` and ``b`` are the left and right bounds of the domain.
100+
* For tendencies 3 and 4, where the advection operator ``A`` is used, the left boundary is defined as ``sin(-t)``. The right boundary is extrapolated, meaning its value is set to the closest interior point.
101+
5102
## 2D Cartesian examples
6103

7104
### Flux Limiters advection

0 commit comments

Comments
 (0)