Skip to content

Compressibility ​

MILET has two ways to treat the compressibility of rock:

  • Boussinesq (formulation = "boussinesq", the default). The flow is incompressible, ∇⋅u=0, and compressibility enters only through the buoyancy. Each marker's density follows the rock's equation of state at lithostatic pressure,

    ρ=ρ0(1−α(T−Tref))(1+β(P−Pref)),

    with the per-rock keys reference_density (ρ0), thermal_expansion (α) and compressibility (β, 1/Pa). The energy equation uses the constant rho_ref_heat, and there is no adiabatic heating unless do_adiabatic is set.

  • TALA (formulation = "tala"). One adiabatic reference state is used in the mass, momentum and energy equations, as described below. This is the consistent compressible option for convection with a significant dissipation number.

ALA, the full anelastic approximation with a dynamic-pressure density term, is not implemented. formulation = "ala" stops with an error.

TALA ​

formulation = "tala" (in [rheology]) replaces the Boussinesq equations with the truncated anelastic liquid approximation of King et al. (2010). One adiabatic reference state (src/physics/ReferenceState.jl), with y the depth,

ρ¯(y)=ρ0exp(αrgyγrcp),T¯(y)=T0exp(αrgycp),

from the keys ref_rho0, ref_T0, ref_alpha, ref_cp, ref_gamma, is used in all three equations:

∇⋅(ρ¯u)=0,∇⋅(2ηε˙−23η(∇⋅u)I)−∇p=ρ¯α(T−T¯)g,ρ¯cpDTDt=∇⋅(k∇T)+ρ¯αguyT+τ:ε˙+H.
  • Mass: build_stokes_forms tests −q(ρ¯∇⋅u+u⋅∇ρ¯), with ∇ρ¯ exact.

  • Buoyancy: the marker density is taken about the reference state, ρ=(ρ¯/ρ0)ρrock(T; Tref=T¯(y), P=0). A reference-rock marker on the adiabat therefore has exactly ρ¯(y), and the dynamic-pressure contribution to density is dropped (TALA).

  • Energy: ρcp uses ρ¯(y) in place of rho_ref_heat. Adiabatic heating ρ¯αguyT belongs to the formulation and is always on. Shear heating is the full deviatoric 2η(ε:ε−13(∇⋅u)2) at the quadrature points.

The dissipation number of a box of depth H is Di=αrgH/cp. Verification against King et al. (2010) is in Benchmarks. For planetary models, set ref_T0 to the mantle potential temperature and T_bot to T¯ at the box floor. The [[init_T]] profiles hsc_adiabat and steady_lid build lids on that adiabat (see Parameter file).

Reference-state keys ​

KeyDefaultMeaning
formulation"boussinesq""tala" switches on everything on this page
ref_T0T_topT0, reference temperature at y=0 (K)
ref_rho0rock 1 reference_densityρ0, reference density at y=0 (kg/m³)
ref_alpharock 1 thermal_expansionαr (1/K)
ref_cprock 1 specific_heatcp (J/kg/K)
ref_gamma1.0Grüneisen parameter γr

The keys can go in any section; the bundled cases put them under [physics]. A planetary model typically looks like this:

toml
[rheology]
formulation = "tala"

[physics]
ref_T0    = 1600.0     # mantle potential temperature (K)
ref_rho0  = 3300.0
ref_alpha = 3e-5
ref_cp    = 1250.0
ref_gamma = 1.2

[temperature]
T_bot = 1869.0         # T0 exp(alpha g H / cp) at the floor (g = 9.81, H = 660 km)

Source ​

src/physics/ReferenceState.jl (reference state, marker density, ρ in the energy equation), src/physics/Stokes.jl (mass and compressible stress), src/physics/Gravity.jl (buoyancy) and src/physics/HeatSources.jl (adiabatic and shear heating).

Reference ​

King, S. D., Lee, C., van Keken, P. E., Leng, W., Zhong, S., Tan, E., Tosi, N., & Kameyama, M. C. (2010). A community benchmark for 2-D Cartesian compressible convection in the Earth's mantle. Geophys. J. Int., 180, 73–87.