Governing equations
MILET solves creeping (zero-Reynolds-number) thermo-mechanical flow: a mixed Stokes problem for velocity and pressure with visco-elasto-plastic (VEP) rheology, coupled to an energy equation (Heat transport) and a marker-in-cell material description (Markers). This page covers the Stokes system as implemented in src/physics/Stokes.jl, the buoyancy term from src/physics/Gravity.jl / src/time_stepping/PicardLoop.jl, and the compressible-form variants in src/physics/Compressibility.jl.
Strong form
In the default Boussinesq formulation (formulation = "boussinesq"):
with gy = +9.81 in the [gravity] TOML section.
Weak form
build_stokes_forms (src/physics/Stokes.jl) assembles the bilinear and linear forms. Multiplying momentum by a test function
The system is discretized with inf-sup stable Q2–Q1 Taylor–Hood elements (fe_order_v = 2, fe_order_p = 1 in the [fe] section; see Discretization). CellField projected from the markers (project_markers_to_cells! in src/particles/Projection.jl). assemble_stokes wraps the forms into a Gridap AffineFEOperator.
Free-slip penalty
Walls flagged free_slip (bc_left, bc_right, bc_surface, bc_deep, plus bc_front/bc_back in 3D) contribute the penalty term
which weakly enforces no-penetration (build_free_slip_bcs sets the penalty scale per wall as
where eta_min) and free_slip_penalty (default 1000) is portable across viscosity regimes and resolutions.
Traction (Neumann) walls
Walls flagged traction impose build_traction_bcs composes the global-frame traction vector from the per-wall config keys t_traction_<wall>_n (normal, positive outward) and t_traction_<wall>_t (tangential), where <wall> is one of left | right | surface | deep. Walls flagged prescribed use strong Dirichlet values instead (src/boundary_conditions/Velocity.jl).
VEP elastic memory source
For Maxwell visco-elasticity the previous-step deviatoric stress enters the RHS as
where SymTensorValue field built from the marker-averaged stress components by build_sigma_old_cellfield. picard_stokes! only constructs this term when any cell has shear_modulus
After each Stokes solve, update_marker_stresses! applies the marker-level stress update (Gerya 2010, eq. 12.13)
followed by an explicit Jaumann co-rotation increment _update_marker_stresses_3d! carries all six deviatoric components and the full three-component spin. recover_invariants! computes cell-mean
Buoyancy: Boussinesq perturbation form
buoyancy_cellfield (src/physics/Gravity.jl) builds the body-force CellField used in
where src/time_stepping/PicardLoop.jl).
Options:
| Config key | Default | Effect |
|---|---|---|
body_force_full | false | true → use full |
buoyancy_from_T | false | true → build T_ref_density |
gravity.model | "vertical_const" | "vertical_const" (constant gx,gy,gz) or "radial" (g_mag) — gravity_fn in src/physics/Gravity.jl |
ALA / TALA continuity
Setting formulation = "ala" or "tala" (in the [rheology] section) replaces incompressibility with the anelastic mass balance
which build_stokes_forms expands by the product rule into the test equation
picard_stokes! constructs the 1-D adiabatic reference profile (adiabatic_density_profile in src/physics/Compressibility.jl)
(exponential with depth, rho_ref_ala (default 3300) and the scale height H_scale (default 2.9e6 m), and passes it as the ρ_adi_cell kwarg to assemble_stokes. TALA (truncated ALA) uses the same continuity but drops the dynamic-pressure contribution to density. Valid values of formulation are checked by ala_continuity_modification: boussinesq | ala | tala | isothermal_compression. A linearized adiabatic temperature profile helper (adiabatic_temperature_profile,
Nonlinear (Picard) iteration
The viscosity depends on strain rate, picard_stokes! (src/time_stepping/PicardLoop.jl) iterates:
project markers → cell fields (
, , , ), assemble and solve the linear Stokes system with frozen
, recover
, test
.
Controls in [fe]: n_picard (default 3), picard_tol (default 1e-3), nonlinear_method = "picard" | "newton" and newton_damping (
Related pages
Rheology — how
, , are computed Heat transport — the coupled energy equation
Two-phase flow — the three-field
extension Free surface — sticky-air and ALE treatments
Parameter file — full key reference