# Geomorphology Model#

This is a basic implementation of a geomorphology model, combining erosion due to rainfall and toppling with tectonic uplift. It is implemented as a stochastic cellular automaton grid, where the state of each cell $$i$$ consists of the topological height $$h_{t,i}$$ (double), the drainage area to a cell, and the watercolumn $$w_{t,i}$$ (double). In the beginning, the heights of the cells represent a (discretized) inclined plane. Rainfall is encapsulated in the drainage network representing a river system. Drainage is always passed from one cell to its lowest grid neighbor; sinks are filled with water (watercolumn) and the overflow receives the drainage upstream from the lake. The higher the drainage area to a cell, the more water flows over this cell. Stream power erodes sediments over time. Additionally, a stochastic process of toppling is considered.

## Initial Configuration#

In order to observe the formation of a river network, the cell heights are initialized as an inclined plane. Denoting the coordinates of a cell $$i$$ as $$x_i, y_i$$, its initial height is given by

$h_{0,i} = \Delta h + s \cdot y_i.$

Negative topological heights are forbidden here and set to 0, i.e. the normal distribution is cut at 0.

The drainage network is a fictional construct, integrating continuous rainfall over time. It translates to the size and stream power of a river at the cell.

## Algorithm#

The erosion process is implemented by asynchronously updating all the cells (in one time step $$t$$) according to the following steps:

1. Uplift:

The height of each cell is incremented by the normally distributed $$u$$ that represents uplift.

2. Set drainage network:

1. Map all cells to their lowest neighbor; if none is lower than the cell itself, the cell is mapped to itself.

2. Fill sinks (no lower neighbor) with water, such that a lake forms and one of the lake cells has a lower neighbor or is an outflow boundary. All lake cells point to this cell.

3. Set drainage area. For every cell, pass the cells assigned drainage area (default 1., cummulated with that receved from other already called cells) downstream through the already initialized network (adding the drainage area to every cell on the way) and dump it on any cell passed by, that was not yet called or is an outflow boundary.

3. Stream power erosion:

$\frac{dz}{dt} = c * \Delta z * \sqrt{A}$

with the rock heigth z, the stream power constant c, and the drainage area A.

4. Toppling:

With a frequency f per cell evaluate the failure probability for slope:

$p = s / h_c$

with the critial height $$h_c$$. If toppling occurs, the slope is reduced to 1/3 of its initial value.

### Default configuration parameters#

Below are the default configuration parameters for the Geomorphology model.

# --- Space
space:
periodic: false

# --- CellManager and cell initialization
cell_manager:
grid:
structure: square
resolution: 64      # cells per unit length of space's extent

neighborhood:
mode: Moore         # can be: empty, vonNeumann, Moore

# Initialization parameters for each cell
cell_params:
initial_height_mean: 10. # choose large enough to don't get negative values
initial_height_var: 0.1
initial_slope: 0.0001

# Quantities related to soil
uplift_mean: 1.
uplift_var: .01 # must be > 1e-10
erodibility: .01

stream_power_coef: 1.e-3

toppling_frequency: 1.e-3
toppling_critical_height: 45.
toppling_slope_reduction_factor: 3.

### Available plots#

The following plot configurations are available for the Geomorphology model:

## Default Plot Configuration#

ca:
based_on: ca

ca_snapshot:
based_on:
- ca
- .plot.ca.snapshot

## Base Plot Configuration#

.variables:
base_path: &base_path data/Geomorphology

# =============================================================================
#  ╔╦╗╔═╗╔╦╗╔═╗╦  ╔═╗╔╦╗╔═╗╔═╗
#   ║ ║╣ ║║║╠═╝║  ╠═╣ ║ ║╣ ╚═╗
#   ╩ ╚═╝╩ ╩╩  ╩═╝╩ ╩ ╩ ╚═╝╚═╝
# =============================================================================
# -- Overloads ----------------------------------------------------------------
# Overload some configs to insert model-specific settings

# Model-specific defaults
.defaults:
based_on: .defaults

# Can define something here ...

# .. Creators .................................................................
.creator.universe:
based_on:
- .creator.universe
- .defaults

dag_options:
select_path_prefix: *base_path

.creator.multiverse:
based_on:
- .creator.multiverse
- .defaults

select_and_combine:
base_path: *base_path

# =============================================================================
#  ╔═╗╦  ╔═╗╔╦╗╔═╗
#  ╠═╝║  ║ ║ ║ ╚═╗
#  ╩  ╩═╝╚═╝ ╩ ╚═╝
# =============================================================================
# The spatial development in the CA
ca:
based_on:
- .creator.universe
- .plot.ca

# Select the data and process it
select:

height: height
watercolumn: watercolumn

# In the drainage area calculation, log10 leads to container attributes
# being dropped; need to manually add them back to not lose information
# about the grid structure.
_array_attrs:
path: drainage_area
transform: [.attrs]

log10_drainage_area:
path: drainage_area
transform:
- log10
- .assign_attrs: [!dag_prev , !dag_tag _array_attrs]

# Select the properties to plot
to_plot:
height:
title: Rock Height
cmap: gist_earth

log10_drainage_area:
title: $log_{10}$ Drainage Area
cmap: Blues
vmin: 0
vmax: max

watercolumn:
title: Water Column
cmap: Blues

For available base plots, see Base Plot Configuration Pool.