InteractiveGeodynamics.jl

Interactive examples for different geodynamic problems
Author JuliaGeodynamics
Popularity
14 Stars
Updated Last
3 Months Ago
Started In
May 2023

InteractiveGeodynamics.jl

This package provides a range of graphical user interfaces (GUI's) to study and experiment with different geodynamic problems without need to program. It uses julia and Dash and automatically installs the required geodynamic software (such as LaMEM) in the background.

This is particularly useful for teaching. We currently have the following examples included:

  • sill_intrusion_1D() - 1D thermal model of sill intrusion in the crust
  • convection() - 2D mantle (or magma chamber) convection
  • rayleigh_taylor() - density driven instability
  • rising_sphere() - rising stokes sphere example
  • subduction() - subduction of a single plate
  • folding() - folding of one or more viscous layers

Getting started/requirements

Installing this is straightforward. Start julia

kausb$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.9.3 (2023-08-24)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia>
  1. Go to the package manager by pressing ] and type:
julia>]
(@v1.9) pkg> add InteractiveGeodynamics
  1. Then download all required packages with
(@v1.9) pkg> instantiate

This can take some time the first time you do this. Note that step 1 & 2 only have to be done once. Go back to the main command window with backspace.

  1. Start the GUI:
julia> using InteractiveGeodynamics
julia> convection()
[ Info: Listening on: 127.0.0.1:8050, thread id: 1

It will take a bit of time (to precompile/download all required packages). Next, open tye displayed web address in your browser (127.0.0.1:8050 in this case) and it will start a GUI. After pushing Run, you'll get something that looks like this:

julia> 
Timestep 0
args = -nstep_max 250 -eta_fk[0] 1.0e21  -gamma_fk[0] 0.001 -TRef_fk[0] 1000.0 -ch[0] 5.0e8 -nel_x 128 -nel_z 64 -coord_x -1000.0,1000.0 -coord_z -1000,0 -coord_y -7.8125,7.8125 -temp_bot 2000
Timestep 1
Timestep 10
Timestep 15
Timestep 15
Timestep 20
Timestep 25
Timestep 30

GUI_Convection

Running the examples

Running the other examples is straightforward. For example, the Rayleigh-Taylor example can be started with:

julia> using InteractiveGeodynamics
julia> rayleigh_taylor()
[ Info: Listening on: 127.0.0.1:8050, thread id: 1
Tiestep 0
args = -nstep_max 50 -eta[0] 1.0e21 -eta[1] 1.0e21 -eta[2] 1.0e20 -rho[0] 2800 -rho[1] 2800 -rho[2] 2200 -open_top_bound 0 -nel_x 32 -nel_z 16 -coord_x -5.0,5.0 
Timestep 1
Timestep 5
Timestep 10
Timestep 15
Timestep 20
Timestep 25

GUI_RTI_start

Available examples

We currently have the following LaMEM GUI's available, that can be started in the saame way:

  • convection()
  • rising_sphere()
  • rayleigh_taylor()
  • subduction() - subduction of a single plate
  • folding() - folding of one or more viscous layers

1D thermal models following sill intrusion in the crust

We also have a GUI that relies on GLMakie, which is an optional dependency. This implies that the examples become available once you load GLMakie as well. You can start this with:

julia> using InteractiveGeodynamics, GLMakie
julia> sill_intrusion_1D()

1D_Sill_Intrusion