From a1bf1d6ad3162ed4eda10cf4de0aa1cbf2ea3dee Mon Sep 17 00:00:00 2001
From: Jason Altekruse <jaltekruse@usgs.gov>
Date: Wed, 29 Sep 2021 14:32:32 -0600
Subject: [PATCH] add Set2-Case3 peer test

---
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../active-crust/gmm-config.json              |   5 +
 .../active-crust/gmm-tree.json                |   3 +
 .../models/Set2-Case3a-fast/calc-config.json  |  12 ++
 .../models/Set2-Case3a-fast/model-info.json   |   4 +
 etc/peer/models/Set2-Case3a-fast/sites.csv    |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../Set2-Case3a/active-crust/gmm-config.json  |   5 +
 .../Set2-Case3a/active-crust/gmm-tree.json    |   3 +
 etc/peer/models/Set2-Case3a/calc-config.json  |  12 ++
 etc/peer/models/Set2-Case3a/model-info.json   |   4 +
 etc/peer/models/Set2-Case3a/sites.csv         |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../active-crust/gmm-config.json              |   5 +
 .../active-crust/gmm-tree.json                |   3 +
 .../models/Set2-Case3b-fast/calc-config.json  |  12 ++
 .../models/Set2-Case3b-fast/model-info.json   |   4 +
 etc/peer/models/Set2-Case3b-fast/sites.csv    |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../Set2-Case3b/active-crust/gmm-config.json  |   5 +
 .../Set2-Case3b/active-crust/gmm-tree.json    |   3 +
 etc/peer/models/Set2-Case3b/calc-config.json  |  12 ++
 etc/peer/models/Set2-Case3b/model-info.json   |   4 +
 etc/peer/models/Set2-Case3b/sites.csv         |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../active-crust/gmm-config.json              |   5 +
 .../active-crust/gmm-tree.json                |   3 +
 .../models/Set2-Case3c-fast/calc-config.json  |  12 ++
 .../models/Set2-Case3c-fast/model-info.json   |   4 +
 etc/peer/models/Set2-Case3c-fast/sites.csv    |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../Set2-Case3c/active-crust/gmm-config.json  |   5 +
 .../Set2-Case3c/active-crust/gmm-tree.json    |   3 +
 etc/peer/models/Set2-Case3c/calc-config.json  |  12 ++
 etc/peer/models/Set2-Case3c/model-info.json   |   4 +
 etc/peer/models/Set2-Case3c/sites.csv         |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../active-crust/gmm-config.json              |   5 +
 .../active-crust/gmm-tree.json                |   3 +
 .../models/Set2-Case3d-fast/calc-config.json  |  12 ++
 .../models/Set2-Case3d-fast/model-info.json   |   4 +
 etc/peer/models/Set2-Case3d-fast/sites.csv    |   7 +
 .../fault-sources/fault-config.json           |   7 +
 .../fault-sources/features/fault.geojson      |  21 +++
 .../fault-sources/mfd-config.json             |   6 +
 .../active-crust/fault-sources/mfd-map.json   |  13 ++
 .../fault-sources/source-tree.json            |   6 +
 .../fault-sources/source1/rupture-set.json    |   5 +
 .../active-crust/fault-sources/tree-info.json |   3 +
 .../Set2-Case3d/active-crust/gmm-config.json  |   5 +
 .../Set2-Case3d/active-crust/gmm-tree.json    |   3 +
 etc/peer/models/Set2-Case3d/calc-config.json  |  12 ++
 etc/peer/models/Set2-Case3d/model-info.json   |   4 +
 etc/peer/models/Set2-Case3d/sites.csv         |   7 +
 .../nshmp/model/peer/PeerTests.java           | 136 +++++++++---------
 97 files changed, 804 insertions(+), 68 deletions(-)
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3a-fast/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3a/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3a/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3a/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3b-fast/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3b/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3b/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3b/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3c-fast/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3c/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3c/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3c/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3d-fast/sites.csv
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-config.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/source1/rupture-set.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/gmm-config.json
 create mode 100644 etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json
 create mode 100644 etc/peer/models/Set2-Case3d/calc-config.json
 create mode 100644 etc/peer/models/Set2-Case3d/model-info.json
 create mode 100644 etc/peer/models/Set2-Case3d/sites.csv

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-sources/fault-config.json
new file mode 100644
index 000000000..a9f7a3125
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
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-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
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-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
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-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
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-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
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-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json
new file mode 100644
index 000000000..6a13b46fd
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json
new file mode 100644
index 000000000..a48cdcc70
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "ASK_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3a-fast/calc-config.json b/etc/peer/models/Set2-Case3a-fast/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/model-info.json b/etc/peer/models/Set2-Case3a-fast/model-info.json
new file mode 100644
index 000000000..07da7d081
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3a-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/sites.csv b/etc/peer/models/Set2-Case3a-fast/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json
new file mode 100644
index 000000000..5d731d0b5
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3a/active-crust/gmm-config.json
new file mode 100644
index 000000000..dfe80f553
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json
new file mode 100644
index 000000000..a48cdcc70
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "ASK_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3a/calc-config.json b/etc/peer/models/Set2-Case3a/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3a/model-info.json b/etc/peer/models/Set2-Case3a/model-info.json
new file mode 100644
index 000000000..42cd89f35
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3a",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3a/sites.csv b/etc/peer/models/Set2-Case3a/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
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-sources/fault-config.json
new file mode 100644
index 000000000..a9f7a3125
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
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-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
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-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
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-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
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-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
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-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json
new file mode 100644
index 000000000..6a13b46fd
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json
new file mode 100644
index 000000000..95803bd18
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "BSSA_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3b-fast/calc-config.json b/etc/peer/models/Set2-Case3b-fast/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/model-info.json b/etc/peer/models/Set2-Case3b-fast/model-info.json
new file mode 100644
index 000000000..bb0c7e5e1
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3b-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/sites.csv b/etc/peer/models/Set2-Case3b-fast/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json
new file mode 100644
index 000000000..5d731d0b5
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3b/active-crust/gmm-config.json
new file mode 100644
index 000000000..dfe80f553
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json
new file mode 100644
index 000000000..95803bd18
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "BSSA_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3b/calc-config.json b/etc/peer/models/Set2-Case3b/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3b/model-info.json b/etc/peer/models/Set2-Case3b/model-info.json
new file mode 100644
index 000000000..f5443c831
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3b",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3b/sites.csv b/etc/peer/models/Set2-Case3b/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
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-sources/fault-config.json
new file mode 100644
index 000000000..a9f7a3125
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
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-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
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-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
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-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
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-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
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-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json
new file mode 100644
index 000000000..6a13b46fd
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json
new file mode 100644
index 000000000..d7804711c
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CB_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3c-fast/calc-config.json b/etc/peer/models/Set2-Case3c-fast/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/model-info.json b/etc/peer/models/Set2-Case3c-fast/model-info.json
new file mode 100644
index 000000000..21c15e1b3
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3c-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/sites.csv b/etc/peer/models/Set2-Case3c-fast/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json
new file mode 100644
index 000000000..5d731d0b5
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3c/active-crust/gmm-config.json
new file mode 100644
index 000000000..dfe80f553
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json
new file mode 100644
index 000000000..d7804711c
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CB_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3c/calc-config.json b/etc/peer/models/Set2-Case3c/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3c/model-info.json b/etc/peer/models/Set2-Case3c/model-info.json
new file mode 100644
index 000000000..13a04b53a
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3c",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3c/sites.csv b/etc/peer/models/Set2-Case3c/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
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-sources/fault-config.json
new file mode 100644
index 000000000..a9f7a3125
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
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-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
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-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
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-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
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-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
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-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json
new file mode 100644
index 000000000..6a13b46fd
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json
new file mode 100644
index 000000000..3220a6446
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3d-fast/calc-config.json b/etc/peer/models/Set2-Case3d-fast/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/model-info.json b/etc/peer/models/Set2-Case3d-fast/model-info.json
new file mode 100644
index 000000000..0ef2a77ce
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3d-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/sites.csv b/etc/peer/models/Set2-Case3d-fast/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json
new file mode 100644
index 000000000..5d731d0b5
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson
new file mode 100644
index 000000000..392e88981
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-config.json
new file mode 100644
index 000000000..a0def60f9
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json
new file mode 100644
index 000000000..7c625227e
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json
new file mode 100644
index 000000000..266c40bc6
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
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-sources/source1/rupture-set.json
new file mode 100644
index 000000000..7559252bc
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json
new file mode 100644
index 000000000..18ee12cf4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3d/active-crust/gmm-config.json
new file mode 100644
index 000000000..dfe80f553
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json
new file mode 100644
index 000000000..3220a6446
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3d/calc-config.json b/etc/peer/models/Set2-Case3d/calc-config.json
new file mode 100644
index 000000000..6172c8063
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3d/model-info.json b/etc/peer/models/Set2-Case3d/model-info.json
new file mode 100644
index 000000000..72e9a02e5
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3d",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3d/sites.csv b/etc/peer/models/Set2-Case3d/sites.csv
new file mode 100644
index 000000000..f87b4f6c4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
index e8fdd73fb..5c8b71098 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
@@ -41,6 +41,14 @@ import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2c
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2c_Fast;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2d;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2d_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3a_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3b;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3b_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3c;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3c_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3d;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3d_Fast;
 
 class PeerTests {
 
@@ -285,74 +293,66 @@ class PeerTests {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3a.class)
-  // @DisplayName("Set2 Case3a")
-  // final void set2Case3a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3a_Fast.class)
-  // @DisplayName("Set2 Case3a Fast")
-  // final void set2Case3aF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3b.class)
-  // @DisplayName("Set2 Case3b")
-  // final void set2Case3b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3b_Fast.class)
-  // @DisplayName("Set2 Case3b Fast")
-  // final void set2Case3bF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3c.class)
-  // @DisplayName("Set2 Case3c")
-  // final void set2Case3c(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3c_Fast.class)
-  // @DisplayName("Set2 Case3c Fast")
-  // final void set2Case3cF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3d.class)
-  // @DisplayName("Set2 Case3d")
-  // final void set2Case3d(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3d_Fast.class)
-  // @DisplayName("Set2 Case3d Fast")
-  // final void set2Case3dF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3a.class)
+  @DisplayName("Set2 Case3a")
+  final void set2Case3a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3a_Fast.class)
+  @DisplayName("Set2 Case3a Fast")
+  final void set2Case3aF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3b.class)
+  @DisplayName("Set2 Case3b")
+  final void set2Case3b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3b_Fast.class)
+  @DisplayName("Set2 Case3b Fast")
+  final void set2Case3bF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3c.class)
+  @DisplayName("Set2 Case3c")
+  final void set2Case3c(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3c_Fast.class)
+  @DisplayName("Set2 Case3c Fast")
+  final void set2Case3cF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3d.class)
+  @DisplayName("Set2 Case3d")
+  final void set2Case3d(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3d_Fast.class)
+  @DisplayName("Set2 Case3d Fast")
+  final void set2Case3dF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
   // @Disabled
   // @ParameterizedTest(name = "{0}, Site={index}")
   // @ArgumentsSource(Set2Case4a.class)
-- 
GitLab