package org.opensha2.internal; import org.opensha2.geo.Location; import org.opensha2.util.NamedLocation; import com.google.common.base.Predicate; import com.google.common.collect.ComparisonChain; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import java.util.Comparator; import java.util.EnumSet; /** * Locations that are used for NSHMP hazard comparisons. * * @author Allison Shumway * @author Peter Powers */ @SuppressWarnings("javadoc") public enum NshmpSite implements NamedLocation { /* * Items are organized broadly by state and states are grouped as belonging * either to northern or southern California, the intermountain west, the * Pacific northwest, of the central and eastern US. */ /* Northern CA */ BIG_SUR_CA(-121.75, 36.25), COALINGA_CA(-120.40, 36.15), CONCORD_CA(-122.00, 37.95), EUREKA_CA(-124.20, 40.80), FRESNO_CA(-119.75, 36.75), MONTEREY_CA(-121.90, 36.60), MORGAN_HILL_CA(-121.65, 37.15), OAKLAND_CA(-122.25, 37.80), REDDING_CA(-122.40, 40.60), SACRAMENTO_CA(-121.50, 38.60), SAN_FRANCISCO_CA(-122.40, 37.75), SAN_JOSE_CA(-121.90, 37.35), SAN_MATEO_CA(-122.30, 37.55), SANTA_CRUZ_CA(-122.05, 36.95), SANTA_ROSA_CA(-122.70, 38.45), VALLEJO_CA(-122.25, 38.10), /* Southern CA */ BAKERSFIELD_CA(-119.35, 35.35), BRAWLEY_CA(-115.55, 33.00), CENTURY_CITY_CA(-118.40, 34.05), CUCAMONGA_CA(-117.55, 34.20), DEATH_VALLEY_CA(-116.85, 36.35), DIABLO_CANYON_CA(-120.85, 35.20), IRVINE_CA(-117.80, 33.65), LONG_BEACH_CA(-118.20, 33.80), LOS_ANGELES_CA(-118.25, 34.05), MALIBU_WEST_CA(-118.95, 34.05), MAMMOTH_LAKES_CA(-119.00, 37.65), NORTHRIDGE_CA(-118.55, 34.20), PALMDALE_CA(-118.00, 34.50), PALM_SPRINGS_CA(-116.55, 33.85), PASADENA_CA(-118.15, 34.15), RIVERSIDE_CA(-117.40, 33.95), SAN_BERNARDINO_CA(-117.30, 34.10), SAN_DIEGO_CA(-117.15, 32.70), SAN_LUIS_OBISPO_CA(-120.65, 35.30), SAN_ONOFRE_CA(-117.55, 33.40), SANTA_BARBARA_CA(-119.70, 34.45), VENTURA_CA(-119.30, 34.30), /* WUS excepting CA */ GRAND_CANYON_VILLAGE_AZ(-112.15, 36.05), PALO_VERDE_AZ(-112.85, 33.40), PHOENIX_AZ(-112.10, 33.45), TUCSON_AZ(-110.95, 32.20), DENVER_CO(-105.00, 39.75), LA_JUNTA_CO(-103.55, 38.00), PARADOX_CO(-108.95, 38.40), RANGELY_CO(-108.80, 40.10), TRINIDAD_CO(-104.50, 37.20), BOISE_ID(-116.20, 43.60), IDAHO_NATIONAL_LAB_ID(-112.85, 43.60), LIMA_MT(-112.60, 44.65), BOZEMAN_MT(-111.05, 45.70), BILLINGS_MT(-108.50, 45.80), MISSOULA_MT(-114.00, 46.90), CARSON_CITY_NV(-119.75, 39.15), ELKO_NV(-115.75, 40.85), LAS_VEGAS_NV(-115.15, 36.20), RENO_NV(-119.80, 39.55), ALBUQUERQUE_NM(-106.60, 35.10), ARTESIA_NM(-104.40, 32.85), LOS_ALAMOS_NATIONAL_LAB_NM(-106.30, 35.85), LAS_CRUCES_NM(-106.75, 32.30), BRIGHAM_CITY_UT(-112.00, 41.50), CEDAR_CITY_UT(-113.05, 37.70), GREEN_RIVER_UT(-110.15, 39.00), PROVO_UT(-111.65, 40.25), SALT_LAKE_CITY_UT(-111.90, 40.75), CASPER_WY(-106.30, 42.85), CHEYENNE_WY(-104.80, 41.15), JACKSON_WY(-110.75, 43.50), YELLOWSTONE_WY(-110.55, 44.40), /* PNW */ ASTORIA_OR(-123.85, 46.20), BEND_OR(-121.30, 44.05), BROOKINGS_OR(-124.25, 42.05), COOS_BAY_OR(-124.20, 43.40), EUGENE_OR(-123.10, 44.05), KLAMATH_FALLS_OR(-121.80, 42.20), MEDFORD_OR(-122.90, 42.35), NEWPORT_OR(-124.05, 44.65), PENDLETON_OR(-118.80, 45.70), PORTLAND_OR(-122.65, 45.50), SALEM_OR(-123.05, 44.95), ABERDEEN_WA(-123.80, 47.00), BELLINGHAM_WA(-122.50, 48.75), ELLENSBURG_WA(-120.55, 47.00), EVERETT_WA(-122.20, 48.00), HANFORD_SITE_WA(-119.60, 46.55), OLYMPIA_WA(-122.90, 47.05), SEATTLE_WA(-122.30, 47.60), SPOKANE_WA(-117.40, 47.65), TACOMA_WA(-122.45, 47.25), YAKIMA_WA(-120.50, 46.60), /* CEUS */ WASHINGTON_DC(-77.05, 38.90), ATMORE_AL(-87.50, 31.00), BIRMINGHAM_AL(-86.80, 33.50), EL_DORADO_AR(-92.70, 33.20), GREENBRIER_AR(-92.40, 35.20), LITTLE_ROCK_AR(-92.30, 34.75), HARTFORD_CT(-72.70, 41.75), WILMINGTON_DE(-75.55, 39.75), JACKSONVILLE_FL(-81.65, 30.35), MIAMI_FL(-80.20, 25.75), ATLANTA_GA(-84.40, 33.75), LINCOLNTON_GA(-82.50, 33.80), SAVANNAH_GA(-81.10, 32.10), CENTRAL_IL(-90.00, 40.00), CHICAGO_IL(-87.65, 41.85), EVANSVILLE_IN(-87.60, 38.00), INDIANAPOLIS_IN(-86.15, 39.80), DES_MOINES_IA(-93.60, 41.60), TOPEKA_KS(-95.70, 39.05), WICHITA_KS(-97.35, 37.70), LOUISVILLE_KY(-85.75, 38.25), NEW_ORLEANS_LA(-90.05, 29.95), AUGUSTA_ME(-69.80, 44.30), BANGOR_ME(-68.80, 44.80), PORTLAND_ME(-70.25, 43.65), BALTIMORE_MD(-76.60, 39.30), BOSTON_MA(-71.05, 42.35), DETROIT_MI(-83.05, 42.35), MINNEAPOLIS_MN(-93.30, 45.00), JACKSON_MS(-90.20, 32.30), CAPE_GIRARDEAU_MO(-89.50, 37.30), NEW_MADRID_MO(-89.55, 36.60), ST_LOUIS_MO(-90.20, 38.60), OMAHA_NE(-96.00, 41.25), MANCHESTER_NH(-71.45, 43.00), TRENTON_NJ(-74.75, 40.20), BATAVIA_NY(-78.20, 43.00), MALONE_NY(-74.30, 44.85), NEW_YORK_NY(-74.00, 40.75), CHARLOTTE_NC(-80.85, 35.25), FARGO_ND(-96.80, 46.90), COLUMBUS_OH(-83.00, 39.95), SIDNEY_OH(-84.15, 40.30), YOUNGSTOWN_OH(-80.65, 41.10), ELGIN_OK(-98.30, 34.80), OKLAHOMA_CITY_OK(-97.50, 35.50), PHILADELPHIA_PA(-75.15, 39.95), PITTSBURG_PA(-80.00, 40.45), PROVIDENCE_RI(-71.40, 41.80), CHARLESTON_SC(-79.95, 32.80), EDGEMONT_SD(-103.85, 43.30), PLATTE_SD(-98.85, 43.40), SIOUX_FALLS_SD(-96.75, 43.55), CHATTANOOGA_TN(-85.25, 35.05), KNOXVILLE_TN(-83.90, 35.95), MARYVILLE_TN(-84.00, 35.75), MEMPHIS_TN(-90.05, 35.15), AMARILLO_TX(-101.85, 35.20), DALLAS_TX(-96.80, 32.80), HOUSTON_TX(-95.35, 29.75), KERMIT_TX(-103.10, 31.85), SAN_ANTONIO_TX(-98.50, 29.40), SNYDER_TX(-100.90, 32.70), BURLINGTON_VT(-73.20, 44.50), BLACKSBURG_VA(-80.40, 37.25), RICHMOND_VA(-77.45, 37.55), CHARLESTON_WV(-81.65, 38.35), MILWAUKEE_WI(-87.90, 43.05), /* Alaska */ ADAK_AK(-176.65, 51.9), ANCHORAGE_AK(-149.90, 61.2), BARROW_AK(-156.75, 71.3), BETHEL_AK(-161.80, 60.8), DELTA_JUNCTION_AK(-145.70, 64), DILLINGHAM_AK(-158.45, 59.05), DUTCH_HARBOR_AK(-166.55, 53.9), EVANSVILLE_AK(-151.50, 66.9), FAIRBANKS_AK(-147.70, 64.85), GLENNALLEN_AK(-145.55, 62.1), HAINES_AK(-135.45, 59.25), HOMER_AK(-151.50, 59.65), JUNEAU_AK(-134.40, 58.3), KENAI_AK(-151.25, 60.55), KETCHIKAN_AK(-131.65, 55.35), KODIAK_AK(-152.40, 57.8), KOTZEBUE_AK(-162.60, 66.9), MCGRATH_AK(-155.60, 62.95), NOME_AK(-165.40, 64.5), PAXSON_AK(-145.50, 63.05), PRUDHOE_BAY_AK(-148.35, 70.25), SITKA_AK(-135.35, 57.05), TOK_AK(-143.00, 63.3), VALDEZ_AK(-146.35, 61.15), WASILLA_AK(-149.45, 61.6), YAKUTAT_AK(-139.70, 59.55); private final Location loc; private final UsRegion state; private NshmpSite(double lon, double lat) { this.loc = Location.create(lat, lon); this.state = UsRegion.valueOf(name().substring(name().lastIndexOf('_') + 1)); } public UsRegion state() { return state; } @Override public Location location() { return loc; } @Override public String id() { return this.name(); } @Override public String toString() { String label = Parsing.enumLabelWithSpaces(this, true); if (label.startsWith("Mc")) { StringBuilder sb = new StringBuilder(label); sb.setCharAt(2, Character.toUpperCase(sb.charAt(2))); label = sb.toString(); } int stripIndex = label.lastIndexOf(' '); return label.substring(0, stripIndex) + " " + state.name(); } /** * The set of sites used to test the Central & Eastern US NSHM. This * includes all NSHMP sites east of -115.0°. */ public static EnumSet<NshmpSite> ceus() { return Sets.newEnumSet(Iterables.filter( EnumSet.allOf(NshmpSite.class), new Predicate<NshmpSite>() { @Override public boolean apply(NshmpSite site) { return site.loc.lon() >= -115.0; } }), NshmpSite.class); } /** * The set of sites used to test the Western US NSHM. This includes all NSHMP * sites west of -100.0°. */ public static EnumSet<NshmpSite> wus() { return Sets.newEnumSet(Iterables.filter( EnumSet.allOf(NshmpSite.class), new Predicate<NshmpSite>() { @Override public boolean apply(NshmpSite site) { return site.loc.lon() <= -100.0 && site.loc.lon() >= -125.0; } }), NshmpSite.class); } /** * The set of sites used to test the Alaska NSHM. */ public static EnumSet<NshmpSite> alaska() { return Sets.newEnumSet(Iterables.filter( EnumSet.allOf(NshmpSite.class), new Predicate<NshmpSite>() { @Override public boolean apply(NshmpSite site) { return site.loc.lon() <= -125.0; } }), NshmpSite.class); } /** * The set of sites corresponding to U.S. national labs and other Dept. of * Energy facilities. */ public static EnumSet<NshmpSite> facilities() { return EnumSet.of( DIABLO_CANYON_CA, SAN_ONOFRE_CA, PALO_VERDE_AZ, HANFORD_SITE_WA, IDAHO_NATIONAL_LAB_ID, LOS_ALAMOS_NATIONAL_LAB_NM); } /** * A restricted set of CEUS sites that is clipped at -105.5°. */ public static EnumSet<NshmpSite> nrc() { return Sets.newEnumSet(Iterables.filter( EnumSet.allOf(NshmpSite.class), new Predicate<NshmpSite>() { @Override public boolean apply(NshmpSite site) { return site.loc.lon() >= -105.5; } }), NshmpSite.class); } /** * The set of sites corresponding to the NEHRP test cities. * * <p>This is a list of 34 city sites in the United States with high seismic * risk as specified in the 2009 edition of the <a * href="http://www.fema.gov/library/viewRecord.do?id=4103" * target=_blank">NEHRP Recommended Seismic Provisions</a>. */ public static EnumSet<NshmpSite> nehrp() { return EnumSet.of( // SoCal LOS_ANGELES_CA, CENTURY_CITY_CA, NORTHRIDGE_CA, LONG_BEACH_CA, IRVINE_CA, RIVERSIDE_CA, SAN_BERNARDINO_CA, SAN_LUIS_OBISPO_CA, SAN_DIEGO_CA, SANTA_BARBARA_CA, VENTURA_CA, // NoCal OAKLAND_CA, CONCORD_CA, MONTEREY_CA, SACRAMENTO_CA, SAN_FRANCISCO_CA, SAN_MATEO_CA, SAN_JOSE_CA, SANTA_CRUZ_CA, VALLEJO_CA, SANTA_ROSA_CA, // PNW SEATTLE_WA, TACOMA_WA, EVERETT_WA, PORTLAND_OR, // B&R SALT_LAKE_CITY_UT, BOISE_ID, RENO_NV, LAS_VEGAS_NV, // CEUS ST_LOUIS_MO, MEMPHIS_TN, CHARLESTON_SC, CHICAGO_IL, NEW_YORK_NY); } static class StateComparator implements Comparator<NshmpSite> { @Override public int compare(NshmpSite s1, NshmpSite s2) { return ComparisonChain.start() .compare(s1.state().name(), s2.state().name()) .compare(s1.name(), s2.name()) .result(); } } }