Skip to content
Snippets Groups Projects
Commit 86231779 authored by Powers, Peter M.'s avatar Powers, Peter M.
Browse files

Merge branch 'am09-fix-258' into 'main'

AM09 site term fix

See merge request !429
parents e50a1077 94e7630e
No related branches found
No related tags found
1 merge request!429AM09 site term fix
Pipeline #509376 passed
......@@ -3,7 +3,9 @@ package gov.usgs.earthquake.nshmp.gmm;
import static gov.usgs.earthquake.nshmp.Maths.hypot;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.AM_09_INTERFACE;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.AM_09_INTERFACE_BASIN;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.AM_09_INTERFACE_BASIN_CONUS_2018;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.AM_09_INTERFACE_BASIN_M9;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.AM_09_INTERFACE_CONUS_2014;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.BA_08_BASE;
import static gov.usgs.earthquake.nshmp.gmm.Gmm.CB_14_BASE;
import static gov.usgs.earthquake.nshmp.gmm.GmmInput.Field.MW;
......@@ -25,6 +27,7 @@ import static gov.usgs.earthquake.nshmp.gmm.Imt.SA0P3;
import static gov.usgs.earthquake.nshmp.gmm.Imt.SA1P0;
import static gov.usgs.earthquake.nshmp.gmm.Imt.SA1P5;
import static gov.usgs.earthquake.nshmp.gmm.Imt.SA2P0;
import static java.lang.Math.exp;
import static java.lang.Math.log;
import static java.lang.Math.log10;
......@@ -163,6 +166,11 @@ public class AtkinsonMacias_2009 implements GroundMotionModel {
return false;
}
/* Maintain natural log μPga for site term. */
boolean lnPgaRock() {
return false;
}
@Override
public final LogicTree<GroundMotion> calc(GmmInput in) {
......@@ -178,7 +186,7 @@ public class AtkinsonMacias_2009 implements GroundMotionModel {
double σ = coeffs.σ * BASE_10_TO_E;
double μRef = calcMean(coeffs, in);
double μPga = calcMean(coeffsPGA, in);
double site = siteAmp.siteAmp(μPga, in.vs30);
double site = siteAmp.siteAmp(lnPgaRock() ? μPga : exp(μPga), in.vs30);
double μAm = μRef + site;
/* Add (possibly depth-tapered) CB14 deep basin term or M9 adjustment. */
......@@ -242,4 +250,42 @@ public class AtkinsonMacias_2009 implements GroundMotionModel {
}
}
/*
* Developer note (10/2024): The following two implementations maintain an
* error where the natural log of the PGA rock reference value is passed to
* the BA08 site term, but should be exp(μPga). The published 2018 CONUS model
* (5.2) has been updated to use the AM_09_INTERFACE_BASIN_CONUS_2018. The
* updated model (5.3) uses the corrected AM_09_INTERFACE_BASIN
* implementation. Although the *_CONUS_2018 implementation could also be used
* for 2014 because there will never be any z2p5 values supplied (no basin
* term would ever be calculated), for clarity we've added
* AM_09_INTERFACE_CONUS_2014 as well.
*/
static final class BasinConus2018 extends Basin {
static final String NAME = Basin.NAME + " (conus-2018)";
BasinConus2018(Imt imt) {
super(imt, AM_09_INTERFACE_BASIN_CONUS_2018);
}
@Override
final boolean lnPgaRock() {
return true;
}
}
static final class Conus2014 extends AtkinsonMacias_2009 {
static final String NAME = AtkinsonMacias_2009.NAME + " (conus-2014)";
Conus2014(Imt imt) {
super(imt, AM_09_INTERFACE_CONUS_2014);
}
@Override
final boolean lnPgaRock() {
return true;
}
}
}
......@@ -163,12 +163,12 @@ public class BooreAtkinson_2008 implements GroundMotionModel {
* Package visible site amplification model. This model is appropriate for use
* with other GMMs where the reference rock site condition has Vs30=760.
*/
double siteAmp(double lnPga, double vs30) {
return calcSite(coeffs, lnPga, vs30);
double siteAmp(double pgaRef, double vs30) {
return calcSite(coeffs, pgaRef, vs30);
}
/* Site term */
private static double calcSite(Coefficients c, double lnPga, double vs30) {
private static double calcSite(Coefficients c, double pgaRef, double vs30) {
double Flin = c.b_lin * log(vs30 / Vref);
......@@ -184,17 +184,17 @@ public class BooreAtkinson_2008 implements GroundMotionModel {
}
double Fnl = 0.0;
if (lnPga <= A1) {
if (pgaRef <= A1) {
Fnl = bnl * log(PGAlo / 0.1);
} else if (lnPga <= A2) {
} else if (pgaRef <= A2) {
double dX = log(A2 / A1);
double dY = bnl * log(A2 / PGAlo);
double _c = (3.0 * dY - bnl * dX) / (dX * dX);
double d = -(2.0 * dY - bnl * dX) / (dX * dX * dX);
double p = log(lnPga / A1);
double p = log(pgaRef / A1);
Fnl = bnl * log(PGAlo / 0.1) + (_c * p * p) + (d * p * p * p);
} else {
Fnl = bnl * log(lnPga / 0.1);
Fnl = bnl * log(pgaRef / 0.1);
}
return Flin + Fnl;
......
......@@ -438,6 +438,20 @@ public enum Gmm {
AtkinsonMacias_2009.COEFFS,
AtkinsonMacias_2009.CONSTRAINTS),
/** @see AtkinsonMacias_2009 */
AM_09_INTERFACE_BASIN_CONUS_2018(
AtkinsonMacias_2009.BasinConus2018.class,
AtkinsonMacias_2009.BasinConus2018.NAME,
AtkinsonMacias_2009.COEFFS,
AtkinsonMacias_2009.CONSTRAINTS),
/** @see AtkinsonMacias_2009 */
AM_09_INTERFACE_CONUS_2014(
AtkinsonMacias_2009.Conus2014.class,
AtkinsonMacias_2009.Conus2014.NAME,
AtkinsonMacias_2009.COEFFS,
AtkinsonMacias_2009.CONSTRAINTS),
/** @see AbrahamsonGulerce_2020 */
AG_20_GLOBAL_INTERFACE(
AbrahamsonGulerce_2020.GlobalInterface.class,
......
This diff is collapsed.
......@@ -325,10 +325,10 @@
28-AM_09_INTERFACE-PGA,0.0738438379,0.5526204223
29-AM_09_INTERFACE-PGA,0.0221496561,0.5526204223
30-AM_09_INTERFACE-PGA,0.0040242763,0.5526204223
31-AM_09_INTERFACE-PGA,0.1680458831,0.5526204223
32-AM_09_INTERFACE-PGA,0.1228922327,0.5526204223
33-AM_09_INTERFACE-PGA,0.1000093828,0.5526204223
34-AM_09_INTERFACE-PGA,0.0839763783,0.5526204223
31-AM_09_INTERFACE-PGA,0.1458078295,0.5526204223
32-AM_09_INTERFACE-PGA,0.1153941963,0.5526204223
33-AM_09_INTERFACE-PGA,0.0975439858,0.5526204223
34-AM_09_INTERFACE-PGA,0.0830076988,0.5526204223
35-AM_09_INTERFACE-PGA,0.0621572164,0.5526204223
36-AM_09_INTERFACE-PGA,0.0551898973,0.5526204223
0-AM_09_INTERFACE-SA0P2,1.5493853159,0.6216979751
......@@ -362,10 +362,10 @@
28-AM_09_INTERFACE-SA0P2,0.1357391458,0.6216979751
29-AM_09_INTERFACE-SA0P2,0.0294552220,0.6216979751
30-AM_09_INTERFACE-SA0P2,0.0013924139,0.6216979751
31-AM_09_INTERFACE-SA0P2,0.3200954504,0.6216979751
32-AM_09_INTERFACE-SA0P2,0.2535957995,0.6216979751
33-AM_09_INTERFACE-SA0P2,0.2140338478,0.6216979751
34-AM_09_INTERFACE-SA0P2,0.1813470035,0.6216979751
31-AM_09_INTERFACE-SA0P2,0.2852274293,0.6216979751
32-AM_09_INTERFACE-SA0P2,0.2380653419,0.6216979751
33-AM_09_INTERFACE-SA0P2,0.2069048601,0.6216979751
34-AM_09_INTERFACE-SA0P2,0.1785139080,0.6216979751
35-AM_09_INTERFACE-SA0P2,0.1381135530,0.6216979751
36-AM_09_INTERFACE-SA0P2,0.1246738680,0.6216979751
0-AM_09_INTERFACE-SA1P0,0.3451596866,0.6677496770
......@@ -399,8 +399,8 @@
28-AM_09_INTERFACE-SA1P0,0.1259973651,0.6677496770
29-AM_09_INTERFACE-SA1P0,0.0489873436,0.6677496770
30-AM_09_INTERFACE-SA1P0,0.0075442046,0.6677496770
31-AM_09_INTERFACE-SA1P0,0.3177076512,0.6677496770
32-AM_09_INTERFACE-SA1P0,0.2098343571,0.6677496770
31-AM_09_INTERFACE-SA1P0,0.2881677258,0.6677496770
32-AM_09_INTERFACE-SA1P0,0.2040253072,0.6677496770
33-AM_09_INTERFACE-SA1P0,0.1562043870,0.6677496770
34-AM_09_INTERFACE-SA1P0,0.1180654910,0.6677496770
35-AM_09_INTERFACE-SA1P0,0.0692813736,0.6677496770
......@@ -436,8 +436,8 @@
28-AM_09_INTERFACE-SA3P0,0.0682264984,0.6907755279
29-AM_09_INTERFACE-SA3P0,0.0359398526,0.6907755279
30-AM_09_INTERFACE-SA3P0,0.0118159106,0.6907755279
31-AM_09_INTERFACE-SA3P0,0.1108508385,0.6907755279
32-AM_09_INTERFACE-SA3P0,0.0748289313,0.6907755279
31-AM_09_INTERFACE-SA3P0,0.1027990252,0.6907755279
32-AM_09_INTERFACE-SA3P0,0.0732230847,0.6907755279
33-AM_09_INTERFACE-SA3P0,0.0557889530,0.6907755279
34-AM_09_INTERFACE-SA3P0,0.0414983749,0.6907755279
35-AM_09_INTERFACE-SA3P0,0.0236208575,0.6907755279
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment