Skip to Content
User GuidesForward Modeling

Forward Modeling

A forward calculation predicts surface-wave travel times for a given model. It can be used to compute residuals for a reference model, or to build the synthetic observations of a checkerboard test.

Command SURFATT_tomo -f

This command predict synthetic traveltime from existing model.

Usage: SURFATT_tomo -i para_file [-f] [-h] Adjoint-state travel time tomography for surface wave required arguments: -i para_file Path to parameter file in yaml format optional arguments: -f Forward simulate travel time instead of inversion (default: false) -h Print help message

With -f, the run stops after one forward calculation:

mpirun -np 8 SURFATT_tomo -i input_params.yml -f

Set model.init_model_type: 2 and model.init_model_path to run the forward calculation through an existing 3-D model, for example the final_model.h5 of a previous inversion.

Command SURFATT_cb_fwd

This command create a checkerboard model and predict synthetic traveltime data from it.

Usage: SURFATT_cb_fwd -i para_file -n nx/ny/nz [-h] [-m margin_degree] [-p pert] [-s anom_size_km] Create checkerboard and forward simulate travel time for surface wave required arguments: -i para_file Path to parameter file in yaml format -n nx/ny/nz Number of anomalies along X, Y and Z optional arguments: -h Print help message -a nx/ny/nz[/angle] Add azimuthal anisotropy anomalies with optional angle (deg, default: 120) -r Use radial anisotropy instead of azimuthal (cannot be used with -a) -v Only perturb Vs model, default: false -m margin_degree Margin between anomalies to boundary in degrees (default: 0) -p pert_vel[/pert_ani] Magnitude of velocity/anisotropy perturbations For azimuthal: -p pert_vel[/pert_gc_gs] (default: 0.08) For radial: -p pert_vs[/pert_zeta] (default: 0.08) -s anom_size_km Size of top anomalies in km (default: uniform)

How the checkerboard is built

  • -n nx/ny/nz gives the number of anomalies along longitude, latitude, and depth. The perturbation is the product of one sinusoid per direction.
  • -m margin_degree leaves an unperturbed band of the given width in degrees along the horizontal edges of the model, which keeps the anomalies away from the poorly covered boundary.
  • -s anom_size_km indicates the thickness of the shallow layer anomaly. Default setting is each layer has even thickness.
  • -v perturbs VsV_s only. By default, VpV_p and ρ\rho are recomputed from the perturbed VsV_s with the empirical Brocher (2005) relations.

Anisotropic checkerboards

  • -a nx/ny/nz[/angle] adds azimuthal anisotropy anomalies with their own block layout and a fast axis at angle degrees. Blocks of the opposite sign get a fast axis rotated by 9090^\circ. Their amplitude is set by the second value of -p.
  • -r adds radial anisotropy. The ζ\zeta perturbation uses the same block layout as VsV_s, and its amplitude is the second value of -p.

Outputs

Both commands write to output.output_path:

  • src_rec_file_forward_<TAG>.csv: the synthetic travel times, one file per activated data set. <TAG> is RL_PH, RL_GR, LV_PH, or LV_GR. The file has the same columns as the input table, with tt, dist, and vel filled with the calculated values.
  • initial_model.h5: the unperturbed starting model, when output.output_initial_model is True.
  • target_model.h5: the perturbed checkerboard model. Written by SURFATT_cb_fwd only.

The output file name is built from the data type, not from the input file name. When data.src_rec_file_* points into output_path under the src_rec_file_forward_<TAG>.csv name, the forward run overwrites its own input. This is intended in the checkerboard examples.

Example: synthetic data for a checkerboard test

The examples first copy the observed geometry to the file name that the parameter file declares, then let the forward run replace its travel times:

mkdir -p OUTPUT_FILES cp src_rec_file_ph.csv OUTPUT_FILES/src_rec_file_forward_RL_PH.csv # 2 x 3 x 2 isotropic checkerboard, 8% Vs perturbation, 0.2 degree margin mpirun -np 8 SURFATT_cb_fwd -i input_params.yml -n 2/3/2 -m 0.2 -p 0.08 # invert the synthetic travel times mpirun -np 8 SURFATT_tomo -i input_params.yml

For a radial-anisotropy test, both Rayleigh and Love data are activated, and -r adds a ζ\zeta checkerboard:

mkdir -p OUTPUT_FILES cp src_rec_file_ph.csv OUTPUT_FILES/src_rec_file_forward_RL_PH.csv cp src_rec_file_ph.csv OUTPUT_FILES/src_rec_file_forward_LV_PH.csv mpirun -np 8 SURFATT_cb_fwd -i input_params.yml -n 2/3/2 -s 2 -r -m 0.2 -p 0.08/0.08

Complete cases are described in the Synthetic Examples section.

Last updated on