## StratiGraphics.jl

Stratrigraphy simulation solver for the GeoStats.jl framework
Author JuliaEarth
Popularity
6 Stars
Updated Last
2 Years Ago
Started In
August 2017

# StratiGraphics.jl

A tool for creating 3D stratigraphy from 2D geostatistical processes.

This package provides an implementation of Markov-Poisson sampling as described in Hoffimann 2018. In this method, geostatistical algorithms from the GeoStats.jl framework are used to quickly generate surfaces of a 3D stratigraphic model.

## Installation

Get the latest stable release with Julia's package manager:

`] add StratiGraphics`

## Usage

To illustrate the usage of the package, consider a set of satellite images containing spatial patterns that we would like to reproduce in a 3D stratigraphic model:

Each image can serve as a training image for a multiple-point geostatistical process such as ImageQuilting.jl:

```using ImageQuilting

solver1 = ImgQuilt(:land => (TI=TI1, tilesize=(30,30,1)))
solver2 = ImgQuilt(:land => (TI=TI2, tilesize=(30,30,1)))
solver3 = ImgQuilt(:land => (TI=TI3, tilesize=(30,30,1)))

procs = [GeoStatsProcess(solver) for solver in [solver1,solver2,solver3]]```

We define a geological environment as a set of geological processes, a set of transition probabilities between the processes, and an event duration process:

```using StratiGraphics

# transition probabilities
P = rand(3,3)
P = P ./ sum(P, dims=2)

# event duration process
ΔT = ExponentialDuration(1.0)

env = Environment(procs, P, ΔT)```

We can simulate the envinroment from an initial state (e.g. flat land) and for a number of epochs to produce a geological record:

```nepochs = 10

init = LandState(zeros(100,100))

record = simulate(env, init, nepochs)```

From the record, we can produce the strata in the form of surfaces:

`strata = Strata(record)`

We can choose between an `:erosional` (default) versus a `:depositional` stacking:

`strata = Strata(record, :depositional)`

We can then convert the surfaces into a 3D voxel model by specifying the vertical resolution:

`voxelize(strata, 50) # produce a 100x100x50 voxel model`

For a reproducible example, please check this notebook.

## Citation

If you find StratiGraphics.jl useful in your work, please consider citing the thesis:

```@PHDTHESIS{Hoffimann2018,
title={Morphodynamic Analysis and Statistical Synthesis of Geomorphic Data},
author={Hoffimann, J{\'u}lio},
school={Stanford University},
url={https://searchworks.stanford.edu/view/12746435},
year={2018},
month={September}
}```