From fac4bee1b2f92f9283d63c17ed69be325f839690 Mon Sep 17 00:00:00 2001 From: Jason Altekruse <jaltekruse@contractor.usgs.gov> Date: Thu, 14 Jan 2021 12:20:50 -0700 Subject: [PATCH] added uncertainty calcs and fixed median - validated at input for global interface and slab against official python code --- .../earthquake/nshmp/gmm/ParkerEtAl_2020.java | 335 ++++++++++++++++-- .../usgs/earthquake/nshmp/gmm/PSHAB20.java | 3 +- src/test/resources/gmm/PSHAB20_results.csv | 69 ++-- 3 files changed, 354 insertions(+), 53 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java index f328e240..d715e776 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java @@ -8,6 +8,7 @@ import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA; import static java.lang.Math.exp; import static java.lang.Math.log; import static java.lang.Math.log10; +import static java.lang.Math.max; import static java.lang.Math.min; import static java.lang.Math.pow; import static java.lang.Math.sqrt; @@ -34,6 +35,9 @@ import gov.usgs.earthquake.nshmp.gmm.GmmInput.Constraints; * plane, zHypBar, in Eq. 4.6 without modification to coefficients or * uncertainty. * + * Path term (Eqs. 4.2 and 4.3 in PEER report) appears to differ in the official + * Python implementation. Compare implementations of getPathTerm() below + * * <p><b>Reference:</b> Parker, G.A, Stewart, J.P., Boore, D.M., Atkinson, G.M., * Hassani, B. (2020) NGA-Subduction global ground-motion models with regional * adjustment factors. Report no. 2020/03. Berkeley, CA: PEER, 131 p. @@ -105,6 +109,19 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { private static final double DB1 = 20.0; // km private static final double DB2 = 67.0; // km + /* Ï• parameters */ + private static final double R1 = 200; // km + private static final double R2 = 500; // km + private static final double V1 = 200; // m/s + private static final double V2 = 500; // m/s + /* Ï•S2S and Ï•SS parameters */ + private static final double R3 = 200; // km + private static final double R4 = 500; // km + private static final double R5 = 500; // km + private static final double R6 = 800; // km + private static final double V3 = 200; // m/s + private static final double V4 = 800; // m/s + private static final class Coefficients { final Imt imt; final double c0; // model constant @@ -117,7 +134,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { final double c_e1, c_e2, c_e3, del_None, del_Seattle; // Cascadia basin final double Ï„, Ï•21, Ï•22, Ï•2v, vm, Ï•2s2s0, a1, Ï•2ss1, Ï•2ss2, a2; // alleatory // uncertainty - final double ðœŽEp1, ðœŽEp2, t1, t2; + final double σε1, σε2, t1, t2; Coefficients(Imt imt, CoefficientContainer cc, boolean isSlab, String region) { this.imt = imt; @@ -168,11 +185,11 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { Ï•2ss1 = coeffs.get("phi2SS1"); Ï•2ss2 = coeffs.get("phi2SS2"); a2 = coeffs.get("a2"); - // epistemic model - ðœŽEp1 = 0.4; // GLOBAL INTERFACE - ðœŽEp2 = 0.4; // GLOBAL INTERFACE - t1 = 0.2; // GLOBAL INTERFACE - t2 = 0.2; // GLOBAL INTERFACE + // epistemic model (period-independent) + σε1 = getσε1(region, isSlab); + σε2 = getσε2(region, isSlab); + t1 = getT1(region, isSlab); + t2 = getT2(region, isSlab); } private static final String getA0Col(boolean isSlab, String region) { @@ -187,6 +204,79 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { return a0Col; } + /* Table E4 */ + private static final double getσε1(String region, boolean isSlab) { + // return region.equals(Region.ALASKA) ? 0.15 : + // region.equals(Region.ALEUTIANS) ? 0.15 : + // region.equals(Region.CASCADIA) ? 0.43 : 0.4; // else GLOBAL + switch (region) { + case Region.GLOBAL: + return isSlab ? 0.35 : 0.4; + case Region.ALASKA: + return isSlab ? 0.15 : .15; + case Region.ALEUTIANS: + return isSlab ? 0.25 : .15; + case Region.CASCADIA: + return isSlab ? 0.35 : 0.43; + default: + throw new IllegalArgumentException("Region [" + region + "] not supported"); + } + } + + /* Table E4 */ + private static final double getσε2(String region, boolean isSlab) { + // return region.equals(Region.ALASKA) ? 0.1 : + // region.equals(Region.ALEUTIANS) ? 0.11 : + // region.equals(Region.CASCADIA) ? 0.33 : 0.4; // else GLOBAL + switch (region) { + case Region.GLOBAL: + return isSlab ? 0.22 : 0.4; + case Region.ALASKA: + return isSlab ? 0.12 : .1; + case Region.ALEUTIANS: + return isSlab ? 0.18 : .1; + case Region.CASCADIA: + return isSlab ? 0.16 : 0.33; + default: + throw new IllegalArgumentException("Region [" + region + "] not supported"); + } + } + + /* Table E4 */ + private static final double getT1(String region, boolean isSlab) { + // return region.equals(Region.ALASKA) ? 1 : + // region.equals(Region.ALEUTIANS) ? 1 : + // region.equals(Region.CASCADIA) ? 0.2 : 0.2; // else GLOBAL + switch (region) { + case Region.GLOBAL: + return isSlab ? 0.15 : 0.2; + case Region.ALASKA: + return isSlab ? 0.5 : 1; + case Region.ALEUTIANS: + return isSlab ? 0.3 : 1; + case Region.CASCADIA: + return isSlab ? 0.2 : 0.2; + default: + throw new IllegalArgumentException("Region [" + region + "] not supported"); + } + } + + /* Table E4 */ + private static final double getT2(String region, boolean isSlab) { + switch (region) { + case Region.GLOBAL: + return isSlab ? 2 : 0.4; + case Region.ALASKA: + return isSlab ? 1 : 4; + case Region.ALEUTIANS: + return isSlab ? 0.8 : 4; + case Region.CASCADIA: + return isSlab ? 3 : 0.5; + default: + throw new IllegalArgumentException("Region [" + region + "] not supported"); + } + } + private static final double getSaturationMagnitude(String region, boolean isSlab) { // TODO? Read from coeff table? // Parket et al. (2020) Table 4.1 @@ -207,14 +297,6 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { throw new IllegalArgumentException("Region [" + region + "] not supported"); } } - - // set/get epistemic uncertainty parameters - // Region,SigEp1,SigEp2,T1,T2 - // Global,0.4,0.4,0.2,0.4 - // Alaska,0.15,0.1,1,4 - // Aleutian,0.15,0.1,1,4 - // Cascadia,0.43,0.33,0.2,0.5 - } private final Coefficients coeffs; @@ -242,7 +324,18 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { double μ = calcMean(coeffs, isSlab(), getBasin(), in.Mw, in.rRup, in.zHyp, pgaRef, in.vs30, in.z2p5); - double σ = 0.0; + double Ï•Total = getÏ•Total(coeffs, in.rRup, in.vs30); + double σ = Maths.hypot(coeffs.Ï„, Ï•Total); + + // System.out.println("calc for T = " + coeffs.imt.toString()); + // System.out.printf(" Ï•Total = %.6f\n", Ï•Total); + // System.out.printf(" σ = %.6f\n", σ); + + double Ï•S2S = getÏ•S2S(coeffs, in.rRup, in.vs30); + double Ï•SS = getÏ•SS(coeffs, in.rRup, in.vs30); + + double σε = getσε(coeffs); + return DefaultScalarGroundMotion.create(μ, σ); } @@ -252,6 +345,14 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { abstract String getBasin(); + // abstract double σε1(); + // + // abstract double σε2(); + // + // abstract double t1(); + // + // abstract double t2(); + /* calc median at 760 reference conditions */ private static final double calcMean( final Coefficients c, @@ -268,7 +369,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { // System.out.printf(" mc = %.2f\n", c.mc); // System.out.printf(" h = %.6f\n", h); // System.out.printf(" Fp = %.6f\n", Fp); - System.out.printf(" Fm(ref) = %.6f\n", Fm); + // System.out.printf(" Fm(ref) = %.6f\n", Fm); // System.out.printf(" Fd = %.6f\n", Fd); // System.out.printf(" Fb = %.6f (reference calc)\n", 0.0); // System.out.printf(" mu = %.6f\n", c.c0 + Fp + Fm + Fd); @@ -299,19 +400,19 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { double Fsb = getSiteBasinTerm(c, basin, vs30, z2p5); double Fs = Fslin + Fsnl + Fsb; - System.out.println("calcMean for T = " + c.imt.toString()); - System.out.printf(" Vs30 = %.2f\n", vs30); - System.out.printf(" h = %.6f\n", h); - System.out.printf(" Fp = %.6f\n", Fp); - System.out.printf(" Fm = %.6f\n", Fm); - System.out.printf(" Fd = %.6f\n", Fd); - System.out.printf(" PGAref = %.6f\n", pgaRef); - System.out.printf(" Fslin = %.6e\n", Fslin); - System.out.printf(" Fsnl = %.6e\n", Fsnl); - System.out.printf(" Fssb = %.6e\n", Fsb); - System.out.printf(" Fs = %.6e\n", Fs); - System.out.printf(" mu = %.6f\n", c.c0 + Fp + Fm + Fd + Fs); - System.out.printf(" y = %.6f\n", exp(c.c0 + Fp + Fm + Fd + Fs)); + // System.out.println("calcMean for T = " + c.imt.toString()); + // System.out.printf(" Vs30 = %.2f\n", vs30); + // System.out.printf(" h = %.6f\n", h); + // System.out.printf(" Fp = %.6f\n", Fp); + // System.out.printf(" Fm = %.6f\n", Fm); + // System.out.printf(" Fd = %.6f\n", Fd); + // System.out.printf(" PGAref = %.6f\n", pgaRef); + // System.out.printf(" Fslin = %.6e\n", Fslin); + // System.out.printf(" Fsnl = %.6e\n", Fsnl); + // System.out.printf(" Fssb = %.6e\n", Fsb); + // System.out.printf(" Fs = %.6e\n", Fs); + // System.out.printf(" mu = %.6f\n", c.c0 + Fp + Fm + Fd + Fs); + // System.out.printf(" y = %.6f\n", exp(c.c0 + Fp + Fm + Fd + Fs)); return c.c0 + Fp + Fm + Fd + Fs; } @@ -438,6 +539,141 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { return Fb; } + /* Eqs. 6.3, 6.4, 6.5 */ + private static final double getÏ•Total(final Coefficients c, final double rRup, + final double vs30) { + + /* Eq. 6.5 */ + double Δvar; + double rPrime = max(R1, min(R2, rRup)); + if (vs30 <= V1) { + Δvar = c.Ï•2v * (log(R2 / rPrime) / log(R2 / R1)); + } else if (vs30 >= V2) { + Δvar = 0; + } else { + Δvar = c.Ï•2v * (log(V2 / vs30) / log(V2 / V1)) * (log(R2 / rPrime) / log(R2 / R1)); + } + + /* Eq. 6.4 */ + double Ï•2; + if (rRup <= R1) { + Ï•2 = c.Ï•21; + } else if (rRup >= R2) { + Ï•2 = c.Ï•22; + } else { + Ï•2 = (c.Ï•22 - c.Ï•21) / log(R2 / R1) * log(rRup / R1) + c.Ï•21; + } + + /* Eq. 6.3 */ + double Ï•Total = sqrt(Δvar + Ï•2); + + // System.out.println("getÏ•Total for T = " + c.imt.toString()); + // System.out.printf(" rRup = %.6f\n",rRup); + // System.out.printf(" vs30 = %.6f\n",vs30); + // System.out.printf(" rPrime = %.6f\n",rPrime); + // System.out.printf(" c.Ï•2v = %.6f\n",c.Ï•2v); + // System.out.printf(" c.Ï•21 = %.6f\n",c.Ï•21); + // System.out.printf(" c.Ï•22 = %.6f\n",c.Ï•22); + // System.out.printf(" Δvar = %.6f\n",Δvar); + // System.out.printf(" Ï•2 = %.6f\n",Ï•2); + // System.out.printf(" Ï•Total = %.6f\n",Ï•Total); + + return Ï•Total; + } + + /* Eqs. 6.6, 6.7 */ + private static final double getÏ•S2S(final Coefficients c, final double rRup, final double vs30) { + + /* Eq. 6.7 */ + double rPrime = max(R3, min(R4, rRup)); + double ΔvarS2S; + if (vs30 <= V3) { + ΔvarS2S = c.a1 * log(V3 / c.vm) * log(R4 / rPrime) / log(R4 / R3); + } else if (vs30 < c.vm) { + ΔvarS2S = c.a1 * log(vs30 / c.vm) * log(R4 / rPrime) / log(R4 / R3); + } else if (vs30 < V4) { + ΔvarS2S = c.a1 * log(vs30 / c.vm); + } else { // vs30 >= V4 + ΔvarS2S = c.a1 * log(V4 / c.vm); + } + + double Ï•S2S = sqrt(c.Ï•2s2s0 + ΔvarS2S); + + // System.out.println("getÏ•S2S for T = " + c.imt.toString()); + // System.out.printf(" rRup = %.6f\n",rRup); + // System.out.printf(" vs30 = %.6f\n",vs30); + // System.out.printf(" rPrime = %.6f\n",rPrime); + // System.out.printf(" c.a1 = %.6f\n",c.a1); + // System.out.printf(" c.vm = %.6f\n",c.vm); + // System.out.printf(" ΔvarS2S = %.6f\n",ΔvarS2S); + // System.out.printf(" c.Ï•2s2s0 = %.6f\n",c.Ï•2s2s0); + // System.out.printf(" Ï•S2S = %.6f\n",Ï•S2S); + + return Ï•S2S; + } + + /* Eqs. 6.8, 6.9, 6.10 */ + private double getÏ•SS(Coefficients c, double rRup, double vs30) { + /* Eq. 6.10 */ + double rPrime = max(R3, min(R4, rRup)); + double ΔvarSS; + if (vs30 <= V3) { + ΔvarSS = c.a2 * log(V3 / c.vm) * log(R4 / rPrime) / log(R4 / R3); + } else if (vs30 < c.vm) { + ΔvarSS = c.a2 * log(vs30 / c.vm) * log(R4 / rPrime) / log(R4 / R3); + } else if (vs30 < V4) { + ΔvarSS = c.a2 * log(vs30 / c.vm); + } else { // vs30 >= V4 + ΔvarSS = c.a2 * log(V4 / c.vm); + } + + /* Eq. 6.9 */ + double Ï•SS2rRup; + if (rRup <= R5) { + Ï•SS2rRup = c.Ï•2ss1; + } else if (rRup < R6) { + Ï•SS2rRup = (c.Ï•2ss2 - c.Ï•2ss1) / log(R6 / R5) * log(rRup / R5) + c.Ï•2ss1; + } else { // rRup >= R6 + Ï•SS2rRup = c.Ï•2ss2; + } + + double Ï•SS = sqrt(Ï•SS2rRup + ΔvarSS); + + // System.out.println("getÏ•SS for T = " + c.imt.toString()); + // System.out.printf(" rRup = %.6f\n",rRup); + // System.out.printf(" vs30 = %.6f\n",vs30); + // System.out.printf(" rPrime = %.6f\n",rPrime); + // System.out.printf(" c.a2 = %.6f\n",c.a1); + // System.out.printf(" c.vm = %.6f\n",c.vm); + // System.out.printf(" c.Ï•2ss1 = %.6f\n",c.Ï•2ss1); + // System.out.printf(" c.Ï•2ss2 = %.6f\n",c.Ï•2ss2); + // System.out.printf(" ΔvarSS = %.6f\n",ΔvarSS); + // System.out.printf(" Ï•SS2rRup = %.6f\n",Ï•SS2rRup); + // System.out.printf(" Ï•S2S = %.6f\n",Ï•SS); + + return Ï•SS; + } + + /* Eq. 8.2 */ + private double getσε(Coefficients c) { + double σε; + if (c.imt == Imt.PGA || c.imt == Imt.PGV || c.imt.period() < c.t1) { + σε = c.σε1; + } else if (c.imt.period() < c.t2) { + σε = c.σε1 - (c.σε1 - c.σε2) * log(c.imt.period() / c.t1) / log(c.t2 / c.t1); + } else { // T > T2 + σε = c.σε2; + } + // System.out.println("getσε for T = " + c.imt.toString()); + // System.out.printf(" T1 = %.6f\n",c.t1); + // System.out.printf(" T2 = %.6f\n",c.t2); + // System.out.printf(" c.σε1 = %.6f\n",c.σε1); + // System.out.printf(" c.σε2 = %.6f\n",c.σε2); + // System.out.printf(" σε = %.6f\n",σε); + + return σε; + } + /* * Global interface model */ @@ -462,6 +698,27 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { String getBasin() { return Basin.NONE; } + + // @Override + // double σε1() { + // return 0; + // } + // + // @Override + // double σε2() { + // return 0; + // } + // + // @Override + // double t1() { + // return 0; + // } + // + // @Override + // double t2() { + // return 0; + // } + } /* @@ -488,6 +745,26 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel { String getBasin() { return Basin.NONE; } + + // @Override + // double σε1() { + // return 0; + // } + // + // @Override + // double σε2() { + // return 0; + // } + // + // @Override + // double t1() { + // return 0; + // } + // + // @Override + // double t2() { + // return 0; + // } } /* diff --git a/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java b/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java index 7b20051b..5d2f86bc 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/gmm/PSHAB20.java @@ -1,6 +1,7 @@ package gov.usgs.earthquake.nshmp.gmm; import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSHAB20_INTERFACE; +import static gov.usgs.earthquake.nshmp.gmm.Gmm.PSHAB20_SLAB; import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA; import java.io.IOException; @@ -33,7 +34,7 @@ class PSHAB20 implements ArgumentsProvider { } /* Result generation sets */ - private static Set<Gmm> gmms = EnumSet.of(PSHAB20_INTERFACE); + private static Set<Gmm> gmms = EnumSet.of(PSHAB20_INTERFACE, PSHAB20_SLAB); private static Set<Imt> imts = EnumSet.of(PGA);// PSHAB20_INTERFACE.supportedIMTs(); public static void main(String[] args) throws IOException { diff --git a/src/test/resources/gmm/PSHAB20_results.csv b/src/test/resources/gmm/PSHAB20_results.csv index 90c40b89..3829c8b2 100644 --- a/src/test/resources/gmm/PSHAB20_results.csv +++ b/src/test/resources/gmm/PSHAB20_results.csv @@ -1,23 +1,46 @@ -0-PSHAB20_INTERFACE-SA0P01,2.08965604936e-02,0.0 -0-PSHAB20_INTERFACE-SA0P02,2.12376645069e-02,0.0 -0-PSHAB20_INTERFACE-SA0P03,2.24575034172e-02,0.0 -0-PSHAB20_INTERFACE-SA0P05,2.58276475982e-02,0.0 -0-PSHAB20_INTERFACE-SA0P075,2.96364966819e-02,0.0 -0-PSHAB20_INTERFACE-SA0P1,3.25369383278e-02,0.0 -0-PSHAB20_INTERFACE-SA0P15,3.55651022874e-02,0.0 -0-PSHAB20_INTERFACE-SA0P2,3.64296484198e-02,0.0 -0-PSHAB20_INTERFACE-SA0P25,3.69487943052e-02,0.0 -0-PSHAB20_INTERFACE-SA0P3,3.71144622014e-02,0.0 -0-PSHAB20_INTERFACE-SA0P4,3.46117876964e-02,0.0 -0-PSHAB20_INTERFACE-SA0P5,3.11738351662e-02,0.0 -0-PSHAB20_INTERFACE-SA0P75,2.56085017514e-02,0.0 -0-PSHAB20_INTERFACE-SA1P0,2.06123859520e-02,0.0 -0-PSHAB20_INTERFACE-SA1P5,1.45673139070e-02,0.0 -0-PSHAB20_INTERFACE-SA2P0,1.08967064936e-02,0.0 -0-PSHAB20_INTERFACE-SA3P0,6.26946254992e-03,0.0 -0-PSHAB20_INTERFACE-SA4P0,4.36498415871e-03,0.0 -0-PSHAB20_INTERFACE-SA5P0,3.44133448941e-03,0.0 -0-PSHAB20_INTERFACE-SA7P5,1.95537566087e-03,0.0 -0-PSHAB20_INTERFACE-SA10P0,1.25157789513e-03,0.0 -0-PSHAB20_INTERFACE-PGA,2.02870001012e-02,0.0 -0-PSHAB20_INTERFACE-PGV,1.95216532021e+00,0.0 +0-PSHAB20_INTERFACE-SA0P01,2.08965604936e-02,7.89668284788e-01 +0-PSHAB20_INTERFACE-SA0P02,2.12376645069e-02,7.95816561778e-01 +0-PSHAB20_INTERFACE-SA0P03,2.24575034172e-02,8.14248119433e-01 +0-PSHAB20_INTERFACE-SA0P05,2.58276475982e-02,8.67054784890e-01 +0-PSHAB20_INTERFACE-SA0P075,2.96364966819e-02,8.99944442730e-01 +0-PSHAB20_INTERFACE-SA0P1,3.25369383278e-02,8.89705569276e-01 +0-PSHAB20_INTERFACE-SA0P15,3.55651022874e-02,8.46817571854e-01 +0-PSHAB20_INTERFACE-SA0P2,3.64296484198e-02,8.26438745462e-01 +0-PSHAB20_INTERFACE-SA0P25,3.69487943052e-02,8.31903840597e-01 +0-PSHAB20_INTERFACE-SA0P3,3.71144622014e-02,8.23446415986e-01 +0-PSHAB20_INTERFACE-SA0P4,3.46117876964e-02,8.21622784494e-01 +0-PSHAB20_INTERFACE-SA0P5,3.11738351662e-02,8.18574370476e-01 +0-PSHAB20_INTERFACE-SA0P75,2.56085017514e-02,8.30700908872e-01 +0-PSHAB20_INTERFACE-SA1P0,2.06123859520e-02,8.19795096350e-01 +0-PSHAB20_INTERFACE-SA1P5,1.45673139070e-02,8.05024223238e-01 +0-PSHAB20_INTERFACE-SA2P0,1.08967064936e-02,7.96909028685e-01 +0-PSHAB20_INTERFACE-SA3P0,6.26946254992e-03,7.80425524954e-01 +0-PSHAB20_INTERFACE-SA4P0,4.36498415871e-03,7.56349125735e-01 +0-PSHAB20_INTERFACE-SA5P0,3.44133448941e-03,7.34890468029e-01 +0-PSHAB20_INTERFACE-SA7P5,1.95537566087e-03,7.04318109947e-01 +0-PSHAB20_INTERFACE-SA10P0,1.25157789513e-03,6.87796481526e-01 +0-PSHAB20_INTERFACE-PGA,2.02870001012e-02,7.91454357496e-01 +0-PSHAB20_INTERFACE-PGV,1.95216532021e+00,7.58636276486e-01 +0-PSHAB20_SLAB-SA0P01,7.19805699097e-02,7.89668284788e-01 +0-PSHAB20_SLAB-SA0P02,7.78462260065e-02,7.95816561778e-01 +0-PSHAB20_SLAB-SA0P03,8.37771432985e-02,8.14248119433e-01 +0-PSHAB20_SLAB-SA0P05,1.05691366814e-01,8.67054784890e-01 +0-PSHAB20_SLAB-SA0P075,1.35586500017e-01,8.99944442730e-01 +0-PSHAB20_SLAB-SA0P1,1.58689587375e-01,8.89705569276e-01 +0-PSHAB20_SLAB-SA0P15,1.83281681820e-01,8.46817571854e-01 +0-PSHAB20_SLAB-SA0P2,1.93331748629e-01,8.26438745462e-01 +0-PSHAB20_SLAB-SA0P25,1.88104417586e-01,8.31903840597e-01 +0-PSHAB20_SLAB-SA0P3,1.71253449867e-01,8.23446415986e-01 +0-PSHAB20_SLAB-SA0P4,1.49480063250e-01,8.21622784494e-01 +0-PSHAB20_SLAB-SA0P5,1.26491388754e-01,8.18574370476e-01 +0-PSHAB20_SLAB-SA0P75,8.53899125993e-02,8.30700908872e-01 +0-PSHAB20_SLAB-SA1P0,6.18931082597e-02,8.19795096350e-01 +0-PSHAB20_SLAB-SA1P5,3.59081844251e-02,8.05024223238e-01 +0-PSHAB20_SLAB-SA2P0,2.26680607353e-02,7.96909028685e-01 +0-PSHAB20_SLAB-SA3P0,1.25351157474e-02,7.80425524954e-01 +0-PSHAB20_SLAB-SA4P0,7.74659496901e-03,7.56349125735e-01 +0-PSHAB20_SLAB-SA5P0,5.48590963050e-03,7.34890468029e-01 +0-PSHAB20_SLAB-SA7P5,2.61850755964e-03,7.04318109947e-01 +0-PSHAB20_SLAB-SA10P0,1.57671022525e-03,6.87796481526e-01 +0-PSHAB20_SLAB-PGA,7.18617131166e-02,7.91454357496e-01 +0-PSHAB20_SLAB-PGV,5.11504074039e+00,7.58636276486e-01 -- GitLab