Parameters & Run
Input parameter file
The actual input_params.yml from examples/05_westUS_ani:
#######################################
# data parameters
#######################################
data:
src_rec_file_ph: src_rec_data_wus.csv
src_rec_file_gr: src_rec_file_gr.csv
iwave: 2 # 1 Love, 2 Rayleigh
vel_type: [True, False] # phase velocity only
weights: [0.5, 0.5]
output:
output_path: OUTPUT_FILES_ph_aniso/
output_initial_model: True
output_in_process_data: True
output_in_process_model: True
log_level: 2
domain:
depth_min_max: [0, 80] # depth range (km)
grid_method: 0 # 0: grid by interval
grid_method_0:
interval: [0.1, 0.1, 2] # lon (deg), lat (deg), z (km)
num_grid_margin: 5
grid_method_1:
lon_min_max: [-125.5, -103.5]
lat_min_max: [29, 49.5]
n_grid: [221, 201, 41]
model:
init_model_type: 1 # 1: 1-D inversion of average tt
vel_range: [3.2, 4.8]
init_model_path: csem.h5
topo:
is_consider_topo: False
wavelen_factor: 2.5
postproc:
kdensity_coe: 0
independent_smooth_ani: False
smooth_method: 0 # 0: Gaussian smoothing
smooth_method_0:
sigma: [0.6, 12] # iso: horiz (deg), vert (km)
sigma_ani: [0.6, 12] # aniso: same shape
smooth_method_1:
n_inv_components: 5
n_inv_grid: [20, 25, 20]
n_inv_grid_ani: [8, 9, 8]
inversion:
is_anisotropy: True # joint iso + aniso inversion
use_alpha_beta_rho: false
rho_scaling: false
niter: 100
min_derr: 0.0005
optim_method: 1 # 1: LBFGS with line search
step_length: 0.02
maxshrink: 0.6
c1: 0.1
c2: 0.9
max_sub_niter: 10Key choices
| Parameter | Value | Why it matters |
|---|---|---|
iwave | 2 | Rayleigh wave |
vel_type | [True, False] | Phase-velocity inversion only |
is_anisotropy | True | Joint isotropic + azimuthal-anisotropy inversion |
grid_method | 0 (by interval) | 0.1°/0.1°/2 km spacing with a 5-cell margin |
depth_min_max | [0, 80] km | Covers crust and uppermost mantle |
init_model_type | 1 | 1-D average-tt start — robust without external data |
vel_range | [3.2, 4.8] km/s | Reasonable bounds for western US Rayleigh phase velocities |
smooth_method | 0 (Gaussian) | sigma = [0.6°, 12 km] for both iso and aniso |
optim_method | 1 (LBFGS) | Wolfe line search with c1 = 0.1, c2 = 0.9 |
niter | 100 | Large iteration budget — anisotropic runs converge slower |
min_derr | 5 × 10⁻⁴ | Tight stopping criterion |
With 0.1° × 0.1° × 2 km and a 5-cell margin, the forward grid is 217 × 206 × 41 ≈ 1.83 million cells. This is a production-scale problem — plan for HPC resources.
Run the inversion
Prepare the run
cd examples/05_westUS_ani
mkdir -p OUTPUT_FILES_ph_aniso(Optional) Build csem.h5 if you want to use a 3-D initial model — see Data Preparation.
Launch the inversion
Workstation
mpirun -np 16 SURFATT_tomo -i input_params.ymlMonitor convergence
tail -f OUTPUT_FILES_ph_aniso/objective_function.txtAs a reference, on 192 cores (AMD EPYC 9655) 70 iterations complete in about 19 min 44 s (roughly 17 s/iter), so the full 100-iteration run finishes in under 30 minutes. Peak resident memory is ~32 GB (33,535,984 KB). Runtime and memory scale roughly linearly with the number of station pairs, so both may increase significantly on denser datasets.
Expected outputs
After the run, OUTPUT_FILES_ph_aniso/ contains:
| File | Description |
|---|---|
final_model.h5 | Final 3-D model (isotropic Vs + anisotropic parameters) |
model_iter.h5 | Model snapshots per iteration |
initial_model.h5 | 1-D starting model (when output_initial_model: True) |
objective_function.txt | Misfit vs. iteration |
src_rec_file_forward_PH.csv | Predicted travel times at the final model |
Last updated on