Difference between revisions of "Preferred Rupture Directivity in Hazard Curve Computations"

From SCECpedia
Jump to navigationJump to search
(→‎Plots: Add Excel sheet and explain why we won't upload all plots directly)
(→‎Plots: Update conclusion for Exp1)
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
'''Notice: This page is still under construction. TODO statements indicate areas still under work.'''
 
 
 
This page documents efforts to investigate the impact that preferred rupture directions would have on hazard as calculated with CyberShake ground motions in OpenSHA.
 
This page documents efforts to investigate the impact that preferred rupture directions would have on hazard as calculated with CyberShake ground motions in OpenSHA.
  
Line 22: Line 19:
 
Modifying the HazardCurvePlotter to allow us to input custom probabilities for rupture variations allows us to compare hazard expected for persistent directivity vs random rupture direction. We can prescribe directivity based on topography or physics reasons and see if the signature is drowned out by randomness of the network or if it still stands out.
 
Modifying the HazardCurvePlotter to allow us to input custom probabilities for rupture variations allows us to compare hazard expected for persistent directivity vs random rupture direction. We can prescribe directivity based on topography or physics reasons and see if the signature is drowned out by randomness of the network or if it still stands out.
  
 +
Unlike the UCERF2 ERF in standard PSHA, CyberShake utilizes an extended ERF that supports rupture variation probabilities. Both include ruptures, but by specifying hypocenter, we're able to support directivity.
 +
 +
In standard OpenSHA, the hierarchy is sources which are fault segments, down to ruptures which are collection of faults.
 +
CyberShake extended ERFs add another layer, rupture variations. These identify the place on the fault where the hypocenter is and define a slip-time history.
  
 
== New Functionality ==
 
== New Functionality ==
Line 27: Line 28:
  
 
Passing this file allows a user to specify directivity for specific rupture variations. Previously, all variations had an equal probability, distributed from the probability of the rupture itself. The sum of probabilities of the variations must still sum to the probability of the corresponding rupture.
 
Passing this file allows a user to specify directivity for specific rupture variations. Previously, all variations had an equal probability, distributed from the probability of the rupture itself. The sum of probabilities of the variations must still sum to the probability of the corresponding rupture.
 
Curves with modified probabilities are not cached to the CyberShake database by default. It takes me approximately 4 minutes to compute hazard curves for just period 3 locally on my system. It takes about 33 minutes to compute for periods 2, 3, 5, and 10.
 
  
 
== CSV Files ==
 
== CSV Files ==
Line 50: Line 49:
 
The Python script is available [https://github.com/SCECcode/cybershake-core/blob/main/db/create_prop_file.py here].
 
The Python script is available [https://github.com/SCECcode/cybershake-core/blob/main/db/create_prop_file.py here].
  
 +
=== Inputs ===
 +
The inputs take X% of hypocenters in preferred direction and doubled their probability, and taken X% of hypocenters in opposite direction and set to 0 to keep overall probabilities balanced.
 +
 +
Below are the CSV input files used to generate the results found in the Excel spreadsheet and highlighted plots on this page.
 +
 +
==== Initial Tests ====
 +
Mojave:  Southeast -> Northwest, so the preferred hypocenters are in the southern portion of the fault.
 +
 +
Coachella: Northwest -> Southeast, so the preferred hypocenters are in the northern portion of the fault.
  
== Inputs ==
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/USC_reference_probs.csv USC_reference_probs.csv] : Reference input with same probabilities as fetched from DB for site=USC, run=9306
Here are the CSV files used so far.
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/USC_mod_probs_Mojave_Coachella.csv USC_mod_probs_Mojave_Coachella.csv] : 10% hypocenter responsible modified probabilities for site=USC, run=9306
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/USC_reference_probs.csv USC_reference_probs.csv] : Reference input with same probabilities as fetched from DB for site=USC, run=9306
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/USC_mod_probs_Mojave_Coachella_90p.csv USC_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=USC, run=9306
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/USC_mod_probs_Mojave_Coachella.csv USC_mod_probs_Mojave_Coachella.csv] : 10% hypocenter responsible modified probabilities for site=USC, run=9306
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/USC_mod_probs_Mojave_Coachella_100p.csv USC_mod_probs_Mojave_Coachella_100p.csv] : 100% modified probability site=USC, run=9306
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/USC_mod_probs_Mojave_Coachella_90p.csv USC_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=USC, run=9306
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/USC_mod_probs_Moj_Coach_sa25p.csv USC_mod_probs_Moj_Coach_sa25p.csv] : 25% modified prob, all San Andreas Events for site=USC, run=9306
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/USC_mod_probs_Mojave_Coachella_100p.csv USC_mod_probs_Mojave_Coachella_100p.csv] : 100% modified probability site=USC, run=9306
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/USC_mod_probs_Moj_Coach_sa100p.csv USC_mod_probs_Moj_Coach_sa100p.csv] : 100% modified prob, all San Andreas Events for site=USC, run=9306
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/ALP_mod_probs_Mojave_Coachella_90p.csv ALP_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=ALP, run=9542
 
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/SBSM_mod_probs_Mojave_Coachella_90p.csv SBSM_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=SBSM, run=9320
 
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/SBSM_mod_probs_Mojave_Coachella_100p.csv SBSM_mod_probs_Mojave_Coachella_100p.csv] : 100% modified probability site=SBSM, run=9320
 
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/SVD_mod_probs_Mojave_Coachella_90p.csv SVD_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=SVD, run=9647
 
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/PDE_mod_probs_Mojave_Coachella_90p.csv PDE_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=PDE, run=9663
 
  
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/ALP_mod_probs_Mojave_Coachella_90p.csv ALP_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=ALP, run=9542
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/ALP_mod_probs_Moj_Coach_sa25p.csv ALP_mod_probs_Moj_Coach_sa25p.csv] : 25% modified prob, all San Andreas Events for site=ALP, run=9542
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/ALP_mod_probs_all_Moj_Coach_100p.csv ALP_mod_probs_all_Moj_Coach_100p.csv] : 100% modified prob, all San Andreas Events for site=ALP, run=9542
  
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/SBSM_mod_probs_Mojave_Coachella_90p.csv SBSM_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=SBSM, run=9320
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/SBSM_mod_probs_Mojave_Coachella_100p.csv SBSM_mod_probs_Mojave_Coachella_100p.csv] : 100% modified probability site=SBSM, run=9320
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/SBSM_mod_probs_Moj_Coach_sa25p.csv SBSM_mod_probs_Moj_Coach_sa25p.csv] : 25% modified prob, all San Andreas Events for site=SBSM, run=9320
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/SBSM_mod_probs_all_Moj_Coach_100p.csv SBSM_mod_probs_all_Moj_Coach_100p.csv] : 100% modified prob, all San Andreas Events for site=SBSM, run=9320
  
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/SVD_mod_probs_Mojave_Coachella_90p.csv SVD_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=SVD, run=9647
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/SVD_mod_probs_Moj_Coach_sa25p.csv SVD_mod_probs_Moj_Coach_sa25p.csv] : 25% modified prob, all San Andreas Events for site=SVD, run=9647
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/SVD_mod_probs_all_Moj_Coach_100p.csv SVD_mod_probs_all_Moj_Coach_100p.csv] : 100% modified prob, all San Andreas Events for site=SVD, run=9647
  
'''Note''': Due to the similar plots below, we believe more input CSVs with more variations across more ruptures will result in significantly different results. When modifying the probability of the rupture itself and removing precondition checks as necessary, we do see significant changes.
+
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/PDE_mod_probs_Mojave_Coachella_90p.csv PDE_mod_probs_Mojave_Coachella_90p.csv] : 90% modified probability site=PDE, run=9663
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/PDE_mod_probs_Moj_Coach_sa25p.csv PDE_mod_probs_Moj_Coach_sa25p.csv] : 25% modified prob, all San Andreas Events for site=SVD, run=9647
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/initial_tests/all_san_andreas/PDE_mod_probs_all_Moj_Coach_100p.csv PDE_mod_probs_all_Moj_Coach_100p.csv] : 100% modified prob, all San Andreas Events for site=SVD, run=9647
  
The commands utilizing these CSVs and the corresponding runs are found in the plots section below.
+
==== Experiment 1 ====
 +
Both Experiment 1 and Experiment 2 have the southern 20% of hypocenters with 90% of total probability. The remaining 10% is distributed over the remaining 80% of hypocenters.
 +
 
 +
4 fault segments (South San Bernardino, North San Bernardino, South Mojave, North Mojave)
 +
 
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_1/PDE_exp1.csv PDE_exp1.csv] : 90% modified probability site=PDE, run=9663
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_1/s036_exp1.csv s036_exp1.csv] : 90% modified probability site=s036, run=9402
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_1/s776_exp1.csv s776_exp1.csv] : 90% modified probability site=s776, run=9536
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_1/USC_exp1.csv USC_exp1.csv] : 90% modified probability site=USC, run=9306
 +
 
 +
==== Experiment 2 ====
 +
2 middle segments (North San Bernardino and South Mojave)
 +
 
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_2/s080_exp2.csv s080_exp2.csv] : 90% modified probability site=s080, run=9409
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_2/s145_exp2.csv s145_exp2.csv] : 90% modified probability site=s145, run=9606
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_2/s732_exp2.csv s732_exp2.csv] : 90% modified probability site=s732, run=9391
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/csv/experiment_2/USC_exp2.csv USC_exp2.csv] : 90% modified probability site=USC, run=9306
  
 
== Plots ==
 
== Plots ==
Line 77: Line 108:
 
* SVD
 
* SVD
 
* PDE
 
* PDE
 +
* s036
 +
* s080
 +
* s145
 +
* s732
 +
* s776
  
There is a plot for each site of the periods (K) 2, 3, 5, and 10, for a total of 20 plots.
+
There is a plot for each site of the periods (K) 2, 3, 5, and 10, for a total of 40 plots.
 
Each figure has the following plot lines
 
Each figure has the following plot lines
 
* The reference using original probabilities (Ref)
 
* The reference using original probabilities (Ref)
* Where hypocenters are responsible for 90% of the probability (90p)
+
* Where hypocenters are responsible for 90% of the probability (90p, Exp1, Exp2)
 
* USC and SBSM has additional plot line where hypocenters are responsible for 100% (100p)
 
* USC and SBSM has additional plot line where hypocenters are responsible for 100% (100p)
 +
* 25% probability over All San Andreas Events (sa25p)
 +
* 100% probability over All San Andreas Events (sa100p)
  
 +
The hazard curve plots were generated using the following bash scripts:
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/plot_fetch_curves.sh plot_fetch_curves.sh] fetches curves from database
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/plot_modified_curves.sh plot_modified_curves.sh] generates curves using input biases
 +
* [https://github.com/opensha/opensha-cybershake/blob/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/plot_comparison_curves.sh plot_comparison_curves.sh] builds comparison curves from the results of plot_fetch_curves and plot_modified_curves
  
For all of the 10p, 90p, and 100p plots, the results are identical to the fetched probabilities. We're continuing to find which modified directivity on which sites might result in significant ground motion impact. More CSVs will be generated and new plots added. For the sake of brevity, we won't show all 20 plots here.
+
<code>
 +
./plot_fetch_curves.sh
  
The X,Y data points and all plots generated are available in the Excel spreadsheet : [[File:Hazard_Curve_Comparison_Plots.xlsx]]
+
./plot_modified_curves.sh modprob/90p csv/initial_tests 90p
  
 +
./plot_modified_curves.sh modprob/100p csv/initial_tests 100p
  
Comparison plots were made by copying out the TXT X,Y datapoints into Excel. We may expand existing OpenSHA Comparison Plot functionality for this purpose. Currently we're able to compare a new run against results fetched from a database, but not multiple modified plots.
+
./plot_modified_curves.sh modprob/sa25p csv/initial_tests/all_san_andreas sa25p
  
 +
./plot_modified_curves.sh modprob/sa100p csv/initial_tests/all_san_andreas sa100p
  
=== USC 9306 ===
+
./plot_modified_curves.sh modprob/exp1 csv/experiment_1 exp1
  
TODO: Add plot
+
./plot_modified_curves.sh modprob/exp2 csv/experiment_2 exp2
  
Compute Time: 1.12 mins (90p), 48 seconds (100p)
+
./plot_comparison_curves.sh comps fetchdb modprob
 
+
</code>
Command Parameters:
 
  
<code>
+
For the 10p, 90p, and 100p plots, the results are identical to the fetched probabilities. When considering all events across the San Andreas, we see significant impact to PDE and ALP, some impact to SVD, and no visible significant impact to SBSM and USC.
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/90p/USC \
 
  
--run-id 9306 \
+
In our follow-up experiments, Experiment 1 (Exp1) and Experiment 2 (Exp2), we observe significant ground motion (reduction of 10%) in s776 with a period of 2s.
  
--component RotD50 \
+
For the sake of brevity, we only show one plot per site in the highlighted plots below.
  
--period 2,3,5,10 \
+
All generated comparison plots are available at [https://github.com/opensha/opensha-cybershake/tree/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/comps opensha-cybershake GitHub - Comparison Plots]
  
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/USC_mod_probs_Mojave_Coachella_90p.csv \
+
Individual plots and X,Y data is available on GitHub at [https://github.com/opensha/opensha-cybershake/tree/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/fetchdb fetchdb] for fetched reference data and [https://github.com/opensha/opensha-cybershake/tree/master/src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob modprob] for modified probability data.
  
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
+
=== USC 9306 ===
 
 
--type TXT,PDF
 
</code>
 
 
 
<code>
 
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/100p/USC \
 
 
 
--run-id 9306 \
 
  
--component RotD50 \
+
[[File:usc-t=3.png|800px|USC 3s]]
  
--period 2,3,5,10 \
+
Site: University of Southern California (USC)
  
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/USC_mod_probs_Mojave_Coachella_100p.csv \
+
Compute Time: 1min 7s (90p), 48s (100p), 1min 12s (sa25p), 1min 23s (sa100p), 6min 4s (Exp1), 48s (Exp2)
 
 
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
 
 
 
--type TXT,PDF
 
</code>
 
  
 
=== ALP 9542 ===
 
=== ALP 9542 ===
TODO: Add plot
+
[[File:alp-t=5.png|800px|ALP 5s]]
 
 
Compute Time: 1.28 mins
 
  
Command Parameters:
+
Site: Antelope (ALP)
  
<code>
+
Compute Time: 1min 16s (90p), 1min 12s (sa25p), 1min 29s (sa100p)
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/ALP  \
 
 
 
--run-id 9542 \
 
 
 
--component RotD50 \
 
 
 
--period 2,3,5,10 \
 
 
 
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/ALP_mod_probs_Mojave_Coachella_90p.csv \
 
 
 
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
 
 
 
--type TXT,PDF
 
</code>
 
  
 
=== SBSM 9320 ===
 
=== SBSM 9320 ===
TODO: Add plot
+
[[File:sbsm-t=3.png|800px|SBSM 3s]]
  
Compute Time: 59 seconds (90p), 1.02 mins (100p)
+
Site: San Bernardino Strong Motion (SBSM)
  
Command Parameters:
+
Compute Time: 59s (90p), 1min 1s (100p), 1min 12s (sa25p), 1min 24s (sa100p)
  
<code>
+
=== SVD 9647 ===
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/90p/SBSM  \
+
[[File:svd-t=3.png|800px|SVD 3s]]
  
--run-id 9320 \
+
Site: Seven Oaks Dam (SVD)
  
--component RotD50 \
+
Compute Time: 1min 16s (90p), 1min 13s (sa25p), 1min 26s (sa100p)
  
--period 2,3,5,10 \
+
=== PDE 9663 ===
 +
[[File:pde-t=10.png|800px|PDE 10s]]
  
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/SBSM_mod_probs_Mojave_Coachella_90p.csv \
+
Site: Pardee (PDE)
  
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
+
Compute Time: 1min 21s (90p), 1min 4s (sa25p), 1min 25s (sa100p), 2min 36s (Exp1)
  
--type TXT,PDF
+
=== s036 9402 ===
</code>
+
[[File:s036-t=2.png|800px|s036 10s]]
  
<code>
+
Site: s036
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/100p/SBSM  \
 
  
--run-id 9320 \
+
Compute Time: 7min 34s (Exp1)
  
--component RotD50 \
+
=== s080 9409 ===
 +
[[File:s080-t=2.png|800px|s080 10s]]
  
--period 2,3,5,10 \
+
Site: s080
  
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/SBSM_mod_probs_Mojave_Coachella_100p.csv \
+
Compute Time: 5min 28s (Exp2)
  
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
+
=== s145 9606 ===
 +
[[File:s145-t=2.png|800px|s145 10s]]
  
--type TXT,PDF
+
Site: s145
</code>
 
  
=== SVD 9647 ===
+
Compute Time: 5min 55s (Exp2)
TODO: Add plot
 
  
Compute Time: 1.28 mins (90p)
+
=== s732 9391 ===
 +
[[File:s732-t=2.png|800px|s732 10s]]
  
Command Parameters:
+
Site: s732
  
<code>
+
Compute Time: 7min 52s (Exp2)
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/90p/SVD  \
 
  
--run-id 9647 \
+
=== s776 9536 ===
 +
[[File:s776-t=2.png|800px|s776 10s]]
  
--component RotD50 \
+
Site: s776
  
--period 2,3,5,10 \
+
Compute Time: 7min 29s (Exp1)
 
 
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/SVD_mod_probs_Mojave_Coachella_90p.csv \
 
 
 
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
 
 
 
--type TXT,PDF
 
</code>
 
 
 
=== PDE 9663 ===
 
TODO: Add plot
 
 
 
Compute Time: 1.35 mins (90p)
 
 
 
Command Parameters:
 
 
 
<code>
 
--output-dir src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/modprob/90p/PDE  \
 
 
 
--run-id 9663 \
 
 
 
--component RotD50 \
 
 
 
--period 2,3,5,10 \
 
 
 
--rv-probs-csv src/test/resources/org/opensha/sha/cybershake/plot/HazardCurvePlotter/PDE_mod_probs_Mojave_Coachella_90p.csv \
 
 
 
--plot-chars-file src/main/resources/org/opensha/sha/cybershake/conf/robPlot.xml \
 
 
 
--type TXT,PDF
 
</code>
 

Latest revision as of 04:37, 8 October 2025

This page documents efforts to investigate the impact that preferred rupture directions would have on hazard as calculated with CyberShake ground motions in OpenSHA.

Research Plan

There is some evidence that some faults have a preferred rupture direction. To investigate the impact this could have on hazard, we'll identify a handful of faults, modify the probabilities of individual rupture variations to favor those at the preferred end of the fault, and generate new hazard products with the modified probabilities. No new ground motions will need to be calculated; we'll use Study 22.12 and 24.8 ground motions.

Below is a flow chart representing the steps involved in performing this work.

Preferred Rupture Direction flow chart.png

Implementation Details

With the UCERF2 ERF used in Study 22.12 and Study 24.8, probabilities are specified at the rupture level -- that is, for a specific fault segment(s) and magnitude. We then divide the probability by the number of rupture variations to get the uniform probability of each rupture variation. For this work, we will create modified rupture variation probabilities and use these to generate a modified hazard curve.

We will add new functionality to the CyberShake-related code in OpenSHA to support this work. OpenSHA has a defined interface to return a list of probabilities for a given source ID and rupture ID. We'll specify the source ID, rupture ID, rupture variation ID, probability in a CSV file which will be passed to OpenSHA. This file will be parsed and used to populate a data structure, which will then be accessed by an implementation of the interface to determine the new probabilities. For any source ID, rupture ID, rupture variation ID combinations not in the file, we'll use the default UCERF2 probabilities. Then the new probabilities will be used to create a hazard curve.

Modifying the HazardCurvePlotter to allow us to input custom probabilities for rupture variations allows us to compare hazard expected for persistent directivity vs random rupture direction. We can prescribe directivity based on topography or physics reasons and see if the signature is drowned out by randomness of the network or if it still stands out.

Unlike the UCERF2 ERF in standard PSHA, CyberShake utilizes an extended ERF that supports rupture variation probabilities. Both include ruptures, but by specifying hypocenter, we're able to support directivity.

In standard OpenSHA, the hierarchy is sources which are fault segments, down to ruptures which are collection of faults. CyberShake extended ERFs add another layer, rupture variations. These identify the place on the fault where the hypocenter is and define a slip-time history.

New Functionality

The existing OpenSHA command-line tool, HazardCurvePlotter, is able to compute hazard curves and plot them to images locally on a system. We’ve added a new parameter, rv-probs-csv, for a Rupture Variation Probabilities Input CSV file.

Passing this file allows a user to specify directivity for specific rupture variations. Previously, all variations had an equal probability, distributed from the probability of the rupture itself. The sum of probabilities of the variations must still sum to the probability of the corresponding rupture.

CSV Files

CSV Structure

The input CSV file should have the following columns.

  • Source_ID
  • Rupture_ID
  • Rup_Var_ID
  • Probability

The specified source and rupture acts as a composite key, uniquely identifying a rupture variation. Each rupture at a site is comprised of a set of rupture variations. The CSV file does not need to have an entry for each variation found in the CyberShake database. The remaining unspecified variations are given an equal probability distributed from the difference of the rupture probability and the sum of rupture variation probabilities specified. The formatting, structure, and sum or probabilities are validated in the HazardCurvePlotter.

CSV Generation

To generate the CSV files used for these tests, we created a Python script which takes in a configuration file and outputs a CSV with modified probabilities for selected rupture variations.

The Python script is available here.

Inputs

The inputs take X% of hypocenters in preferred direction and doubled their probability, and taken X% of hypocenters in opposite direction and set to 0 to keep overall probabilities balanced.

Below are the CSV input files used to generate the results found in the Excel spreadsheet and highlighted plots on this page.

Initial Tests

Mojave: Southeast -> Northwest, so the preferred hypocenters are in the southern portion of the fault.

Coachella: Northwest -> Southeast, so the preferred hypocenters are in the northern portion of the fault.

Experiment 1

Both Experiment 1 and Experiment 2 have the southern 20% of hypocenters with 90% of total probability. The remaining 10% is distributed over the remaining 80% of hypocenters.

4 fault segments (South San Bernardino, North San Bernardino, South Mojave, North Mojave)

Experiment 2

2 middle segments (North San Bernardino and South Mojave)

Plots

The following plots show curves for the following sites:

  • ALP
  • USC
  • SBSM
  • SVD
  • PDE
  • s036
  • s080
  • s145
  • s732
  • s776

There is a plot for each site of the periods (K) 2, 3, 5, and 10, for a total of 40 plots. Each figure has the following plot lines

  • The reference using original probabilities (Ref)
  • Where hypocenters are responsible for 90% of the probability (90p, Exp1, Exp2)
  • USC and SBSM has additional plot line where hypocenters are responsible for 100% (100p)
  • 25% probability over All San Andreas Events (sa25p)
  • 100% probability over All San Andreas Events (sa100p)

The hazard curve plots were generated using the following bash scripts:

./plot_fetch_curves.sh

./plot_modified_curves.sh modprob/90p csv/initial_tests 90p

./plot_modified_curves.sh modprob/100p csv/initial_tests 100p

./plot_modified_curves.sh modprob/sa25p csv/initial_tests/all_san_andreas sa25p

./plot_modified_curves.sh modprob/sa100p csv/initial_tests/all_san_andreas sa100p

./plot_modified_curves.sh modprob/exp1 csv/experiment_1 exp1

./plot_modified_curves.sh modprob/exp2 csv/experiment_2 exp2

./plot_comparison_curves.sh comps fetchdb modprob

For the 10p, 90p, and 100p plots, the results are identical to the fetched probabilities. When considering all events across the San Andreas, we see significant impact to PDE and ALP, some impact to SVD, and no visible significant impact to SBSM and USC.

In our follow-up experiments, Experiment 1 (Exp1) and Experiment 2 (Exp2), we observe significant ground motion (reduction of 10%) in s776 with a period of 2s.

For the sake of brevity, we only show one plot per site in the highlighted plots below.

All generated comparison plots are available at opensha-cybershake GitHub - Comparison Plots

Individual plots and X,Y data is available on GitHub at fetchdb for fetched reference data and modprob for modified probability data.

USC 9306

USC 3s

Site: University of Southern California (USC)

Compute Time: 1min 7s (90p), 48s (100p), 1min 12s (sa25p), 1min 23s (sa100p), 6min 4s (Exp1), 48s (Exp2)

ALP 9542

ALP 5s

Site: Antelope (ALP)

Compute Time: 1min 16s (90p), 1min 12s (sa25p), 1min 29s (sa100p)

SBSM 9320

SBSM 3s

Site: San Bernardino Strong Motion (SBSM)

Compute Time: 59s (90p), 1min 1s (100p), 1min 12s (sa25p), 1min 24s (sa100p)

SVD 9647

SVD 3s

Site: Seven Oaks Dam (SVD)

Compute Time: 1min 16s (90p), 1min 13s (sa25p), 1min 26s (sa100p)

PDE 9663

PDE 10s

Site: Pardee (PDE)

Compute Time: 1min 21s (90p), 1min 4s (sa25p), 1min 25s (sa100p), 2min 36s (Exp1)

s036 9402

s036 10s

Site: s036

Compute Time: 7min 34s (Exp1)

s080 9409

s080 10s

Site: s080

Compute Time: 5min 28s (Exp2)

s145 9606

s145 10s

Site: s145

Compute Time: 5min 55s (Exp2)

s732 9391

s732 10s

Site: s732

Compute Time: 7min 52s (Exp2)

s776 9536

s776 10s

Site: s776

Compute Time: 7min 29s (Exp1)