Skip to Content
ExamplesEg3 joint inversionPerform joint inversion

Perform joint inversion

The entire joint inversion process consists of three steps:

  1. relocate earthquake in the initial model;
  2. update model parameters and relocate earthquakes simultaneously;
  3. further relocate earthquakes in the updated model.

Step 1. relocate earthquake in the initial model

Given the three input files

  • Parameter file in YAML format 3_input_params/input_params_joint_step1.yaml.
  • initial model file in HDF5 format 2_models/model_init_N61_61_61.h5.
  • Traveltime data file in TEXT format OUTPUT_FILES/OUTPUT_FILES_signal/src_rec_file_forward_errloc.dat.

users can perform inversion by

mpirun -n 8 TOMOATT -i 3_input_params/input_params_joint_step1.yaml

The results are output to the folder OUTPUT_FILES/OUTPUT_FILES_joint_step1.

  • The relocated earthquake and synthetic traveltimes can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step1/src_rec_file_reloc_0050.dat.
  • The relocated earthquake and updated observed traveltimes can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step1/src_rec_file_reloc_0050_obs.dat.

Step 2. Joint inversion of model parameters and earthquake locations

Given the three input files

  • Parameter file in YAML format 3_input_params/input_params_joint_step2.yaml.
  • initial model file in HDF5 format 2_models/model_init_N61_61_61.h5.
  • Traveltime data file in TEXT format OUTPUT_FILES/OUTPUT_FILES_joint_step1/src_rec_file_reloc_0050_obs.dat.

users can perform inversion by

mpirun -n 8 TOMOATT -i 3_input_params/input_params_joint_step2.yaml

The results are output to the folder OUTPUT_FILES/OUTPUT_FILES_joint_step2.

  • The relocated earthquakes and synthetic traveltimes can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step2/src_rec_file_inv_0039_reloc_0039.dat.
  • The relocated earthquakes and updated observed traveltimes can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step2/src_rec_file_inv_0039_reloc_0039_obs.dat.
  • The updated model can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step2/final_model.h5.

Step 3. further relocate earthquakes in the updated model

Given the three input files

  • Parameter file in YAML format 3_input_params/input_params_joint_step3.yaml.
  • initial model file in HDF5 format OUTPUT_FILES/OUTPUT_FILES_joint_step2/final_model.h5.
  • Traveltime data file in TEXT format OUTPUT_FILES/OUTPUT_FILES_joint_step2/src_rec_file_inv_0039_reloc_0039_obs.dat.

users can perform inversion by

mpirun -n 8 TOMOATT -i 3_input_params/input_params_joint_step3.yaml

The results are output to the folder OUTPUT_FILES/OUTPUT_FILES_joint_step3.

  • The relocated earthquake and synthetic traveltimes can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step3/src_rec_file_reloc_0100.dat.
  • The relocated earthquake and updated observed traveltimes can be found as OUTPUT_FILES/OUTPUT_FILES_joint_step3/src_rec_file_reloc_0100_obs.dat.

Some remarks about joint inversion

1. Using different types of data

Step 1

Absolute traveltimes and common-receiver differential arrival times are involved to relocate earthquakes, while common-source differential arrival times are excluded.

  • The absolute traveltime is sensitive to the absolute earthquake locations;
  • The common-receiver differential arrival times provide constraints on the relative location between nearby earthquakes.
  • The common-source differential arrival times are excluded due to its insensitivity to origin time and source locations.

See the dafault parameter settings in 3_input_params/input_params_joint_step1.yaml

relocation: # update earthquake hypocenter and origin time (when run_mode : 2 and 3) ... # -------------- using absolute traveltime data -------------- abs_time: use_abs_time : true # 'yes' for using absolute traveltime data to update ortime and location; 'no' for not using (no need to set parameters in this section) # -------------- using common source differential traveltime data -------------- cs_dif_time: use_cs_time : false # 'yes' for using common source differential traveltime data to update ortime and location; 'no' for not using (no need to set parameters in this section) # -------------- using common receiver differential traveltime data -------------- cr_dif_time: use_cr_time : true # 'yes' for using common receiver differential traveltime data to update ortime and location; 'no' for not using (no need to set parameters in this section)

Users can change the options use_abs_time, use_cs_time, use_cr_time to include absolute traveltimes and/or common-source differential arrival times and/or common-receiver differential arrival times.

Step 2

Absolute traveltimes and common-source differential arrival times are involved to update model parameters, while common-receiver differential arrival times are excluded. The data used for relocation keep consistent with those in Step 1.

  • The absolute traveltime is sensitive to the absolute velocity values;
  • The common-source differential arrival times provide constraints on the receiver side structures and are insensitive to source uncertainties (in locations and origin times).
  • The common-receiver differential arrival times are excluded, as these data typically magnify the influence of source uncertainties on model update.

See the dafault parameter settings in 3_input_params/input_params_joint_step2.yaml

################################################### # model update parameters setting # ################################################### model_update: ... # -------------- using absolute traveltime data -------------- abs_time: use_abs_time: true # 'true' for using absolute traveltime data to update model parameters; 'false' for not using (no need to set parameters in this section) residual_weight: [1, 3, 1, 1] # XXX is the absolute traveltime residual (second) = abs(t^{obs}_{n,i} - t^{syn}_{n,j}) distance_weight: [100, 200, 1, 1] # XXX is epicenter distance (km) between the source and receiver related to the data # -------------- using common source differential traveltime data -------------- cs_dif_time: use_cs_time: true # 'true' for using common source differential traveltime data to update model parameters; 'false' for not using (no need to set parameters in this section) residual_weight: [1, 3, 1, 1] # XXX is the common source differential traveltime residual (second) = abs(t^{obs}_{n,i} - t^{obs}_{n,j} - t^{syn}_{n,i} + t^{syn}_{n,j}). azimuthal_weight: [15, 30, 1, 1] # XXX is the azimuth difference between two separate stations related to the common source. # -------------- using common receiver differential traveltime data -------------- cr_dif_time: use_cr_time: false # 'true' for using common receiver differential traveltime data to update model parameters; 'false' for not using (no need to set parameters in this section) residual_weight: [1, 3, 1, 1] # XXX is the common receiver differential traveltime residual (second) = abs(t^{obs}_{n,i} - t^{obs}_{m,i} - t^{syn}_{n,i} + t^{syn}_{m,i}) azimuthal_weight: [15, 30, 1, 1] # XXX is the azimuth difference between two separate sources related to the common receiver.

Users can change the options use_abs_time, use_cs_time, use_cr_time to include absolute traveltimes and/or common-source differential arrival times and/or common-receiver differential arrival times.

Step 3

Because the absolute locations are believed to be accurately determined in Steps 1 and 2, only common-receiver differential arrival times are included, to constrain the relative locations between nearby earthquakes.

See the dafault parameter settings in 3_input_params/input_params_joint_step3.yaml

relocation: # update earthquake hypocenter and origin time (when run_mode : 2 and 3) ... # -------------- using absolute traveltime data -------------- abs_time: use_abs_time : false # 'yes' for using absolute traveltime data to update ortime and location; 'no' for not using (no need to set parameters in this section) # -------------- using common source differential traveltime data -------------- cs_dif_time: use_cs_time : false # 'yes' for using common source differential traveltime data to update ortime and location; 'no' for not using (no need to set parameters in this section) # -------------- using common receiver differential traveltime data -------------- cr_dif_time: use_cr_time : true # 'yes' for using common receiver differential traveltime data to update ortime and location; 'no' for not using (no need to set parameters in this section)

Users can change the options use_abs_time, use_cs_time, use_cr_time to include absolute traveltimes and/or common-source differential arrival times and/or common-receiver differential arrival times.

2. Important settings about joint inversion

Last updated on