Perform joint inversion
The entire joint inversion process consists of three steps:
- relocate earthquake in the initial model;
- update model parameters and relocate earthquakes simultaneously;
- 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.