Skip to content

Parameter file reference

Every MILET run is fully specified by a single TOML file in cases/. The loader (load_config_toml in src/io/TOMLLoader.jl) parses the file, deep-merges it onto cases/_defaults.toml, and builds the immutable Config struct (src/core/Config.jl) that every module reads. A minimal case therefore only states what differs from the defaults.

bash
julia --project=. main.jl cases/my_case.toml

This page documents every key the loader reads, grouped by section, with type, default, and units. The Default column shows the value shipped in cases/_defaults.toml; keys marked (loader) are not present in the defaults file and fall back to the hard-coded default inside load_config_toml.

Loading semantics and precedence

The loader applies three deterministic transformations (src/io/TOMLLoader.jl):

  1. Deep merge (_deep_merge): the user file is merged onto cases/_defaults.toml, with user values winning on every key collision, recursively through nested tables.

  2. Section flattening (_flatten_sections): all [section] tables are flattened into one namespace. Keys are promoted bare ([time] ntotntot); for the sections in _PREFIX_SECTIONS (output, checkpoint, free_surface, amr, anisotropic_heating, boundary_velocity, boundary_temperature, solver, gravity, twophase) a prefixed alias is added as well ([output] diroutput_dir, [solver] typesolver_type), which is the name the loader actually reads. You may write either form.

  3. [model]-last precedence: sections are flattened in sorted alphabetical order, with the legacy flat [model] block flattened last, so an explicit key in [model] always beats a section-promoted value. This rule is deterministic by construction — earlier versions relied on Dict iteration order, which could silently load a 3D case as 2D depending on hash order.

The array-of-tables ([[rock]], [[phase]], [[melt]], [[layer]], [[init_T]]) are replaced wholesale, never merged: if your file defines any [[rock]] entry, the defaults' rock list is discarded entirely (materials are case-specific).

Sectioned layout for nondimensional cases Benchmarks that override many defaults (Blankenbach, SolCx) must use the sectioned layout — see the header comment in cases/blankenbach_1a.toml. A flat layout that relies on bare-key promotion can lose to defaults during flattening. :::

[model]

KeyTypeDefaultMeaning
casestring"subduction"Case identifier, dispatched by select_case (src/io/TOMLLoader.jl) to the initial rock-type / temperature closures. Known names: subduction, subduction_init, extension, falling_block, plume, plume3d, rt3d, busse, blankenbach, solcx, chunk. Unknown names fall back to the data-driven [[layer]] / [[init_T]] path.

Any other key placed in [model] is treated as a flat top-level key and, by the precedence rule above, overrides the same key from any section.

[mesh]

KeyTypeDefaultUnitsMeaning
dimint22 or 3
xsizefloat4.0e6mDomain extent in x (required for box geometry)
ysizefloat1.4e6mDomain extent in y; y grows downward (y = 0 is the surface)
zsizefloat0.0mDomain extent in z (3D only)
nx, ny, nzint101, 36, 1Grid lines per axis (cells = n − 1)
mnx, mny, mnzint4, 4, 1Markers per cell per axis
geometrystring"box"box | chunk | sphere_shell. Non-box geometries derive xsize/ysize from r_outer − r_inner if absent
r_innerfloat3.481e6mInner radius (chunk/shell)
r_outerfloat6.371e6mOuter radius (chunk/shell)
chunk_theta_extentfloat1.0472 (π/3)radAngular extent θ of the chunk
chunk_phi_extentfloat1.0472radAngular extent φ (3D chunk)

[gravity]

KeyTypeDefaultUnitsMeaning
gx, gy, gzfloat0.0, 9.81, 0.0m/s²Constant Cartesian gravity. gy > 0 points down (y-down convention)
modelstring"vertical_const"vertical_const | radial (gravity_fn in src/physics/Gravity.jl; radial points toward the origin)
g_magfloat9.81m/s²Magnitude for radial gravity

[time]

KeyTypeDefaultUnitsMeaning
maxxystepfloat0.5Courant fraction for both the advection and the thermal-diffusion limit (compute_dt, src/time_stepping/CFL.jl)
maxtkstepfloat50.0KMaximum temperature change per step
maxtmstepfloat1.5e13sHard upper bound on Δt (≈ 500 kyr)
ntotint100Total number of time steps
pinitfloat0.0PaReference pressure offset
t_end_myrfloat0.0 (loader)MyrStop when simulated time exceeds this; 0 disables (steps then end only at ntot)

The time step is Δt=max(min(Ch/vmax,Ch2ρcp/k,maxtmstep),maxtmstep108) with C = maxxystep. With two-phase flow enabled, the melt segregation speed (max_melt_segregation_speed) is added to the CFL constraint.

[rheology]

Global limits applied after the per-rock clamps (the effective bound is clamp(η, max(eta_min, rock.eta_min), min(eta_max, rock.eta_max))_compute_viscosity_core in src/materials/Rheology.jl).

KeyTypeDefaultUnitsMeaning
eta_minfloat1e19Pa·sGlobal lower viscosity clamp
eta_maxfloat1e25Pa·sGlobal upper viscosity clamp
str_minfloat1e-181/sMinimum strain-rate invariant (regularizes plastic viscosity and strain accumulation)
eii_seedfloat0.01/sInitial ε˙II for the first Picard iteration so power-law creep engages on step 1
body_force_fullboolfalsefalse: Boussinesq perturbation buoyancy (ρρ¯)g; true: full ρg body force
formulationstring"boussinesq"boussinesq | ala | tala — anelastic forms change the continuity equation to (ρadiu)=0 (src/physics/Compressibility.jl)
rho_ref_alafloat3300.0kg/m³Reference surface density for the ALA adiabatic profile
H_scalefloat2.9e6mDensity scale height for the ALA profile
grain_exponentfloat0.0Legacy grain-size modifier on the eta0 path: η=(d/dref)m; 0 = off (the calibrated grain-size law uses diff_* instead)
strain_gate_plasticbooltrue (loader)Accumulate weakening strain only weighted by the per-cell yield fraction (see Softening & healing); false = legacy total-strain accumulation

[temperature]

KeyTypeDefaultUnitsMeaning
T_topfloat273.0KSurface Dirichlet temperature
T_botfloat1623.0KBottom Dirichlet temperature
T_ref_densityfloat298.15KReference temperature for the density expansion ρ0(1α(TTref))
rho_ref_heatfloat3300.0kg/m³Reference ρ in the ρcp heat-capacity term
marker_T_modestring"pic_increment"pic_increment: markers carry T and advect it; the FE solve contributes only the diffusion + sources increment (I2ELVIS/PIC pattern, validated on Blankenbach). overwrite: the grid solution replaces marker T each step — with the default diffusion-only heat operator temperature does not advect; only use deliberately (e.g. with do_supg_heat = true)
heat_stabilisationstring"none"none | supg | entropy — stabilisation for FE temperature advection (see Heat transport)
H_constfloat0.0W/m³Uniform constant volumetric heating added to every cell

[physics] — toggles

All booleans, read by run_case (src/time_stepping/Driver.jl):

KeyDefaultMeaning
do_stokestrueSolve momentum each step
do_heattrueSolve the energy equation each step
do_advecttrueAdvect markers (RK4, advect_markers!)
do_adiabaticfalseAdiabatic heating H=αTρrefguy
do_shear_heatingtrueViscous dissipation H=4ηε˙II2
do_frictiontrueDrucker–Prager plastic yield + strain weakening
do_phase_changefalsePer-marker phase transitions ([[phase]])
do_meltingfalseKatz-lite melting + extraction ([[melt]])
do_free_surfacetrueSticky-air free-surface handling
do_radiogenictrueRadiogenic heating H=ρhr per rock
do_supg_heatfalseFE advection of T with SUPG stabilisation (instead of marker advection)
do_composition_fefalseAdditional smooth Q1 composition field, advected on the FE grid
buoyancy_from_Tfalse (loader)Buoyancy directly from the FE temperature field, ρg=ρ0αTg (used by nondimensional convection benchmarks)
do_subgrid_diffusionfalse (loader)Subgrid-scale marker–grid temperature relaxation (Gerya & Yuen 2003, apply_subgrid_diffusion!)
subgrid_d1.0 (loader)Subgrid diffusion strength coefficient d
do_volatilefalse (loader)Multi-species volatile transport — part of a separate study; disabled in this release
n_comp_fields0 (loader)Number of independent FE composition fields when do_composition_fe

[boundary_velocity]

Per-wall mechanical BC type; walls are left, right, surface (y = 0), deep (y = ysize), and front/back in 3D.

KeyTypeDefaultMeaning
bc_left, bc_right, bc_surface, bc_deep, bc_front, bc_backstring"prescribed"prescribed | free_slip | traction
free_slip_penaltyfloat1000.0Penalty factor γ in the weak no-penetration term Γγ(un)(vn)dΓ
t_traction_surface_n / _tfloat0.0Normal / tangential traction (Pa) when bc_surface = "traction"
t_traction_deep_n / _tfloat0.0As above for the deep wall
t_traction_left_n / _tfloat0.0As above for the left wall
t_traction_right_n / _tfloat0.0As above for the right wall
  • prescribed — strong Dirichlet from the per-wall closures bc_left(cfg), bc_right(cfg), … (src/boundary_conditions/Velocity.jl); for the subduction case these inject the plate velocities vx_plate / vx_plate_right within the plate-depth windows.

  • free_slip — only un=0 enforced weakly (penalty term added in build_free_slip_bcs, src/physics/Stokes.jl); tangential motion free.

  • traction — Neumann σn=t via build_traction_bcs.

[boundary_temperature]

KeyTypeDefaultUnitsMeaning
bcT_surface, bcT_deepstring"dirichlet"dirichlet | flux | insulating | robin
bcT_left, bcT_right, bcT_front, bcT_backstring"insulating" (loader)Lateral wall T BCs (insulating = natural zero-flux)
q_surface, q_deepfloat0.0W/m²Prescribed flux when type = flux (kTn=q)
h_robinfloat0.0W/m²/KRobin coefficient: kTn=h(TTamb)
T_ambfloat298.15KAmbient temperature for the Robin BC

Flux and Robin contributions are assembled by build_heat_flux_bcs and assemble_heat (src/physics/Heat.jl).

[free_surface]

KeyTypeDefaultMeaning
do_ale_free_surfaceboolfalseALE vertical mesh stretching following the rock–air interface (Kaus et al. 2010; src/physics/ALEFreeSurface.jl)
fs_stabilisationfloat0.5Implicit damping θ in the Kaus 2010 stability factor (0 = none, 1 = strong)
surface_smoothfloat0.0Horizontal Laplacian smoothing of the marker surface (smooth_air_interface!)
air_rock_idint1Which [[rock]] index represents sticky air

See Free surface.

[anisotropic_heating]

Fabric-aligned anisotropic shear heating (anisotropic_shear_heating, src/physics/AdvancedHeating.jl).

KeyTypeDefaultMeaning
fabric_nx, fabric_nyfloat0.0Fabric direction components; (0, 0) disables
fabric_back_stressfloat1.0Back-stress amplification factor

[amr]

Adaptive mesh refinement (src/solvers/AMR.jl). Marker loops fall back to serial Gridap point location on adapted meshes — AMR currently slows runs substantially (see AMR & ALE).

KeyTypeDefaultMeaning
do_amrboolfalseEnable adaptive refinement
amr_everyint10Adapt every N steps
amr_refine_fractionfloat0.3Top fraction of cells (by indicator) refined
amr_coarsen_fractionfloat0.0 (loader)Bottom fraction coarsened
amr_max_levelint2 (loader)Refinement-level cap
amr_criterionstring"T_gradient"T_gradient | composition | strain_rate | viscosity | user (amr_indicator)

[fe]

KeyTypeDefaultMeaning
fe_order_vint2Velocity polynomial order (Q2, Taylor–Hood)
fe_order_pint1Pressure order (Q1)
fe_order_Tint1Temperature order (Q1)
n_picardint3Max nonlinear (Picard) iterations per step
picard_tolfloat1e-3Relative convergence Δu/u
nonlinear_methodstring"picard"picard | newton (damped Picard update) | full_newton (AD Jacobian, newton_stokes!)
newton_dampingfloat0.5Under-relaxation α ∈ (0, 1] for newton; α = 1 recovers Picard

See Time stepping and picard_stokes! (src/time_stepping/PicardLoop.jl).

[solver]

KeyTypeDefaultMeaning
typestring"mumps"mumps (cached direct LU) | gmg (alias vcycle; FGMRES + geometric multigrid) | auto (gmg above 400k DOFs, mumps below — resolve_solver_type) | petsc | bamgs
petsc_presetstring"lu_mumps"lu_mumps | fgmres_gamg | bcgs_ilu | fgmres_fieldsplit | custom (petsc_options in src/solvers/PETScSolvers.jl)
petsc_optionsstring""Raw PETSc CLI string when petsc_preset = "custom"
krylov_tolfloat1e-7Relative residual tolerance for the Krylov solve
krylov_maxitint200Maximum Krylov iterations
krylov_restartint30FGMRES restart length (gmg path)
gmg_levelsint3Multigrid depth (auto-clamped to what the mesh allows)
gmg_cheb_degreeint3Chebyshev smoother degree per pre/post sweep
gmg_cyclesint1V-cycles per preconditioner application
gmg_coarse_dofsint2000Stop coarsening below this many velocity DOFs

The iterative path is right-preconditioned FGMRES on the monolithic saddle-point system with a block preconditioner: Galerkin geometric multigrid on the velocity block, η-weighted lumped pressure mass on the Schur complement (see Linear solvers and Geometric multigrid).

[checkpoint]

KeyTypeDefaultMeaning
do_checkpointboolfalse (loader)Master enable for periodic checkpoints
everyint0Checkpoint every N steps (checkpoint_every; both do_checkpoint = true and every > 0 are required)
restartboolfalseResume from the latest checkpoint found in the output directory (load_latest_checkpoint, src/io/Checkpoint.jl)

[output]

KeyTypeDefaultMeaning
dirstring"output"Output directory (output_dir)
everyint10Write VTU snapshots + PVD collections every N steps
diagnostics_everyint1Full marker/DOF diagnostics (O(n_markers) scans, isfinite health checks in record_step!) every N steps; the cheap per-steprun.log line is always written. Raise (e.g. 25) for large runs
projection_modestring"host"Marker→cell projection: host (host-cell mean, sharp) | bilinear (2×2 stencil scatter, smoothed)

[subduction]

Only used when case = "subduction" (wall plate driving + slab geometry, rock_type_subduction / bc_left / bc_right).

KeyTypeDefaultUnitsMeaning
trench_xfloat2.0e6mInitial trench position
plate_thicknessfloat8.0e4mOceanic plate thickness
plate_agefloat4.0e7yrPlate age for the half-space-cooling geotherm
continent_thicknessfloat1.2e5mOverriding continental plate thickness
air_thickfloat4.0e4mSticky-air layer thickness
x_plate_left, x_plate_rightfloat2.94e5, 3.706e6mPlate-velocity window bounds on the side walls
vx_platefloat9.51173e-10m/sLeft-wall plate velocity (≈ 3 cm/yr)
vx_plate_rightfloat−9.51173e-10m/sRight-wall plate velocity
vx_plate_cm_yr, vx_plate_right_cm_yrfloatcm/yrReadable alternatives; converted to m/s by the loader and taking precedence over the m/s keys

[twophase]

McKenzie two-phase flow — porous melt migration through a compacting viscous matrix. Three-field (us,pf,pc) solve plus marker porosity transport; see Two-phase flow, doc/design/two_phase_flow.md and src/physics/TwoPhase.jl.

KeyTypeDefaultUnitsMeaning
do_two_phaseboolfalseEnable the 3-field two-phase solve
k0float1e-12Reference permeability at φ₀: kϕ=k0((ϕ+ϕmin)/ϕ0)n
phi0float0.01Reference porosity
n_permfloat3.0Permeability exponent n
mu_fluidfloat1.0Pa·sMelt viscosity μ_f
rho_fluidfloat2800.0kg/m³Melt density (mixture buoyancy ρ¯=(1ϕ)ρs+ϕρf)
alpha_phifloat27.0Matrix melt-weakening exponent: ηϕ=ηseαϕϕ (Mei et al. 2002)
phi_minfloat1e-4Regularization porosity for the φ → 0 limit (recovers single-phase Stokes, enforced by test/smoke/test_twophase.jl)
phi_maxfloat0.5Cap on marker porosity
pf_surface0boolfalseHomogeneous Dirichlet pf=0 on the surface (melt escapes freely)
phi_initfloat0.0Uniform initial marker porosity

[[rock]] — material parameters

One entry per rock type; rocks are referenced by 1-based index from [[layer]], [[phase]], [[melt]], and air_rock_id. Each key also accepts the legacy I3ELVIS shorthand (table at the end); canonical names win when both are present.

Viscous creep

KeyDefaultUnitsMeaning
eta01e22Pa·sPre-exponential viscosity for the Arrhenius path: η=η0exp((Q+VP)/(nRT)), n = 1 diffusion-like, n > 1 dislocation
activation_energy0.0J/molQ
activation_volume0.0J/(mol·bar)V (note the bar-based convention on the eta0 path — see src/materials/Rheology.jl)
stress_exponent1.0n
ref_yield_stress0.0Paσref for the smooth power-law blend η=ηdiff/(1+x), x=(2ηε˙II/σref)11/n
disl_prof""Named dislocation-creep law from the catalog in src/materials/FlowLaws.jl (e.g. "Dry_Olivine-Ranalli_1995", "Dry_Olivine_disl-Hirth_Kohlstedt_2003"); overrides creep_A, activation_energy, activation_volume, stress_exponent
creep_A0.0MPa⁻ⁿ s⁻¹Explicit dislocation-creep pre-exponential, ε˙II=AσIInexp((E+PV)/RT); > 0 switches from the eta0 path to dislocation_viscosity

Diffusion creep (grain-size-sensitive)

ε˙II=AσIIdmexp((E+PV)/RT)

, lab convention A in MPa⁻¹ µm^m s⁻¹ (Hirth & Kohlstedt 2003); acts in parallel with dislocation creep (compliances add). diff_A = 0 (default) disables the mechanism. See Grain-size evolution.

KeyDefaultUnitsMeaning
diff_prof""Named diffusion-creep law ("Dry_Olivine_diff-Hirth_Kohlstedt_2003", "Wet_Olivine_diff-Hirth_Kohlstedt_2003"); overrides the explicit keys below
diff_A0.0MPa⁻¹ µm^m s⁻¹Pre-exponential
diff_m3.0Grain-size exponent m
diff_E375e3J/molActivation energy
diff_V6e-6m³/molActivation volume

Plastic yield (Drucker–Prager + strain weakening)

τy=min(C(εp)+sinφ(εp)P,σy,max)

, with C and sin φ ramping linearly over accumulated plastic strain εp[ε0,εf].

KeyDefaultUnitsMeaning
cohesion_init, cohesion_weak0.0PaC₀, C_f
friction_init, friction_weak0.0sin φ₀, sin φ_f
strain_thresh_init, strain_thresh_weak0.0, 0.1ε₀, ε_f bracketing the weakening ramp
yield_stress_max5.0e8PaAbsolute Drucker–Prager yield cap (Kaus 2010, Glerum et al. 2018); prevents unbounded plastic stress at depth. ≤ 0 disables

Viscous softening & healing

See Softening & healing and doc/design/softening_healing.md.

KeyDefaultUnitsMeaning
visc_soft_factor1.0Viscous strain softening (fabric/CPO): the aggregate viscous viscosity ramps 1 → factor over [strain_thresh_init, strain_thresh_weak]; 1.0 = off
heal_tau00.0sHealing (annealing) time at heal_Tref: εpεpeΔt/τ(T) with τ=τ0exp(EhR(1T1Tref)); 0 = no healing
heal_E3e5J/molHealing activation energy
heal_Tref1000.0KHealing reference temperature

Grain-size evolution

Austin–Evans (2007) paleowattmeter, integrated per marker (update_grain_size, src/materials/GrainSize.jl): d˙=G0pdp1e(Eg+PVg)/RTλcγd2Ψdisl. grain_G0 = 0 (default) freezes the grain size.

KeyDefaultUnitsMeaning
grain_G00.0m^p/sNormal-growth prefactor
grain_p3.0Growth exponent
grain_Eg350e3J/molGrowth activation energy
grain_Vg8e-6m³/molGrowth activation volume
grain_lambda0.1Fraction of dislocation work stored as grain-boundary surface energy
grain_gamma1.0J/m²Grain-boundary energy
grain_c9.4248 (3π)Geometric constant
grain_init1e-3mInitial marker grain size

Density, thermal, elastic, misc

KeyDefaultUnitsMeaning
reference_density3300.0kg/m³ρ₀
thermal_expansion3e-51/Kα
compressibility0.01/Paβ
specific_heat1000.0J/kg/Kc_p
thermal_conductivity3.0W/m/Kk
radiogenic_heating0.0W/m³h_r
shear_modulus0.0PaG — Maxwell visco-elasticity; 0 = pure visco-plastic
immobilefalseMarker never advects (sticky-air anchor)
eta_min, eta_max1e17, 1e26Pa·sPer-rock viscosity clamps

Volatile species keys

The loader also accepts per-species volatile parameters (sulfur_*, graphite_*, carbonatite_*, water_*, each with _capacity (wt%), _release_T (K), _release_frac (per step), _solidus_drop (K); legacy volatile_* keys map to carbonatite). The volatile transport module is part of a separate study and is disabled in this release (do_volatile = false).

[[phase]] — phase transitions

Applied per marker by apply_phase_change! (src/materials/PhaseChange.jl) when do_phase_change = true.

KeyDefaultUnitsMeaning
rock_from(required)Rock id the transition applies to
rock_to(required)Rock id after crossing (same id → only Δρ + latent)
transition11 = Clapeyron P–T line; 2 = depth-triggered; 3 = divariant rate-limited eclogitization
T_ref0.0KReference point on the transition line
P_ref0.0PaReference pressure. Mode 2 reinterprets P_ref as the trigger depth in metres (a marker crosses when y > P_ref)
clapeyron0.0K/Pa (mode 1); Pa/K (mode 3)Mode 1: Tlocus(P)=Tref+c(PPref), positive = exothermic. Mode 3: Pc(T)=Pref+c(TTref)
drho0.0kg/m³Density jump across the transition (accumulated on the marker phase_drho)
latent0.0J/kgLatent heat (positive = endothermic, absorbed)
band_width0.0PaMode 3: divariant band width — Xeq=clamp((PPc)/ΔP+12,0,1)
react_tau_ref0.0sMode 3: reaction time at react_Tref; 0 = instantaneous equilibrium
react_Q0.0J/molMode 3: reaction activation energy (Arrhenius τ)
react_Tref973.15KMode 3: reference T for react_tau_ref
weaken_decades0.0Mode 3: reaction softening ηη10wX with X the reaction progress

See Phase changes.

[[melt]] — melting laws (Katz lite)

Linear melt fraction between a quadratic-in-P solidus and liquidus (melt_fraction, apply_melting! in src/materials/Melting.jl); enabled by do_melting = true.

KeyDefaultUnitsMeaning
rock_id(required)Rock the law applies to
T_sol01373.0KSolidus at P = 0: Tsol(P)=Tsol,0+asolP+bsolP2 (P in Pa)
a_sol, b_sol0.0K/Pa, K/Pa²Solidus pressure coefficients
T_liq01973.0KLiquidus at P = 0
a_liq, b_liq0.0K/Pa, K/Pa²Liquidus pressure coefficients
extract_threshold0.05F above which melt is extracted and the marker switches rock type
density_melt2800.0kg/m³Melt density for the two-phase ρ mixture
latentL_MELT (4e5)J/kgLatent heat of fusion
nu_factor25.0Melt weakening: ηηeνF (Mei et al. 2002)
rock_after_extractrock_idDepleted-residue rock id after extraction

With do_two_phase = true, a melt-fraction increase becomes marker porosity (percolating melt) instead of instant extraction (melt_to_porosity!). See Melting.

[[layer]] — initial geometry (data-driven)

The initial rock-type field is built from [[layer]] entries (rock_type_from_layers, src/initialization/Geometry.jl) whenever the list is non-empty; later layers override earlier ones at overlapping points.

KeyDefaultUnitsMeaning
name"unnamed"Label (diagnostics only)
rock_id(required)1-based index into [[rock]]
shape"background"background | rectangle | polygon | bent_band
x_min, x_max, y_min, y_max±InfmBounds for rectangle
vertices[]mList of [x, y] pairs: closed polygon (polygon) or polyline (bent_band)
thickness0.0mbent_band: band of this normal thickness extending downward from the polyline

[[init_T]] — initial temperature regions (data-driven)

Used by initial_T_from_regions (src/initialization/Temperature.jl); same shape vocabulary and later-overrides-earlier semantics as [[layer]].

KeyDefaultUnitsMeaning
name"unnamed"Label
shape"background"background | rectangle | polygon | bent_band
profile"constant"constant | linear | hsc | gaussian
x_min, x_max, y_min, y_max±InfmRegion bounds (rectangle)
vertices[]mPolygon / polyline vertices
thickness0.0mbent_band thickness
T_value0.0Kconstant: T everywhere in the region
T_top, T_bot273.0, 1623.0Klinear: T=Ttop+(TbotTtop)ylocal/Y
T_surf, T_mantle273.0, 1593.0Khsc half-space cooling: T=Ts+(TmTs)erf(ylocal/2κt)
plate_age_yr50e6yrhsc cooling age t
kappa1e-6m²/shsc thermal diffusivity
xc, yc0.0mgaussian anomaly centre
r0100e3mgaussian radius
dT0.0Kgaussian amplitude: T=Tbase+ΔTer2/r02
T_base1593.0Kgaussian background T

y_local is depth within the region (depends on shape — see the header of src/initialization/Temperature.jl).

Legacy / shorthand rock keys

Accepted for backwards compatibility; canonical names win when both appear.

CanonicalLegacyCanonicalLegacy
eta0nu0eta_min / eta_maxnu_min / nu_max
activation_energydhreference_densityro0
activation_volumedvthermal_expansionalpha
ref_yield_stresssscompressibilitybeta
stress_exponentmmspecific_heatcp
cohesion_init / cohesion_weaka0 / a1thermal_conductivitykt
friction_init / friction_weakb0 / b1radiogenic_heatinght
strain_thresh_init / strain_thresh_weake0 / e1shear_modulusG

Minimal example

toml
[mesh]
xsize = 1_000_000.0
ysize = 1_000_000.0
nx    = 81
ny    = 81

[physics]
do_heat = false

[[rock]]
eta0 = 1e21
reference_density = 3300.0

[[layer]]
rock_id = 1
shape   = "background"

Everything else inherits from cases/_defaults.toml. For complete worked examples see the examples by tectonic regime and the case files under cases/; for the function-level API see the function reference.