Skip to Content

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: 10

Key choices

ParameterValueWhy it matters
iwave2Rayleigh wave
vel_type[True, False]Phase-velocity inversion only
is_anisotropyTrueJoint isotropic + azimuthal-anisotropy inversion
grid_method0 (by interval)0.1°/0.1°/2 km spacing with a 5-cell margin
depth_min_max[0, 80] kmCovers crust and uppermost mantle
init_model_type11-D average-tt start — robust without external data
vel_range[3.2, 4.8] km/sReasonable bounds for western US Rayleigh phase velocities
smooth_method0 (Gaussian)sigma = [0.6°, 12 km] for both iso and aniso
optim_method1 (LBFGS)Wolfe line search with c1 = 0.1, c2 = 0.9
niter100Large iteration budget — anisotropic runs converge slower
min_derr5 × 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

mpirun -np 16 SURFATT_tomo -i input_params.yml

Monitor convergence

tail -f OUTPUT_FILES_ph_aniso/objective_function.txt

As 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:

FileDescription
final_model.h5Final 3-D model (isotropic Vs + anisotropic parameters)
model_iter.h5Model snapshots per iteration
initial_model.h51-D starting model (when output_initial_model: True)
objective_function.txtMisfit vs. iteration
src_rec_file_forward_PH.csvPredicted travel times at the final model
Last updated on