package org.opensha2.gmm; import static org.opensha2.gmm.GmmInput.Field.MW; import static org.opensha2.gmm.GmmInput.Field.RJB; import static org.opensha2.gmm.GmmInput.Field.VS30; import static org.opensha2.gmm.GmmUtils.BASE_10_TO_E; import static org.opensha2.gmm.GmmUtils.atkinsonTableValue; import org.opensha2.gmm.GmmInput.Constraints; import org.opensha2.gmm.GroundMotionTables.GroundMotionTable; import com.google.common.collect.Range; /** * Modified form of the relationship for the Central and Eastern US by Atkinson * (2008). This implementation matches that used in the 2014 USGS NSHMP and uses * table lookups instead of functional forms to compute ground motions. This * relation is commonly referred to as A08 Prime (A08'). * * <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><b>Implementation note:</b> Mean values are clamped per * {@link GmmUtils#ceusMeanClip(Imt, double)}. * * <p><b>Reference:</b> Atkinson, G.M., 2008, Ground-motion prediction equations * for eastern North America from a referenced empirical approach—Implications * for epistemic uncertainty: Bulletin of the Seismological Society of America, * v. 98, n. 3, p. 1304–1318. * * <p><b>doi:</b> <a href="http://dx.doi.org/10.1785/0120070199"> * 10.1785/0120070199</a> * * <p><b>Reference:</b> Atkinson, G.M., and Boore, D.M., 2011, Modifications to * existing ground-motion prediction equations in light of new data: Bulletin of * the Seismological Society of America, v. 101, n. 3, p. 1121–1135. * * <p><b>doi:</b> <a href="http://dx.doi.org/10.1785/0120100270"> * 10.1785/0120100270</a> * * <p><b>Component:</b> horizontal (not clear from publication) * * @author Peter Powers * @see Gmm#ATKINSON_08_PRIME */ public final class Atkinson_2008p implements GroundMotionModel { static final String NAME = "Atkinson (2008) Prime"; static final Constraints CONSTRAINTS = Constraints.builder() .set(MW, Range.closed(4.0, 8.0)) .set(RJB, Range.closed(0.0, 1000.0)) .set(VS30, Range.closed(760.0, 2000.0)) .build(); static final CoefficientContainer COEFFS = new CoefficientContainer("A08P.csv"); private static final double SIGMA = 0.3 * BASE_10_TO_E; private final double bcfac; private final Imt imt; private final GroundMotionTable table; Atkinson_2008p(final Imt imt) { this.imt = imt; bcfac = COEFFS.get(imt, "bcfac"); table = GroundMotionTables.getAtkinson08(imt); } @Override public final ScalarGroundMotion calc(final GmmInput in) { double r = Math.max(in.rJB, 0.11); double μ = atkinsonTableValue(table, imt, in.Mw, r, in.vs30, bcfac); return DefaultScalarGroundMotion.create(GmmUtils.ceusMeanClip(imt, μ), SIGMA); } }