Skip to content

Mantle plumes / hotspots

A bottom-heated Gaussian thermal anomaly rises as a plume.

Run it with:

bash
julia -t auto --project=. main.jl cases/plume.toml

Full case file — cases/plume.toml:

toml
# ══════════════════════════════════════════════════════════════════════════════
# Thermal plume.  Bottom-heated mantle box with Gaussian hot anomaly at the
# base; buoyancy drives the plume head upward.
# ══════════════════════════════════════════════════════════════════════════════

[model]
case = "plume"

dim   = 2
xsize = 1000000.0
ysize = 1000000.0
nx    = 41
ny    = 41
mnx   = 4
mny   = 4

gx = 0.0
gy = 9.81
pinit = 0.0

eta_min = 1e19
eta_max = 1e22       # was 1e24 — plume saw η ≈ 1e23 throughout, terminal v ≈ 0.3 cm/yr; lowered for visible rise

maxxystep = 0.5
maxtkstep = 50.0
maxtmstep = 1.5778e12
ntot      = 200

do_stokes        = true
do_heat          = true
do_advect        = true
do_adiabatic     = false
do_shear_heating = false
do_friction      = false
do_phase_change  = false
do_melting       = false
do_free_surface  = false
do_radiogenic    = false

fe_order_v = 2
fe_order_p = 1
fe_order_T = 1
n_picard   = 2
picard_tol = 1e-3

solver_type  = "mumps"
krylov_tol   = 1e-7
krylov_maxit = 200
gmg_levels   = 3

output_dir   = "output/plume"
output_every = 10
str_min      = 1e-18
eii_seed     = 1e-14    # engages power-law softening at hot core

T_top = 273.0
T_bot = 1873.0
T_ref_density = 273.0   # Boussinesq reference matches cold surface

trench_x = 0.0
plate_thickness = 0.0
plate_age = 1.0
continent_thickness = 0.0
air_thick = 0.0
x_plate_left = 0.0
x_plate_right = 0.0
vx_plate = 0.0
vx_plate_right = 0.0
air_rock_id = 1
surface_smooth = 0.0

[[rock]]
nu0      = 1.97e17
dh       = 154000.0
dv       = 0.3
ss       = 3e4
mm       = 2.3
ro0      = 3300.0
alpha    = 3e-5
beta     = 0.0
cp       = 1250.0
kt       = 3.0
ht       = 0.0
a0       = 1e6
b0       = 0.03
a1       = 1e5
b1       = 0.01
e0       = 0.0
e1       = 0.1
nu_min   = 1e19
nu_max   = 1e22
immobile = false
G        = 7e10