231 lines
14 KiB
YAML
231 lines
14 KiB
YAML
|
|
version: 3
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
# computational domian #
|
||
|
|
#################################################
|
||
|
|
domain:
|
||
|
|
min_max_dep: [-10, 10] # depth in km
|
||
|
|
min_max_lat: [37.7, 42.3] # latitude in degree
|
||
|
|
min_max_lon: [22.7, 27.3] # longitude in degree
|
||
|
|
n_rtp: [10, 50, 50] # number of nodes in depth,latitude,longitude direction
|
||
|
|
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
# traveltime data file path #
|
||
|
|
#################################################
|
||
|
|
source:
|
||
|
|
src_rec_file: OUTPUT_FILES/src_rec_file_forward.dat ### source receiver file path
|
||
|
|
swap_src_rec: true # swap source and receiver
|
||
|
|
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
# initial model file path #
|
||
|
|
#################################################
|
||
|
|
model:
|
||
|
|
init_model_path: ./test_model_init.h5 # path to initial model file
|
||
|
|
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
# parallel computation settings #
|
||
|
|
#################################################
|
||
|
|
parallel: # parameters for parallel computation
|
||
|
|
n_sims: 1 # number of simultanoues runs
|
||
|
|
ndiv_rtp: [1, 2, 2] # number of subdivision on each direction
|
||
|
|
nproc_sub: 2 # number of processors for sweep parallelization
|
||
|
|
use_gpu: false # true if use gpu (EXPERIMENTAL)
|
||
|
|
|
||
|
|
|
||
|
|
############################################
|
||
|
|
# output file setting #
|
||
|
|
############################################
|
||
|
|
output_setting:
|
||
|
|
output_dir: ./OUTPUT_FILES/ # path to output director (default is ./OUTPUT_FILES/)
|
||
|
|
output_source_field: false # output the calculated field of all sources
|
||
|
|
output_model_dat: false # output model_parameters_inv_0000.dat or not.
|
||
|
|
output_final_model: true # output merged final model or not.
|
||
|
|
output_in_process: true # output model at each inv iteration or not.
|
||
|
|
output_in_process_data: false # output src_rec_file at each inv iteration or not.
|
||
|
|
single_precision_output: false # output results in single precision or not.
|
||
|
|
verbose_output_level: 0 # output internal parameters, if 0, only model parameters are out. Higher level, more internal parameters are output. default: 0
|
||
|
|
output_file_format: 0 # in/output file format, if 0: HDF5, if 1: ASCII
|
||
|
|
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
# inversion or forward modeling #
|
||
|
|
#################################################
|
||
|
|
# run mode
|
||
|
|
# 0 for forward simulation only,
|
||
|
|
# 1 for inversion
|
||
|
|
# 2 for earthquake relocation
|
||
|
|
# 3 for inversion+earthquake relocation
|
||
|
|
run_mode: 1
|
||
|
|
|
||
|
|
|
||
|
|
###################################################
|
||
|
|
# model update parameters setting #
|
||
|
|
###################################################
|
||
|
|
model_update: # update model parameters (when run_mode : 1 and 3)
|
||
|
|
max_iterations: 3 # maximum number of inversion iterations
|
||
|
|
optim_method: 1 # optimization method. 0 : grad_descent, 1 : halve-stepping, 2 : lbfgs (EXPERIMENTAL)
|
||
|
|
|
||
|
|
# common parameters for all optim methods
|
||
|
|
step_length: 0.01 # step length of model perturbation at each iteration. 0.01 means maximum 1% perturbation for each iteration.
|
||
|
|
|
||
|
|
# parameters for optim_method 0 (grad_descent)
|
||
|
|
optim_method_0:
|
||
|
|
step_length_decay: 0.9 # if objective function increase, step size -> step length * step_length_decay. default: 0.9
|
||
|
|
|
||
|
|
# parameters for optim_method 1 (halve-stepping) or 2 (lbfgs)
|
||
|
|
optim_method_1_2:
|
||
|
|
max_sub_iterations: 10 # maximum number of each sub-iteration
|
||
|
|
regularization_weight: 0.01 # weight value for regularization (lbfgs mode only)
|
||
|
|
coefs_regulalization_rtp: [1.0, 1.0, 1.0] # coefficients for regularization on each direction(lbfgs mode only)
|
||
|
|
|
||
|
|
# smoothing
|
||
|
|
smoothing:
|
||
|
|
smooth_method: 0 # 0: multiparametrization, 1: laplacian smoothing (EXPERIMENTAL)
|
||
|
|
l_smooth_rtp: [100, 100, 100] # smoothing coefficients for laplacian smoothing
|
||
|
|
|
||
|
|
# parameters for smooth method 0 (multigrid model parametrization)
|
||
|
|
n_inversion_grid: 5 # number of inversion grid sets
|
||
|
|
|
||
|
|
# inversion grid type
|
||
|
|
type_invgrid_dep: 0 # 0: uniform inversion grid, 1: flexible grid
|
||
|
|
type_invgrid_lat: 0 # 0: uniform inversion grid, 1: flexible grid
|
||
|
|
type_invgrid_lon: 0 # 0: uniform inversion grid, 1: flexible grid
|
||
|
|
|
||
|
|
# settings for uniform inversion grid (if type_*_inv : 0)
|
||
|
|
n_inv_dep_lat_lon: [5, 10, 10] # number of the base inversion grid points (ignored if type_*_inv : 1)
|
||
|
|
min_max_dep_inv: [-10, 10] # depth in km (Radius of the earth is defined in config.h/R_earth) (ignored if type_dep_inv : 1)
|
||
|
|
min_max_lat_inv: [37.7, 42.3] # latitude in degree
|
||
|
|
min_max_lon_inv: [22.7, 27.3] # longitude in degree
|
||
|
|
|
||
|
|
# settings for flexible inversion grid (if type_*_inv : 1)
|
||
|
|
dep_inv: [-10.0, -7.5, -5.0, -2.5, 0.0, 2.5, 5.0, 7.5, 10.0] # depth in km (Radius of the earth is defined in config.h/R_earth)
|
||
|
|
lat_inv: [0.0, 1.0] # latitude in degree (ignored if type_lat_inv : 0)
|
||
|
|
lon_inv: [0.0, 1.0] # longitude in degree (ignored if type_lon_inv : 0)
|
||
|
|
# if we want to use another inversion grid for inverting anisotropy, set invgrid_ani: true (default: false)
|
||
|
|
invgrid_ani: false
|
||
|
|
# settings for flexible inversion grid for anisotropy (only flexible grid input is provided)
|
||
|
|
# dep_inv_ani: [1, 1, 1]
|
||
|
|
# lat_inv_ani: [1, 1, 1]
|
||
|
|
# lon_inv_ani: [1, 1, 1]
|
||
|
|
# inversion grid volume rescale (kernel -> kernel / volume of inversion grid mesh),
|
||
|
|
# this precondition may be carefully applied if the sizes of inversion grids are unbalanced
|
||
|
|
invgrid_volume_rescale: false
|
||
|
|
|
||
|
|
# path to station correction file (under development)
|
||
|
|
use_sta_correction: false
|
||
|
|
# sta_correction_file: dummy_sta_correction_file # station correction file path
|
||
|
|
#step_length_sc: 0.001 step length relate to the update of station correction terms
|
||
|
|
|
||
|
|
# path to station correction file
|
||
|
|
#use_sta_correction: false
|
||
|
|
#sta_correction_file: dummy_sta_correction_file # station correction file path
|
||
|
|
|
||
|
|
|
||
|
|
# In the following data subsection, XXX_weight means a weight is assigned to the data, influencing the objective function and gradient
|
||
|
|
# XXX_weight : [d1,d2,w1,w2] means:
|
||
|
|
# if XXX < d1, weight = w1
|
||
|
|
# if d1 <= XXX < d2, weight = w1 + (XXX-d1)/(d2-d1)*(w2-w1), (linear interpolation)
|
||
|
|
# if d2 <= XXX , weight = w2
|
||
|
|
# You can easily set w1 = w2 = 1.0 to normalize the weight related to XXX.
|
||
|
|
# -------------- 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: [0, 9999, 1.0, 1.0] # XXX is the absolute traveltime residual (second) = abs(t^{obs}_{n,i} - t^{syn}_{n,j})
|
||
|
|
distance_weight: [0, 9999, 1.0, 1.0] # 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: false # '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: [0, 0, 0, 0] # 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: [0, 0, 0, 0] # 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: [0, 0, 0, 0] # 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: [0, 0, 0, 0] # XXX is the azimuth difference between two separate sources related to the common receiver.
|
||
|
|
|
||
|
|
# -------------- global weight of different types of data (to balance the weight of different data) --------------
|
||
|
|
global_weight:
|
||
|
|
balance_data_weight: false # yes: over the total weight of the each type of the data. no: use original weight (below weight for each type of data needs to be set)
|
||
|
|
abs_time_weight: 1 # weight of absolute traveltime data after balance, default: 1.0
|
||
|
|
cs_dif_time_local_weight: 1 # weight of common source differential traveltime data after balance, default: 1.0
|
||
|
|
cr_dif_time_local_weight: 1 # weight of common receiver differential traveltime data after balance, default: 1.0
|
||
|
|
teleseismic_weight: 1 # weight of teleseismic data after balance, default: 1.0 (exclude in this version)
|
||
|
|
|
||
|
|
# -------------- inversion parameters --------------
|
||
|
|
update_slowness : true # update slowness (velocity) or not. default: true
|
||
|
|
update_azi_ani : false # update azimuthal anisotropy (xi, eta) or not. default: false
|
||
|
|
#update_rad_ani : false # update radial anisotropy (in future) or not. default: false
|
||
|
|
|
||
|
|
# -------------- for teleseismic inversion (under development) --------------
|
||
|
|
# depth_taper : [d1,d2] means:
|
||
|
|
# if XXX < d1, kernel <- kernel * 0.0
|
||
|
|
# if d1 <= XXX < d2, kernel <- kernel * (XXX-d1)/(d2-d1), (linear interpolation)
|
||
|
|
# if d2 <= XXX , kernel <- kernel * 1.0
|
||
|
|
# You can easily set d1 = -200, d1 = -100 to remove this taper.
|
||
|
|
depth_taper : [-1e+07, -1e+07]
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
# relocation parameters setting #
|
||
|
|
#################################################
|
||
|
|
relocation: # update earthquake hypocenter and origin time (when run_mode : 2 and 3)
|
||
|
|
min_Ndata: 4 # if the number of data of the earthquake is less than <min_Ndata>, the earthquake will not be relocated. defaut value: 4
|
||
|
|
|
||
|
|
# relocation_strategy
|
||
|
|
step_length : 0.01 # step length of relocation perturbation at each iteration. 0.01 means maximum 1% perturbation for each iteration.
|
||
|
|
step_length_decay : 0.9 # if objective function increase, step size -> step length * step_length_decay. default: 0.9
|
||
|
|
rescaling_dep_lat_lon_ortime : [10, 1, 1, 0.5] # The perturbation is related to <rescaling_dep_lat_lon_ortime>. Unit: km,km,km,second
|
||
|
|
max_change_dep_lat_lon_ortime : [10, 1, 1, 0.5] # the change of dep,lat,lon,ortime do not exceed max_change. Unit: km,km,km,second
|
||
|
|
max_iterations : 501 # maximum number of iterations for relocation
|
||
|
|
tol_gradient : 0.001 # if the norm of gradient is smaller than the tolerance, the iteration of relocation terminates
|
||
|
|
|
||
|
|
# -------------- using absolute traveltime data --------------
|
||
|
|
abs_time:
|
||
|
|
use_abs_time : false # 'yes' for using absolute traveltime data to update model parameters; 'no' for not using (no need to set parameters in this section)
|
||
|
|
residual_weight : [0, 0, 0, 0] # XXX is the absolute traveltime residual (second) = abs(t^{obs}_{n,i} - t^{syn}_{n,j})
|
||
|
|
distance_weight : [0, 0, 0, 0] # XXX is epicenter distance (km) between the source and receiver related to the data
|
||
|
|
|
||
|
|
# -------------- using common receiver differential traveltime data --------------
|
||
|
|
cr_dif_time:
|
||
|
|
use_cr_time : false # 'yes' for using common receiver differential traveltime data to update model parameters; 'no' for not using (no need to set parameters in this section)
|
||
|
|
residual_weight : [0, 0, 0, 0] # 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 : [0, 0, 0, 0] # XXX is the azimuth difference between two separate sources related to the common receiver.
|
||
|
|
|
||
|
|
|
||
|
|
# -------------- global weight of different types of data (to balance the weight of different data) --------------
|
||
|
|
global_weight:
|
||
|
|
balance_data_weight: false # yes: over the total weight of the each type of the data. no: use original weight (below weight for each type of data needs to be set)
|
||
|
|
abs_time_local_weight: 1 # weight of absolute traveltime data for relocation after balance, default: 1.0
|
||
|
|
cr_dif_time_local_weight: 1 # weight of common receiver differential traveltime data for relocation after balance, default: 1.0
|
||
|
|
|
||
|
|
####################################################################
|
||
|
|
# inversion strategy for tomography and relocation #
|
||
|
|
####################################################################
|
||
|
|
inversion_strategy: # update model parameters and earthquake hypocenter iteratively (when run_mode : 3)
|
||
|
|
|
||
|
|
inv_mode : 0 # 0 for update model parameters and relocation iteratively. (other options for future work)
|
||
|
|
|
||
|
|
# for inv_mode : 0, parameters below are required
|
||
|
|
inv_mode_0: # update model for <model_update_N_iter> steps, then update location for <relocation_N_iter> steps, and repeat the process for <max_loop> loops.
|
||
|
|
model_update_N_iter : 1
|
||
|
|
relocation_N_iter : 1
|
||
|
|
max_loop : 10
|
||
|
|
|
||
|
|
|
||
|
|
# --- parameters for core solver ---------------------------------------------------------
|
||
|
|
# --- please do not change the following parameters unless you know what you are doing ---
|
||
|
|
|
||
|
|
########################################################################
|
||
|
|
# Scheme of Eikonal solver (fast sweeping method) #
|
||
|
|
########################################################################
|
||
|
|
calculation:
|
||
|
|
convergence_tolerance: 0.0001 # threshold value for checking the convergence for each forward/adjoint run
|
||
|
|
max_iterations: 500 # number of maximum iteration for each forward/adjoint run
|
||
|
|
stencil_order: 3 # order of stencil, 1 or 3
|
||
|
|
stencil_type: 0 # 0: , 1: first-order upwind scheme (only sweep_type 0 is supported)
|
||
|
|
sweep_type: 1 # 0: legacy, 1: cuthill-mckee with shm parallelization
|