Transtension / transpression
Oblique driving = strike-slip + fault-normal opening (transtension) or closing (transpression). Starter template.
Run it with:
bash
julia -t auto --project=. main.jl cases/examples/transtension.tomlFull case file — cases/examples/transtension.toml:
toml
# ══════════════════════════════════════════════════════════════════════════════
# EXAMPLE TEMPLATE — Transtension / transpression (OBLIQUE, map view)
#
# Oblique relative plate motion = strike-slip (along-fault, y) + fault-normal
# (across-fault, x) component. Same map-view setup as transform.toml, but the
# side walls now carry BOTH components:
# • TRANSTENSION (this file): walls also move APART → bc_left_vx < 0, bc_right_vx > 0
# • TRANSPRESSION: flip the normal sign → walls move TOGETHER (bc_left_vx > 0,
# bc_right_vx < 0). Switch the two bc_*_vx signs below to convert.
#
# Obliquity angle θ = atan(v_normal / v_shear). Here v_shear = 2 cm/yr and
# v_normal = 1 cm/yr → θ ≈ 27° (transtensional pull-apart). STARTER TEMPLATE,
# data-driven path, gravity OFF (map view). Tune before production.
# ══════════════════════════════════════════════════════════════════════════════
[model]
case = "transtension" # unknown name → data-driven layers/init_T
[mesh]
dim = 2
xsize = 200000.0
ysize = 200000.0
nx = 101
ny = 101
mnx = 4
mny = 4
[gravity]
gy = 0.0 # MAP VIEW
[time]
maxxystep = 0.5
maxtmstep = 3.1556e12
ntot = 200
[rheology]
eta_min = 1e18
eta_max = 1e24
[temperature]
T_top = 673.0
T_bot = 673.0
[physics]
do_stokes = true
do_heat = false
do_advect = true
do_shear_heating = false
do_friction = true
do_free_surface = false
do_radiogenic = false
# Oblique driving: shear (vy) + opening (vx). For transpression, flip vx signs.
[boundary_velocity]
bc_left = "uniform"
bc_right = "uniform"
bc_surface = "traction"
bc_deep = "traction"
[boundary_velocity_values]
bc_left_vx = -3.17e-10 # −1 cm/yr (opening; flip to + for transpression)
bc_left_vy = 6.34e-10 # +2 cm/yr (shear, north)
bc_right_vx = 3.17e-10 # +1 cm/yr (opening; flip to − for transpression)
bc_right_vy = -6.34e-10 # −2 cm/yr (shear, south)
[fe]
n_picard = 4
picard_tol = 1e-3
[solver]
type = "mumps"
[output]
dir = "output/transtension"
every = 10
# ── Rocks: 1=crust, 2=weak releasing-bend / fault gouge
[[rock]] # 1 — crust
nu0=1e22
ro0=2750.0
alpha=0.0
cp=1000.0
kt=2.5
ht=0.0
mm=1.0
dh=0.0
dv=0.0
a0=2e7
b0=0.6
a1=2e6
b1=0.06
e0=0.0
e1=0.5
nu_min=1e20
nu_max=1e24
immobile=false
G=3e10
[[rock]] # 2 — weak fault zone
nu0=1e20
ro0=2750.0
alpha=0.0
cp=1000.0
kt=2.5
ht=0.0
mm=1.0
dh=0.0
dv=0.0
a0=1e6
b0=0.05
a1=1e5
b1=0.0
e0=0.0
e1=0.1
nu_min=1e19
nu_max=1e22
immobile=false
G=3e10
# ── Geometry: crust with a 10 km-wide oblique-slip fault at the centre
[[layer]]
name = "crust"
rock_id = 1
shape = "background"
[[layer]]
name = "fault_zone"
rock_id = 2
shape = "rectangle"
x_min = 95000.0
x_max = 105000.0
y_min = 0.0
y_max = 200000.0
[[init_T]]
name = "uniform"
shape = "background"
profile = "constant"
T_value = 673.0