A model of dunes and snow waves
- Getting started
- References and further reading
- Community guidelines
When wind blows over snow, it self-organizes. This forms surface features, such as ripples and dunes, that alter the reflectivity and thermal conductivity of the snow.
Studying these features in the field is cold and challenging (we've tried), so we created rescal-snow to enable snow scientists to study snow features in controlled numerical experiments. We hope that this model will be useful to researchers in snow science, geomorphology, and polar climate.
Rescal-snow is able to simulate:
- Snow/sand grain erosion and deposition by wind
- Time-dependent cohesion (snow sintering)
- Avalanches of loose grains
Rescal-snow is also designed for robust, reproducible science, and contains tools for high-performance computing, data management, and data analysis, including:
- Workflow tools for generating and running many simulations in parallel
- A python-based workflow that manages data and analysis at runtime
2. Getting started
We assume you have reasonable familiarity with bash and terminal commands. If you have never used bash, we recommend you stop and work through a short tutorial. (Our favorite is 'The Unix Shell' from Software Carpentry.) If you modify rescal-snow, you will need to modify and compile C code. We have also included some setup and analysis tools (used in Example 5) written in Python.
- C compiler (GCC and CLANG are known to work)
- CMake >= 3.9 (used for compiling)
- make (used for compiling)
- libpng (known to work with v1.6.37)
- Optional packages used for analysis (see the analysis and scripts/utilities directories):
- Python3 (used for analysis)
- numpy (used by Python3 for analysis)
- pandas (used by Python3 for analysis)
- scipy (used by Python3 for analysis)
On a Debian-based/Ubuntu Linux machine, the dependencies can be acquired using:
sudo apt install gcc cmake make libpng-dev zlib1g-dev python3 python3-numpy python3-pandas python3-scipy
On most machines, the Python packages can also be acquired using:
pip3 install numpy pandas scipy
Download rescal-snow by cloning this repository with git:
git clone https://github.com/kellykochanski/rescal-snow.git cd rescal-snow
You may also download the repository manually from Github.
In a terminal, navigate into the main rescal-snow directory (shown above). Run:
mkdir build cd build cmake -Wno-dev -DCMAKE_BUILD_TYPE=Release .. #Debug can be used instead of Release make -j 4 #Adjust to the number of cores you have for a speedy build
The examples below are fully described in the tutorial: docs/rescal-snow-tutorial.md. The docs folder also contains descriptions of additional configuration and analysis options; check these if you're looking for functionality not found in the tutorial.
3.1 Sand and snow dunes
The default configuration for Rescal-snow simulates snow (or sand) dune formation. This simulates processes including air flow; grain entrainment, saltation, suspension and deposition; and granular avalanches.
In these conditions, a pile of sand/snow (left) evolves into a dart-shaped barchan dune (middle), then dwindles as grains blow away without being resupplied (right).
|Initial condition, t = 0t0||t = 30t0||t = 90t0|
Each of the three images above shows a shaded top-down view of a dune (top left), cross-sections through the dune, along the dashed lines (middle left, top right), and a cross-section showing the pressure intensity in the fluid (bottom left).
3.2 Sintering snow
Snow cohesion increases over time: this is called sintering. Rescal-snow is able to simulate the transition of loose (beige) grains into sintered (light purple) grains within waves and dunes.
3.3 Dune growth by snowfall
Rescal-snow simulates snow by adding loose grains to the top of the simulation. The gif at the top of this page shows a height-map of a field of dunes and waves growing during snowfall.
3.4 Parallel instances and parameter space exploration
We believe that building robust, trustworthy models is much simpler when it's easy to make many model runs.
Rescal-snow contains a series of tools for running many simulation instances in parallel, and managing the associated flows of input and output data.
The following phase diagram shows images produced by ten parallel runs simulating different rates of snowfall (lambda_I) and wind speed (Tau_min).
4. References and further reading
For more background on snow dunes, sintering, and self-organization, see:
- 'Snow bedforms: A review, new data, and a formation model', Filhol and Sturm, 2015
- 'The evolution of snow bedforms in the Colorado Front Range', Kochanski, Anderson and Tucker, 2019
- 'Statistical classification of self-organized snow surfaces', Kochanski, Anderson and Tucker, 2018
- 'Studies on interaction between wind and dry snow surface', Kobayashi, 1980
For more information about the backend function of the cellular automaton and lattice gas model, see:
- 'Setting the length and timescales of a cellular automaton dune model', Narteau et al., 2009
- 'A real-space cellular automaton laboratory', Rozier and Narteau, 2014
- 'Transport capacity and saturation mechanism in a real-space cellular automaton dune model', Gao et al., 2014 To learn the underlying principles of the lattice gas cellular automaton (LGCA) model (recommended before modifying the LGCA, the boundary conditions, or the aspect ratio of the simulation) see:
- 'Lattice-gas automata for the Navier-Stokes equation', Frisch, Hasslacher and Pomeau, 1986'
5. Community guidelines
We encourage you to interact with the project through Github (see below). This will allow easy integration of your changes and prevent rescal-snow from fragmenting excessively. We use this git workflow, with the expectation that new changes will be tested on the examples in the README, docs, or tutorials. If you're not familiar with git, see the software carpentry git tutorial.
Do you want to incentivize developers to build and maintain the software you need? Cite us!
- 'Rescal-snow: Simulating snow dunes with cellular automata', K Kochanski et al. (2019) Journal of Open Source Software, 4(42), 1699, https://doi.org/10.21105/joss.01699
This software inherits many features from the Real-Space Cellular Automaton Laboratory, ReSCAL. Credit them by citing:
- 'A real-space cellular automaton laboratory', O Rozier and C Narteau (2013), Earth Surface Processes and Landforms 39(1) 98-109, doi=10.1002/esp.3479
If you have challenges or questions, look at the material under 'further information' or reach out to us.
Issues should be reported using Github's issue tracking function on this repository, here.
Issues which cannot be handled via Github can be addressed to
Kelly Kochanski firstname.lastname@example.org www.github.com/kellykochanski
If you wish to contribute a new feature or report a bug, welcome! See how to do this in CONTRIBUTING.md. Rescal-snow is distributed under the GNU GPL 3.0 license; all contributions must be made under this license or a later version.
Rescal-snow branched off of ReSCAL (v1.6) in 2016, and continues to use the ReSCAL backend for the cellular automaton and lattice gas models. This history is described in NEWS.md and the original code is available on branch
rescal-1.6. Ongoing ReSCAL development is described at http://www.ipgp.fr/~rozier/rescal/rescal.html (the English version of this website is updated less regularly than the French). Our code is no longer easily compatible with ReSCAL, as we have removed features, unused code, and dependencies that were not related to wind-blown snow and reduced performance on high-performance computing systems. We are adopting a small fraction of new ReSCAL features on a case-by-case basis depending on their relevance to wind blown snow.
GNU GPL 3.0 or any later version. See LICENSE. SPDX-License-Identifier: GPL-3.0-or-later. This document was released from Lawrence Livermore National Laboratory under open source software release LLNL-CODE-785837; see NOTICE for details.