To maintain compatibility with current workflows while adding additional functionality to the workflow, we intend to change the way perturbed source parameters are passed to the components of the slurm ground motion workflow.
Proposed workflow change
It has been proposed that srf generation will be split into two steps: perturbation and srf generation.
This will split the current two workflow steps (gcmt2srf, nhm2srf) to generate srfs into three (gcmt2srfgenparams, nhm2srfgenparams, srfgenparams2srf).
There will be an intermediary file containing all the parameters to generate the srf, allowing users to manually modify these files if they choose to do so.
This will be able to be integrated into the automated workflow by making each step work on a single realisation, with a multi process wrapper to allow it to also be used as a stand alone step. Unless configured to not progress past file creation the automated workflow step would not allow time for the user to modify the intermediary file.
For each fault with perturbations a mean file is created in that faults Data directory, this can be used to create the Velocity model (Eventually).
Script usage
Currently 3 scripts are available for the new source perturbation workflow. They are:
- gcmt_to_srfgen: Takes in a perturbation version, fault selection file and gcmt file, creates srf generation parameter files
- srfgenparams_to_srf: Takes in an srf generation parameter file and creates the related srf, info, stoch and yaml files
- generate_srf_from_srfgenparams: Takes in a cybershake root directory and creates all srf, info, stoch and yaml files from available srf generation parameter files
Brief usage information is available below, more help is available by calling "<script> --help".
If Pre-processing is installed using pip these scripts will be available from the terminal.
gcmt_to_srfgen:
Usage: gcmt_to_srfgen.py version fault_selection_file gcmt_file [--n_processes <n>] [–cybershake_root <path>] [–aggregate_file <path>]
Arguments:
- version: name of the perturbation version to use
- fault_selection_file: path to the fault selection file for this simulation, uses the standard format
- gcmt_file: path to the gcmt file to use for this simulation
- n_processes: number of srf generation parameters to create at once. Values larger than the total number of realisations are not useful. Defaults to 1
- cybershake_root: path to the simulation root directory. Defaults to the current directory
- aggregate_file: path to a file to store a copy of all saved values in, useful for manual verification of distributions
srfgenparams_to_srf:
Usage: srfgenparams_to_srf.py srfgenparams_file [–cybershake_root <path>]
Arguments
- srfgenparams_file: path to the srfgenparams file for a realisation
- cybershake_root: path to the simulation root directory. Defaults to the current directory
generate_srf_from_srfgenparams:
Usage: generate_srf_from_srfgenparams.py [--n_processes <n>] [–cybershake_root <path>]
Arguments:
- n_processes: number of srf generation parameters to create at once. Values larger than the total number of realisations are not useful. Defaults to 1
- cybershake_root: path to the simulation root directory. Defaults to the current directory
Creating perturbations
For a given set of perturbations the user will create a perturbation file, the template for which can be found in Pre-processing/srf_generation/source_parameter_generation/uncertainties, and must be placed in the versions folder in that directory.
The version of the perturbation file is the name of the file (without the .py extension).
There are a number of distributions and transformations available in the files common, distribution and mag_scaling.
Currently available distributions
Distribution name | Distribution variable | Notes |
---|---|---|
uniform | half_range | mean is the median (middle) value, and half_range half the difference between the highest and lowest value. |
uniform_relative | scale_factor | A normal distribution where the highest and lowest possible value are mean* (1+scale_factor) and mean* (1-scale_factor) respectively. Scale factor to be given as a decimal. |
weibull | k, scale_factor | Does not take a mean value. Equivalent to scale_factor*(-ln((U))1/a where U is the uniform distribution over [0, 1). |
truncated_normal | std_dev, std_dev_limit | Similar to normal distribution, except all values fall within [std_dev_limit] standard deviations of the mean. std_dev_limit has a default value of 2. |
truncated_log_normal | std_dev, std_dev_limit | Similar to log normal distribution, except all values of the underlying normal distribution fall within [std_dev_limit] standard deviations of the mean. std_dev_limit has a default value of 2. Mean must be given as a string of the form "log(x)" where x is the unmodified value of the mean. |
Internal changes
In order to simplify the implementation of this, we have chosen to have every parameter added to the slurm script and passed as an argument to the simulation script, which will then discard any parameters it does not recognize.
Parameters for srf generation
These parameters are available for srf generation. The parameter and its value must be placed in the results dictionary to be used.
This table only shows values that are currently available, as other values become available they will be added
Key:
- R: Required to run
- O: Optional, the default value is given in brackets
Parameter | Type 1 | Type 2 | Type 3 | Type 4 |
---|---|---|---|---|
type | R | |||
name | R (Automatically set) | |||
latitude | R | |||
longitude | R | |||
depth | R | |||
magnitude | R | |||
mom | O (calculated from mag using mag2mom) | |||
strike | R | |||
rake | R | |||
dip | R | |||
vs | O (3.2) | |||
rho | O (2.44) | |||
risetime | O (0.5) | |||
target_area_km | O1 | |||
target_slip_cm | O1 | |||
stype | O ("cos")2 | |||
inittime | O (0.0) | |||
rvfac | ||||
rough | ||||
slip_cov | ||||
flen | ||||
dlen | ||||
fwid | ||||
dwid | ||||
dtop | ||||
shypo | ||||
dhypo |
1) target_area_km and target_slip_cm are used to calculate the area of the fault plane and slip of the fault. target_area_km takes precedence over target_clip_cm, but if neither are given the area and slip are calculated from the moment.
2) Available options are: brune, urs, ucsb, ucsb-T, ucsb2, ucsb-varT1, esg2006, cos, seki, delta.
Parameters for each component
The parameters for each component are as follows:
hf | bb | |
---|---|---|
flo | ✓ | |
fmin | ✓ | |
fmidbot | ✓ | |
lfvsref | ✓ | |
sim_bin | ✓ | |
t-sec | ✓ | |
sdrop | ✓ | |
rayset | ✓ | |
seed | ✓ | |
duration | ✓ | |
dt | ✓ | |
fmax | ✓ | |
kappa | ✓ | |
qfexp | ✓ | |
rvfac | ✓ | |
rvfac_shallow | ✓ | |
rvfac_deep | ✓ | |
czero | ✓ | |
calpha | ✓ | |
mom | ✓ | |
rupv | ✓ | |
velocity-model | ✓ | |
site-vm-dir | ✓ | |
vs-moho | ✓ | |
fa_sig1 | ✓ | |
fa_sig2 | ✓ | |
rv_sig1 | ✓ | |
hf_path_dur | ✓ |