Explicit dynamic relaxation
DynEarthSol finds static or quasi-static equilibrium through dynamic relaxation. Combined with the explicit time marching, this feature significantly simplifies the overall algorithm.
Updated Lagrangian scheme
DynEarthSol can simulate large deformations within the framework of small-strain kinematics and naturally keep track of free boundary deformation. It also enjoys the power of dynamic mesh adaption.
Various material models
DynEarthSol provides linear elasticity, poro-elasticity, Mohr-Coulomb plasticity with strain or rate-and-state weakening, and Maxwell viscoelasticity. DynEarthSol make it easy to implement new material models.
Supported by the National Science Foundation Award 2104002.
More simulation videos on YouTube →
Start here
Install DES3D
Dependencies, the full build-option matrix, and platform notes for Linux, macOS, and GPU builds.
Run your first model
Set velocity boundary conditions, insert a weak zone, and define model geometry with a .poly file.
Generate an input file
A browser-based form that writes a ready-to-run .cfg configuration file. No installation required.
Visualize results
Convert output with 2vtk.py, or write the compressed VTKHDF format and open it directly in ParaView.
Understand the physics
Constitutive models, dynamic relaxation, mass scaling, remeshing, and the time-integration scheme.
Couple with surface processes
Two-way coupling with goSPL: DES3D supplies tectonic velocities, goSPL returns erosion and deposition.
Quick start
Build the 2D executable and run a worked example. The user manual carries the complete build guide: every build option, the optional libraries, and the platform notes.
1. Install the dependencies. Pick the line for your platform; the build finds everything on its own, with no paths to edit.
brew install boost libomp # macOS (Homebrew)
sudo apt install g++ make libboost-program-options-dev # Debian / Ubuntu
sudo dnf install gcc-c++ make boost-devel # Fedora / RHEL
2. Get the source, including the bundled submodules.
git clone --recurse-submodules https://github.com/GeoFLAC/DynEarthSol.git
cd DynEarthSol
3. Build. make on its own builds the 3D executable, dynearthsol3d.
Pass ndims=2 for the 2D executable used below.
make ndims=2
4. Run an example.
cd examples
../dynearthsol2d ./core-complex.cfg
More example configurations live in examples/, and examples/defaults.cfg
documents every input parameter. dynearthsol2d -h lists them too. To write
your own input file without editing one by hand, use the web-based
input generator, which builds a
ready-to-run .cfg file from a form. If a build
picks up an unexpected library, make config prints the compiler and every
dependency path it resolved to, which is also the most useful thing to include
in a bug report.
Citing DES3D
Please cite the DES3D v2.0 paper (preprint):
Shyu, C. J., Lee, S., Ding, X., Keum, J., Tan, E., Lavier, L. L., & Choi, E. (2026). DynEarthSol v2.0: An efficient explicit Lagrangian solver for geodynamics, surface processes, and earthquake-cycle dynamics. EGUsphere [preprint]. doi:10.5194/egusphere-2026-2922
and the original method paper:
Choi, E., Tan, E., Lavier, L. L., & Calo, V. M. (2013). DynEarthSol2D: An efficient unstructured finite element method to study long-term tectonic deformation. Journal of Geophysical Research: Solid Earth, 118(5), 2429–2444. doi:10.1002/jgrb.50148
To cite the software itself, use
doi:10.5281/zenodo.20293557. This
DOI covers every archived release, both the software (v2.x.x) and the
benchmark datasets (benchmarks-v2.x.x), and it opens the list of all
versions. To cite the exact version you used, pick the matching software
release from that list, or take its DOI from the
releases page or from the
CITATION.cff file shipped with that release.