From 194f9fcffefd2961a69ee133360b44b73fd2224e Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Thu, 25 Jun 2015 14:01:33 -0600 Subject: [PATCH] cleanup; changed SINGLE mfd a to rate --- etc/examples/README.md | 2 +- .../eq/fault/surface/RuptureFloating.java | 57 ++++++------- .../opensha2/eq/model/AbstractSourceSet.java | 2 +- src/org/opensha2/eq/model/AreaParser.java | 2 +- src/org/opensha2/eq/model/ClusterParser.java | 6 +- src/org/opensha2/eq/model/FaultParser.java | 6 +- src/org/opensha2/eq/model/GridParser.java | 2 +- src/org/opensha2/eq/model/HazardModel.java | 27 +++--- .../opensha2/eq/model/InterfaceParser.java | 2 +- .../opensha2/eq/model/InterfaceSource.java | 7 +- src/org/opensha2/eq/model/MfdHelper.java | 25 ++++-- .../opensha2/eq/model/SourceAttribute.java | 1 + src/org/opensha2/gmm/AtkinsonBoore_2003.java | 82 ++++++++++--------- src/org/opensha2/gmm/Gmm.java | 4 +- test/org/opensha2/gmm/SubSlab.java | 8 +- 15 files changed, 120 insertions(+), 113 deletions(-) diff --git a/etc/examples/README.md b/etc/examples/README.md index f0fafc5b7..230a68e05 100644 --- a/etc/examples/README.md +++ b/etc/examples/README.md @@ -5,7 +5,7 @@ The simplest way to run the HazardCurve program via the command-line is to suppl ``` java -cp ../../dist/nshmp-haz.jar org.opensha2.programs.HazardCurve model ``` -By way of example, the [configuration file](https://github.com/usgs/nshmp-haz/blob/master/etc/examples/model/config.json) in the model above omits any site data and a default Los Angeles site is used. Remember that calculation [configuration parameters](https://github.com/usgs/nshmp-haz/wiki/Configuration) need not be supplied. The result of this calculation should be available as a single file containing one hazard curve for PGA in a newly created 'results' directory. +By way of example, the [configuration file](https://github.com/usgs/nshmp-haz/blob/master/etc/examples/model/config.json) in the model above omits any site data and a default Los Angeles site is used. Remember that [calculation configuration](https://github.com/usgs/nshmp-haz/wiki/Configuration) parameters need not be supplied. The result of this calculation should be available as a single file containing one hazard curve for PGA in a newly created 'results' directory. One can override calculation configuration parameters by supplying an alternate configuration file. For example: ``` diff --git a/src/org/opensha2/eq/fault/surface/RuptureFloating.java b/src/org/opensha2/eq/fault/surface/RuptureFloating.java index 619e8918a..c7abe7d51 100644 --- a/src/org/opensha2/eq/fault/surface/RuptureFloating.java +++ b/src/org/opensha2/eq/fault/surface/RuptureFloating.java @@ -18,16 +18,13 @@ import org.opensha2.geo.LocationList; import com.google.common.collect.Range; /** - * Gridded surface floating model identifiers. Each provides the means to create - * a List of {@link GriddedSubsetSurface}s from a RuptureScaling - * {@link DefaultGriddedSurface} to an immutable list of {@link Rupture}s. + * Rupture floating models for gridded surfaces. Each provides the means to + * create an immutable {@code List} of {@link Rupture}s from a + * {@link GriddedSurface}, magnitude, rate, rake, and uncertainty flag. * * <p>NOTE: Only {@code ON} currently recognizes and applies rupture area * uncertainty.</p> * - * <p>TODO: This should also handle down dip variations in hypocenter wieght; - * the so-called PEER triangular distribution. - * * @author Peter Powers */ public enum RuptureFloating { @@ -110,7 +107,7 @@ public enum RuptureFloating { d.length, d.width); return null; - // TODO + // TODO complete implementation } @@ -135,8 +132,7 @@ public enum RuptureFloating { return floaters; } - // TODO this should return RuptureSurface, perhaps; do we need grid-specific - // info after this point? + // TODO why is this taking DefaultGriddedSurface instead of GriddedSurface /** * Create a {@code List} of floating ruptures * @param surface (gridded) from which floaters are derived @@ -157,13 +153,9 @@ public enum RuptureFloating { // else [zTop, +2, +4, +6] double zTop = parent.depth(); - // @formatter:off - int downDipCount = - (zTop > 1.0) ? 1 : - (mag > 7.0) ? 1 : - (mag > 6.75) ? 2 : + int downDipCount = (zTop > 1.0 || mag > 7.0) ? 1 : + (mag > 6.75) ? 2 : (mag > 6.5) ? 3 : 4; - // @formatter:on List<Double> zTopWidths = new ArrayList<>(); for (int i = 0; i < downDipCount; i++) { @@ -316,29 +308,30 @@ public enum RuptureFloating { // TODO clean public static void main(String[] args) { -// double zTop = 0.0; -// double zBot = 30.0; -// double[] depths = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28 }; -// double[] weights = generateTriangularWeights(zTop, zBot, depths); -// System.out.println(Arrays.toString(weights)); -// System.out.println(DataUtils.sum(weights)); - + // double zTop = 0.0; + // double zBot = 30.0; + // double[] depths = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, + // 28 }; + // double[] weights = generateTriangularWeights(zTop, zBot, depths); + // System.out.println(Arrays.toString(weights)); + // System.out.println(DataUtils.sum(weights)); + DefaultGriddedSurface surf = DefaultGriddedSurface.builder() - .trace(LocationList.create( - Location.create(33.0, -118.0), - Location.create(33.5, -118.0))) - .depth(0.0) - .width(30.0) - .dip(90.0) - .build(); - + .trace(LocationList.create( + Location.create(33.0, -118.0), + Location.create(33.5, -118.0))) + .depth(0.0) + .width(30.0) + .dip(90.0) + .build(); + Dimensions d = RuptureScaling.PEER.dimensions(7.0, 30.0); System.out.println(d); - + Map<GriddedSurface, Double> map = createWeightedFloatingSurfaces(surf, d.length, d.width); System.out.println(DataUtils.sum(map.values())); System.out.println(map.size()); - + } } diff --git a/src/org/opensha2/eq/model/AbstractSourceSet.java b/src/org/opensha2/eq/model/AbstractSourceSet.java index 40e7a8d46..873e9c100 100644 --- a/src/org/opensha2/eq/model/AbstractSourceSet.java +++ b/src/org/opensha2/eq/model/AbstractSourceSet.java @@ -46,7 +46,7 @@ abstract class AbstractSourceSet<T extends Source> implements SourceSet<T> { @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(" Id: ").append(padEnd(Integer.toString(id), 8, ' ')); - sb.append("Name: ").append(padEnd(name, 27, ' ')); + sb.append("Name: ").append(padEnd(name, 32, ' ')); sb.append("Size: ").append(padEnd(Integer.toString(size()), 8, ' ')); sb.append("Weight: ").append(padEnd(Double.toString(weight), 12, ' ')); return sb.toString(); diff --git a/src/org/opensha2/eq/model/AreaParser.java b/src/org/opensha2/eq/model/AreaParser.java index 46550af75..bb58d6c23 100644 --- a/src/org/opensha2/eq/model/AreaParser.java +++ b/src/org/opensha2/eq/model/AreaParser.java @@ -251,7 +251,7 @@ class AreaParser extends DefaultHandler { case SINGLE: MfdHelper.SingleData singleData = mfdHelper.getSingle(atts); - return Mfds.newSingleMFD(singleData.m, singleData.a * singleData.weight, + return Mfds.newSingleMFD(singleData.m, singleData.rate * singleData.weight, singleData.floats); case GR_TAPER: diff --git a/src/org/opensha2/eq/model/ClusterParser.java b/src/org/opensha2/eq/model/ClusterParser.java index b024f8489..5cfb028d9 100644 --- a/src/org/opensha2/eq/model/ClusterParser.java +++ b/src/org/opensha2/eq/model/ClusterParser.java @@ -4,14 +4,14 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static java.util.logging.Level.FINE; import static java.util.logging.Level.FINEST; -import static org.opensha2.eq.model.SourceAttribute.A; import static org.opensha2.eq.model.SourceAttribute.DEPTH; import static org.opensha2.eq.model.SourceAttribute.DIP; import static org.opensha2.eq.model.SourceAttribute.ID; import static org.opensha2.eq.model.SourceAttribute.M; -import static org.opensha2.eq.model.SourceAttribute.RUPTURE_SCALING; import static org.opensha2.eq.model.SourceAttribute.NAME; import static org.opensha2.eq.model.SourceAttribute.RAKE; +import static org.opensha2.eq.model.SourceAttribute.RATE; +import static org.opensha2.eq.model.SourceAttribute.RUPTURE_SCALING; import static org.opensha2.eq.model.SourceAttribute.TYPE; import static org.opensha2.eq.model.SourceAttribute.WEIGHT; import static org.opensha2.eq.model.SourceAttribute.WIDTH; @@ -185,7 +185,7 @@ class ClusterParser extends DefaultHandler { if (parsingDefaultMFDs) { checkState(readEnum(TYPE, atts, MfdType.class) == MfdType.SINGLE, "Only SINGLE MFDs are supported by cluster sources"); - clusterRate = readDouble(A, atts); + clusterRate = readDouble(RATE, atts); break; } faultBuilder.mfd(buildMFD(atts)); diff --git a/src/org/opensha2/eq/model/FaultParser.java b/src/org/opensha2/eq/model/FaultParser.java index f4c633943..ff8cb70a9 100644 --- a/src/org/opensha2/eq/model/FaultParser.java +++ b/src/org/opensha2/eq/model/FaultParser.java @@ -324,9 +324,9 @@ class FaultParser extends DefaultHandler { List<IncrementalMfd> mfds = Lists.newArrayList(); // total moment rate - double tmr = data.a * Magnitudes.magToMoment_N_m(data.m); + double tmr = data.rate * Magnitudes.magToMoment_N_m(data.m); // total event rate - double tcr = data.a; + double tcr = data.rate; // this was handled previously by GR_Data.hasMagExceptions() // need to catch the single floaters that are less than 6.5 @@ -370,7 +370,7 @@ class FaultParser extends DefaultHandler { log.finer(" MFD type: SINGLE [-epi +alea]"); if (log.isLoggable(FINEST)) log.finest(mfd.getMetadataString()); } else { - IncrementalMfd mfd = Mfds.newSingleMFD(data.m, data.weight * data.a, data.floats); + IncrementalMfd mfd = Mfds.newSingleMFD(data.m, data.weight * data.rate, data.floats); mfds.add(mfd); log.finer(" MFD type: SINGLE [-epi -alea]"); if (log.isLoggable(FINEST)) log.finest(mfd.getMetadataString()); diff --git a/src/org/opensha2/eq/model/GridParser.java b/src/org/opensha2/eq/model/GridParser.java index 5bebbb888..2cb845b71 100644 --- a/src/org/opensha2/eq/model/GridParser.java +++ b/src/org/opensha2/eq/model/GridParser.java @@ -279,7 +279,7 @@ class GridParser extends DefaultHandler { case SINGLE: MfdHelper.SingleData singleData = mfdHelper.getSingle(atts); - return Mfds.newSingleMFD(singleData.m, singleData.a * singleData.weight, + return Mfds.newSingleMFD(singleData.m, singleData.rate * singleData.weight, singleData.floats); case GR_TAPER: diff --git a/src/org/opensha2/eq/model/HazardModel.java b/src/org/opensha2/eq/model/HazardModel.java index 0bef42071..7e94c59c3 100644 --- a/src/org/opensha2/eq/model/HazardModel.java +++ b/src/org/opensha2/eq/model/HazardModel.java @@ -17,13 +17,13 @@ import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.SetMultimap; /** - * An earthquake hazard {@code HazardModel} is the top-level wrapper for - * earthquake {@link Source} definitions and attendant {@link GroundMotionModel} - * s used in probabilisitic seismic hazard analyses (PSHAs) and related - * calculations. A {@code HazardModel} contains of a number of {@link SourceSet} - * s that define logical groupings of sources by {@link SourceType}. Each - * {@code SourceSet} carries with it references to the {@code GroundMotionModel} - * s and associated weights to be used when evaluating hazard. + * A {@code HazardModel} is the top-level wrapper for earthquake {@link Source} + * definitions and attendant {@link GroundMotionModel}s used in probabilisitic + * seismic hazard analyses (PSHAs) and related calculations. A + * {@code HazardModel} contains of a number of {@link SourceSet}s that define + * logical groupings of sources by {@link SourceType}. Each {@code SourceSet} + * carries with it references to the {@code GroundMotionModel}s and associated + * weights to be used when evaluating hazard. * * @author Peter Powers * @see Source @@ -55,12 +55,14 @@ public final class HazardModel implements Iterable<SourceSet<? extends Source>>, private final String name; private final SetMultimap<SourceType, SourceSet<? extends Source>> sourceSetMap; private final CalcConfig config; - - // TODO do we really need config here; calc config properties will likely be accessed from the - // source set or source level; should probably push config to SourceSets, possibly overriding default + + // TODO do we really need config here; calc config properties will likely be + // accessed from the + // source set or source level; should probably push config to SourceSets, + // possibly overriding default private HazardModel(String name, CalcConfig config, - SetMultimap<SourceType, SourceSet<? extends Source>> sourceSetMap) { + SetMultimap<SourceType, SourceSet<? extends Source>> sourceSetMap) { this.name = name; this.config = config; this.sourceSetMap = sourceSetMap; @@ -101,8 +103,7 @@ public final class HazardModel implements Iterable<SourceSet<? extends Source>>, @Override public String name() { return name; } - - + /** * Return the default calculation configuration. This may be overridden. */ diff --git a/src/org/opensha2/eq/model/InterfaceParser.java b/src/org/opensha2/eq/model/InterfaceParser.java index cceee39bb..43ce03b3b 100644 --- a/src/org/opensha2/eq/model/InterfaceParser.java +++ b/src/org/opensha2/eq/model/InterfaceParser.java @@ -272,7 +272,7 @@ class InterfaceParser extends DefaultHandler { /* Builds single MFD */ private IncrementalMfd buildSingle(MfdHelper.SingleData data) { - IncrementalMfd mfd = Mfds.newSingleMFD(data.m, data.weight * data.a, data.floats); + IncrementalMfd mfd = Mfds.newSingleMFD(data.m, data.weight * data.rate, data.floats); log.finer(" MFD type: SINGLE"); if (log.isLoggable(FINEST)) log.finest(mfd.getMetadataString()); return mfd; diff --git a/src/org/opensha2/eq/model/InterfaceSource.java b/src/org/opensha2/eq/model/InterfaceSource.java index d5d4ab407..c55eeff57 100644 --- a/src/org/opensha2/eq/model/InterfaceSource.java +++ b/src/org/opensha2/eq/model/InterfaceSource.java @@ -4,16 +4,14 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.StandardSystemProperty.LINE_SEPARATOR; import static org.opensha2.eq.fault.Faults.validateInterfaceDepth; -import static org.opensha2.eq.fault.Faults.validateTrace; import static org.opensha2.eq.fault.Faults.validateInterfaceWidth; -import static org.opensha2.eq.model.FloatStyle.FULL_DOWN_DIP; +import static org.opensha2.eq.fault.Faults.validateTrace; import java.util.List; -import org.opensha2.eq.fault.scaling.MagScalingRelationship; import org.opensha2.eq.fault.surface.ApproxGriddedSurface; -import org.opensha2.eq.fault.surface.GriddedSurface; import org.opensha2.eq.fault.surface.DefaultGriddedSurface; +import org.opensha2.eq.fault.surface.GriddedSurface; import org.opensha2.eq.fault.surface.RuptureFloating; import org.opensha2.eq.fault.surface.RuptureScaling; import org.opensha2.geo.LocationList; @@ -155,7 +153,6 @@ public class InterfaceSource extends FaultSource { .width(width) .spacing(spacing) .build(); - } return new InterfaceSource(name, id, trace, lowerTrace, dip, width, surface, rake, diff --git a/src/org/opensha2/eq/model/MfdHelper.java b/src/org/opensha2/eq/model/MfdHelper.java index d93bec334..8fa8728e2 100644 --- a/src/org/opensha2/eq/model/MfdHelper.java +++ b/src/org/opensha2/eq/model/MfdHelper.java @@ -1,6 +1,17 @@ package org.opensha2.eq.model; -import static org.opensha2.eq.model.SourceAttribute.*; +import static org.opensha2.eq.model.SourceAttribute.A; +import static org.opensha2.eq.model.SourceAttribute.B; +import static org.opensha2.eq.model.SourceAttribute.C_MAG; +import static org.opensha2.eq.model.SourceAttribute.D_MAG; +import static org.opensha2.eq.model.SourceAttribute.FLOATS; +import static org.opensha2.eq.model.SourceAttribute.M; +import static org.opensha2.eq.model.SourceAttribute.MAGS; +import static org.opensha2.eq.model.SourceAttribute.M_MAX; +import static org.opensha2.eq.model.SourceAttribute.M_MIN; +import static org.opensha2.eq.model.SourceAttribute.RATE; +import static org.opensha2.eq.model.SourceAttribute.RATES; +import static org.opensha2.eq.model.SourceAttribute.WEIGHT; import static org.opensha2.util.Parsing.readBoolean; import static org.opensha2.util.Parsing.readDouble; import static org.opensha2.util.Parsing.readString; @@ -70,7 +81,7 @@ class MfdHelper { static class SingleData { - final double a; + final double rate; final double m; final boolean floats; final double weight; @@ -80,7 +91,7 @@ class MfdHelper { * for extra and unknown attributes. */ private SingleData(Attributes atts) { - a = readDouble(A, atts); + rate = readDouble(RATE, atts); m = readDouble(M, atts); floats = readBoolean(FLOATS, atts); weight = readDouble(WEIGHT, atts); @@ -93,7 +104,7 @@ class MfdHelper { private SingleData(Attributes atts, SingleData ref) { // set defaults locally - double a = ref.a; + double rate = ref.rate; double m = ref.m; boolean floats = ref.floats; double weight = ref.weight; @@ -101,8 +112,8 @@ class MfdHelper { for (int i = 0; i < atts.getLength(); i++) { SourceAttribute att = SourceAttribute.fromString(atts.getQName(i)); switch (att) { - case A: - a = readDouble(A, atts); + case RATE: + rate = readDouble(RATE, atts); break; case M: m = readDouble(M, atts); @@ -121,7 +132,7 @@ class MfdHelper { } // export final fields - this.a = a; + this.rate = rate; this.m = m; this.floats = floats; this.weight = weight; diff --git a/src/org/opensha2/eq/model/SourceAttribute.java b/src/org/opensha2/eq/model/SourceAttribute.java index 9a3403c00..edaa17874 100644 --- a/src/org/opensha2/eq/model/SourceAttribute.java +++ b/src/org/opensha2/eq/model/SourceAttribute.java @@ -38,6 +38,7 @@ public enum SourceAttribute { C_MAG, FLOATS, MAGS, + RATE, RATES, /* Mag uncertainty specific */ diff --git a/src/org/opensha2/gmm/AtkinsonBoore_2003.java b/src/org/opensha2/gmm/AtkinsonBoore_2003.java index d2e6d31f2..7a9ddbb19 100644 --- a/src/org/opensha2/gmm/AtkinsonBoore_2003.java +++ b/src/org/opensha2/gmm/AtkinsonBoore_2003.java @@ -17,8 +17,8 @@ import java.util.Map; * gridded 'deep' events in northern California and the Pacific Northwest. In * the 2014 NSHM, 'slab' implementations with Mw saturation at 7.8 were added. * - * <p><b>Note:</b> NSHM fortran implementations implement strict hypocentral depths - * that are hardcoded into these implementations as well. FOr interface + * <p><b>Note:</b> NSHM fortran implementations implement strict hypocentral + * depths that are hardcoded into these implementations as well. FOr interface * * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a @@ -82,7 +82,7 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { AtkinsonBoore_2003(final Imt imt) { coeffs = initCoeffs(imt, isSlab(), isGlobal()); coeffsPGA = initCoeffs(PGA, isSlab(), isGlobal()); - mMax = saturationMagnitude(isSlab(), lowSaturationMw()); + mMax = saturationMw(); } private static Coefficients initCoeffs(final Imt imt, final boolean slab, final boolean global) { @@ -102,9 +102,16 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { // implementation flag abstract boolean isSlab(); - - // implementationFlag - abstract boolean lowSaturationMw(); + + // implementation value + // - interface events saturate at 8.5 + // - slab events saturate at 8.0 in the 2008 NSHM + // - slab event saturation was reduced to 7.8 for 2014 NSHM + abstract double saturationMw(); + + private static final double SAT_MW_INTERFACE = 8.5; + private static final double SAT_MW_SLAB_2008 = 8.0; + private static final double SAT_MW_SLAB_2014 = 7.8; private static double saturationMagnitude(boolean slab, boolean lowSat) { return !slab ? 8.5 : lowSat ? 7.8 : 8.0; @@ -116,7 +123,7 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { // "saturation effect" p. 1709 AB 2003 double Mw = Math.min(in.Mw, mMax); - + // TODO what is the reasoning behind the following? // does zHyp yield unreliable results? @@ -193,9 +200,9 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { return gnd * BASE_10_TO_E - LN_G_CM_TO_M; } - + static final class CascadiaInterface extends AtkinsonBoore_2003 { - static final String NAME = createName(false, false, false); + static final String NAME = createName(false, false, SAT_MW_INTERFACE); CascadiaInterface(Imt imt) { super(imt); @@ -209,13 +216,13 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { return false; } - @Override boolean lowSaturationMw() { - return false; + @Override double saturationMw() { + return SAT_MW_INTERFACE; } } static final class CascadiaSlab extends AtkinsonBoore_2003 { - static final String NAME = createName(false, true, false); + static final String NAME = createName(false, true, SAT_MW_SLAB_2008); CascadiaSlab(Imt imt) { super(imt); @@ -228,14 +235,14 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { @Override final boolean isSlab() { return true; } - - @Override boolean lowSaturationMw() { - return false; + + @Override double saturationMw() { + return SAT_MW_SLAB_2008; } } static final class CascadiaSlabLowMagSaturation extends AtkinsonBoore_2003 { - static final String NAME = createName(false, true, true); + static final String NAME = createName(false, true, SAT_MW_SLAB_2014); CascadiaSlabLowMagSaturation(Imt imt) { super(imt); @@ -248,14 +255,14 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { @Override final boolean isSlab() { return true; } - - @Override boolean lowSaturationMw() { - return true; + + @Override double saturationMw() { + return SAT_MW_SLAB_2014; } } static final class GlobalInterface extends AtkinsonBoore_2003 { - static final String NAME = createName(true, false, false); + static final String NAME = createName(true, false, SAT_MW_INTERFACE); GlobalInterface(Imt imt) { super(imt); @@ -268,14 +275,14 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { @Override final boolean isSlab() { return false; } - - @Override boolean lowSaturationMw() { - return false; + + @Override double saturationMw() { + return SAT_MW_INTERFACE; } } static final class GlobalSlab extends AtkinsonBoore_2003 { - static final String NAME = createName(true, true, false); + static final String NAME = createName(true, true, SAT_MW_SLAB_2008); GlobalSlab(Imt imt) { super(imt); @@ -288,14 +295,14 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { @Override final boolean isSlab() { return true; } - - @Override boolean lowSaturationMw() { - return false; + + @Override double saturationMw() { + return SAT_MW_SLAB_2008; } } static final class GlobalSlabLowMagSaturation extends AtkinsonBoore_2003 { - static final String NAME = createName(true, true, true); + static final String NAME = createName(true, true, SAT_MW_SLAB_2014); GlobalSlabLowMagSaturation(Imt imt) { super(imt); @@ -308,20 +315,17 @@ public abstract class AtkinsonBoore_2003 implements GroundMotionModel { @Override final boolean isSlab() { return true; } - - @Override boolean lowSaturationMw() { - return true; + + @Override double saturationMw() { + return SAT_MW_SLAB_2014; } } - - static String createName(boolean global, boolean slab, boolean lowSat) { + + static String createName(boolean global, boolean slab, double satMw) { StringBuilder sb = new StringBuilder(AtkinsonBoore_2003.NAME); - sb.append(" : "); - sb.append(global ? "Global" : "Cascadia"); - sb.append(" : "); - sb.append(slab ? "Slab" : "Interface"); - sb.append(" : SatMw="); - sb.append(saturationMagnitude(slab, lowSat)); + sb.append(" : ").append(global ? "Global" : "Cascadia"); + sb.append(" : ").append(slab ? "Slab" : "Interface"); + sb.append(" : SatMw=").append(satMw); return sb.toString(); } diff --git a/src/org/opensha2/gmm/Gmm.java b/src/org/opensha2/gmm/Gmm.java index cddfd6599..e98a56499 100644 --- a/src/org/opensha2/gmm/Gmm.java +++ b/src/org/opensha2/gmm/Gmm.java @@ -96,7 +96,7 @@ public enum Gmm { AtkinsonBoore_2003.COEFFS_GLOBAL_SLAB), /** @see AtkinsonBoore_2003 */ - AB_03_GLOB_SLAB_SAT_M7P8(AtkinsonBoore_2003.GlobalSlabLowMagSaturation.class, + AB_03_GLOB_SLAB_LOW_SAT(AtkinsonBoore_2003.GlobalSlabLowMagSaturation.class, AtkinsonBoore_2003.GlobalSlabLowMagSaturation.NAME, AtkinsonBoore_2003.COEFFS_GLOBAL_SLAB), @@ -109,7 +109,7 @@ public enum Gmm { AtkinsonBoore_2003.COEFFS_CASC_SLAB), /** @see AtkinsonBoore_2003 */ - AB_03_CASC_SLAB_SAT_M7P8(AtkinsonBoore_2003.CascadiaSlabLowMagSaturation.class, + AB_03_CASC_SLAB_LOW_SAT(AtkinsonBoore_2003.CascadiaSlabLowMagSaturation.class, AtkinsonBoore_2003.CascadiaSlabLowMagSaturation.NAME, AtkinsonBoore_2003.COEFFS_CASC_SLAB), diff --git a/test/org/opensha2/gmm/SubSlab.java b/test/org/opensha2/gmm/SubSlab.java index df47190ec..c3f526121 100644 --- a/test/org/opensha2/gmm/SubSlab.java +++ b/test/org/opensha2/gmm/SubSlab.java @@ -1,9 +1,9 @@ package org.opensha2.gmm; import static org.opensha2.gmm.Gmm.AB_03_CASC_SLAB; -import static org.opensha2.gmm.Gmm.AB_03_CASC_SLAB_SAT_M7P8; +import static org.opensha2.gmm.Gmm.AB_03_CASC_SLAB_LOW_SAT; import static org.opensha2.gmm.Gmm.AB_03_GLOB_SLAB; -import static org.opensha2.gmm.Gmm.AB_03_GLOB_SLAB_SAT_M7P8; +import static org.opensha2.gmm.Gmm.AB_03_GLOB_SLAB_LOW_SAT; import static org.opensha2.gmm.Gmm.BCHYDRO_12_SLAB; import static org.opensha2.gmm.Gmm.YOUNGS_97_SLAB; import static org.opensha2.gmm.Gmm.ZHAO_06_SLAB; @@ -49,9 +49,9 @@ public class SubSlab extends GmmTest { /* Result generation sets */ private static Set<Gmm> gmms = EnumSet.of( AB_03_GLOB_SLAB, - AB_03_GLOB_SLAB_SAT_M7P8, + AB_03_GLOB_SLAB_LOW_SAT, AB_03_CASC_SLAB, - AB_03_CASC_SLAB_SAT_M7P8, + AB_03_CASC_SLAB_LOW_SAT, BCHYDRO_12_SLAB, BCHYDRO_12_SLAB, YOUNGS_97_SLAB, -- GitLab