From e9c64193e5777945a14712833da57abcf8b25ca4 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Fri, 22 Oct 2021 10:20:22 -0600 Subject: [PATCH 01/17] removed target=_top in javadocs --- .../java/gov/usgs/earthquake/nshmp/DeaggCalc.java | 14 +++++++------- .../gov/usgs/earthquake/nshmp/DeaggEpsilon.java | 14 +++++++------- .../java/gov/usgs/earthquake/nshmp/DeaggIml.java | 14 +++++++------- .../java/gov/usgs/earthquake/nshmp/HazardCalc.java | 14 +++++++------- .../java/gov/usgs/earthquake/nshmp/RateCalc.java | 14 +++++++------- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java index 7f516914a..019cf5274 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java @@ -44,16 +44,16 @@ public class DeaggCalc { * on required parameters. * * <p>Please refer to the nshmp-haz <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs" - * target="_top">docs</a> for comprehensive descriptions of source models, - * configuration files, site files, and hazard calculations. + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"> + * docs</a> for comprehensive descriptions of source models, configuration + * files, site files, and hazard calculations. * * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md" - * target="_top"> nshmp-haz Building & Running</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"> + * nshmp-haz Building & Running</a> * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples" - * target="_top"> example calculations</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"> + * example calculations</a> */ public static void main(String[] args) { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java index ffb544166..dc26e79c3 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java @@ -78,16 +78,16 @@ public class DeaggEpsilon { * spectrum. * * <p>Please refer to the nshmp-haz <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs" - * target="_top">docs</a> for comprehensive descriptions of source models, - * configuration files, site files, and hazard calculations. + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"> + * docs</a> for comprehensive descriptions of source models, configuration + * files, site files, and hazard calculations. * * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md" - * target="_top"> nshmp-haz Building & Running</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"> + * nshmp-haz Building & Running</a> * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples" - * target="_top"> example calculations</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"> + * example calculations</a> */ public static void main(String[] args) { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java index e711d2ac0..575f712ea 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java @@ -45,16 +45,16 @@ public class DeaggIml { * on required parameters. * * <p>Please refer to the nshmp-haz <a - * href="https://github.com/usgs/nshmp-haz/wiki" target="_top">wiki</a> for - * comprehensive descriptions of source models, configuration files, site - * files, and hazard calculations. + * href="https://github.com/usgs/nshmp-haz/wiki">wiki</a> for comprehensive + * descriptions of source models, configuration files, site files, and hazard + * calculations. * * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md" - * target="_top"> nshmp-haz Building & Running</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"> + * nshmp-haz Building & Running</a> * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples" - * target="_top"> example calculations</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"> + * example calculations</a> */ public static void main(String[] args) { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java index 6e1e8ce9e..dbfc20203 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java @@ -58,16 +58,16 @@ public class HazardCalc { * the path to a configuration file as a third argument. * * <p>Refer to the nshmp-haz <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/README.md" - * target="_top">documentation</a> for comprehensive descriptions of source - * models, configuration files, site files, and hazard calculations. + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/README.md"> + * documentation</a> for comprehensive descriptions of source models, + * configuration files, site files, and hazard calculations. * * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md" - * target="_top"> nshmp-haz Building & Running</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"> + * nshmp-haz Building & Running</a> * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples" - * target="_top"> example calculations</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"> + * example calculations</a> */ public static void main(String[] args) { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java index 3709e22e7..cfbd7620c 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java @@ -54,16 +54,16 @@ public class RateCalc { * argument. * * <p>Please refer to the nshmp-haz <a - * href="https://github.com/usgs/nshmp-haz/wiki" target="_top">wiki</a> for - * comprehensive descriptions of source models, configuration files, site - * files, and earthquake rate calculations. + * href="https://github.com/usgs/nshmp-haz/wiki">wiki</a> for comprehensive + * descriptions of source models, configuration files, site files, and + * earthquake rate calculations. * * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md" - * target="_top"> nshmp-haz Building & Running</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"> + * nshmp-haz Building & Running</a> * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples" - * target="_top"> example calculations</a> + * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"> + * example calculations</a> */ public static void main(String[] args) { -- GitLab From ae56af64f28e67f74dc90128684668cde23540ba Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Fri, 22 Oct 2021 12:02:48 -0600 Subject: [PATCH 02/17] additional info for INCR MFD --- docs/pages/Magnitude-Frequency-Distributions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/pages/Magnitude-Frequency-Distributions.md b/docs/pages/Magnitude-Frequency-Distributions.md index 0f69189d5..365758f13 100644 --- a/docs/pages/Magnitude-Frequency-Distributions.md +++ b/docs/pages/Magnitude-Frequency-Distributions.md @@ -70,6 +70,8 @@ A general purpose MFD that represents defined by explicit arrays of magnitudes a } ``` +An incremental MFD will ignore any uncertainty settings defined in a `mfd-config.json`. + ## MFD Construction Construction of MFDs from their declaration in a tree also depends on the following files: -- GitLab From 50393e085477eae7a1a2e50cf01839c9aab006e1 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Fri, 22 Oct 2021 12:03:40 -0600 Subject: [PATCH 03/17] improved rupture-set description #482 --- docs/pages/Source-Types.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/pages/Source-Types.md b/docs/pages/Source-Types.md index 048829b21..a855993ad 100644 --- a/docs/pages/Source-Types.md +++ b/docs/pages/Source-Types.md @@ -175,7 +175,7 @@ Finite fault source representation. The geometry, properties and rupture MFDs of are defined by one or more GeoJSONs and associated configuration. Depending on the complexity of the source, it may be represented using a single GeoJSON or result from stitching together multiple GeoJSONs (see note on fault section stitching, [below](#fault-section-stitching)). If a -fault source is represented with a logic tree then `rupture-set.json` defines the ruptures for +fault source is represented with a logic tree then a `rupture-set.json` defines the ruptures for each branch. Depending on the MFDs and scaling relations used to determine a rupture size, some ruptures may fill the entire source model while smaller events are modeled as 'floating' ruptures; they occur in multiple locations on the fault surface with appropriately scaled rates. MFDs @@ -243,6 +243,24 @@ variations and an associated slip-rate scaling model are also supported for norm } ``` +**rupture-set.json**: When a fault source is represented with a logic tree a +`rupture-set.json` defines the ruptures for each branch. A rupture set _may_ also define custom +properties and _may_ also contain a `sections` member that defines the fault sections for the +rupture set (see note on fault section stitching, [below](#fault-section-stitching)). + +```json +{ + "name": "New Madrid - USGS (center)", + "id": 3023, + "sections": [3020, 3021, 3022], + "mfd-tree": "usgs-hi-mag", + "properties": { + "state": "MO", + "width": 15.0 + } +} +``` + ### Fault Section Stitching When multiple sections are defined for a rupture, the ruptures must be defined in an order that @@ -264,7 +282,8 @@ a cluster may only have an mfd-tree composed of `Mfd.Type.SINGLE` MFDs and the m match across all sources in a cluster (i.e. each mfd-tree has the same IDs and weights). **cluster-set.json** A specialized type of rupture set, this file defines the array of fault -rupture sets that make up a 'cluster'. +rupture sets that make up a 'cluster'. As with fault sources, the nested rupture sets in a cluster +set _may_ define `properties` and `sections` members. ```json { -- GitLab From 214e5cbd47173e06633d0ce00228a1a109c85050 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Fri, 22 Oct 2021 12:34:44 -0600 Subject: [PATCH 04/17] increment lib --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 28363e0ff..c6e6f3abb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ junitVersion = 5.5.2 micronautVersion = 2.4.1 mnPluginVersion = 1.4.2 nodeVersion = 3.0.1 -nshmpLibVersion = 0.7.6 +nshmpLibVersion = 0.7.7 nshmpWsUtilsVersion = 0.1.2 shadowVersion = 5.2.0 spotbugsVersion = 4.2.4 -- GitLab From 4298e83f51336642c176f8942666b0293f25f6d8 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Mon, 25 Oct 2021 09:14:40 -0600 Subject: [PATCH 05/17] updated docs for model directory changes --- docs/pages/Model-Structure.md | 46 +++++++++++-------- .../gov/usgs/earthquake/nshmp/DeaggCalc.java | 1 + .../usgs/earthquake/nshmp/DeaggEpsilon.java | 24 +++++----- .../gov/usgs/earthquake/nshmp/HazardCalc.java | 1 - 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/docs/pages/Model-Structure.md b/docs/pages/Model-Structure.md index dc7a55de5..9bef2129c 100644 --- a/docs/pages/Model-Structure.md +++ b/docs/pages/Model-Structure.md @@ -11,14 +11,15 @@ for representing model data and relationships and is supported in most programmi ## Directory Structure Earthquake source files are organized by tectonic setting: `active-crust`, `stable-crust`, -`subduction-interface`, `subduction-slab`, and `volcanic` with the two crustal and the volcanic -settings supporting the nested source types: `fault-sources`, `grid-sources`, and `zone-sources`. -The `volcanic` tectonic setting also supports `decollement-sources`. +`subduction`, and `volcanic`. The crustal and volcanic tectonic settings support `fault`, `grid`, +and `zone` source types. The volcanic tectonic setting additionally supports a `decollement` +source type. The subduction tectonic setting supports `interface` and `slab` source types. The root of a model must include `model-info.json` and _may_ include a `calc-config.json` that specifies any custom default [calculation configuration](./Calculation-Configuration.md) settings -for the model. Top level tectonic setting directories must include `gmm-tree.json` and -`gmm-config.json` files. Source directories are loaded recursively, permitting configuration files +for the model. Top level tectonic setting directories may include a `gmm-tree.json` and +`gmm-config.json` files. If absent, the two ground motion model files must be present in the nested +source type directories. Source directories are loaded recursively, permitting configuration files deeper in the heirarchy to override those defined higher in the heirarchy, as needed and as specified for each source type. Nested directories support associations between groups of sources, their configuration and initialization, and ground motion models. If there are a large number of @@ -31,26 +32,33 @@ model-directory/ ├─ calc-config.json (optional, overrides defaults) │ ├─ active-crust/ - │ ├─ gmm-config.json (required, can override) - │ ├─ gmm-tree.json (required, can override) + │ ├─ gmm-config.json (required here or in child source type directory, can override) + │ ├─ gmm-tree.json │ │ - │ ├─ fault-sources/ + │ ├─ fault/ │ │ └─ ... │ │ - │ ├─ grid-sources/ + │ ├─ grid/ │ │ └─ ... │ │ - │ └─ zone-sources/ + │ └─ zone/ │ └─ ... │ ├─ stable-crust/... Same structure as 'active-crust' │ └─ ... │ - ├─ subduction-interface/ Similar structure to 'fault-sources' - │ └─ ... + ├─ volcanic/... Same structure as 'active-crust'; may include + │ └─ ... 'decollement' source type │ - └─ subduction-slab/ Similar structure to 'grid-sources' - └─ ... + └─ subduction/ + ├─ gmm-config.json (required here or in nested source type directory, can override) + ├─ gmm-tree.json + │ + ├─ interface/ Similar structure to 'fault' sources + │ └─ ... + │ + └─ slab/ Similar structure to 'grid' sources + └─ ... ``` The following sections describe each source type, associated configuration and source definition @@ -65,7 +73,7 @@ surface trace of the section. The coordinate order of the trace must adhere to t geology right-hand rule. ```text -fault-sources/ +fault/ ├─ fault-config.json (required, can override) ├─ mfd-config.json (required, can override) ├─ mfd-map.json (optional) Map of shared mfd-trees @@ -105,7 +113,7 @@ trees of source model variants. Grid sources are modeled as point sources of var Multiple GeoJSON `Polygon`s may be used to accomodate spatial variations in source properties. ```text -grid-sources/ +grid/ ├─ grid-config.json (required, can override) ├─ mfd-map.json (optional) Map of shared mfd-trees ├─ features/ (required) Directory of grid feature bounds @@ -136,7 +144,7 @@ of dynamically computing rates over a zone from a single value or `rate-tree.jso a model.* ```text -zone-sources/ +zone/ ├─ zone-config.json (required, can override) ├─ mfd-config.json (required) ├─ mfd-map.json (optional) Map of shared mfd-trees @@ -164,7 +172,7 @@ define interface sections using a `MultiLineString` of multple traces at increas coordinate order of each trace must adhere to the U.S. structural geology right-hand rule. ```text -subduction-interface +interface/ ├─ gmm-config.json (required) ├─ gmm-tree.json (required) ├─ interface-config.json (required) @@ -182,7 +190,7 @@ rate files (`*.csv`) are stored adjacent to their corresponding feature file (`* _this may change in a future release_. ```text -subduction-slab +slab/ ├─ gmm-config.json (required) ├─ gmm-tree.json (required) ├─ slab-config.json (required) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java index 019cf5274..fba6b50e0 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java @@ -32,6 +32,7 @@ import gov.usgs.earthquake.nshmp.model.HazardModel; * * @author U.S. Geological Survey */ +@Deprecated public class DeaggCalc { /** diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java index dc26e79c3..ef826317a 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java @@ -42,20 +42,11 @@ import gov.usgs.earthquake.nshmp.internal.Logging; import gov.usgs.earthquake.nshmp.model.HazardModel; /** - * Disaggregate probabilisitic seismic hazard at a return period of interest or + * Disaggregate probabilistic seismic hazard at a return period of interest or * at specific ground motion levels. * * @author U.S. Geological Survey */ -/** - * Custom application to support 2018 integration into building codes. - * Application will process a list of sites for which the risk-targetd response - * spectra is supplied, deaggregating the hazard at each spectral period at the - * supplied ground motion. The set of IMTs processed is dictated by the set - * defined in the sites file. - * - * @author U.S. Geological Survey - */ public class DeaggEpsilon { private static final Gson GSON = new GsonBuilder() @@ -69,13 +60,20 @@ public class DeaggEpsilon { * <p>Two approaches to disaggregation of seimic hazard are possible with this * application. In the first approach, the 'sites' file is the same as it * would be for a hazard calculation, and disaggregation is performed for all - * calculated intensity measures at the 'returnPeriod' (in years)of interest - * specified in the config file (default = 2475 years) + * configured intensity measures at the 'returnPeriod' (in years) of interest + * specified in the config file (default = 2475 years). * * <p>In the second approach, the sites file includes columns for each * spectral period and the target ground motion level to disaggregate for * each. For example, the target values could be a risk-targeted response - * spectrum. + * spectrum, or they could be ground motion levels precomputed for a specific + * return period. + * + * <p>It is important to note that the first approach will do the full hazard + * calculation and compute hazard curves from which the target disaggregation + * ground motion level will be determined. In the second approach, the ground + * motion targets are known and the time consuming hazard curve calculation + * can be avoided. * * <p>Please refer to the nshmp-haz <a * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"> diff --git a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java index dbfc20203..f77db288f 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java @@ -326,7 +326,6 @@ public class HazardCalc { "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"; private static final String USAGE_URL2 = "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"; - private static final String SITE_STRING = "name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]"; @Deprecated private static String version() { -- GitLab From e5232536a8c2980129aec54a4a22d09c3f4aacaf Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Mon, 25 Oct 2021 10:38:00 -0600 Subject: [PATCH 06/17] peer test dir restructure --- .../fault-config.json | 0 .../features/set1-case1.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case1/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../{zone-sources => zone}/mfd-config.json | 0 .../{zone-sources => zone}/mfd-map.json | 0 .../set1-case10/set1-case10.csv | 0 .../set1-case10/set1-case10.geojson | 0 .../{zone-sources => zone}/source-tree.json | 0 .../{zone-sources => zone}/tree-info.json | 0 .../{zone-sources => zone}/zone-config.json | 0 .../{zone-sources => zone}/mfd-config.json | 0 .../{zone-sources => zone}/mfd-map.json | 0 .../set1-case10/set1-case10.csv | 0 .../set1-case10/set1-case10.geojson | 0 .../{zone-sources => zone}/source-tree.json | 0 .../{zone-sources => zone}/tree-info.json | 0 .../{zone-sources => zone}/zone-config.json | 0 .../{zone-sources => zone}/mfd-config.json | 0 .../{zone-sources => zone}/mfd-map.json | 0 .../set1-case11/set1-case11.csv | 0 .../set1-case11/set1-case11.geojson | 0 .../{zone-sources => zone}/source-tree.json | 0 .../{zone-sources => zone}/tree-info.json | 0 .../{zone-sources => zone}/zone-config.json | 0 .../{zone-sources => zone}/mfd-config.json | 0 .../{zone-sources => zone}/mfd-map.json | 0 .../set1-case11/set1-case11.csv | 0 .../set1-case11/set1-case11.geojson | 0 .../{zone-sources => zone}/source-tree.json | 0 .../{zone-sources => zone}/tree-info.json | 0 .../{zone-sources => zone}/zone-config.json | 0 .../fault-config.json | 0 .../features/set1-case2.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case2.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case3/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case3/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case4.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case4/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case4.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case4/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case5.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case5/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case5.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case5/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case6.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case6/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case6.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case6/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case7.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case7/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case7.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case7/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case8a.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case8a/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case8b.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case8b/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/set1-case8c.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set1-case8c/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault3.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../set2-case2/rupture-set.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 .../fault-config.json | 0 .../features/fault.geojson | 0 .../{fault-sources => fault}/mfd-config.json | 0 .../{fault-sources => fault}/mfd-map.json | 0 .../{fault-sources => fault}/source-tree.json | 0 .../source1/rupture-set.json | 0 .../{fault-sources => fault}/tree-info.json | 0 gradle/ext.gradle | 12 - gradle/jar.gradle | 30 +-- .../gov/usgs/earthquake/nshmp/DeaggIml.java | 205 ------------------ .../gov/usgs/earthquake/nshmp/HazardCalc.java | 37 +--- 298 files changed, 3 insertions(+), 281 deletions(-) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/features/set1-case1.geojson (100%) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/set1-case1/rupture-set.json (100%) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case1/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/mfd-config.json (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/mfd-map.json (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/set1-case10/set1-case10.csv (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/set1-case10/set1-case10.geojson (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/source-tree.json (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/tree-info.json (100%) rename etc/peer/models/Set1-Case10-fast/active-crust/{zone-sources => zone}/zone-config.json (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/mfd-config.json (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/mfd-map.json (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/set1-case10/set1-case10.csv (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/set1-case10/set1-case10.geojson (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/source-tree.json (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/tree-info.json (100%) rename etc/peer/models/Set1-Case10/active-crust/{zone-sources => zone}/zone-config.json (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/mfd-config.json (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/mfd-map.json (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/set1-case11/set1-case11.csv (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/set1-case11/set1-case11.geojson (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/source-tree.json (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/tree-info.json (100%) rename etc/peer/models/Set1-Case11-fast/active-crust/{zone-sources => zone}/zone-config.json (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/mfd-config.json (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/mfd-map.json (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/set1-case11/set1-case11.csv (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/set1-case11/set1-case11.geojson (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/source-tree.json (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/tree-info.json (100%) rename etc/peer/models/Set1-Case11/active-crust/{zone-sources => zone}/zone-config.json (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/features/set1-case2.geojson (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/set1-case2/rupture-set.json (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case2-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/features/set1-case2.geojson (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/set1-case2/rupture-set.json (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case2/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/features/set1-case3.geojson (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/set1-case3/rupture-set.json (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case3-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/features/set1-case3.geojson (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/set1-case3/rupture-set.json (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case3/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/features/set1-case4.geojson (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/set1-case4/rupture-set.json (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case4-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/features/set1-case4.geojson (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/set1-case4/rupture-set.json (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case4/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/features/set1-case5.geojson (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/set1-case5/rupture-set.json (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case5-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/features/set1-case5.geojson (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/set1-case5/rupture-set.json (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case5/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/features/set1-case6.geojson (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/set1-case6/rupture-set.json (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case6-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/features/set1-case6.geojson (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/set1-case6/rupture-set.json (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case6/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/features/set1-case7.geojson (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/set1-case7/rupture-set.json (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case7-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/features/set1-case7.geojson (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/set1-case7/rupture-set.json (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case7/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/features/set1-case8a.geojson (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/set1-case8a/rupture-set.json (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case8a/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/features/set1-case8b.geojson (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/set1-case8b/rupture-set.json (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case8b/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/features/set1-case8c.geojson (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/set1-case8c/rupture-set.json (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set1-Case8c/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2a-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2a/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2b-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2b/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2c-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2c/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2d-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/features/fault3.geojson (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/set2-case2/rupture-set.json (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case2d/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3a-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3a/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3b-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3b/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3c-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3c/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3d-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case3d/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case4a-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case4a/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case4b-fast/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case4b/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case5a/active-crust/{fault-sources => fault}/tree-info.json (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/fault-config.json (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/features/fault.geojson (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/mfd-config.json (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/mfd-map.json (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/source-tree.json (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/source1/rupture-set.json (100%) rename etc/peer/models/Set2-Case5b/active-crust/{fault-sources => fault}/tree-info.json (100%) delete mode 100644 src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case1/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case1/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/features/set1-case1.geojson b/etc/peer/models/Set1-Case1/active-crust/fault/features/set1-case1.geojson similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/features/set1-case1.geojson rename to etc/peer/models/Set1-Case1/active-crust/fault/features/set1-case1.geojson diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case1/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case1/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case1/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case1/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/set1-case1/rupture-set.json b/etc/peer/models/Set1-Case1/active-crust/fault/set1-case1/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/set1-case1/rupture-set.json rename to etc/peer/models/Set1-Case1/active-crust/fault/set1-case1/rupture-set.json diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case1/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case1/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case1/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case1/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-config.json rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-map.json rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.csv b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.csv rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.geojson b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.geojson rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/source-tree.json rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/tree-info.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/tree-info.json rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/tree-info.json diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/zone-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json similarity index 100% rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/zone-config.json rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-config.json rename to etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-map.json rename to etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.csv b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.csv rename to etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.geojson b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.geojson rename to etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/source-tree.json rename to etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/tree-info.json b/etc/peer/models/Set1-Case10/active-crust/zone/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/tree-info.json rename to etc/peer/models/Set1-Case10/active-crust/zone/tree-info.json diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/zone-config.json b/etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json similarity index 100% rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/zone-config.json rename to etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-config.json rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-map.json rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.csv b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.csv rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.geojson b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.geojson rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/source-tree.json rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/tree-info.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/tree-info.json rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/tree-info.json diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/zone-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json similarity index 100% rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/zone-config.json rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-config.json rename to etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-map.json rename to etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.csv b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.csv rename to etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.geojson b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.geojson rename to etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/source-tree.json rename to etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/tree-info.json b/etc/peer/models/Set1-Case11/active-crust/zone/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/tree-info.json rename to etc/peer/models/Set1-Case11/active-crust/zone/tree-info.json diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/zone-config.json b/etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json similarity index 100% rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/zone-config.json rename to etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/features/set1-case2.geojson b/etc/peer/models/Set1-Case2-fast/active-crust/fault/features/set1-case2.geojson similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/features/set1-case2.geojson rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/features/set1-case2.geojson diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/set1-case2/rupture-set.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/set1-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/set1-case2/rupture-set.json rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/set1-case2/rupture-set.json diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case2/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case2/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/features/set1-case2.geojson b/etc/peer/models/Set1-Case2/active-crust/fault/features/set1-case2.geojson similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/features/set1-case2.geojson rename to etc/peer/models/Set1-Case2/active-crust/fault/features/set1-case2.geojson diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case2/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case2/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case2/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case2/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/set1-case2/rupture-set.json b/etc/peer/models/Set1-Case2/active-crust/fault/set1-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/set1-case2/rupture-set.json rename to etc/peer/models/Set1-Case2/active-crust/fault/set1-case2/rupture-set.json diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case2/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case2/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case2/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case2/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/features/set1-case3.geojson b/etc/peer/models/Set1-Case3-fast/active-crust/fault/features/set1-case3.geojson similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/features/set1-case3.geojson rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/features/set1-case3.geojson diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/set1-case3/rupture-set.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/set1-case3/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/set1-case3/rupture-set.json rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/set1-case3/rupture-set.json diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case3/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case3/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/features/set1-case3.geojson b/etc/peer/models/Set1-Case3/active-crust/fault/features/set1-case3.geojson similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/features/set1-case3.geojson rename to etc/peer/models/Set1-Case3/active-crust/fault/features/set1-case3.geojson diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case3/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case3/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case3/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case3/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/set1-case3/rupture-set.json b/etc/peer/models/Set1-Case3/active-crust/fault/set1-case3/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/set1-case3/rupture-set.json rename to etc/peer/models/Set1-Case3/active-crust/fault/set1-case3/rupture-set.json diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case3/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case3/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case3/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case3/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/features/set1-case4.geojson b/etc/peer/models/Set1-Case4-fast/active-crust/fault/features/set1-case4.geojson similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/features/set1-case4.geojson rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/features/set1-case4.geojson diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/set1-case4/rupture-set.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/set1-case4/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/set1-case4/rupture-set.json rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/set1-case4/rupture-set.json diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case4/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case4/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/features/set1-case4.geojson b/etc/peer/models/Set1-Case4/active-crust/fault/features/set1-case4.geojson similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/features/set1-case4.geojson rename to etc/peer/models/Set1-Case4/active-crust/fault/features/set1-case4.geojson diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case4/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case4/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case4/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case4/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/set1-case4/rupture-set.json b/etc/peer/models/Set1-Case4/active-crust/fault/set1-case4/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/set1-case4/rupture-set.json rename to etc/peer/models/Set1-Case4/active-crust/fault/set1-case4/rupture-set.json diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case4/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case4/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case4/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case4/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/features/set1-case5.geojson b/etc/peer/models/Set1-Case5-fast/active-crust/fault/features/set1-case5.geojson similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/features/set1-case5.geojson rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/features/set1-case5.geojson diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/set1-case5/rupture-set.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/set1-case5/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/set1-case5/rupture-set.json rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/set1-case5/rupture-set.json diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case5/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case5/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/features/set1-case5.geojson b/etc/peer/models/Set1-Case5/active-crust/fault/features/set1-case5.geojson similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/features/set1-case5.geojson rename to etc/peer/models/Set1-Case5/active-crust/fault/features/set1-case5.geojson diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case5/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case5/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case5/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case5/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/set1-case5/rupture-set.json b/etc/peer/models/Set1-Case5/active-crust/fault/set1-case5/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/set1-case5/rupture-set.json rename to etc/peer/models/Set1-Case5/active-crust/fault/set1-case5/rupture-set.json diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case5/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case5/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case5/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case5/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/features/set1-case6.geojson b/etc/peer/models/Set1-Case6-fast/active-crust/fault/features/set1-case6.geojson similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/features/set1-case6.geojson rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/features/set1-case6.geojson diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/set1-case6/rupture-set.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/set1-case6/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/set1-case6/rupture-set.json rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/set1-case6/rupture-set.json diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case6/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case6/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/features/set1-case6.geojson b/etc/peer/models/Set1-Case6/active-crust/fault/features/set1-case6.geojson similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/features/set1-case6.geojson rename to etc/peer/models/Set1-Case6/active-crust/fault/features/set1-case6.geojson diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case6/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case6/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case6/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case6/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/set1-case6/rupture-set.json b/etc/peer/models/Set1-Case6/active-crust/fault/set1-case6/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/set1-case6/rupture-set.json rename to etc/peer/models/Set1-Case6/active-crust/fault/set1-case6/rupture-set.json diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case6/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case6/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case6/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case6/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/features/set1-case7.geojson b/etc/peer/models/Set1-Case7-fast/active-crust/fault/features/set1-case7.geojson similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/features/set1-case7.geojson rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/features/set1-case7.geojson diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/set1-case7/rupture-set.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/set1-case7/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/set1-case7/rupture-set.json rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/set1-case7/rupture-set.json diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case7/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case7/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/features/set1-case7.geojson b/etc/peer/models/Set1-Case7/active-crust/fault/features/set1-case7.geojson similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/features/set1-case7.geojson rename to etc/peer/models/Set1-Case7/active-crust/fault/features/set1-case7.geojson diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case7/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case7/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case7/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case7/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/set1-case7/rupture-set.json b/etc/peer/models/Set1-Case7/active-crust/fault/set1-case7/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/set1-case7/rupture-set.json rename to etc/peer/models/Set1-Case7/active-crust/fault/set1-case7/rupture-set.json diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case7/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case7/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case7/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case7/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case8a/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case8a/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/features/set1-case8a.geojson b/etc/peer/models/Set1-Case8a/active-crust/fault/features/set1-case8a.geojson similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/features/set1-case8a.geojson rename to etc/peer/models/Set1-Case8a/active-crust/fault/features/set1-case8a.geojson diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case8a/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case8a/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case8a/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case8a/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/set1-case8a/rupture-set.json b/etc/peer/models/Set1-Case8a/active-crust/fault/set1-case8a/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/set1-case8a/rupture-set.json rename to etc/peer/models/Set1-Case8a/active-crust/fault/set1-case8a/rupture-set.json diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case8a/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case8a/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case8a/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case8a/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case8b/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case8b/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/features/set1-case8b.geojson b/etc/peer/models/Set1-Case8b/active-crust/fault/features/set1-case8b.geojson similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/features/set1-case8b.geojson rename to etc/peer/models/Set1-Case8b/active-crust/fault/features/set1-case8b.geojson diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case8b/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case8b/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case8b/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case8b/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/set1-case8b/rupture-set.json b/etc/peer/models/Set1-Case8b/active-crust/fault/set1-case8b/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/set1-case8b/rupture-set.json rename to etc/peer/models/Set1-Case8b/active-crust/fault/set1-case8b/rupture-set.json diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case8b/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case8b/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case8b/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case8b/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case8c/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set1-Case8c/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/features/set1-case8c.geojson b/etc/peer/models/Set1-Case8c/active-crust/fault/features/set1-case8c.geojson similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/features/set1-case8c.geojson rename to etc/peer/models/Set1-Case8c/active-crust/fault/features/set1-case8c.geojson diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set1-Case8c/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set1-Case8c/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case8c/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set1-Case8c/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/set1-case8c/rupture-set.json b/etc/peer/models/Set1-Case8c/active-crust/fault/set1-case8c/rupture-set.json similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/set1-case8c/rupture-set.json rename to etc/peer/models/Set1-Case8c/active-crust/fault/set1-case8c/rupture-set.json diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case8c/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set1-Case8c/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case8c/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set1-Case8c/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2a/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2b/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2c/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/features/fault3.geojson rename to etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case2d/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/set2-case2/rupture-set.json rename to etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3a/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3b/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3c/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case3d/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json rename to etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson rename to etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json rename to etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json rename to etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json rename to etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json rename to etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json similarity index 100% rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json rename to etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json diff --git a/gradle/ext.gradle b/gradle/ext.gradle index 3cc94336d..5b182839b 100644 --- a/gradle/ext.gradle +++ b/gradle/ext.gradle @@ -4,8 +4,6 @@ ext { projectName = 'nshmp-haz' - propsPath = '/classes/java/main/service.properties' - libsDir = "libs" nshmpLib = "${libsDir}/nshmp-lib-artifacts" nshmpLibGradleDir = "${nshmpLib}/gradle" @@ -73,19 +71,9 @@ ext { 'models/hi/2020' ] ] - getGitTag = { gitDir -> - def cmd = 'git --git-dir=' + gitDir + '/.git describe --tags' - return cmd.execute().text.replace('\n', '') ?: 'unknown' - } - - /* - * The git-dir option gets the correct tag when - * build is called from nshmp-haz-ws. - */ gitCommand = 'git --git-dir=../nshmp-haz/.git describe --tags' gitTag = gitCommand.execute().text.replace('\n', '') ?: 'unknown' gitLink = '<a href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz">' + gitTag +'</a>' - propsPath = '/resources/main/app.properties' docTitle = projectName + ': ' + gitLink docFooter = '<div style="float: left; font-size: 16px; text-align: right; ' + 'padding: 10px; width: 100%; box-sizing: border-box; background-color: #f9f9f9">' + diff --git a/gradle/jar.gradle b/gradle/jar.gradle index be5167f45..25102ef15 100644 --- a/gradle/jar.gradle +++ b/gradle/jar.gradle @@ -1,44 +1,16 @@ apply plugin: "com.github.johnrengelman.shadow" /* - * Possibly record app version. The creation of this file - * on each build causes the classpath to appear changed so - * Gradle reruns tests, even though no code has changed. - * - * Note that 'git describe' only works when running gradle from the command - * line so version values in eclipse builds will empty. Use thinJar - * task to skip dependencies. - */ -tasks.register("propertyFile") { - description = "Create a property file with application version" - doFirst { - def props = new Properties() - def propsFile = new File(project.buildDir.toString() + propsPath) - if (propsFile.exists()) { - props.load(propsFile.newReader()) - } else { - propsFile.createNewFile() - } - if (!gitTag.equals(props.getProperty('app.version'))) { - props.setProperty('app.version', gitTag) - props.store(propsFile.newWriter(), null) - } - } -} - -/* - * Build a thin jar and add a properties file with the application version. + * Build a thin jar. */ jar { archiveBaseName = "${projectName}-thin" - dependsOn propertyFile } /* * Build a fat jar to be used for running programs and Micronaut services. */ shadowJar { - dependsOn propertyFile baseName = projectName classifier = '' archiveVersion = '' diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java deleted file mode 100644 index 575f712ea..000000000 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java +++ /dev/null @@ -1,205 +0,0 @@ -package gov.usgs.earthquake.nshmp; - -import static gov.usgs.earthquake.nshmp.Text.NEWLINE; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Optional; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.logging.FileHandler; -import java.util.logging.Logger; - -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.MoreExecutors; - -import gov.usgs.earthquake.nshmp.calc.CalcConfig; -import gov.usgs.earthquake.nshmp.calc.Disaggregation; -import gov.usgs.earthquake.nshmp.calc.Hazard; -import gov.usgs.earthquake.nshmp.calc.HazardCalcs; -import gov.usgs.earthquake.nshmp.calc.HazardExport; -import gov.usgs.earthquake.nshmp.calc.Site; -import gov.usgs.earthquake.nshmp.calc.Sites; -import gov.usgs.earthquake.nshmp.calc.ThreadCount; -import gov.usgs.earthquake.nshmp.internal.Logging; -import gov.usgs.earthquake.nshmp.model.HazardModel; - -/** - * Deaggregate probabilisitic seismic hazard at an intesity measure level of - * interest. - * - * @author U.S. Geological Survey - */ -public class DeaggIml { - - /** - * Entry point for the deaggregation of probabilisitic seismic hazard. - * - * <p>Deaggregating siesmic hazard is largeley identical to a hazard - * calculation except that an intensity measure level (in units of g) must be - * supplied as an additional argument after the 'site(s)' argument. See the - * {@link HazardCalc#main(String[]) HazardCalc program} for more information - * on required parameters. - * - * <p>Please refer to the nshmp-haz <a - * href="https://github.com/usgs/nshmp-haz/wiki">wiki</a> for comprehensive - * descriptions of source models, configuration files, site files, and hazard - * calculations. - * - * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"> - * nshmp-haz Building & Running</a> - * @see <a - * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"> - * example calculations</a> - */ - public static void main(String[] args) { - - /* Delegate to run which has a return value for testing. */ - - Optional<String> status = run(args); - if (status.isPresent()) { - System.err.print(status.get()); - System.exit(1); - } - System.exit(0); - } - - static Optional<String> run(String[] args) { - int argCount = args.length; - - if (argCount < 3 || argCount > 4) { - return Optional.of(USAGE); - } - - Logging.init(); - Logger log = Logger.getLogger(DeaggIml.class.getName()); - Path tmpLog = HazardCalc.createTempLog(); - - try { - FileHandler fh = new FileHandler(Preconditions.checkNotNull(tmpLog.getFileName()).toString()); - fh.setFormatter(new Logging.ConsoleFormatter()); - log.getParent().addHandler(fh); - - log.info(PROGRAM + ": " + HazardCalc.VERSION); - Path modelPath = Paths.get(args[0]); - HazardModel model = HazardModel.load(modelPath); - - CalcConfig config = model.config(); - if (argCount == 4) { - Path userConfigPath = Paths.get(args[3]); - config = CalcConfig.copyOf(model.config()) - .extend(CalcConfig.from(userConfigPath)) - .build(); - } - log.info(config.toString()); - - log.info(""); - Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log); - log.info("Sites: " + sites); - - double iml = Double.valueOf(args[2]); - - Path out = calc(model, config, sites, iml, log); - log.info(PROGRAM + ": finished"); - - /* Transfer log and write config, windows requires fh.close() */ - fh.close(); - Files.move(tmpLog, out.resolve(PROGRAM + ".log")); - config.write(out); - - return Optional.empty(); - - } catch (Exception e) { - return HazardCalc.handleError(e, log, tmpLog, args, PROGRAM, USAGE); - } - } - - /* - * Compute hazard curves using the supplied model, config, and sites. Method - * returns the path to the directory where results were written. - * - * TODO consider refactoring to supply an Optional<Double> return period to - * HazardCalc.calc() that will trigger deaggregations if the value is present. - */ - private static Path calc( - HazardModel model, - CalcConfig config, - Sites sites, - double iml, - Logger log) throws IOException { - - ExecutorService exec = null; - ThreadCount threadCount = config.performance.threadCount; - if (threadCount == ThreadCount.ONE) { - exec = MoreExecutors.newDirectExecutorService(); - log.info("Threads: Running on calling thread"); - } else { - exec = Executors.newFixedThreadPool(threadCount.value()); - log.info("Threads: " + ((ThreadPoolExecutor) exec).getCorePoolSize()); - } - - log.info(PROGRAM + ": calculating ..."); - - HazardExport handler = HazardExport.create(model, config, sites, log); - - for (Site site : sites) { - Hazard hazard = HazardCalcs.hazard(model, config, site, exec); - Disaggregation disagg = HazardCalcs.disaggIml(hazard, iml, exec); - handler.write(hazard, Optional.of(disagg)); - log.fine(hazard.toString()); - } - handler.expire(); - - log.info(String.format( - PROGRAM + ": %s sites completed in %s", - handler.resultCount(), handler.elapsedTime())); - - exec.shutdown(); - return handler.outputDir(); - } - - private static final String PROGRAM = DeaggIml.class.getSimpleName(); - private static final String USAGE_COMMAND = - "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggIml model sites iml [config]"; - private static final String USAGE_URL1 = - "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"; - private static final String USAGE_URL2 = - "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"; - private static final String SITE_STRING = "name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]"; - - private static final String USAGE = new StringBuilder() - .append(NEWLINE) - .append(PROGRAM).append(" [").append(HazardCalc.VERSION).append("]").append(NEWLINE) - .append(NEWLINE) - .append("Usage:").append(NEWLINE) - .append(" ").append(USAGE_COMMAND).append(NEWLINE) - .append(NEWLINE) - .append("Where:").append(NEWLINE) - .append(" 'model' is a model directory") - .append(NEWLINE) - .append(" 'sites' is either:") - .append(NEWLINE) - .append(" - a string, e.g. ").append(SITE_STRING) - .append(NEWLINE) - .append(" (site class and basin terms are optional)") - .append(NEWLINE) - .append(" (escape any spaces or enclose string in double-quotes)") - .append(NEWLINE) - .append(" - or a *.csv file or *.geojson file of site data") - .append(NEWLINE) - .append(" 'iml', in units of g, is an intensity measure level of interest") - .append(NEWLINE) - .append(" 'config' (optional) supplies a calculation configuration") - .append(NEWLINE) - .append(NEWLINE) - .append("For more information, see:").append(NEWLINE) - .append(" ").append(USAGE_URL1).append(NEWLINE) - .append(" ").append(USAGE_URL2).append(NEWLINE) - .append(NEWLINE) - .toString(); - -} diff --git a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java index f77db288f..c6a8fb44e 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java @@ -4,16 +4,12 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static gov.usgs.earthquake.nshmp.Text.NEWLINE; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.Optional; -import java.util.Properties; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; @@ -313,11 +309,8 @@ public class HazardCalc { return Optional.of(sb.toString()); } - /** - * The Git application version. This version string applies to all other - * nshnmp-haz applications. - */ - public static final String VERSION = version(); + /** The Git application version. */ + public static final String VERSION = "TODO get version from resource"; private static final String PROGRAM = HazardCalc.class.getSimpleName(); private static final String USAGE_COMMAND = @@ -327,32 +320,6 @@ public class HazardCalc { private static final String USAGE_URL2 = "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"; - @Deprecated - private static String version() { - String version = "unknown"; - /* Assume we're running from a jar. */ - try { - InputStream is = HazardCalc.class.getResourceAsStream("/app.properties"); - Properties props = new Properties(); - props.load(is); - is.close(); - version = props.getProperty("app.version"); - } catch (Exception e1) { - /* Otherwise check for a repository. */ - Path gitDir = Paths.get(".git"); - if (Files.exists(gitDir)) { - try { - Process pr = Runtime.getRuntime().exec("git describe --tags"); - BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream())); - version = br.readLine(); - br.close(); - /* Detached from repository. */ - } catch (Exception e2) {} - } - } - return version; - } - private static final String USAGE = new StringBuilder() .append(NEWLINE) .append(PROGRAM).append(" [").append(VERSION).append("]").append(NEWLINE) -- GitLab From c3c100f56e5daff2fb00fc2b16ba6a7f60f79334 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Mon, 25 Oct 2021 10:49:48 -0600 Subject: [PATCH 07/17] removed javadoc build task --- build.gradle | 1 - gradle/javadoc.gradle | 38 -------------------------------------- 2 files changed, 39 deletions(-) delete mode 100644 gradle/javadoc.gradle diff --git a/build.gradle b/build.gradle index 4e0a5e5b9..f7155569d 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,6 @@ configurations { apply from: "${projectDir}/gradle/dependencies.gradle" apply from: "${projectDir}/gradle/ext.gradle" apply from: "${projectDir}/gradle/jar.gradle" -apply from: "${projectDir}/gradle/javadoc.gradle" apply from: "${projectDir}/gradle/repositories.gradle" sourceCompatibility = JavaVersion.VERSION_11 diff --git a/gradle/javadoc.gradle b/gradle/javadoc.gradle deleted file mode 100644 index f60205c97..000000000 --- a/gradle/javadoc.gradle +++ /dev/null @@ -1,38 +0,0 @@ -/* - * JavaDoc config - */ -javadoc { - options.setUse(true) - options.author(true) - options.version(true) - options.windowTitle(projectName) - options.docTitle(docTitle) - options.encoding('UTF-8') - options.docEncoding('UTF-8') - options.charSet('UTF-8') - options.bottom(docFooter) - options.addStringOption('Xdoclint:none', '-quiet') - options.links( - 'https://docs.oracle.com/javase/8/docs/api/', - 'https://google.github.io/guava/releases/23.0/api/docs/', - 'https://google.github.io/gson/apidocs/') - include 'gov/usgs/earthquake/nshmp/**' - exclude 'gov/usgs/earthquake/nshmp/www/**' - exclude 'gov/usgs/earthquake/nshmp/aws/**' - exclude 'gov/usgs/earthquake/nshmp/etc/**' - exclude 'gov/usgs/earthquake/nshmp/internal/**' - exclude '**/Scratch*' - doLast { - if (docOut) { - delete docOut - copy { - from 'build/docs/javadoc' - into docOut - } - copy { - from 'etc/resources/docs' - into docOut + '/resources' - } - } - } -} -- GitLab From 1e9cfc7295e09fb5211685dde90e69fd330e57ad Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Mon, 25 Oct 2021 11:38:03 -0600 Subject: [PATCH 08/17] removed javadoc ext options --- gradle/ext.gradle | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/gradle/ext.gradle b/gradle/ext.gradle index 5b182839b..a15fd02b3 100644 --- a/gradle/ext.gradle +++ b/gradle/ext.gradle @@ -70,18 +70,4 @@ ext { model_hi_2020, 'models/hi/2020' ] ] - - gitCommand = 'git --git-dir=../nshmp-haz/.git describe --tags' - gitTag = gitCommand.execute().text.replace('\n', '') ?: 'unknown' - gitLink = '<a href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz">' + gitTag +'</a>' - docTitle = projectName + ': ' + gitLink - docFooter = '<div style="float: left; font-size: 16px; text-align: right; ' + - 'padding: 10px; width: 100%; box-sizing: border-box; background-color: #f9f9f9">' + - '<b><a href="https://www.usgs.gov" target="_top">U.S. Geological Survey</a></b> ' + - '– National Seismic Hazard Model Project ' + - '(<a href="https://earthquake.usgs.gov/hazards/" target="_top">NSHMP</a>) ' + - '– <a href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/LICENSE.md" ' + - 'target="_top">License</a> | <b>' + gitLink + '</b></div>' - docOut = findProperty('javadoc_loc') - thinJar = false } -- GitLab From 07972b64f91083d7e567d559d38baef0f195a34e Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 27 Oct 2021 13:07:42 -0600 Subject: [PATCH 09/17] renamed classes deagg to disagg --- .../nshmp/{DeaggCalc.java => DisaggCalc.java} | 32 ++++++------------- .../{DeaggEpsilon.java => DisaggEpsilon.java} | 6 ++-- 2 files changed, 13 insertions(+), 25 deletions(-) rename src/main/java/gov/usgs/earthquake/nshmp/{DeaggCalc.java => DisaggCalc.java} (84%) rename src/main/java/gov/usgs/earthquake/nshmp/{DeaggEpsilon.java => DisaggEpsilon.java} (98%) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java similarity index 84% rename from src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java rename to src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java index fba6b50e0..6dd1e9a26 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java @@ -32,8 +32,7 @@ import gov.usgs.earthquake.nshmp.model.HazardModel; * * @author U.S. Geological Survey */ -@Deprecated -public class DeaggCalc { +public class DisaggCalc { /** * Entry point for the deaggregation of probabilisitic seismic hazard. @@ -71,12 +70,12 @@ public class DeaggCalc { static Optional<String> run(String[] args) { int argCount = args.length; - if (argCount < 3 || argCount > 4) { + if (argCount < 2 || argCount > 3) { return Optional.of(USAGE); } Logging.init(); - Logger log = Logger.getLogger(DeaggCalc.class.getName()); + Logger log = Logger.getLogger(DisaggCalc.class.getName()); Path tmpLog = HazardCalc.createTempLog(); try { @@ -89,8 +88,8 @@ public class DeaggCalc { HazardModel model = HazardModel.load(modelPath); CalcConfig config = model.config(); - if (argCount == 4) { - Path userConfigPath = Paths.get(args[3]); + if (argCount == 3) { + Path userConfigPath = Paths.get(args[2]); config = CalcConfig.copyOf(model.config()) .extend(CalcConfig.from(userConfigPath)) .build(); @@ -101,7 +100,7 @@ public class DeaggCalc { Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log); log.info("Sites: " + sites); - double returnPeriod = Double.valueOf(args[2]); + double returnPeriod = config.disagg.returnPeriod; Path out = calc(model, config, sites, returnPeriod, log); log.info(PROGRAM + ": finished"); @@ -162,14 +161,13 @@ public class DeaggCalc { return handler.outputDir(); } - private static final String PROGRAM = DeaggCalc.class.getSimpleName(); + private static final String PROGRAM = DisaggCalc.class.getSimpleName(); private static final String USAGE_COMMAND = - "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggCalc model sites returnPeriod [config]"; + "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggCalc model sites [config]"; private static final String USAGE_URL1 = "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"; private static final String USAGE_URL2 = "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"; - private static final String SITE_STRING = "name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]"; private static final String USAGE = new StringBuilder() .append(NEWLINE) @@ -181,19 +179,9 @@ public class DeaggCalc { .append("Where:").append(NEWLINE) .append(" 'model' is a model directory") .append(NEWLINE) - .append(" 'sites' is either:") + .append(" 'sites' is a *.csv file or *.geojson file of sites and data") .append(NEWLINE) - .append(" - a string, e.g. ").append(SITE_STRING) - .append(NEWLINE) - .append(" (site class and basin terms are optional)") - .append(NEWLINE) - .append(" (escape any spaces or enclose string in double-quotes)") - .append(NEWLINE) - .append(" - or a *.csv file or *.geojson file of site data") - .append(NEWLINE) - .append(" 'returnPeriod', in years, is a time horizon of interest") - .append(NEWLINE) - .append(" - e.g. one might enter 2475 to represent a 2% in 50 year probability") + .append(" - site class and basin terms are optional") .append(NEWLINE) .append(" 'config' (optional) supplies a calculation configuration") .append(NEWLINE) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java similarity index 98% rename from src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java rename to src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java index ef826317a..d2fd066f0 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java @@ -47,7 +47,7 @@ import gov.usgs.earthquake.nshmp.model.HazardModel; * * @author U.S. Geological Survey */ -public class DeaggEpsilon { +public class DisaggEpsilon { private static final Gson GSON = new GsonBuilder() .serializeSpecialFloatingPointValues() @@ -107,7 +107,7 @@ public class DeaggEpsilon { } Logging.init(); - Logger log = Logger.getLogger(DeaggCalc.class.getName()); + Logger log = Logger.getLogger(DisaggCalc.class.getName()); Path tmpLog = HazardCalc.createTempLog(); try { @@ -333,7 +333,7 @@ public class DeaggEpsilon { return incrementedDir; } - private static final String PROGRAM = DeaggEpsilon.class.getSimpleName(); + private static final String PROGRAM = DisaggEpsilon.class.getSimpleName(); private static final String USAGE_COMMAND = "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggEpsilon model sites [config]"; -- GitLab From 0ed39d3327fe9849967dbe7556d825525181ad50 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 27 Oct 2021 13:09:04 -0600 Subject: [PATCH 10/17] comment edit peer test --- .../java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java index ad3124fd7..a6de60423 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java @@ -115,11 +115,9 @@ class PeerTest { .toList()); checkArgument(actual.length == expected.length); - // tests difference relative to tolerance - // TODO maybe just decrease this tolerance and - // do away with ratio test below + // test difference relative to tolerance assertArrayEquals(expected, actual, tolerance); - // tests ratio relative to tolerance + // test ratio relative to tolerance for (int i = 0; i < expected.length; i++) { String message = String.format("arrays differ at [%s] expected:<[%s]> but was:<[%s]>", i, expected[i], actual[i]); -- GitLab From 52fd813cb7ff218222696d918042efef5c7f85a2 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 27 Oct 2021 15:16:23 -0600 Subject: [PATCH 11/17] more deagg --> disagg classes, comments, and docs --- docs/pages/Building-&-Running.md | 52 +++--------- docs/pages/Functional-PSHA.md | 2 +- etc/examples/6-enhanced-output/README.md | 2 +- .../README.md | 34 ++++---- .../config.json | 0 .../sites.geojson | 0 etc/examples/8-probabilities/README.md | 2 +- .../gov/usgs/earthquake/nshmp/DisaggCalc.java | 9 +- .../usgs/earthquake/nshmp/DisaggEpsilon.java | 6 +- .../gov/usgs/earthquake/nshmp/RateCalc.java | 9 +- ...ller.java => DisaggEpsilonController.java} | 85 +++++++++++++------ ...Service.java => DisaggEpsilonService.java} | 51 ++++++----- .../nshmp/www/services/ServletUtil.java | 2 +- 13 files changed, 125 insertions(+), 129 deletions(-) rename etc/examples/{7-deaggregation => 7-disaggregation}/README.md (67%) rename etc/examples/{7-deaggregation => 7-disaggregation}/config.json (100%) rename etc/examples/{7-deaggregation => 7-disaggregation}/sites.geojson (100%) rename src/main/java/gov/usgs/earthquake/nshmp/www/{DeaggEpsilonController.java => DisaggEpsilonController.java} (55%) rename src/main/java/gov/usgs/earthquake/nshmp/www/services/{DeaggEpsilonService.java => DisaggEpsilonService.java} (82%) diff --git a/docs/pages/Building-&-Running.md b/docs/pages/Building-&-Running.md index 25622afad..0dfe9f0ba 100644 --- a/docs/pages/Building-&-Running.md +++ b/docs/pages/Building-&-Running.md @@ -111,7 +111,7 @@ which can be run with: ```bash docker run \ - --env CLASS_NAME=<DeaggCalc | DeaggIml | HazardCalc | RateCalc> \ + --env CLASS_NAME=<DisaggCalc | HazardCalc | RateCalc> \ --env IML=<NUMBER> \ --env RETURN_PERIOD=<NUMBER> \ --volume /absolute/path/to/sites/file:/app/sites.<geojson | csv> \ @@ -123,12 +123,9 @@ docker run \ Where: * `CLASS_NAME` is the nshmp-haz class to run: - * [DeaggCalc](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java) - * [DeaggIml](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java) + * [DisaggCalc](../../src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java) * [HazardCalc](../../src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java) * [RateCalc](../../src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java) -* `RETURN_PERIOD`, in years, is only required when running a disaggregation -* `IML`: intensity measure level, only required when running `DeaggIml` * Other arguments (local files mapped to files within the Docker container with `:/app/...`): * (required) The absolute path to a [USGS model (NSHM)](./USGS-Models.md) * Example: `$(pwd)/nshm-hawaii:/app/model` @@ -142,32 +139,9 @@ Where: ### Docker Examples -#### [`DeaggCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java) Example - -The following example runs the `DeaggCalc` program in nshmp-haz with the -[nshm-hawaii](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git) model and the -assumption a GeoJSON [site](./Site-Specification.md) file exists named `sites.geojson`. - -```bash -# Download Hawaii NSHM -git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git - -# Pull image -docker pull usgs/nshmp-haz:production-latest - -# Run nshmp-haz DeaggCalc -docker run \ - --env CLASS_NAME="DeaggCalc" \ - --env RETURN_PERIOD=475 \ - --volume "$(pwd)/nshm-hawaii:/app/model" \ - --volume "$(pwd)/sites.geojson" \ - --volume "$(pwd)/hawaii-disagg-output:/app/output" \ - usgs/nshmp-haz:production-latest -``` - -#### [`DeaggIml`](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java) Example +#### [`HazardCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java) Example -The following example runs the `DeaggIml` program in nshmp-haz with the +The following example runs the `HazardCalc` program in nshmp-haz with the [nshm-hawaii](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git) model and the assumption a GeoJSON [site](./Site-Specification.md) file exists named `sites.geojson`. @@ -178,19 +152,18 @@ git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git # Pull image docker pull usgs/nshmp-haz:production-latest -# Run nshmp-haz DeaggIml +# Run nshmp-haz HazardCalc docker run \ - --env CLASS_NAME="DeaggCalc" \ - --env IML=1 \ + --env CLASS_NAME="HazardCalc" \ --volume "$(pwd)/nshm-hawaii:/app/model" \ --volume "$(pwd)/sites.geojson" \ - --volume "$(pwd)/hawaii-disagg-iml-output:/app/output" \ + --volume "$(pwd)/hawaii-hazard-output:/app/output" \ usgs/nshmp-haz:production-latest ``` -#### [`HazardCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java) Example +#### [`DisaggCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java) Example -The following example runs the `HazardCalc` program in nshmp-haz with the +The following example runs the `DisaggCalc` program in nshmp-haz with the [nshm-hawaii](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git) model and the assumption a GeoJSON [site](./Site-Specification.md) file exists named `sites.geojson`. @@ -201,12 +174,13 @@ git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git # Pull image docker pull usgs/nshmp-haz:production-latest -# Run nshmp-haz HazardCalc +# Run nshmp-haz DisaggCalc docker run \ - --env CLASS_NAME="HazardCalc" \ + --env CLASS_NAME="DisaggCalc" \ + --env RETURN_PERIOD=475 \ --volume "$(pwd)/nshm-hawaii:/app/model" \ --volume "$(pwd)/sites.geojson" \ - --volume "$(pwd)/hawaii-hazard-output:/app/output" \ + --volume "$(pwd)/hawaii-disagg-output:/app/output" \ usgs/nshmp-haz:production-latest ``` diff --git a/docs/pages/Functional-PSHA.md b/docs/pages/Functional-PSHA.md index 375098c02..24fad1092 100644 --- a/docs/pages/Functional-PSHA.md +++ b/docs/pages/Functional-PSHA.md @@ -132,7 +132,7 @@ The functional pipeline can be processed stepwise:  -**Need a deagreggation?** Revisit and parse the results of steps 1 and 2 +**Need a disaggregation?** Revisit and parse the results of steps 1 and 2 **Need a response spectra?** Spawn more calculations, one for each IMT, at step 2. diff --git a/etc/examples/6-enhanced-output/README.md b/etc/examples/6-enhanced-output/README.md index 83f0ed2b5..efed49718 100644 --- a/etc/examples/6-enhanced-output/README.md +++ b/etc/examples/6-enhanced-output/README.md @@ -59,7 +59,7 @@ __Results directory structure:__ ``` <!-- markdownlint-disable MD001 --> -#### Next: [Example 7 – Deaggregation](../7-deaggregation/README.md) +#### Next: [Example 7 – Disaggregation](../7-disaggregation/README.md) --- diff --git a/etc/examples/7-deaggregation/README.md b/etc/examples/7-disaggregation/README.md similarity index 67% rename from etc/examples/7-deaggregation/README.md rename to etc/examples/7-disaggregation/README.md index 734901617..ea60c780c 100644 --- a/etc/examples/7-deaggregation/README.md +++ b/etc/examples/7-disaggregation/README.md @@ -1,36 +1,36 @@ -# Example 7: Deaggregation +# Example 7: Disaggregation -__Working directory:__ `/path/to/nshmp-haz/etc/examples/7-deaggregation` +__Working directory:__ `/path/to/nshmp-haz/etc/examples/7-disaggregation` -To perform a deaggregation of hazard, one must use the program `DeaggCalc`. Internally, -`DeaggCalc` calls `HazardCalc` and then reprocesses the data to generate a comma-delimited +To perform a disaggregation of hazard, one must use the program `DisaggCalc`. Internally, +`DisaggCalc` calls `HazardCalc` and then reprocesses the data to generate a comma-delimited file of distance, magnitude, and epsilon bins, and a text file of summary statistics and primary contributing sources. For this, it can be helpful to create a second system alias: ```Shell -alias deagg='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggCalc' +alias disagg='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggCalc' ``` -`DeaggCalc` is similar to `HazardCalc` in every way except that the return-period of interest +`DisaggCalc` is similar to `HazardCalc` in every way except that the return-period of interest must be specified. For example, execute: ```Shell -deagg ../../../../nshm-conus sites.geojson 2475 config.json +disagg ../../../../nshm-conus sites.geojson 2475 config.json ``` -The results of the deaggregation are saved along with hazard curves in `deagg` directories. -As with `HazardCalc`, if the `GMM` ddata type has been specified (as it has in the +The results of the disaggregation are saved along with hazard curves in `disagg` directories. +As with `HazardCalc`, if the `GMM` data type has been specified (as it has in the [config](../../../docs/pages/Calculation-Configuration.md#calculation-configuration) -file for this example) additional deaggregation results for each GMM are generated as well. -Deaggregations by individual `SOURCE` type are also possible. +file for this example) additional disaggregation results for each GMM are generated as well. +Disaggregations by individual `SOURCE` type are also possible. __Results directory structure:__ ```text -7-deaggregation/ +7-disaggregation/ └─ hazout/ ├─ config.json - ├─ DeaggCalc.log + ├─ DisaggCalc.log ├─ PGA/ │ ├─ curves-truncated.csv │ ├─ curves.csv @@ -60,7 +60,7 @@ __Results directory structure:__ │ ├─ ... │ ├─ CB_14_BASIN/ │ │ ├─ curves.csv - │ │ └─ deagg/ + │ │ └─ disagg/ │ │ ├─ Los Angeles CA/ │ │ │ ├─ data.csv │ │ │ └─ dsummary.txt @@ -79,9 +79,9 @@ __Results directory structure:__ └─ ... ``` -Note that in the output above, there are only deaggregation results for -subduction GMMs (e.g. `AM_09_INTERFACE_BASIN`) for sites closer to the Cascadia subduction zone; -empty results will not be saved. +Note that in the output above, there are only disaggregation results for subduction GMMs +(e.g. `AM_09_INTERFACE_BASIN`) for sites closer to the Cascadia subduction zone; empty results +will not be saved. <!-- markdownlint-disable MD001 --> #### Next: [Example 8 – Earthquake probabilities and rates](../8-probabilities/README.md) diff --git a/etc/examples/7-deaggregation/config.json b/etc/examples/7-disaggregation/config.json similarity index 100% rename from etc/examples/7-deaggregation/config.json rename to etc/examples/7-disaggregation/config.json diff --git a/etc/examples/7-deaggregation/sites.geojson b/etc/examples/7-disaggregation/sites.geojson similarity index 100% rename from etc/examples/7-deaggregation/sites.geojson rename to etc/examples/7-disaggregation/sites.geojson diff --git a/etc/examples/8-probabilities/README.md b/etc/examples/8-probabilities/README.md index dd696daf7..4647c3da9 100644 --- a/etc/examples/8-probabilities/README.md +++ b/etc/examples/8-probabilities/README.md @@ -3,7 +3,7 @@ __Working directory:__ `/path/to/nshmp-haz/etc/examples/8-probabilities` `nshmp-haz` can also calculate earthquake probabilities and rates at a location. -As with the `HazardCalc` and `DeaggCalc` programs, `RateCalc` takes a model, a site data file +As with the `HazardCalc` and `DisaggCalc` programs, `RateCalc` takes a model, a site data file or string, and an optional config file, which will control whether the distributions generated are incremental or cumulative, and whether the distribution values are expressed as annual rates or Poisson probabilities. The default (no config supplied) settings are for incremental diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java index 6dd1e9a26..dccbe7cd4 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java @@ -28,16 +28,16 @@ import gov.usgs.earthquake.nshmp.internal.Logging; import gov.usgs.earthquake.nshmp.model.HazardModel; /** - * Deaggregate probabilisitic seismic hazard at a return period of interest. + * Disaggregate probabilisitic seismic hazard at a return period of interest. * * @author U.S. Geological Survey */ public class DisaggCalc { /** - * Entry point for the deaggregation of probabilisitic seismic hazard. + * Entry point for the disaggregation of probabilisitic seismic hazard. * - * <p>Deaggregating siesmic hazard is largeley identical to a hazard + * <p>Disaggregating siesmic hazard is largeley identical to a hazard * calculation except that a return period (in years) must be supplied as an * additional argument after the 'site(s)' argument. See the * {@link HazardCalc#main(String[]) HazardCalc program} for more information @@ -122,7 +122,8 @@ public class DisaggCalc { * returns the path to the directory where results were written. * * TODO consider refactoring to supply an Optional<Double> return period to - * HazardCalc.calc() that will trigger deaggregations if the value is present. + * HazardCalc.calc() that will trigger disaggregations if the value is + * present. */ private static Path calc( HazardModel model, diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java index d2fd066f0..f0c60f602 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java @@ -219,7 +219,7 @@ public class DisaggEpsilon { * returns the path to the directory where results were written. * * TODO consider refactoring to supply an Optional<Double> return period to - * HazardCalc.calc() that will trigger deaggregations if the value is present. + * HazardCalc.calc() that will trigger disaggregations if the value is present. */ private static Path calc( HazardModel model, @@ -266,7 +266,7 @@ public class DisaggEpsilon { Result result = new Result(responses); String filename = String.format( - "edeagg_%.2f_%.2f.json", + "edisagg_%.2f_%.2f.json", site.location.longitude, site.location.latitude); @@ -335,7 +335,7 @@ public class DisaggEpsilon { private static final String PROGRAM = DisaggEpsilon.class.getSimpleName(); private static final String USAGE_COMMAND = - "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggEpsilon model sites [config]"; + "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggEpsilon model sites [config]"; private static final String USAGE = new StringBuilder() .append(NEWLINE) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java index cfbd7620c..cc3118f47 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java @@ -218,7 +218,6 @@ public class RateCalc { "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"; private static final String USAGE_URL2 = "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"; - private static final String SITE_STRING = "name,lon,lat"; private static final String USAGE = new StringBuilder() .append(NEWLINE) @@ -230,13 +229,7 @@ public class RateCalc { .append("Where:").append(NEWLINE) .append(" 'model' is a model directory") .append(NEWLINE) - .append(" 'sites' is either:") - .append(NEWLINE) - .append(" - a string, e.g. ").append(SITE_STRING) - .append(NEWLINE) - .append(" (escape any spaces or enclose string in double-quotes)") - .append(NEWLINE) - .append(" - or a *.csv file or *.geojson file of site data") + .append(" 'sites' is a *.csv file or *.geojson file of sites and data") .append(NEWLINE) .append(" 'config' (optional) supplies a calculation configuration") .append(NEWLINE) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/DeaggEpsilonController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java similarity index 55% rename from src/main/java/gov/usgs/earthquake/nshmp/www/DeaggEpsilonController.java rename to src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java index f498983b2..0c013900b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/DeaggEpsilonController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java @@ -5,10 +5,9 @@ import java.util.EnumMap; import javax.inject.Inject; import gov.usgs.earthquake.nshmp.gmm.Imt; -import gov.usgs.earthquake.nshmp.www.services.DeaggEpsilonService; -import gov.usgs.earthquake.nshmp.www.services.DeaggEpsilonService.Query; +import gov.usgs.earthquake.nshmp.www.services.DisaggEpsilonService; +import gov.usgs.earthquake.nshmp.www.services.DisaggEpsilonService.Query; import gov.usgs.earthquake.nshmp.www.services.HazardService; - import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; @@ -22,9 +21,9 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; -@Tag(name = "Epsilon Deaggregation Service (experimental)") -@Controller("/deagg-epsilon") -public class DeaggEpsilonController { +@Tag(name = "Epsilon Disaggregation Service (experimental)") +@Controller("/disagg-epsilon") +public class DisaggEpsilonController { @Inject private NshmpMicronautServlet servlet; @@ -44,30 +43,45 @@ public class DeaggEpsilonController { * @param basin Whether to use basin service */ @Operation( - summary = "Compute epsilon deaggregation", - description = "Compute epsilon deaggregation given longitude, latitude, Vs30 and IMT-IML map", - operationId = "deaggEpsilon_doGetDeaggEpsilon") + summary = "Compute epsilon disaggregation", + description = "Compute epsilon disaggregation given longitude, latitude, Vs30 and IMT-IML map", + operationId = "disaggEpsilon_doGetDisaggEpsilon") @ApiResponse( - description = "Epsilon deaggregations", + description = "Epsilon disaggregations", responseCode = "200") @Get(uri = "{?longitude,latitude,vs30,basin}") - public HttpResponse<String> doGetDeaggEpsilon( + public HttpResponse<String> doGetDisaggEpsilon( HttpRequest<?> request, @Schema( required = true, minimum = "-360", - maximum = "360") @QueryValue @Nullable Double longitude, + maximum = "360") + @QueryValue + @Nullable + Double longitude, @Schema( required = true, minimum = "-90", - maximum = "90") @QueryValue @Nullable Double latitude, - @Schema(required = true) @QueryValue @Nullable Integer vs30, - @Schema(defaultValue = "false") @QueryValue @Nullable Boolean basin, + maximum = "90") + @QueryValue + @Nullable + Double latitude, + @Schema(required = true) + @QueryValue + @Nullable + Integer vs30, + @Schema(defaultValue = "false") + @QueryValue + @Nullable + Boolean basin, @Schema( defaultValue = "{\"SA0P01\": 0.01}", - required = true) @QueryValue @Nullable EnumMap<Imt, Double> imtImls) { + required = true) + @QueryValue + @Nullable + EnumMap<Imt, Double> imtImls) { var query = new Query(request, longitude, latitude, vs30, basin); - return DeaggEpsilonService.handleDoGetDeaggEpsilon(request, query); + return DisaggEpsilonService.handleDoGetDisaggEpsilon(request, query); } /** @@ -80,29 +94,44 @@ public class DeaggEpsilonController { * @param basin Whether to use basin service */ @Operation( - summary = "Compute epsilon deaggregation", - description = "Compute epsilon deaggregation given longitude, latitude, Vs30 and IMT-IML map", - operationId = "deaggEpsilon_doGetDeaggEpsilonSlash") + summary = "Compute epsilon disaggregation", + description = "Compute epsilon disaggregation given longitude, latitude, Vs30 and IMT-IML map", + operationId = "disaggEpsilon_doGetDisaggEpsilonSlash") @ApiResponse( - description = "Epsilon deaggregations", + description = "Epsilon disaggregations", responseCode = "200") @Get(uri = "{/longitude}{/latitude}{/vs30}{/basin}") - public HttpResponse<String> doGetDeaggEpsilonSlash( + public HttpResponse<String> doGetDisaggEpsilonSlash( HttpRequest<?> request, @Schema( required = true, minimum = "-360", - maximum = "360") @PathVariable @Nullable Double longitude, + maximum = "360") + @PathVariable + @Nullable + Double longitude, @Schema( required = true, minimum = "-90", - maximum = "90") @PathVariable @Nullable Double latitude, - @Schema(required = true) @PathVariable @Nullable Integer vs30, - @Schema(defaultValue = "false") @PathVariable @Nullable Boolean basin, + maximum = "90") + @PathVariable + @Nullable + Double latitude, + @Schema(required = true) + @PathVariable + @Nullable + Integer vs30, + @Schema(defaultValue = "false") + @PathVariable + @Nullable + Boolean basin, @Schema( defaultValue = "{\"SA0P01\": 0.01}", - required = true) @QueryValue @Nullable EnumMap<Imt, Double> imtImls) { - return doGetDeaggEpsilon(request, longitude, latitude, vs30, basin, null); + required = true) + @QueryValue + @Nullable + EnumMap<Imt, Double> imtImls) { + return doGetDisaggEpsilon(request, longitude, latitude, vs30, basin, null); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/DeaggEpsilonService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java similarity index 82% rename from src/main/java/gov/usgs/earthquake/nshmp/www/services/DeaggEpsilonService.java rename to src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java index 9b2e0af50..283b3e13d 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/DeaggEpsilonService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java @@ -18,41 +18,40 @@ import gov.usgs.earthquake.nshmp.calc.Site; import gov.usgs.earthquake.nshmp.geo.Location; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.model.HazardModel; -import gov.usgs.earthquake.nshmp.www.DeaggEpsilonController; +import gov.usgs.earthquake.nshmp.www.DisaggEpsilonController; import gov.usgs.earthquake.nshmp.www.Response; import gov.usgs.earthquake.nshmp.www.WsUtils; import gov.usgs.earthquake.nshmp.www.meta.Metadata; import gov.usgs.earthquake.nshmp.www.meta.Status; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.Key; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; - import io.micronaut.context.annotation.Value; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; /** - * Hazard deaggregation handler for {@link DeaggEpsilonController}. + * Hazard disaggregation handler for {@link DisaggEpsilonController}. * * @author U.S. Geological Survey */ @Singleton -public final class DeaggEpsilonService { +public final class DisaggEpsilonService { /* Developer notes: See HazardService. */ - private static final String NAME = "Epsilon Deaggregation"; + private static final String NAME = "Epsilon Disaggregation"; @Value("${nshmp-haz.basin-service-url}") private static URL basinUrl; /** - * Handler for {@link DeaggEpsilonController#doGetDeaggEpsilon}. Returns the - * usage or the deagg result. + * Handler for {@link DisaggEpsilonController#doGetDisaggEpsilon}. Returns the + * usage or the disagg result. * * @param query The query * @param urlHelper The URL helper */ - public static HttpResponse<String> handleDoGetDeaggEpsilon(HttpRequest<?> request, Query query) { + public static HttpResponse<String> handleDoGetDisaggEpsilon(HttpRequest<?> request, Query query) { try { var timer = ServletUtil.timer(); @@ -70,7 +69,7 @@ public final class DeaggEpsilonService { } } - /* Create map of IMT to deagg IML. */ + /* Create map of IMT to disagg IML. */ private static EnumMap<Imt, Double> readImtsFromQuery(HttpRequest<?> request) { var imtImls = new EnumMap<Imt, Double>(Imt.class); for (var param : request.getParameters().asMap().entrySet()) { @@ -95,9 +94,9 @@ public final class DeaggEpsilonService { var siteFunction = new SiteFunction(data); var timer = Stopwatch.createStarted(); var hazard = ServicesUtil.calcHazard(configFunction, siteFunction); - var deagg = Disaggregation.atImls(hazard, data.imtImls, ServletUtil.CALC_EXECUTOR); + var disagg = Disaggregation.atImls(hazard, data.imtImls, ServletUtil.CALC_EXECUTOR); return new ResultBuilder() - .deagg(deagg) + .disagg(disagg) .requestData(data) .timer(timer) .url(request) @@ -190,32 +189,32 @@ public final class DeaggEpsilonService { final String εlabel = "% Contribution to Hazard"; final Object εbins; - ResponseMetadata(Disaggregation deagg, RequestData request, Imt imt) { + ResponseMetadata(Disaggregation disagg, RequestData request, Imt imt) { this.models = new SourceModel(ServletUtil.model()); this.longitude = request.longitude; this.latitude = request.latitude; this.imt = imt.toString(); this.iml = imt.period(); this.vs30 = request.vs30; - this.εbins = deagg.εBins(); + this.εbins = disagg.εBins(); } } private static final class ResponseData { final Object server; - final List<DeaggResponse> deaggs; + final List<DisaggResponse> disaggs; - ResponseData(Object server, List<DeaggResponse> deaggs) { + ResponseData(Object server, List<DisaggResponse> deaggs) { this.server = server; - this.deaggs = deaggs; + this.disaggs = deaggs; } } - private static final class DeaggResponse { + private static final class DisaggResponse { final ResponseMetadata metadata; final Object data; - DeaggResponse(ResponseMetadata metadata, Object data) { + DisaggResponse(ResponseMetadata metadata, Object data) { this.metadata = metadata; this.data = data; } @@ -225,10 +224,10 @@ public final class DeaggEpsilonService { String url; Stopwatch timer; RequestData request; - Disaggregation deagg; + Disaggregation disagg; - ResultBuilder deagg(Disaggregation deagg) { - this.deagg = deagg; + ResultBuilder disagg(Disaggregation disagg) { + this.disagg = disagg; return this; } @@ -248,16 +247,16 @@ public final class DeaggEpsilonService { } Response<RequestData, ResponseData> build() { - ImmutableList.Builder<DeaggResponse> responseListBuilder = ImmutableList.builder(); + ImmutableList.Builder<DisaggResponse> responseListBuilder = ImmutableList.builder(); for (Imt imt : request.imtImls.keySet()) { - ResponseMetadata responseData = new ResponseMetadata(deagg, request, imt); - Object deaggs = deagg.toJsonCompact(imt); - DeaggResponse response = new DeaggResponse(responseData, deaggs); + ResponseMetadata responseData = new ResponseMetadata(disagg, request, imt); + Object disaggs = disagg.toJsonCompact(imt); + DisaggResponse response = new DisaggResponse(responseData, disaggs); responseListBuilder.add(response); } - List<DeaggResponse> responseList = responseListBuilder.build(); + List<DisaggResponse> responseList = responseListBuilder.build(); Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer); var response = new ResponseData(server, responseList); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java index 2c4c8951b..a6273aa43 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java @@ -69,7 +69,7 @@ public class ServletUtil { private static HazardModel HAZARD_MODEL; static { - /* TODO modified for deagg-epsilon branch; should be context var */ + /* TODO modified for disagg-epsilon branch; should be context var */ THREAD_COUNT = getRuntime().availableProcessors(); CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT)); TASK_EXECUTOR = Executors.newSingleThreadExecutor(); -- GitLab From 1c578a2c8272a77d3b57d7174dbee1ddca656cc9 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 27 Oct 2021 15:19:26 -0600 Subject: [PATCH 12/17] removed disagg epsilon service --- .../nshmp/www/DisaggEpsilonController.java | 137 --------- .../www/services/DisaggEpsilonService.java | 267 ------------------ 2 files changed, 404 deletions(-) delete mode 100644 src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java delete mode 100644 src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java deleted file mode 100644 index 0c013900b..000000000 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/DisaggEpsilonController.java +++ /dev/null @@ -1,137 +0,0 @@ -package gov.usgs.earthquake.nshmp.www; - -import java.util.EnumMap; - -import javax.inject.Inject; - -import gov.usgs.earthquake.nshmp.gmm.Imt; -import gov.usgs.earthquake.nshmp.www.services.DisaggEpsilonService; -import gov.usgs.earthquake.nshmp.www.services.DisaggEpsilonService.Query; -import gov.usgs.earthquake.nshmp.www.services.HazardService; -import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.MediaType; -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Get; -import io.micronaut.http.annotation.PathVariable; -import io.micronaut.http.annotation.QueryValue; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.tags.Tag; - -@Tag(name = "Epsilon Disaggregation Service (experimental)") -@Controller("/disagg-epsilon") -public class DisaggEpsilonController { - - @Inject - private NshmpMicronautServlet servlet; - - @Get(uri = "/usage", produces = MediaType.APPLICATION_JSON) - public HttpResponse<String> doGetUsage(HttpRequest<?> request) { - return HazardService.handleDoGetMetadata(request); - } - - /** - * GET method to return usage or hazard curves, query based. - * - * @param request The HTTP request - * @param longitude Longitude (in decimal degrees) ([-360, 360]) - * @param latitude Latitude (in decimal degrees) ([-90, 90]) - * @param vs30 The site soil class - * @param basin Whether to use basin service - */ - @Operation( - summary = "Compute epsilon disaggregation", - description = "Compute epsilon disaggregation given longitude, latitude, Vs30 and IMT-IML map", - operationId = "disaggEpsilon_doGetDisaggEpsilon") - @ApiResponse( - description = "Epsilon disaggregations", - responseCode = "200") - @Get(uri = "{?longitude,latitude,vs30,basin}") - public HttpResponse<String> doGetDisaggEpsilon( - HttpRequest<?> request, - @Schema( - required = true, - minimum = "-360", - maximum = "360") - @QueryValue - @Nullable - Double longitude, - @Schema( - required = true, - minimum = "-90", - maximum = "90") - @QueryValue - @Nullable - Double latitude, - @Schema(required = true) - @QueryValue - @Nullable - Integer vs30, - @Schema(defaultValue = "false") - @QueryValue - @Nullable - Boolean basin, - @Schema( - defaultValue = "{\"SA0P01\": 0.01}", - required = true) - @QueryValue - @Nullable - EnumMap<Imt, Double> imtImls) { - var query = new Query(request, longitude, latitude, vs30, basin); - return DisaggEpsilonService.handleDoGetDisaggEpsilon(request, query); - } - - /** - * GET method to return usage or hazard curves, slash based. - * - * @param request The HTTP request - * @param longitude Longitude (in decimal degrees) ([-360, 360]) - * @param latitude Latitude (in decimal degrees) ([-90, 90]) - * @param vs30 The site soil class - * @param basin Whether to use basin service - */ - @Operation( - summary = "Compute epsilon disaggregation", - description = "Compute epsilon disaggregation given longitude, latitude, Vs30 and IMT-IML map", - operationId = "disaggEpsilon_doGetDisaggEpsilonSlash") - @ApiResponse( - description = "Epsilon disaggregations", - responseCode = "200") - @Get(uri = "{/longitude}{/latitude}{/vs30}{/basin}") - public HttpResponse<String> doGetDisaggEpsilonSlash( - HttpRequest<?> request, - @Schema( - required = true, - minimum = "-360", - maximum = "360") - @PathVariable - @Nullable - Double longitude, - @Schema( - required = true, - minimum = "-90", - maximum = "90") - @PathVariable - @Nullable - Double latitude, - @Schema(required = true) - @PathVariable - @Nullable - Integer vs30, - @Schema(defaultValue = "false") - @PathVariable - @Nullable - Boolean basin, - @Schema( - defaultValue = "{\"SA0P01\": 0.01}", - required = true) - @QueryValue - @Nullable - EnumMap<Imt, Double> imtImls) { - return doGetDisaggEpsilon(request, longitude, latitude, vs30, basin, null); - } - -} diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java deleted file mode 100644 index 283b3e13d..000000000 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/DisaggEpsilonService.java +++ /dev/null @@ -1,267 +0,0 @@ -package gov.usgs.earthquake.nshmp.www.services; - -import java.net.URL; -import java.util.EnumMap; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.ExecutionException; -import java.util.function.Function; - -import javax.inject.Singleton; - -import com.google.common.base.Stopwatch; -import com.google.common.collect.ImmutableList; - -import gov.usgs.earthquake.nshmp.calc.CalcConfig; -import gov.usgs.earthquake.nshmp.calc.Disaggregation; -import gov.usgs.earthquake.nshmp.calc.Site; -import gov.usgs.earthquake.nshmp.geo.Location; -import gov.usgs.earthquake.nshmp.gmm.Imt; -import gov.usgs.earthquake.nshmp.model.HazardModel; -import gov.usgs.earthquake.nshmp.www.DisaggEpsilonController; -import gov.usgs.earthquake.nshmp.www.Response; -import gov.usgs.earthquake.nshmp.www.WsUtils; -import gov.usgs.earthquake.nshmp.www.meta.Metadata; -import gov.usgs.earthquake.nshmp.www.meta.Status; -import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.Key; -import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; -import io.micronaut.context.annotation.Value; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; - -/** - * Hazard disaggregation handler for {@link DisaggEpsilonController}. - * - * @author U.S. Geological Survey - */ -@Singleton -public final class DisaggEpsilonService { - - /* Developer notes: See HazardService. */ - - private static final String NAME = "Epsilon Disaggregation"; - - @Value("${nshmp-haz.basin-service-url}") - private static URL basinUrl; - - /** - * Handler for {@link DisaggEpsilonController#doGetDisaggEpsilon}. Returns the - * usage or the disagg result. - * - * @param query The query - * @param urlHelper The URL helper - */ - public static HttpResponse<String> handleDoGetDisaggEpsilon(HttpRequest<?> request, Query query) { - try { - var timer = ServletUtil.timer(); - - if (query.isNull()) { - return HazardService.handleDoGetMetadata(request); - } - - query.checkValues(); - var data = new RequestData(query, query.vs30); - var response = process(request, data); - var svcResponse = ServletUtil.GSON.toJson(response); - return HttpResponse.ok(svcResponse); - } catch (Exception e) { - return ServicesUtil.handleError(e, NAME, request.getUri().getPath()); - } - } - - /* Create map of IMT to disagg IML. */ - private static EnumMap<Imt, Double> readImtsFromQuery(HttpRequest<?> request) { - var imtImls = new EnumMap<Imt, Double>(Imt.class); - for (var param : request.getParameters().asMap().entrySet()) { - if (isImtParam(param.getKey())) { - imtImls.put( - Imt.valueOf(param.getKey()), - Double.valueOf(param.getValue().get(0))); - } - } - return imtImls; - } - - private static boolean isImtParam(String key) { - return key.equals("PGA") || key.startsWith("SA"); - } - - private static Response<RequestData, ResponseData> process( - HttpRequest<?> request, - RequestData data) - throws InterruptedException, ExecutionException { - var configFunction = new ConfigFunction(); - var siteFunction = new SiteFunction(data); - var timer = Stopwatch.createStarted(); - var hazard = ServicesUtil.calcHazard(configFunction, siteFunction); - var disagg = Disaggregation.atImls(hazard, data.imtImls, ServletUtil.CALC_EXECUTOR); - return new ResultBuilder() - .disagg(disagg) - .requestData(data) - .timer(timer) - .url(request) - .build(); - } - - public static class Query extends HazardService.Query { - final EnumMap<Imt, Double> imtImls; - final Boolean basin; - - public Query( - HttpRequest<?> request, - Double longitude, - Double latitude, - Integer vs30, - Boolean basin) { - super(longitude, latitude, vs30); - imtImls = readImtsFromQuery(request); - this.basin = basin == null ? false : basin; - } - - @Override - public boolean isNull() { - return super.isNull() && vs30 == null; - } - - @Override - public void checkValues() { - super.checkValues(); - WsUtils.checkValue(Key.BASIN, basin); - } - } - - static class ConfigFunction implements Function<HazardModel, CalcConfig> { - @Override - public CalcConfig apply(HazardModel model) { - var configBuilder = CalcConfig.copyOf(model.config()); - return configBuilder.build(); - } - } - - /* - * Developer notes: - * - * We're opting here to fetch basin terms ourselves. If we were to set the - * basin provider in the config, which requires additions to config, the URL - * is tested every time a site is created for a servlet request. While this - * worked for maps it's not good here. - * - * Site has logic for parsing the basin service response, which perhaps it - * shouldn't. TODO is it worth decomposing data objects and services - */ - static class SiteFunction implements Function<CalcConfig, Site> { - final RequestData data; - - private SiteFunction(RequestData data) { - this.data = data; - } - - @Override - public Site apply(CalcConfig config) { - return Site.builder() - .location(Location.create(data.longitude, data.latitude)) - .dataService(data.basin ? Optional.of(basinUrl) : Optional.empty()) - .vs30(data.vs30) - .build(); - } - } - - static final class RequestData extends HazardService.RequestDataOld { - final EnumMap<Imt, Double> imtImls; - final boolean basin; - - RequestData(Query query, double vs30) { - super(query, vs30); - imtImls = query.imtImls; - basin = query.basin; - } - } - - private static final class ResponseMetadata { - final SourceModel models; - final double longitude; - final double latitude; - final String imt; - final double iml; - final double vs30; - final String rlabel = "Closest Distance, rRup (km)"; - final String mlabel = "Magnitude (Mw)"; - final String εlabel = "% Contribution to Hazard"; - final Object εbins; - - ResponseMetadata(Disaggregation disagg, RequestData request, Imt imt) { - this.models = new SourceModel(ServletUtil.model()); - this.longitude = request.longitude; - this.latitude = request.latitude; - this.imt = imt.toString(); - this.iml = imt.period(); - this.vs30 = request.vs30; - this.εbins = disagg.εBins(); - } - } - - private static final class ResponseData { - final Object server; - final List<DisaggResponse> disaggs; - - ResponseData(Object server, List<DisaggResponse> deaggs) { - this.server = server; - this.disaggs = deaggs; - } - } - - private static final class DisaggResponse { - final ResponseMetadata metadata; - final Object data; - - DisaggResponse(ResponseMetadata metadata, Object data) { - this.metadata = metadata; - this.data = data; - } - } - - static final class ResultBuilder { - String url; - Stopwatch timer; - RequestData request; - Disaggregation disagg; - - ResultBuilder disagg(Disaggregation disagg) { - this.disagg = disagg; - return this; - } - - ResultBuilder url(HttpRequest<?> request) { - url = request.getUri().getPath(); - return this; - } - - ResultBuilder timer(Stopwatch timer) { - this.timer = timer; - return this; - } - - ResultBuilder requestData(RequestData request) { - this.request = request; - return this; - } - - Response<RequestData, ResponseData> build() { - ImmutableList.Builder<DisaggResponse> responseListBuilder = ImmutableList.builder(); - - for (Imt imt : request.imtImls.keySet()) { - ResponseMetadata responseData = new ResponseMetadata(disagg, request, imt); - Object disaggs = disagg.toJsonCompact(imt); - DisaggResponse response = new DisaggResponse(responseData, disaggs); - responseListBuilder.add(response); - } - - List<DisaggResponse> responseList = responseListBuilder.build(); - Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer); - var response = new ResponseData(server, responseList); - - return new Response<>(Status.SUCCESS, NAME, request, response, url); - } - } - -} -- GitLab From 49dbf00a84000b44f309f6e430a9fa80799eeb66 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 3 Nov 2021 09:55:37 -0600 Subject: [PATCH 13/17] update lib tag --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c6e6f3abb..c43d8bfaa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ junitVersion = 5.5.2 micronautVersion = 2.4.1 mnPluginVersion = 1.4.2 nodeVersion = 3.0.1 -nshmpLibVersion = 0.7.7 +nshmpLibVersion = 0.7.3 nshmpWsUtilsVersion = 0.1.2 shadowVersion = 5.2.0 spotbugsVersion = 4.2.4 -- GitLab From 8f22b37bbbd82ddeed5685875b23169ba26723b9 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 3 Nov 2021 09:55:56 -0600 Subject: [PATCH 14/17] update code.json --- code.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code.json b/code.json index 183cbc7e3..e2e1203db 100644 --- a/code.json +++ b/code.json @@ -3,7 +3,7 @@ "name": "nshmp-haz", "organization": "U.S. Geological Survey", "description": "NSHMP command line applications and web services", - "version": "2.0.0", + "version": "main", "status": "Development", "permissions": { -- GitLab From 9fc5d61f45b160c7ced2c7889b811053b7ac6ea3 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 3 Nov 2021 09:57:21 -0600 Subject: [PATCH 15/17] lib site updates --- .../gov/usgs/earthquake/nshmp/DisaggCalc.java | 6 +++--- .../gov/usgs/earthquake/nshmp/DisaggEpsilon.java | 15 ++++++++------- .../gov/usgs/earthquake/nshmp/HazardCalc.java | 9 +++++---- .../java/gov/usgs/earthquake/nshmp/RateCalc.java | 7 +++---- .../usgs/earthquake/nshmp/www/meta/MetaUtil.java | 12 ++++++------ .../nshmp/www/services/HazardService.java | 4 +--- 6 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java index dccbe7cd4..4c8224c72 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -22,7 +23,6 @@ import gov.usgs.earthquake.nshmp.calc.Hazard; import gov.usgs.earthquake.nshmp.calc.HazardCalcs; import gov.usgs.earthquake.nshmp.calc.HazardExport; import gov.usgs.earthquake.nshmp.calc.Site; -import gov.usgs.earthquake.nshmp.calc.Sites; import gov.usgs.earthquake.nshmp.calc.ThreadCount; import gov.usgs.earthquake.nshmp.internal.Logging; import gov.usgs.earthquake.nshmp.model.HazardModel; @@ -97,7 +97,7 @@ public class DisaggCalc { log.info(config.toString()); log.info(""); - Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log); + List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log); log.info("Sites: " + sites); double returnPeriod = config.disagg.returnPeriod; @@ -128,7 +128,7 @@ public class DisaggCalc { private static Path calc( HazardModel model, CalcConfig config, - Sites sites, + List<Site> sites, double returnPeriod, Logger log) throws IOException { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java index f0c60f602..066a6fca2 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java @@ -219,7 +219,8 @@ public class DisaggEpsilon { * returns the path to the directory where results were written. * * TODO consider refactoring to supply an Optional<Double> return period to - * HazardCalc.calc() that will trigger disaggregations if the value is present. + * HazardCalc.calc() that will trigger disaggregations if the value is + * present. */ private static Path calc( HazardModel model, @@ -240,7 +241,7 @@ public class DisaggEpsilon { log.info(PROGRAM + ": calculating ..."); Path outDir = createOutputDir(config.output.directory); - Path siteDir = outDir.resolve("vs30-" + (int) sites.get(0).vs30); + Path siteDir = outDir.resolve("vs30-" + (int) sites.get(0).vs30()); Files.createDirectory(siteDir); Stopwatch stopwatch = Stopwatch.createStarted(); @@ -267,8 +268,8 @@ public class DisaggEpsilon { String filename = String.format( "edisagg_%.2f_%.2f.json", - site.location.longitude, - site.location.latitude); + site.location().longitude, + site.location().latitude); Path resultPath = siteDir.resolve(filename); Writer writer = Files.newBufferedWriter(resultPath); @@ -303,11 +304,11 @@ public class DisaggEpsilon { ResponseData(List<String> models, Site site, Imt imt, double iml) { this.models = models; - this.longitude = site.location.longitude; - this.latitude = site.location.latitude; + this.longitude = site.location().longitude; + this.latitude = site.location().latitude; this.imt = imt.toString(); this.iml = iml; - this.vs30 = site.vs30; + this.vs30 = site.vs30(); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java index c6a8fb44e..8218dc569 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java @@ -9,6 +9,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; +import java.util.List; import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -107,7 +108,7 @@ public class HazardCalc { log.info(config.toString()); log.info(""); - Sites sites = readSites(args[1], config, model.siteData(), log); + List<Site> sites = readSites(args[1], config, model.siteData(), log); log.info("Sites: " + sites); Path out = calc(model, config, sites, log); @@ -130,7 +131,7 @@ public class HazardCalc { } } - static Sites readSites( + static List<Site> readSites( String arg, CalcConfig defaults, SiteData siteData, @@ -145,7 +146,7 @@ public class HazardCalc { try { return fname.endsWith(".csv") ? Sites.fromCsv(path, defaults, siteData) - : Sites.fromJson(path, defaults, siteData); + : Sites.fromGeoJson(path, defaults, siteData); } catch (IOException ioe) { throw new IllegalArgumentException( "Error parsing sites file [%s]; see sites file documentation"); @@ -159,7 +160,7 @@ public class HazardCalc { private static Path calc( HazardModel model, CalcConfig config, - Sites sites, + List<Site> sites, Logger log) throws IOException, InterruptedException, ExecutionException { int threadCount = config.performance.threadCount.value(); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java index cc3118f47..b923a90b8 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java @@ -27,7 +27,6 @@ import gov.usgs.earthquake.nshmp.calc.CalcConfig; import gov.usgs.earthquake.nshmp.calc.EqRate; import gov.usgs.earthquake.nshmp.calc.EqRateExport; import gov.usgs.earthquake.nshmp.calc.Site; -import gov.usgs.earthquake.nshmp.calc.Sites; import gov.usgs.earthquake.nshmp.calc.ThreadCount; import gov.usgs.earthquake.nshmp.internal.Logging; import gov.usgs.earthquake.nshmp.model.HazardModel; @@ -107,7 +106,7 @@ public class RateCalc { log.info(config.toString()); log.info(""); - Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log); + List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log); log.info("Sites: " + sites); Path out = calc(model, config, sites, log); @@ -137,7 +136,7 @@ public class RateCalc { private static Path calc( HazardModel model, CalcConfig config, - Sites sites, + List<Site> sites, Logger log) throws IOException, ExecutionException, InterruptedException { ThreadCount threadCount = config.performance.threadCount; @@ -170,7 +169,7 @@ public class RateCalc { private static EqRateExport concurrentCalc( HazardModel model, CalcConfig config, - Sites sites, + List<Site> sites, Logger log, ListeningExecutorService executor) throws InterruptedException, ExecutionException, IOException { diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java index b2153504d..74c7c7ab4 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java @@ -33,15 +33,15 @@ public final class MetaUtil { public JsonElement serialize(Site site, Type typeOfSrc, JsonSerializationContext context) { JsonObject loc = new JsonObject(); - loc.addProperty("latitude", Maths.round(site.location.latitude, 3)); - loc.addProperty("longitude", Maths.round(site.location.longitude, 3)); + loc.addProperty("latitude", Maths.round(site.location().latitude, 3)); + loc.addProperty("longitude", Maths.round(site.location().longitude, 3)); JsonObject json = new JsonObject(); json.add("location", loc); - json.addProperty("vs30", site.vs30); - json.addProperty("vsInfered", site.vsInferred); - json.addProperty("z1p0", Double.isNaN(site.z1p0) ? null : site.z1p0); - json.addProperty("z2p5", Double.isNaN(site.z2p5) ? null : site.z2p5); + json.addProperty("vs30", site.vs30()); + json.addProperty("vsInfered", site.vsInferred()); + json.addProperty("z1p0", Double.isNaN(site.z1p0()) ? null : site.z1p0()); + json.addProperty("z2p5", Double.isNaN(site.z2p5()) ? null : site.z2p5()); return json; } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java index 10261bbff..a439c75bb 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java @@ -35,7 +35,6 @@ import gov.usgs.earthquake.nshmp.www.meta.Status; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceRequestData; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; - import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; @@ -116,10 +115,9 @@ public final class HazardService { this.data = data; } - @Override + @Override // TODO this needs to pick up SiteData public Site apply(CalcConfig config) { return Site.builder() - .dataService(config.siteData.service) .location(Location.create(data.longitude, data.latitude)) .vs30(data.vs30) .build(); -- GitLab From e1889d9dce9f6d9fb3f610b04c68e34332637b22 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 3 Nov 2021 10:26:04 -0600 Subject: [PATCH 16/17] markdown correction --- docs/pages/Model-Structure.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/Model-Structure.md b/docs/pages/Model-Structure.md index 9bef2129c..e5f15da23 100644 --- a/docs/pages/Model-Structure.md +++ b/docs/pages/Model-Structure.md @@ -13,7 +13,7 @@ for representing model data and relationships and is supported in most programmi Earthquake source files are organized by tectonic setting: `active-crust`, `stable-crust`, `subduction`, and `volcanic`. The crustal and volcanic tectonic settings support `fault`, `grid`, and `zone` source types. The volcanic tectonic setting additionally supports a `decollement` -source type. The subduction tectonic setting supports `interface` and `slab` source types. +source type. The subduction tectonic setting supports `interface` and `slab` source types. The root of a model must include `model-info.json` and _may_ include a `calc-config.json` that specifies any custom default [calculation configuration](./Calculation-Configuration.md) settings -- GitLab From 18cbab9e9cb3089fdccf1b5ab3bcf8f2092272d8 Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Wed, 3 Nov 2021 10:28:12 -0600 Subject: [PATCH 17/17] formatting --- .../gov/usgs/earthquake/nshmp/www/services/HazardService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java index a439c75bb..356b1ff6f 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java @@ -35,6 +35,7 @@ import gov.usgs.earthquake.nshmp.www.meta.Status; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData; import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceRequestData; import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel; + import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; -- GitLab