@ -1,197 +0,0 @@ | |||
--- !grond.Config | |||
# All file paths referenced below are treated relative to the location of this | |||
# configuration file, here we may give a common prefix. E.g. setting it to '..' | |||
# if the configuration file is in the sub-directory '${project_root}/config' | |||
# allows us to give the paths below relative to '${project_root}'. | |||
path_prefix: '..' | |||
# Path, where to store output (run directories). The placeholder | |||
# '${problem_name}' will be expanded to a name configured below in | |||
# problem_config.name_template and will typically include a config identifier | |||
# and the event name. | |||
rundir_template: runs/${problem_name}.grun | |||
# If given, restrict to processing of listed events | |||
#event_names: | |||
#- 'gfz2018pmjk' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for dataset (input data) | |||
# | |||
# The placeholder '${event_name}' will be expanded to the current event. This | |||
# enables us to use the same configuration for multiple events. The available | |||
# events are detected by looking into possible expansions of | |||
# dataset_config.events_path | |||
# ----------------------------------------------------------------------------- | |||
dataset_config: !grond.DatasetConfig | |||
# File with hypocenter information and possibly reference solution | |||
events_path: 'data/events/${event_name}/event.txt' | |||
# List of directories for the InSAR scenes | |||
kite_scene_paths: ['data/events/${event_name}/insar'] | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for the observational data fitting | |||
# | |||
# This defines the objective function to be minimized in the optimisation. It | |||
# can be composed of one or more contributions, each represented by a | |||
# !grond.*TargetGroup section. | |||
# ----------------------------------------------------------------------------- | |||
target_groups: | |||
- !grond.SatelliteTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'static' | |||
# Just a name used to identify targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'insar' | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# Selector for kite scene ids, '*all' is a wildcard and load all scenes present | |||
kite_scenes: ['*all'] | |||
# Subsection on how to fit the traces | |||
misfit_config: !grond.SatelliteMisfitConfig | |||
# Optimise a planar orbital ramp | |||
optimise_orbital_ramp: false | |||
# Parameters for the orbital ramp | |||
ranges: | |||
# Vertical offset in [m] | |||
offset: -0.5 .. 0.5 | |||
# Ranges for the East-West and North-South inclination of the ramp | |||
ramp_east: -1e-4 .. 1e-4 | |||
ramp_north: -1e-4 .. 1e-4 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: multilinear | |||
# Name of the GF Store to use | |||
store_id: crust2_ib_static | |||
# ----------------------------------------------------------------------------- | |||
# Definition of the problem to be solved | |||
# | |||
# In this section the source model to be fitted is chosen, the parameter space | |||
# defined, and how to combine the misfit contributions defined in the | |||
# target_groups section above. | |||
# | |||
# The marker !grond.RectangularProblemConfig selects a finite rectancular | |||
# source model. | |||
# ----------------------------------------------------------------------------- | |||
problem_config: !grond.RectangularProblemConfig | |||
# Name used to identify the output | |||
name_template: rect_2009LaAquila | |||
# How to combine the target misfits. For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 2 | |||
# Definition of model parameter space to be searched in the optimisation | |||
ranges: | |||
# Scaling ranges in [m] | |||
depth: 2500 .. 7000 | |||
east_shift: 0 .. 20000 | |||
north_shift: 0 .. 20000 | |||
length: 5000 .. 10000 | |||
width: 2000 .. 10000 | |||
slip: .2 .. 2 | |||
# Orientation ranges in [deg] | |||
dip: 10 .. 50 | |||
rake: 120 .. 360 | |||
strike: 220 .. 360 | |||
# We are using a dense GF store and will reduce the number of discrete | |||
# subsources by this factor. Decrease the decimation for a finer sub-source | |||
# resolution, and increased computational time | |||
decimation_factor: 12 | |||
# Clearance distance around stations (no models with origin closer than this | |||
# distance to any station are produced by the sampler) | |||
distance_min: 0.0 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of pre-optimisation analysis phases. | |||
# determined during this phase. | |||
# ----------------------------------------------------------------------------- | |||
# | |||
analyser_configs: | |||
# DOES NOT APPLY FOR INSAR! Balancing weights are determined with this analyser | |||
- !grond.TargetBalancingAnalyserConfig | |||
niterations: 1000 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of the optimisation procedure | |||
# ----------------------------------------------------------------------------- | |||
optimiser_config: !grond.HighScoreOptimiserConfig | |||
# Number of bootstrap realisations to be tracked simultaneously in the | |||
# optimisation | |||
nbootstrap: 25 | |||
# Stages of the sampler then narrow down to the interesting regions | |||
# (!grond.DirectedSamplerPhase). | |||
sampler_phases: | |||
# Start with uniform sampling of the model space | |||
- !grond.UniformSamplerPhase | |||
# Number of iterations | |||
niterations: 10000 | |||
# How often we shall try to find a valid sample | |||
ntries_preconstrain_limit: 1000 | |||
# Narrow down to the interesting regions | |||
- !grond.DirectedSamplerPhase | |||
# Number of iterations | |||
niterations: 40000 | |||
# How often we shall try to find a valid sample | |||
ntries_preconstrain_limit: 1000 | |||
# Multiplicator for width of sampler distribution at start of this phase | |||
scatter_scale_begin: 2.0 | |||
# Multiplicator for width of sampler distribution at end of this phase | |||
scatter_scale_end: 0.5 | |||
starting_point: excentricity_compensated | |||
sampler_distribution: normal | |||
standard_deviation_estimator: median_density_single_chain | |||
ntries_sample_limit: 2000 | |||
# This parameter determines the length of the chains | |||
chain_length_factor: 8.0 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for synthetic seismogram engine | |||
# | |||
# Configures where to look for GF stores. | |||
# ----------------------------------------------------------------------------- | |||
engine_config: !grond.EngineConfig | |||
# Whether to use GF store directories listed in ~/.pyrocko/config.pf | |||
gf_stores_from_pyrocko_config: true | |||
# List of directories with GF stores | |||
gf_store_superdirs: ['gf_stores'] |
@ -0,0 +1 @@ | |||
../../../src/data/init/example_insar_rectangular.gronf |
@ -1,295 +0,0 @@ | |||
%YAML 1.1 | |||
--- !grond.Config | |||
# All file paths referenced below are treated relative to the location of this | |||
# configuration file, here we may give a common prefix. E.g. setting it to '..' | |||
# if the configuration file is in the sub-directory '${project_root}/config' | |||
# allows us to give the paths below relative to '${project_root}'. | |||
path_prefix: '..' | |||
# Path, where to store output (run directories). The placeholder | |||
# '${problem_name}' will be expanded to a name configured below in | |||
# problem_config.name_template and will typically include a config identifier | |||
# and the event name. | |||
rundir_template: 'runs/${problem_name}.grun' | |||
# If given, restrict to processing of listed events | |||
#event_names: | |||
#- 'gfz2018pmjk' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for dataset (input data) | |||
# | |||
# The placeholder '${event_name}' will be expanded to the current event. This | |||
# enables us to use the same configuration for multiple events. The available | |||
# events are detected by looking into possible expansions of | |||
# dataset_config.events_path | |||
# ----------------------------------------------------------------------------- | |||
dataset_config: !grond.DatasetConfig | |||
# List of files with station coordinates. | |||
stations_stationxml_paths: | |||
- 'data/events/${event_name}/waveforms/stations.geofon.xml' | |||
- 'data/events/${event_name}/waveforms/stations.iris.xml' | |||
# File with hypocenter information and possibly reference solution | |||
events_path: 'data/events/${event_name}/event.txt' | |||
# List of directories with raw waveform data | |||
waveform_paths: ['data/events/${event_name}/waveforms/raw'] | |||
# List of stations/components to be excluded according to their STA, NET.STA, | |||
# NET.STA.LOC, or NET.STA.LOC.CHA codes | |||
blacklist: ['GE.UGM', 'GE.PLAI'] | |||
# List of files with additional exclusion lists (one entry per line, same | |||
# format as above) | |||
blacklist_paths: | |||
- 'data/events/${event_name}/waveforms/blacklist.txt' | |||
# List of files with instrument response information (can be the same as in | |||
# stations_stationxml_paths above) | |||
responses_stationxml_paths: | |||
- 'data/events/${event_name}/waveforms/stations.geofon.xml' | |||
- 'data/events/${event_name}/waveforms/stations.iris.xml' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for the observational data fitting | |||
# | |||
# This defines the objective function to be minimized in the optimisation. It | |||
# can be composed of one or more contributions, each represented by a | |||
# !grond.*TargetGroup section. | |||
# ----------------------------------------------------------------------------- | |||
target_groups: | |||
- !grond.WaveformTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'td' | |||
# Just a name used to identify targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'td.love' | |||
# Epicentral distance range of stations to be considered in meter | |||
distance_min: 1e3 | |||
distance_max: 900e3 | |||
# Names of components to be included. Available: N=north, E=east, Z=vertical | |||
# (up), R=radial (away), T=transverse (right) | |||
channels: ['T'] | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# subsection on how to fit the traces | |||
misfit_config: !grond.WaveformMisfitConfig | |||
# Frequency band [Hz] of acausal filter (flat part of frequency taper) | |||
fmin: 0.01 | |||
fmax: 0.05 | |||
# Factor defining fall-off of frequency taper (zero at fmin/ffactor and | |||
# fmax*ffactor) | |||
ffactor: 1.5 | |||
# Time window to include in the data fitting. Times can be defined offset | |||
# to given phase arrivals. E.g. '{stored:P}-600' would mean 600 s | |||
# before arrival of the phase named 'P'. The phase must be defined in the | |||
# travel time tables in the GF store. | |||
tmin: '{stored:any_P}' | |||
tmax: '{vel_surface:2.5}' | |||
# tfade: 120.0 | |||
# How to fit the data (available: 'time_domain', 'frequency_domain', | |||
# 'log_frequency_domain', 'absolute', 'envelope', 'cc_max_norm') | |||
domain: 'time_domain' | |||
tautoshift_max: 4.0 | |||
autoshift_penalty_max: 0.05 | |||
# For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: 'nearest_neighbor' | |||
# Name of the GF Store to use | |||
store_id: 'crust2_j3' | |||
- !grond.WaveformTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'td' | |||
# Just a name used to identfy targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'td.rayleigh' | |||
# Epicentral distance range of stations to be considered in meter | |||
distance_min: 1e3 | |||
distance_max: 900e3 | |||
# Names of components to be included. Available: N=north, E=east, Z=vertical | |||
# (up), R=radial (away), T=transverse (right) | |||
channels: ['R', 'Z'] | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# subsection on how to fit the traces | |||
misfit_config: !grond.WaveformMisfitConfig | |||
# Frequency band [Hz] of acausal filter (flat part of frequency taper) | |||
fmin: 0.01 | |||
fmax: 0.05 | |||
# Factor defining fall-off of frequency taper (zero at fmin/ffactor and | |||
# fmax*ffactor) | |||
ffactor: 1.5 | |||
# Time window to include in the data fitting. Times can be defined offset | |||
# to given phase arrivals. E.g. '{stored:P}-600' would mean 600 s | |||
# before arrival of the phase named 'P'. The phase must be defined in the | |||
# travel time tables in the GF store. | |||
tmin: '{stored:any_P}' | |||
tmax: '{vel_surface:2.5}' | |||
# tfade: 120.0 | |||
# How to fit the data (available: 'time_domain', 'frequency_domain', | |||
# 'log_frequency_domain', 'absolute', 'envelope', 'cc_max_norm') | |||
domain: 'time_domain' | |||
tautoshift_max: 4.0 | |||
autoshift_penalty_max: 0.05 | |||
# For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: 'nearest_neighbor' | |||
# Name of the GF Store to use | |||
store_id: 'crust2_j3' | |||
# ----------------------------------------------------------------------------- | |||
# Definition of the problem to be solved | |||
# | |||
# In this section the source model to be fitted is chosen, the parameter space | |||
# defined, and how to combine the misfit contributions defined in the | |||
# target_groups section above. | |||
# | |||
# The marker !grond.CMTProblemConfig selects a centroid moment tensor source | |||
# model. | |||
# ----------------------------------------------------------------------------- | |||
problem_config: !grond.CMTProblemConfig | |||
# Name used to identify the output | |||
name_template: 'cmt_${event_name}' | |||
# Definition of model parameter space to be searched in the optimisation | |||
ranges: | |||
# Time relative to hypocenter origin time [s] | |||
time: '-10 .. 10 | add' | |||
# Centroid location with respect to hypocenter origin [m] | |||
north_shift: '-15e3 .. 15e3' | |||
east_shift: '-15e3 .. 15e3' | |||
depth: '5e3 .. 30e3' | |||
# Range of magnitudes to allow | |||
magnitude: '5.7 .. 6.2' | |||
# Relative moment tensor component ranges (don't touch) | |||
rmnn: '-1.41421 .. 1.41421' | |||
rmee: '-1.41421 .. 1.41421' | |||
rmdd: '-1.41421 .. 1.41421' | |||
rmne: '-1 .. 1' | |||
rmnd: '-1 .. 1' | |||
rmed: '-1 .. 1' | |||
# Source duration range [s] | |||
duration: '1. .. 5.' | |||
# Clearance distance around stations (no models with origin closer than this | |||
# distance to any station are produced by the sampler) | |||
distance_min: 1e3 | |||
# Type of moment tensor to restrict to (choices: 'full', 'deviatoric', 'dc') | |||
mt_type: 'deviatoric' | |||
# How to combine the target misfits. For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of pre-optimisation analysis phases. | |||
# determined during this phase. | |||
# ----------------------------------------------------------------------------- | |||
# | |||
analyser_configs: | |||
# Balancing weights are determined with this analyser | |||
- !grond.TargetBalancingAnalyserConfig | |||
# Number of models to forward model in the analysis, larger number -> better | |||
# statistics) | |||
niterations: 1000 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of the optimisation procedure | |||
# ----------------------------------------------------------------------------- | |||
optimiser_config: !grond.HighScoreOptimiserConfig | |||
# Number of bootstrap realisations to be tracked simultaneously in the | |||
# optimisation | |||
nbootstrap: 100 | |||
# stages of the sampler. Start with uniform sampling of the model space | |||
# (!grond.UniformSamplerPhase), then narrow down to the interesting regions | |||
# (!grond.DirectedSamplerPhase). | |||
sampler_phases: | |||
- !grond.UniformSamplerPhase | |||
# Number of iterations | |||
niterations: 1000 | |||
- !grond.DirectedSamplerPhase | |||
# Number of iterations | |||
niterations: 20000 | |||
# Multiplicator for width of sampler distribution at start of this phase | |||
scatter_scale_begin: 2.0 | |||
# Multiplicator for width of sampler distribution at end of this phase | |||
scatter_scale_end: 0.5 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for synthetic seismogram engine | |||
# | |||
# Configures where to look for GF stores. | |||
# ----------------------------------------------------------------------------- | |||
engine_config: !grond.EngineConfig | |||
# Whether to use GF store directories listed in ~/.pyrocko/config.pf | |||
gf_stores_from_pyrocko_config: false | |||
# List of directories with GF stores | |||
gf_store_superdirs: ['gf_stores'] |
@ -0,0 +1 @@ | |||
../../../src/data/init/example_regional_cmt.gronf |
@ -1,239 +0,0 @@ | |||
%YAML 1.1 | |||
--- !grond.Config | |||
# All file paths referenced below are treated relative to the location of this | |||
# configuration file, here we may give a common prefix. E.g. setting it to '..' | |||
# if the configuration file is in the sub-directory '${project_root}/config' | |||
# allows us to give the paths below relative to '${project_root}'. | |||
path_prefix: '..' | |||
# Path, where to store output (run directories). The placeholder | |||
# '${problem_name}' will be expanded to a name configured below in | |||
# problem_config.name_template and will typically include a config identifier | |||
# and the event name. | |||
rundir_template: 'runs/${problem_name}.grun' | |||
# If given, restrict to processing of listed events | |||
#event_names: | |||
#- 'gfz2015sfdd' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for dataset (input data) | |||
# | |||
# The placeholder '${event_name}' will be expanded to the current event. This | |||
# enables us to use the same configuration for multiple events. The available | |||
# events are detected by looking into possible expansions of | |||
# dataset_config.events_path | |||
# ----------------------------------------------------------------------------- | |||
dataset_config: !grond.DatasetConfig | |||
# List of files with station coordinates. | |||
stations_stationxml_paths: | |||
- 'data/events/${event_name}/waveforms/stations.geofon.xml' | |||
- 'data/events/${event_name}/waveforms/stations.iris.xml' | |||
- 'data/events/${event_name}/waveforms/stations.orfeus.xml' | |||
# File with hypocenter information and possibly reference solution | |||
events_path: 'data/events/${event_name}/event.txt' | |||
# List of directories with raw waveform data | |||
waveform_paths: ['data/events/${event_name}/waveforms/raw'] | |||
# List of stations/components to be excluded according to their STA, NET.STA, | |||
# NET.STA.LOC, or NET.STA.LOC.CHA codes | |||
blacklist: [] | |||
# List of files with additional exclusion lists (one entry per line, same | |||
# format as above) | |||
blacklist_paths: | |||
- 'data/events/${event_name}/waveforms/blacklist.txt' | |||
# List of files with instrument response information (can be the same as in | |||
# stations_stationxml_paths above) | |||
responses_stationxml_paths: | |||
- 'data/events/${event_name}/waveforms/stations.geofon.xml' | |||
- 'data/events/${event_name}/waveforms/stations.iris.xml' | |||
- 'data/events/${event_name}/waveforms/stations.orfeus.xml' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for the observational data fitting | |||
# | |||
# This defines the objective function to be minimized in the optimisation. It | |||
# can be composed of one or more contributions, each represented by a | |||
# !grond.*TargetGroup section. | |||
# ----------------------------------------------------------------------------- | |||
target_groups: | |||
- !grond.WaveformTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'td' | |||
# Just a name used to identfy targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'td.wphase' | |||
# Epicentral distance range of stations to be considered | |||
distance_min: 3000e3 | |||
distance_max: 10000e3 | |||
# Names of components to be included. Available: N=north, E=east, Z=vertical | |||
# (up), R=radial (away), T=transverse (right) | |||
channels: ['Z','R'] | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# subsection on how to fit the traces | |||
misfit_config: !grond.WaveformMisfitConfig | |||
# Frequency band [Hz] of acausal filter (flat part of frequency taper) | |||
fmin: 0.001 | |||
fmax: 0.005 | |||
# Factor defining fall-off of frequency taper (zero at fmin/ffactor and | |||
# fmax*ffactor) | |||
ffactor: 1.5 | |||
# Time window to include in the data fitting. Times can be defined offset | |||
# to given phase arrivals. E.g. '{stored:P}-600' would mean 600 s | |||
# before arrival of the phase named 'P'. The phase must be defined in the | |||
# travel time tables in the GF store. | |||
tmin: '{stored:P}-600' | |||
tmax: '{stored:S}-60' | |||
# tfade: 120.0 | |||
# How to fit the data (available: 'time_domain', 'frequency_domain', | |||
# 'log_frequency_domain', 'absolute', 'envelope', 'cc_max_norm') | |||
domain: 'time_domain' | |||
# For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: 'nearest_neighbor' | |||
# Name of the GF Store to use | |||
store_id: 'global_20s_shallow' | |||
# ----------------------------------------------------------------------------- | |||
# Definition of the problem to be solved | |||
# | |||
# In this section the source model to be fitted is chosen, the parameter space | |||
# defined, and how to combine the misfit contributions defined in the | |||
# target_groups section above. | |||
# | |||
# The marker !grond.CMTProblemConfig selects a centroid moment tensor source | |||
# model. | |||
# ----------------------------------------------------------------------------- | |||
problem_config: !grond.CMTProblemConfig | |||
# Name used to identify the output | |||
name_template: 'wphase_cmt_${event_name}' | |||
# Definition of model parameter space to be searched in the optimisation | |||
ranges: | |||
# Time relative to hypocenter origin time [s] | |||
time: '-100 .. 100 | add' | |||
# Centroid location with respect to hypocenter origin [m] | |||
north_shift: '-200e3 .. 200e3' | |||
east_shift: '-200e3 .. 200e3' | |||
depth: '5e3 .. 40e3' | |||
# Range of magnitudes to allow | |||
magnitude: '7.5 .. 8.5' | |||
# Relative moment tensor component ranges (don't touch) | |||
rmnn: '-1.41421 .. 1.41421' | |||
rmee: '-1.41421 .. 1.41421' | |||
rmdd: '-1.41421 .. 1.41421' | |||
rmne: '-1 .. 1' | |||
rmnd: '-1 .. 1' | |||
rmed: '-1 .. 1' | |||
# Source duration range [s] | |||
duration: '50. .. 200.' | |||
# Clearance distance around stations (no models with origin closer than this | |||
# distance to any station are produced by the sampler) | |||
distance_min: 0. | |||
# Type of moment tensor to restrict to (choices: 'full', 'deviatoric', 'dc') | |||
mt_type: 'deviatoric' | |||
# How to combine the target misfits. For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of pre-optimisation analysis phases. | |||
# determined during this phase. | |||
# ----------------------------------------------------------------------------- | |||
# | |||
analyser_configs: | |||
# Balancing weights are determined with this analyser | |||
- !grond.TargetBalancingAnalyserConfig | |||
# Number of models to forward model in the analysis, larger number -> better | |||
# statistics) | |||
niterations: 1000 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of the optimisation procedure | |||
# ----------------------------------------------------------------------------- | |||
optimiser_config: !grond.HighScoreOptimiserConfig | |||
# Number of bootstrap realisations to be tracked simultaneously in the | |||
# optimisation | |||
nbootstrap: 100 | |||
# stages of the sampler. Start with uniform sampling of the model space | |||
# (!grond.UniformSamplerPhase), then narrow down to the interesting regions | |||
# (!grond.DirectedSamplerPhase). | |||
sampler_phases: | |||
- !grond.UniformSamplerPhase | |||
# Number of iterations | |||
niterations: 1000 | |||
- !grond.DirectedSamplerPhase | |||
# Number of iterations | |||
niterations: 20000 | |||
# Multiplicator for width of sampler distribution at start of this phase | |||
scatter_scale_begin: 2.0 | |||
# Multiplicator for width of sampler distribution at end of this phase | |||
scatter_scale_end: 0.5 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for synthetic seismogram engine | |||
# | |||
# Configures where to look for GF stores. | |||
# ----------------------------------------------------------------------------- | |||
engine_config: !grond.EngineConfig | |||
# Whether to use GF store directories listed in ~/.pyrocko/config.pf | |||
gf_stores_from_pyrocko_config: false | |||
# List of directories with GF stores | |||
gf_store_superdirs: ['gf_stores'] |
@ -0,0 +1 @@ | |||
../../../src/data/init/example_wphase_cmt.gronf |
@ -1,201 +1,55 @@ | |||
import grond | |||
import logging | |||
import math | |||
import shutil | |||
import os | |||
from os import path as op | |||
from pyrocko import util | |||
from pyrocko.gf import Range, Timing | |||
import glob | |||
import os.path as op | |||
logger = logging.getLogger('grond.init') | |||
km = 1e3 | |||
INIT_EVENT = '''name = myanmar_2011 | |||
time = 2011-03-24 13:55:12.010 | |||
latitude = 20.687 | |||
longitude = 99.822 | |||
magnitude = 6.9 | |||
moment = 1.9228e+19 | |||
depth = 8000 | |||
region = Myanmar | |||
-------------------------------------------- | |||
''' | |||
class GrondInit(object): | |||
class GrondProject(object): | |||
folder = op.join(op.dirname(__file__), '..', 'data', 'init') | |||
def __init__(self): | |||
self.dataset_config = grond.DatasetConfig( | |||
events_path='events.txt') | |||
self.project_config = None | |||
self.target_groups = [] | |||
self.sub_dirs = ['gf_stores', 'config'] | |||
self.empty_files = [] | |||
def add_waveforms(self): | |||
logger.info('Added waveforms') | |||
dsc = self.dataset_config | |||
wd = op.join('data', 'waveforms') | |||
self.sub_dirs.append(wd) | |||
dsc.waveform_paths = [wd] | |||
sp = op.join(wd, 'stations.xml') | |||
dsc.stations_stationxml_paths = [sp] | |||
dsc.responses_stationxml_paths = [sp] | |||
self.target_groups.append( | |||
grond.WaveformTargetGroup( | |||
normalisation_family='time_domain', | |||
path='sw', | |||
distance_min=10*km, | |||
distance_max=1000*km, | |||
channels=['Z', 'R', 'T'], | |||
interpolation='nearest_neighbor', | |||
store_id='gf_store_id', | |||
misfit_config=grond.WaveformMisfitConfig( | |||
tmin=Timing(phase_defs=['stored:any_P'], offset=-10.0), | |||
tmax=Timing(phase_defs=['vel_surface:2.5']), | |||
domain='time_domain', | |||
tautoshift_max=4.0, | |||
autoshift_penalty_max=0.05, | |||
norm_exponent=2, | |||
fmin=0.01, | |||
fmax=0.05, | |||
ffactor=1.5))) | |||
def add_insar(self): | |||
logger.info('Added InSAR') | |||
dsc = self.dataset_config | |||
sd = op.join('data', 'insar') | |||
self.sub_dirs.append(sd) | |||
dsc.kite_scene_paths = [sd] | |||
self.target_groups.append( | |||
grond.SatelliteTargetGroup( | |||
normalisation_family='static', | |||
path='insar', | |||
interpolation='multilinear', | |||
store_id='gf_static_store_id', | |||
kite_scenes=['*all'], | |||
misfit_config=grond.SatelliteMisfitConfig( | |||
optimise_orbital_ramp=True, | |||
ranges={ | |||
'offset': '-0.5 .. 0.5', | |||
'ramp_north': '-1e-4 .. 1e-4', | |||
'ramp_east': '-1e-4 .. 1e-4' | |||
} | |||
)) | |||
) | |||
def add_gnss(self): | |||
logger.info('Added GNSS') | |||
dsc = self.dataset_config | |||
gd = op.join('data', 'gnss') | |||
self.sub_dirs.append(gd) | |||
gp = op.join(gd, 'my_campaign.yaml') | |||
dsc.gnss_campaign_paths = [gp] | |||
self.target_groups.append( | |||
grond.GNSSCampaignTargetGroup( | |||
normalisation_family='static', | |||
path='gnss', | |||
interpolation='multilinear', | |||
store_id='gf_static_store_id', | |||
misfit_config=grond.GNSSCampaignMisfitConfig() | |||
) | |||
) | |||
def set_cmt_source(self): | |||
logger.info('Set problem to CMTProblem') | |||
pi2 = math.pi/2 | |||
self.problem_config = grond.CMTProblemConfig( | |||
name_template='cmt_${event_name}', | |||
distance_min=2.*km, | |||
mt_type='deviatoric', | |||
ranges=dict( | |||
time=Range(-10.0, 10.0, relative='add'), | |||
north_shift=Range(-16*km, 16*km), | |||
east_shift=Range(-16*km, 16*km), | |||
depth=Range(1*km, 11*km), | |||
magnitude=Range(4.0, 6.0), | |||
rmnn=Range(-pi2, pi2), | |||
rmee=Range(-pi2, pi2), | |||
rmdd=Range(-pi2, pi2), | |||
rmne=Range(-1.0, 1.0), | |||
rmnd=Range(-1.0, 1.0), | |||
rmed=Range(-1.0, 1.0), | |||
duration=Range(1.0, 15.0)) | |||
) | |||
def set_rectangular_source(self): | |||
logger.info('Set problem to RectangularProblem') | |||
self.problem_config = grond.RectangularProblemConfig( | |||
name_template='rect_source', | |||
ranges=dict( | |||
north_shift=Range(-20*km, 20*km), | |||
east_shift=Range(-20*km, 20*km), | |||
depth=Range(0*km, 10*km), | |||
length=Range(20*km, 40*km), | |||
width=Range(5*km, 12*km), | |||
dip=Range(20, 70), | |||
strike=Range(0, 180), | |||
rake=Range(0, 90), | |||
slip=Range(1, 3)) | |||
) | |||
def check(self): | |||
assert self.target_groups, 'No target_groups set!' | |||
assert self.problem_config, 'No problem set!' | |||
def get_config(self): | |||
self.check() | |||
engine_config = grond.EngineConfig( | |||
gf_store_superdirs=['gf_stores']) | |||
optimiser_config = grond.HighScoreOptimiserConfig() | |||
return grond.Config( | |||
rundir_template=op.join('rundir', '${problem_name}.grun'), | |||
dataset_config=self.dataset_config, | |||
problem_config=self.problem_config, | |||
target_groups=self.target_groups, | |||
optimiser_config=optimiser_config, | |||
engine_config=engine_config) | |||
def build(self, project_dir, force=False): | |||
if op.exists(project_dir) and not force: | |||
raise grond.GrondError( | |||
'Directory "%s" already exists! Use --force to overwrite' | |||
% project_dir) | |||
elif op.exists(project_dir) and force: | |||
logger.info('Overwriting directory %s.' % project_dir) | |||
shutil.rmtree(project_dir) | |||
logger.info('Creating empty project in folder %s' % project_dir) | |||
config = self.get_config() | |||
def p(*fn): | |||
return op.join(project_dir, *fn) | |||
config.set_basepath(p()) | |||
os.mkdir(op.abspath(project_dir)) | |||
for d in self.sub_dirs: | |||
util.ensuredir(p(d)) | |||
grond.write_config(config, p('config', 'config.gronf')) | |||
with open(p('events.txt'), 'w') as f: | |||
f.write(INIT_EVENT) | |||
for fn in self.empty_files: | |||
open(p(fn), 'w').close() | |||
def dump(self): | |||
return self.get_config().dump() | |||
pass | |||
def available_inits(self): | |||
return { | |||
'examples': tuple((self.filename_to_abbrv(fn), | |||
self._get_description(fn)) | |||
for fn in self.example_files), | |||
'events': tuple((self.filename_to_abbrv(fn), | |||
self._get_description(fn)) | |||
for fn in self.event_files), | |||
} | |||
@staticmethod | |||
def filename_to_abbrv(filename): | |||
return op.basename(filename).split('.')[0] | |||
@property | |||
def example_files(self): | |||
return self._get_files('example_*.gronf') | |||
@property | |||
def section_files(self): | |||
return self._get_files('section_*.gronf') | |||
@property | |||
def snippet_files(self): | |||
return self._get_files('snippet_*.gronf') | |||
@property | |||
def event_files(self): | |||
return self._get_files('event_*.txt') | |||
def _get_files(self, name): | |||
return glob.glob(op.join(self.folder, name)) | |||
def _get_description(self, filename): | |||
with open(filename, 'rt') as f: | |||
for ln in f.readlines(): | |||
if ln.startswith('#'): | |||
return ln.split(':')[-1].strip('# \n') | |||
return 'No description!' |
@ -0,0 +1,200 @@ | |||
%YAML 1.1 | |||
# Example: Inversion of planar RectangularSource from local InSAR Observations | |||
--- !grond.Config | |||
# All file paths referenced below are treated relative to the location of this | |||
# configuration file, here we may give a common prefix. E.g. setting it to '..' | |||
# if the configuration file is in the sub-directory '${project_root}/config' | |||
# allows us to give the paths below relative to '${project_root}'. | |||
path_prefix: '..' | |||
# Path, where to store output (run directories). The placeholder | |||
# '${problem_name}' will be expanded to a name configured below in | |||
# problem_config.name_template and will typically include a config identifier | |||
# and the event name. | |||
rundir_template: runs/${problem_name}.grun | |||
# If given, restrict to processing of listed events | |||
#event_names: | |||
#- 'gfz2018pmjk' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for dataset (input data) | |||
# | |||
# The placeholder '${event_name}' will be expanded to the current event. This | |||
# enables us to use the same configuration for multiple events. The available | |||
# events are detected by looking into possible expansions of | |||
# dataset_config.events_path | |||
# ----------------------------------------------------------------------------- | |||
dataset_config: !grond.DatasetConfig | |||
# File with hypocenter information and possibly reference solution | |||
events_path: 'data/events/${event_name}/event.txt' | |||
# List of directories for the InSAR scenes | |||
kite_scene_paths: ['data/events/${event_name}/insar'] | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for the observational data fitting | |||
# | |||
# This defines the objective function to be minimized in the optimisation. It | |||
# can be composed of one or more contributions, each represented by a | |||
# !grond.*TargetGroup section. | |||
# ----------------------------------------------------------------------------- | |||
target_groups: | |||
- !grond.SatelliteTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'static' | |||
# Just a name used to identify targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'insar' | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# Selector for kite scene ids, '*all' is a wildcard and load all scenes present | |||
kite_scenes: ['*all'] | |||
# Subsection on how to fit the traces | |||
misfit_config: !grond.SatelliteMisfitConfig | |||
# Optimise a planar orbital ramp | |||
optimise_orbital_ramp: false | |||
# Parameters for the orbital ramp | |||
ranges: | |||
# Vertical offset in [m] | |||
offset: -0.5 .. 0.5 | |||
# Ranges for the East-West and North-South inclination of the ramp | |||
ramp_east: -1e-4 .. 1e-4 | |||
ramp_north: -1e-4 .. 1e-4 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: multilinear | |||
# Name of the GF Store to use | |||
store_id: crust2_ib_static | |||
# ----------------------------------------------------------------------------- | |||
# Definition of the problem to be solved | |||
# | |||
# In this section the source model to be fitted is chosen, the parameter space | |||
# defined, and how to combine the misfit contributions defined in the | |||
# target_groups section above. | |||
# | |||
# The marker !grond.RectangularProblemConfig selects a finite rectancular | |||
# source model. | |||
# ----------------------------------------------------------------------------- | |||
problem_config: !grond.RectangularProblemConfig | |||
# Name used to identify the output | |||
name_template: rect_2009LaAquila | |||
# How to combine the target misfits. For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 2 | |||
# Definition of model parameter space to be searched in the optimisation | |||
ranges: | |||
# Scaling ranges in [m] | |||
depth: 2500 .. 7000 | |||
east_shift: 0 .. 20000 | |||
north_shift: 0 .. 20000 | |||
length: 5000 .. 10000 | |||
width: 2000 .. 10000 | |||
slip: .2 .. 2 | |||
# Orientation ranges in [deg] | |||
dip: 10 .. 50 | |||
rake: 120 .. 360 | |||
strike: 220 .. 360 | |||
# We are using a dense GF store and will reduce the number of discrete | |||
# subsources by this factor. Decrease the decimation for a finer sub-source | |||
# resolution, and increased computational time | |||
decimation_factor: 12 | |||
# Clearance distance around stations (no models with origin closer than this | |||
# distance to any station are produced by the sampler) | |||
distance_min: 0.0 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of pre-optimisation analysis phases. | |||
# determined during this phase. | |||
# ----------------------------------------------------------------------------- | |||
# | |||
analyser_configs: | |||
# DOES NOT APPLY FOR INSAR! Balancing weights are determined with this analyser | |||
- !grond.TargetBalancingAnalyserConfig | |||
niterations: 1000 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration of the optimisation procedure | |||
# ----------------------------------------------------------------------------- | |||
optimiser_config: !grond.HighScoreOptimiserConfig | |||
# Number of bootstrap realisations to be tracked simultaneously in the | |||
# optimisation | |||
nbootstrap: 25 | |||
# Stages of the sampler then narrow down to the interesting regions | |||
# (!grond.DirectedSamplerPhase). | |||
sampler_phases: | |||
# Start with uniform sampling of the model space | |||
- !grond.UniformSamplerPhase | |||
# Number of iterations | |||
niterations: 10000 | |||
# How often we shall try to find a valid sample | |||
ntries_preconstrain_limit: 1000 | |||
# Narrow down to the interesting regions | |||
- !grond.DirectedSamplerPhase | |||
# Number of iterations | |||
niterations: 40000 | |||
# How often we shall try to find a valid sample | |||
ntries_preconstrain_limit: 1000 | |||
# Multiplicator for width of sampler distribution at start of this phase | |||
scatter_scale_begin: 2.0 | |||
# Multiplicator for width of sampler distribution at end of this phase | |||
scatter_scale_end: 0.5 | |||
starting_point: excentricity_compensated | |||
sampler_distribution: normal | |||
standard_deviation_estimator: median_density_single_chain | |||
ntries_sample_limit: 2000 | |||
# This parameter determines the length of the chains | |||
chain_length_factor: 8.0 | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for synthetic seismogram engine | |||
# | |||
# Configures where to look for GF stores. | |||
# ----------------------------------------------------------------------------- | |||
engine_config: !grond.EngineConfig | |||
# Whether to use GF store directories listed in ~/.pyrocko/config.pf | |||
gf_stores_from_pyrocko_config: true | |||
# List of directories with GF stores | |||
gf_store_superdirs: ['gf_stores'] |
@ -0,0 +1,296 @@ | |||
%YAML 1.1 | |||
# Example: Inversion of centroid moment tensor from regional waveform observations. | |||
--- !grond.Config | |||
# All file paths referenced below are treated relative to the location of this | |||
# configuration file, here we may give a common prefix. E.g. setting it to '..' | |||
# if the configuration file is in the sub-directory '${project_root}/config' | |||
# allows us to give the paths below relative to '${project_root}'. | |||
path_prefix: '..' | |||
# Path, where to store output (run directories). The placeholder | |||
# '${problem_name}' will be expanded to a name configured below in | |||
# problem_config.name_template and will typically include a config identifier | |||
# and the event name. | |||
rundir_template: 'runs/${problem_name}.grun' | |||
# If given, restrict to processing of listed events | |||
#event_names: | |||
#- 'gfz2018pmjk' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for dataset (input data) | |||
# | |||
# The placeholder '${event_name}' will be expanded to the current event. This | |||
# enables us to use the same configuration for multiple events. The available | |||
# events are detected by looking into possible expansions of | |||
# dataset_config.events_path | |||
# ----------------------------------------------------------------------------- | |||
dataset_config: !grond.DatasetConfig | |||
# List of files with station coordinates. | |||
stations_stationxml_paths: | |||
- 'data/events/${event_name}/waveforms/stations.geofon.xml' | |||
- 'data/events/${event_name}/waveforms/stations.iris.xml' | |||
# File with hypocenter information and possibly reference solution | |||
events_path: 'data/events/${event_name}/event.txt' | |||
# List of directories with raw waveform data | |||
waveform_paths: ['data/events/${event_name}/waveforms/raw'] | |||
# List of stations/components to be excluded according to their STA, NET.STA, | |||
# NET.STA.LOC, or NET.STA.LOC.CHA codes | |||
blacklist: ['GE.UGM', 'GE.PLAI'] | |||
# List of files with additional exclusion lists (one entry per line, same | |||
# format as above) | |||
blacklist_paths: | |||
- 'data/events/${event_name}/waveforms/blacklist.txt' | |||
# List of files with instrument response information (can be the same as in | |||
# stations_stationxml_paths above) | |||
responses_stationxml_paths: | |||
- 'data/events/${event_name}/waveforms/stations.geofon.xml' | |||
- 'data/events/${event_name}/waveforms/stations.iris.xml' | |||
# ----------------------------------------------------------------------------- | |||
# Configuration section for the observational data fitting | |||
# | |||
# This defines the objective function to be minimized in the optimisation. It | |||
# can be composed of one or more contributions, each represented by a | |||
# !grond.*TargetGroup section. | |||
# ----------------------------------------------------------------------------- | |||
target_groups: | |||
- !grond.WaveformTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'td' | |||
# Just a name used to identify targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'td.love' | |||
# Epicentral distance range of stations to be considered in meter | |||
distance_min: 1e3 | |||
distance_max: 900e3 | |||
# Names of components to be included. Available: N=north, E=east, Z=vertical | |||
# (up), R=radial (away), T=transverse (right) | |||
channels: ['T'] | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# subsection on how to fit the traces | |||
misfit_config: !grond.WaveformMisfitConfig | |||
# Frequency band [Hz] of acausal filter (flat part of frequency taper) | |||
fmin: 0.01 | |||
fmax: 0.05 | |||
# Factor defining fall-off of frequency taper (zero at fmin/ffactor and | |||
# fmax*ffactor) | |||
ffactor: 1.5 | |||
# Time window to include in the data fitting. Times can be defined offset | |||
# to given phase arrivals. E.g. '{stored:P}-600' would mean 600 s | |||
# before arrival of the phase named 'P'. The phase must be defined in the | |||
# travel time tables in the GF store. | |||
tmin: '{stored:any_P}' | |||
tmax: '{vel_surface:2.5}' | |||
# tfade: 120.0 | |||
# How to fit the data (available: 'time_domain', 'frequency_domain', | |||
# 'log_frequency_domain', 'absolute', 'envelope', 'cc_max_norm') | |||
domain: 'time_domain' | |||
tautoshift_max: 4.0 | |||
autoshift_penalty_max: 0.05 | |||
# For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: 'nearest_neighbor' | |||
# Name of the GF Store to use | |||
store_id: 'crust2_j3' | |||
- !grond.WaveformTargetGroup | |||
# Normalisation family (see the Grond documentation for how it works). | |||
# Use distinct normalisation families when mixing misfit contributors with | |||
# different magnitude scaling, like e.g. cross-correlation based misfit and | |||
# time-domain Lx norm. | |||
normalisation_family: 'td' | |||
# Just a name used to identfy targets from this group. Use dot-separated path | |||
# notation to group related contributors | |||
path: 'td.rayleigh' | |||
# Epicentral distance range of stations to be considered in meter | |||
distance_min: 1e3 | |||
distance_max: 900e3 | |||
# Names of components to be included. Available: N=north, E=east, Z=vertical | |||
# (up), R=radial (away), T=transverse (right) | |||
channels: ['R', 'Z'] | |||
# How to weight contributions from this group in the global misfit | |||
weight: 1.0 | |||
# subsection on how to fit the traces | |||
misfit_config: !grond.WaveformMisfitConfig | |||
# Frequency band [Hz] of acausal filter (flat part of frequency taper) | |||
fmin: 0.01 | |||
fmax: 0.05 | |||
# Factor defining fall-off of frequency taper (zero at fmin/ffactor and | |||
# fmax*ffactor) | |||
ffactor: 1.5 | |||
# Time window to include in the data fitting. Times can be defined offset | |||
# to given phase arrivals. E.g. '{stored:P}-600' would mean 600 s | |||
# before arrival of the phase named 'P'. The phase must be defined in the | |||
# travel time tables in the GF store. | |||
tmin: '{stored:any_P}' | |||
tmax: '{vel_surface:2.5}' | |||
# tfade: 120.0 | |||
# How to fit the data (available: 'time_domain', 'frequency_domain', | |||
# 'log_frequency_domain', 'absolute', 'envelope', 'cc_max_norm') | |||
domain: 'time_domain' | |||
tautoshift_max: 4.0 | |||
autoshift_penalty_max: 0.05 | |||
# For L1 norm: 1, L2 norm: 2, etc. | |||
norm_exponent: 1 | |||
# How to interpolate the Green's functions (available choices: | |||
# 'nearest_neighbor', 'multilinear'). Choices other than 'nearest_neighbor' | |||
# may require dense GF stores to avoid aliasing artifacts in the forward | |||
# modelling. | |||
interpolation: 'nearest_neighbor' | |||
# Name of the GF Store to use | |||
store_id: 'crust2_j3' | |||
# ----------------------------------------------------------------------------- | |||
# Definition of the problem to be solved | |||
# | |||
# In this section the source model to be fitted is chosen, the parameter space | |||
# defined, and how to combine the misfit contributions defined in the | |||
# target_groups section above. | |||
# | |||
# The marker !grond.CMTProblemConfig selects a centroid moment tensor source | |||
# model. | |||
# ----------------------------------------------------------------------------- | |||
problem_config: !grond.CMTProblemConfig | |||
# Name used to identify the output | |||
name_template: 'cmt_${event_name}' | |||
# Definition of model parameter space to be searched in the optimisation | |||
ranges: | |||
# Time relative to hypocenter origin time [s] | |||
time: '-10 .. 10 | add' | |||
# Centroid location with respect to hypocenter origin [m] | |||
north_shift: '-15e3 .. 15e3' | |||
east_shift: '-15e3 .. 15e3' | |||
depth: '5e3 .. 30e3' | |||
# Range of magnitudes to allow | |||
magnitude: '5.7 .. 6.2' | |||
# Relative moment tensor component ranges (don't touch) | |||
rmnn: '-1.41421 .. 1.41421' | |||
rmee: '-1.41421 .. 1.41421' | |||
rmdd: '-1.41421 .. 1.41421' | |||
rmne: '-1 .. 1' | |||
rmnd: '-1 .. 1' | |||
rmed: '-1 .. 1' | |||
# Source duration range [s] | |||
duration: '1. .. 5.' | |||
# Clearance distance around stations (no models with origin closer than this | |||
# distance to any station are produced by the sampler) | |||
distance_min: 1e3 | |||
# Type of moment tensor to restrict to (choices: 'full', 'deviatoric', 'dc') | |||
mt_type: 'deviatoric' | |||