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

Merge pull request #46 from pmpowers-usgs/atkinson-induced-gmm

Atkinson induced seis implementation
parents 6a4af324 f942b949
No related branches found
No related tags found
No related merge requests found
package org.opensha2.gmm;
import static java.lang.Math.pow;
import static java.lang.Math.max;
import static java.lang.Math.sqrt;
import static org.opensha2.gmm.GmmInput.Field.MAG;
import static org.opensha2.gmm.GmmInput.Field.RRUP;
import static org.opensha2.gmm.GmmInput.Field.VS30;
import static org.opensha2.gmm.GmmUtils.BASE_10_TO_E;
import static org.opensha2.gmm.GmmUtils.LN_G_CM_TO_M;
import java.util.Map;
import org.opensha2.gmm.GmmInput.Constraints;
import com.google.common.collect.Range;
/**
* Implementation of the ground motion model by Atkinson (2015) for induced
* seismicity.
*
* <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
* prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
* desired {@link Imt}.</p>
*
* <p><b>Reference:</b> Atkinson, G.M., 2015, Ground-motion prediction equation
* for small-to-moderate events at short hypocentral distances, with application
* to induced-seismicity hazards: Bulletin of the Seismological Society of
* America, v. 105, p. 981-992.</p>
*
* <p><b>doi:</b><a href="http://dx.doi.org/10.1785/0120140142">
* 10.1785/0120140142</a></p>
*
* <p><b>Component:</b> orientation-independent horizontal</p>
*
* @author Peter Powers
* @see Gmm#AM_09_INTER
*/
public final class Atkinson_2015 implements GroundMotionModel {
static final String NAME = "Atkinson (20015)";
// TODO
static final Constraints CONSTRAINTS = Constraints.builder()
.set(MAG, Range.closed(3.0, 6.0))
.set(RRUP, Range.closed(0.0, 300.0))
.set(VS30, Range.singleton(760.0))
.build();
static final CoefficientContainer COEFFS = new CoefficientContainer("Atkinson15.csv");
private static final class Coefficients {
final Imt imt;
final double c0, c1, c2, c3, c4, φ, τ, σ;
Coefficients(Imt imt, CoefficientContainer cc) {
this.imt = imt;
Map<String, Double> coeffs = cc.get(imt);
c0 = coeffs.get("c0");
c1 = coeffs.get("c1");
c2 = coeffs.get("c2");
c3 = coeffs.get("c3");
c4 = coeffs.get("c4");
φ = coeffs.get("phi");
τ = coeffs.get("tau");
σ = coeffs.get("sigma");
}
}
private final Coefficients coeffs;
Atkinson_2015(final Imt imt) {
coeffs = new Coefficients(imt, COEFFS);
}
@Override public final ScalarGroundMotion calc(final GmmInput in) {
double μ = calcMean(coeffs, in);
double σ = coeffs.σ * BASE_10_TO_E;
return DefaultScalarGroundMotion.create(GmmUtils.ceusMeanClip(coeffs.imt, μ), σ);
}
private static final double calcMean(final Coefficients c, final GmmInput in) {
double Mw = in.Mw;
double rRup = in.rRup;
double h_eff = max(1, pow(10, -1.72 + 0.43 * Mw));
double r = sqrt(rRup * rRup + h_eff * h_eff);
double μ = c.c0 + c.c1 * Mw + c.c2 * Mw * Mw + c.c3 * r + c.c4 * r;
return μ * BASE_10_TO_E - LN_G_CM_TO_M;
}
}
...@@ -382,6 +382,13 @@ public enum Gmm { ...@@ -382,6 +382,13 @@ public enum Gmm {
// Other // Other
/** @see Atkinson_2015 */
ATKINSON_15(
Atkinson_2015.class,
Atkinson_2015.NAME,
Atkinson_2015.COEFFS,
Atkinson_2015.CONSTRAINTS),
/** @see SadighEtAl_1997 */ /** @see SadighEtAl_1997 */
SADIGH_97( SADIGH_97(
SadighEtAl_1997.class, SadighEtAl_1997.class,
...@@ -619,6 +626,7 @@ public enum Gmm { ...@@ -619,6 +626,7 @@ public enum Gmm {
OTHER( OTHER(
"Others", "Others",
ImmutableList.of( ImmutableList.of(
ATKINSON_15,
AB_03_CASC_INTER, AB_03_CASC_INTER,
MCVERRY_00_CRUSTAL, MCVERRY_00_CRUSTAL,
MCVERRY_00_INTERFACE, MCVERRY_00_INTERFACE,
...@@ -633,7 +641,7 @@ public enum Gmm { ...@@ -633,7 +641,7 @@ public enum Gmm {
this.name = name; this.name = name;
this.gmms = gmms; this.gmms = gmms;
} }
@Override public String toString() { @Override public String toString() {
return name; return name;
} }
......
T,c0,c1,c2,c3,c4,phi,tau,sigma PGA,-2.376,1.818,-0.1153,-1.752,-0.002,0.28,0.24,0.37 PGV,-4.151,1.762,-0.09509,-1.669,-0.0006,0.27,0.19,0.33 0.03,-2.283,1.842,-0.1189,-1.785,-0.002,0.28,0.27,0.39 0.05,-2.018,1.826,-0.1192,-1.831,-0.002,0.28,0.3,0.41 0.1,-1.954,1.83,-0.1185,-1.774,-0.002,0.29,0.25,0.39 0.2,-2.266,1.785,-0.1061,-1.657,-0.0014,0.3,0.21,0.37 0.3,-2.794,1.852,-0.1078,-1.608,-0.00105,0.3,0.19,0.36 0.5,-3.873,2.06,-0.1212,-1.544,-0.0006,0.29,0.2,0.35 1,-4.081,1.742,-0.07381,-1.481,0,0.26,0.22,0.34 2,-4.462,1.485,-0.03815,-1.361,0,0.24,0.23,0.33 3,-3.827,1.06,0.009086,-1.398,0,0.24,0.22,0.32 5,-4.321,1.08,0.009376,-1.378,0,0.25,0.18,0.31
\ No newline at end of file
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