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.tomlFull 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