All Projects → underworldcode → quagmire

underworldcode / quagmire

Licence: Unknown and 2 other licenses found Licenses found Unknown LICENCE GPL-3.0 COPYING LGPL-3.0 COPYING.LESSER
Python surface process framework on highly scalable unstructured meshes

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language
HTML
75241 projects
fortran
972 projects
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to quagmire

ips2ra
In-place Parallel Super Scalar Radix Sort (IPS²Ra)
Stars: ✭ 22 (+69.23%)
Mutual labels:  parallel
nemesyst
Generalised and highly customisable, hybrid-parallelism, database based, deep learning framework.
Stars: ✭ 17 (+30.77%)
Mutual labels:  parallel
parallel-non-linear-gaussian-smoothers
Companion code in JAX for the paper Parallel Iterated Extended and Sigma-Point Kalman Smoothers.
Stars: ✭ 17 (+30.77%)
Mutual labels:  parallel
snmpman
Easy massive SNMP-agent simulation with the use of simple YAML files
Stars: ✭ 28 (+115.38%)
Mutual labels:  parallel
await
28Kb, small memory footprint, single binary that run list of commands in parallel and waits for their termination
Stars: ✭ 73 (+461.54%)
Mutual labels:  parallel
pooljs
Browser computing unleashed!
Stars: ✭ 17 (+30.77%)
Mutual labels:  parallel
Ray
An open source framework that provides a simple, universal API for building distributed applications. Ray is packaged with RLlib, a scalable reinforcement learning library, and Tune, a scalable hyperparameter tuning library.
Stars: ✭ 18,547 (+142569.23%)
Mutual labels:  parallel
Parrows
Using Arrows to model parallel processes/computations.
Stars: ✭ 18 (+38.46%)
Mutual labels:  parallel
WAND-PIC
WAND-PIC
Stars: ✭ 20 (+53.85%)
Mutual labels:  parallel
t8code
Parallel algorithms and data structures for tree-based AMR with arbitrary element shapes.
Stars: ✭ 37 (+184.62%)
Mutual labels:  parallel
hp2p
Heavy Peer To Peer: a MPI based benchmark for network diagnostic
Stars: ✭ 17 (+30.77%)
Mutual labels:  parallel
Java-AgentSpeak
LightJason - AgentSpeak(L++) for Java
Stars: ✭ 21 (+61.54%)
Mutual labels:  parallel
cuda-swift
Parallel Computing Library for Linux and macOS & NVIDIA CUDA Wrapper
Stars: ✭ 79 (+507.69%)
Mutual labels:  parallel
MatlabProgressBar
This MATLAB class provides a smart progress bar like tqdm in the command window and is optimized for progress information in simple iterations or large frameworks with full support of parallel parfor loops provided by the MATLAB Parallel Computing Toolbox.
Stars: ✭ 44 (+238.46%)
Mutual labels:  parallel
PGD
A Parallel Graphlet Decomposition Library for Large Graphs
Stars: ✭ 68 (+423.08%)
Mutual labels:  parallel
IPpy
🚀 Ping IP addresses and domains in parallel to find the accessible and inaccessible ones.
Stars: ✭ 54 (+315.38%)
Mutual labels:  parallel
ParMmg
Distributed parallelization of 3D volume mesh adaptation
Stars: ✭ 19 (+46.15%)
Mutual labels:  parallel
marathon
Cross-platform test runner written for Android and iOS projects
Stars: ✭ 398 (+2961.54%)
Mutual labels:  parallel
AppiumGrid
A framework for running appium tests in parallel across devices and also on desktop browser... U like it STAR it !!
Stars: ✭ 17 (+30.77%)
Mutual labels:  parallel
spellbook
Functional library for Javascript
Stars: ✭ 14 (+7.69%)
Mutual labels:  parallel

Quagmire

build/test

Quagmire is a Python surface process framework for building erosion and deposition models on highly parallel, decomposed structured and unstructured meshes.

Quagmire Surface Process Framework

Documentation

The documentation is in the form of jupyter notebooks that are online in the form of a jupyter-book

"Stable" code (developer release, 2020)

Bleeding edge code

Demonstration

Launch Demo

Installation

The native installation of Quagmire requires a number of dependencies and a fortran compiler, preferably gfortran. Install Quagmire using setuptools:

python setup.py build
python setup.py install

Or using pip:

pip3 install quagmire
  • If you change the fortran compiler, you may have to add the flags config_fc --fcompiler=<compiler name> when setup.py is run (see docs for numpy.distutils).

If you are using Python 3.7+ and Linux or MacOS, then you may wish to install Quagmire using conda:

conda install -c underworldcode quagmire

To run the demonstration examples:

conda install -c conda-forge gdal cartopy
conda install -c underworldcode quagmire

However, we are aware that the dependency list is quite large and restrictive and this can make it tough for Anaconda to install other complicated packages. You may need to do this in a separate conda environment.

Some parts of the examples include references to the lavavu package which has its own installation requirements and it might be best to read their documentation

Alternatively

Dependencies

Installing these dependencies is not required if you follow the Conda or Docker installation method. If you choose to install Quagmire natively, then the following packages are required:

Optional dependencies

These dependencies are required to run the Jupyter Notebook examples:

PETSc installation

PETSc is used extensively via the Python frontend, petsc4py. It is required that PETSc be configured and installed on your local machine prior to using Quagmire. You can use pip to install petsc4py and its dependencies.

[sudo] pip install numpy mpi4py
[sudo] pip install petsc petsc4py

If that fails you must compile these manually.

HDF5 installation

If you are compiling HDF5 from source it should be configured with the --enable-parallel flag:

CC=/usr/local/mpi/bin/mpicc ./configure --enable-parallel --enable-shared --prefix=INSTALL-DIRECTORY
make	# build the library
make check	# verify the correctness
make install

You can then point to this installation directory when you install h5py.

Usage

Quagmire is highly scalable. All of the python scripts in the tests subdirectory can be run in parallel, e.g.

mpirun -np 4 python stream_power.py

where the number after the -np flag specifies the number of processors.

Tutorials and worked examples

Tutorials with worked examples can be found in the Quagmire Community repository. The topics covered in the Notebooks include:

Meshing

  • Square mesh
  • Elliptical mesh
  • Mesh refinement (e.g. Lloyd's mesh improvement)
  • Poisson disc sampling
  • Mesh Variables
  • quagmire function interface (requires a base mesh)

Flow algorithms

  • Single and multiple downhill pathways
  • Accumulating flow

Erosion and deposition

  • Long-range stream flow models
  • Short-range diffusive evolution

Landscape evolution

  • Explicit timestepping and numerical stability
  • Landscape equilibrium metrics
  • Basement uplift

Credits

The primary authors of the code are Ben Mather, Louis Moresi and Romain Beucher. We take collective responsibility for creating and maintaining the code. Here and there in the source code we mention who originated the code or modified it in order to help direct questions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].