From e006046f500473ffd98d6cf68e302a72a5f37e6e Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 13 Jul 2022 10:13:25 -0600
Subject: [PATCH] Add total mfd

---
 .../gov/usgs/earthquake/nshmp/model/Models.java     |  6 +++++-
 .../gov/usgs/earthquake/nshmp/model/RuptureSet.java | 13 +++++++------
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/Models.java b/src/main/java/gov/usgs/earthquake/nshmp/model/Models.java
index 5f9b8a6b..c84537fd 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/Models.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/Models.java
@@ -15,7 +15,9 @@ import java.util.stream.Collectors;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
+import gov.usgs.earthquake.nshmp.data.XySequence;
 import gov.usgs.earthquake.nshmp.mfd.Mfd;
+import gov.usgs.earthquake.nshmp.mfd.Mfds;
 import gov.usgs.earthquake.nshmp.model.SourceTree.Leaf;
 import gov.usgs.earthquake.nshmp.tree.Branch;
 
@@ -70,7 +72,6 @@ public class Models {
 
     // System.out.println(GSON.toJson(tree(model, 2591))); // Stonewall Ant.
     System.out.println(GSON.toJson(tree(model, 2535))); // Steens
-
   }
 
   /**
@@ -156,6 +157,7 @@ public class Models {
     final String path;
     final TectonicSetting setting;
     final SourceType type;
+    final XySequence totalMfd;
     final List<SourceBranch> branches;
 
     Tree(SourceTree tree, Path modelRoot) {
@@ -164,6 +166,8 @@ public class Models {
       this.path = modelRoot.relativize(tree.path()).toString();
       this.setting = tree.setting();
       this.type = tree.type();
+      this.totalMfd = Mfds.combine(tree.stream().map(branch -> branch.value().totalMfd())
+          .collect(Collectors.toList())).data();
 
       List<SourceBranch> branches = new ArrayList<>();
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/RuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/RuptureSet.java
index 420bd546..b3fcaa53 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/RuptureSet.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/RuptureSet.java
@@ -16,6 +16,13 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  */
 public interface RuptureSet<T extends Source> extends Iterable<T> {
 
+  /**
+   * Return the total Mfd.
+   */
+  default Mfd totalMfd() {
+    return ModelTrees.reduceMfdTree(mfdTree());
+  };
+
   /**
    * The display name of the rupture set.
    */
@@ -97,12 +104,6 @@ public interface RuptureSet<T extends Source> extends Iterable<T> {
    */
   Predicate<T> distanceFilter(Location loc, double distance);
 
-  /**
-   * Return the total
-   * @return
-   */
-  // Mfd mfd();
-
   // instead of Source
   // interface .Model
 
-- 
GitLab