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

Merge branch 'kuehn-seattle-edits' into 'main'

Custom Seattle no-M9 implementation

See merge request !285
parents 09dd0a4d 695ea880
No related branches found
No related tags found
1 merge request!285Custom Seattle no-M9 implementation
Pipeline #154075 failed
...@@ -547,6 +547,13 @@ public enum Gmm { ...@@ -547,6 +547,13 @@ public enum Gmm {
KuehnEtAl_2020.COEFFS, KuehnEtAl_2020.COEFFS,
KuehnEtAl_2020.CONSTRAINTS_INTERFACE), KuehnEtAl_2020.CONSTRAINTS_INTERFACE),
/** @see KuehnEtAl_2020 */
KBCG_20_SEATTLE_INTERFACE_BASIN(
KuehnEtAl_2020.SeattleInterfaceBasinNoM9.class,
KuehnEtAl_2020.SeattleInterfaceBasinNoM9.NAME,
KuehnEtAl_2020.COEFFS,
KuehnEtAl_2020.CONSTRAINTS_INTERFACE),
/** @see KuehnEtAl_2020 */ /** @see KuehnEtAl_2020 */
KBCG_20_CASCADIA_SLAB_BASIN( KBCG_20_CASCADIA_SLAB_BASIN(
KuehnEtAl_2020.CascadiaSlabBasin.class, KuehnEtAl_2020.CascadiaSlabBasin.class,
...@@ -1430,6 +1437,7 @@ public enum Gmm { ...@@ -1430,6 +1437,7 @@ public enum Gmm {
KBCG_20_CASCADIA_INTERFACE, KBCG_20_CASCADIA_INTERFACE,
KBCG_20_CASCADIA_SLAB, KBCG_20_CASCADIA_SLAB,
KBCG_20_CASCADIA_INTERFACE_BASIN, KBCG_20_CASCADIA_INTERFACE_BASIN,
KBCG_20_SEATTLE_INTERFACE_BASIN,
KBCG_20_SEATTLE_M9_INTERFACE_BASIN, KBCG_20_SEATTLE_M9_INTERFACE_BASIN,
KBCG_20_CASCADIA_SLAB_BASIN, KBCG_20_CASCADIA_SLAB_BASIN,
KBCG_20_ALASKA_INTERFACE, KBCG_20_ALASKA_INTERFACE,
......
...@@ -234,16 +234,18 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -234,16 +234,18 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
/* Only true for interface */ /* Only true for interface */
abstract boolean seattle(); abstract boolean seattle();
abstract boolean seattleNoM9();
@Override @Override
public LogicTree<GroundMotion> calc(GmmInput in) { public LogicTree<GroundMotion> calc(GmmInput in) {
double pgaRef = exp(calcPgaRef(coeffsPGA, in.Mw, in.rRup, in.zTor)); double pgaRef = exp(calcPgaRef(coeffsPGA, in.Mw, in.rRup, in.zTor));
double μ = calcMean(coeffs, slab(), basin(), seattle(), double μ = calcMean(coeffs, slab(), basin(), seattle(), seattleNoM9(),
in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef); in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
// short periods can't be lower than PGA // short periods can't be lower than PGA
if (coeffs.imt.isSA() && coeffs.imt.period() <= 0.1) { if (coeffs.imt.isSA() && coeffs.imt.period() <= 0.1) {
double μPga = calcMean(coeffsPGA, slab(), basin(), seattle(), double μPga = calcMean(coeffsPGA, slab(), basin(), seattle(), seattleNoM9(),
in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef); in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
μ = max(μ, μPga); μ = max(μ, μPga);
} }
...@@ -277,6 +279,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -277,6 +279,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
boolean slab, boolean slab,
boolean basin, boolean basin,
boolean seattle, boolean seattle,
boolean seattleNoM9,
double Mw, double Mw,
double rRup, double rRup,
double zTor, double zTor,
...@@ -289,7 +292,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -289,7 +292,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
double fDepth = depthTerm(c, zTor); double fDepth = depthTerm(c, zTor);
double fAtten = arcCrossingTerm(c, rRup); double fAtten = arcCrossingTerm(c, rRup);
double fSite = siteAmpTerm(c, vs30, pgaRef); double fSite = siteAmpTerm(c, vs30, pgaRef);
double fBasin = basinTerm(c, vs30, z2p5, slab, basin, seattle); double fBasin = basinTerm(c, vs30, z2p5, slab, basin, seattle, seattleNoM9);
return c.θ1 + fMag + fGeom + fDepth + fAtten + fSite + fBasin; return c.θ1 + fMag + fGeom + fDepth + fAtten + fSite + fBasin;
} }
...@@ -364,7 +367,8 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -364,7 +367,8 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
double z2p5, double z2p5,
boolean slab, boolean slab,
boolean basin, boolean basin,
boolean seattle) { boolean seattle,
boolean seattleNoM9) {
if (Double.isNaN(z2p5)) { if (Double.isNaN(z2p5)) {
return 0.0; return 0.0;
...@@ -379,10 +383,17 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -379,10 +383,17 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
} }
double fb = 0.0; double fb = 0.0;
if (basin && seattle) {
if (seattle) {
fb = c.θ11S; fb = c.θ11S;
if (!slab && z2p5 > 6.0 && (c.imt.isSA() && c.imt.period() > 1.9)) { if (!seattleNoM9) {
fb = log(2.0); // M9 scaling if (!slab && z2p5 > 6.0 && (c.imt.isSA() && c.imt.period() > 1.9)) {
fb = log(2.0); // M9 scaling
}
}
if (basin) {
// need to scale because independent of δlnZ
fb *= GmmUtils.deltaZ25scale(c.imt, z2p5);
} }
} else { } else {
fb = Math.min(c.θ11 + c.θ12 * δlnZ, c.θ11S); // Seattle cap fb = Math.min(c.θ11 + c.θ12 * δlnZ, c.θ11S); // Seattle cap
...@@ -422,6 +433,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -422,6 +433,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
boolean seattle() { boolean seattle() {
return false; return false;
} }
@Override
boolean seattleNoM9() {
return false;
}
} }
private static abstract class Cascadia extends KuehnEtAl_2020 { private static abstract class Cascadia extends KuehnEtAl_2020 {
...@@ -446,6 +462,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -446,6 +462,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
boolean seattle() { boolean seattle() {
return false; return false;
} }
@Override
boolean seattleNoM9() {
return false;
}
} }
private static abstract class Alaska extends KuehnEtAl_2020 { private static abstract class Alaska extends KuehnEtAl_2020 {
...@@ -470,6 +491,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -470,6 +491,11 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
boolean seattle() { boolean seattle() {
return false; return false;
} }
@Override
boolean seattleNoM9() {
return false;
}
} }
static class GlobalInterface extends Global { static class GlobalInterface extends Global {
...@@ -545,6 +571,30 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel { ...@@ -545,6 +571,30 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
} }
} }
@Deprecated // for demo purposes only
static final class SeattleInterfaceBasinNoM9 extends CascadiaInterface {
static final String NAME = CascadiaInterface.NAME + " (Seattle basin)";
SeattleInterfaceBasinNoM9(Imt imt) {
super(imt);
}
@Override
boolean basin() {
return true;
}
@Override
boolean seattle() {
return true;
}
@Override
boolean seattleNoM9() {
return true;
}
}
static final class CascadiaSlabBasin extends CascadiaSlab { static final class CascadiaSlabBasin extends CascadiaSlab {
static final String NAME = CascadiaSlab.NAME + " (basin)"; static final String NAME = CascadiaSlab.NAME + " (basin)";
......
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