From fcf8b93765010c84997c69d7ad6d7b06f2f4efef Mon Sep 17 00:00:00 2001 From: Peter Powers <pmpowers@usgs.gov> Date: Tue, 12 Nov 2024 11:38:04 -0700 Subject: [PATCH] keep modelData in ruptureSet builders --- .../nshmp/model/ClusterRuptureSet.java | 6 ---- .../nshmp/model/FaultRuptureSet.java | 31 ++++++++-------- .../nshmp/model/InterfaceRuptureSet.java | 29 ++++++++------- .../nshmp/model/ZoneRuptureSet.java | 36 ++++++++++--------- 4 files changed, 53 insertions(+), 49 deletions(-) diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ClusterRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ClusterRuptureSet.java index 85c9e9ec..cb68cd9f 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/model/ClusterRuptureSet.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ClusterRuptureSet.java @@ -60,14 +60,11 @@ public class ClusterRuptureSet extends AbstractRuptureSet<ClusterSource> { * */ - @Deprecated - final ModelData data; // holds cluster rate tree private final List<ClusterSource> source; private final LogicTree<Mfd> mfdTree; private ClusterRuptureSet(Builder builder) { super(builder); - this.data = builder.data; this.source = List.of(builder.source); this.mfdTree = builder.mfdTree; } @@ -177,7 +174,6 @@ public class ClusterRuptureSet extends AbstractRuptureSet<ClusterSource> { /* Single use builder */ static class Builder extends AbstractRuptureSet.Builder { - private ModelData data; // holds cluster rate-tree private ClusterSource source; private LogicTree<Mfd> mfdTree; @@ -199,7 +195,6 @@ public class ClusterRuptureSet extends AbstractRuptureSet<ClusterSource> { /* Set MFD helper data. */ Builder modelData(ModelData data) { - this.data = checkNotNull(data); super.setting(data.tectonicSetting()); super.gmms(data.gmms()); return this; @@ -213,7 +208,6 @@ public class ClusterRuptureSet extends AbstractRuptureSet<ClusterSource> { void validateAndInit(String label) { validateState(label); - checkNotNull(data, "%s model data", label); checkNotNull(source, "%s cluster source", label); } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java index 255d9390..7dca98ac 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java @@ -70,7 +70,6 @@ public class FaultRuptureSet extends AbstractRuptureSet<FaultSource> { * */ final SourceFeature.NshmFault feature; - final ModelData data; // is this needed beyond the builder? final LogicTree<Mfd> mfdTree; final List<Boolean> mfdFloats; // 1:1 with mfdTree branches @@ -79,28 +78,21 @@ public class FaultRuptureSet extends AbstractRuptureSet<FaultSource> { final List<Integer> sectionIds; // reference: actually needed? private final List<FaultSource> source; // single source list + private final boolean useDistanceFilterUpdate; + FaultRuptureSet(Builder builder) { super(builder); this.feature = builder.feature; - this.data = builder.data; this.mfdTree = builder.mfdTree; this.mfdTotal = builder.mfdTotal; this.sectionIds = builder.sectionIds; - FaultSource source = createSource(); - this.mfdFloats = List.copyOf(source.floats); - this.source = List.of(source); - } + this.mfdFloats = List.copyOf(builder.source.floats); + this.source = List.of(builder.source); - private FaultSource createSource() { - return new FaultSource.Builder() - .feature(feature) - .config(data.sourceConfig().asFault()) - .mfdTree(mfdTree) - .mfdTotal(mfdTotal) - .build(); + this.useDistanceFilterUpdate = builder.data.useDistanceFilterUpdate(); } @Override @@ -130,7 +122,7 @@ public class FaultRuptureSet extends AbstractRuptureSet<FaultSource> { @Override public Predicate<FaultSource> distanceFilter(Location loc, double distance) { - return data.useDistanceFilterUpdate() + return useDistanceFilterUpdate ? new DistanceFilterUpdate(loc, distance) : new DistanceFilter(loc, distance); } @@ -199,6 +191,7 @@ public class FaultRuptureSet extends AbstractRuptureSet<FaultSource> { static class Builder extends AbstractRuptureSet.Builder { private SourceFeature.NshmFault feature; + private FaultSource source; private ModelData data; private LogicTree<Mfd.Properties> mfdPropsTree; @@ -289,6 +282,7 @@ public class FaultRuptureSet extends AbstractRuptureSet<FaultSource> { mfdTree = createMfdTree(mfdPropsTree, moRateTree, mfdConfig); mfdTotal = ModelTrees.reduceMfdTree(mfdTree); + source = createSource(); } private SourceFeature.NshmFault createFeature() { @@ -354,6 +348,15 @@ public class FaultRuptureSet extends AbstractRuptureSet<FaultSource> { return new SourceFeature.NshmFault(feature); } + private FaultSource createSource() { + return new FaultSource.Builder() + .feature(feature) + .config(data.sourceConfig().asFault()) + .mfdTree(mfdTree) + .mfdTotal(mfdTotal) + .build(); + } + /* For single feature rupture sets. */ private void updateState(Properties.Builder props, List<String> states) { String state = (String) ruptureProps.orElseThrow().get(Key.STATE); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/InterfaceRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/InterfaceRuptureSet.java index 1351e523..8a2ec1b5 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/model/InterfaceRuptureSet.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/model/InterfaceRuptureSet.java @@ -33,31 +33,24 @@ public class InterfaceRuptureSet extends AbstractRuptureSet<InterfaceSource> { /* May be original interface section or stitched. */ final SourceFeature.Interface feature; - final ModelData data; final LogicTree<Mfd> mfdTree; final Mfd mfdTotal; private final List<InterfaceSource> source; + private final boolean useDistanceFilterUpdate; + InterfaceRuptureSet(Builder builder) { super(builder); this.feature = builder.feature; - this.data = builder.data; this.mfdTree = builder.mfdTree; this.mfdTotal = builder.mfdTotal; - this.source = List.of(createSource()); - } + this.source = List.of(builder.source); - private InterfaceSource createSource() { - return new InterfaceSource.Builder() - .feature(feature) - .config(data.sourceConfig().asInterface()) - .mfdTree(mfdTree) - .mfdTotal(mfdTotal) - .build(); + this.useDistanceFilterUpdate = builder.data.useDistanceFilterUpdate(); } @Override @@ -87,7 +80,7 @@ public class InterfaceRuptureSet extends AbstractRuptureSet<InterfaceSource> { @Override public Predicate<InterfaceSource> distanceFilter(Location loc, double distance) { - return data.useDistanceFilterUpdate() + return useDistanceFilterUpdate ? new DistanceFilterUpdate(loc, distance) : new DistanceFilter(loc, distance); } @@ -179,6 +172,7 @@ public class InterfaceRuptureSet extends AbstractRuptureSet<InterfaceSource> { static class Builder extends AbstractRuptureSet.Builder { private SourceFeature.Interface feature; + private InterfaceSource source; private ModelData data; private List<Integer> sectionIds; @@ -247,6 +241,7 @@ public class InterfaceRuptureSet extends AbstractRuptureSet<InterfaceSource> { mfdTotal = ModelTrees.reduceMfdTree(mfdTree); feature = createFeature(); + source = createSource(); } private SourceFeature.Interface createFeature() { @@ -305,6 +300,16 @@ public class InterfaceRuptureSet extends AbstractRuptureSet<InterfaceSource> { toList(), LocationList::copyOf)); } + + private InterfaceSource createSource() { + return new InterfaceSource.Builder() + .feature(feature) + .config(data.sourceConfig().asInterface()) + .mfdTree(mfdTree) + .mfdTotal(mfdTotal) + .build(); + } + } private static LogicTree<Mfd> buildMfdTree( diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java index 9b6697eb..258a1f90 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java @@ -35,7 +35,6 @@ import gov.usgs.earthquake.nshmp.tree.Trees; class ZoneRuptureSet extends AbstractRuptureSet<PointSource> { private final SourceFeature.Zone feature; - private final ModelData data; private final List<Location> locations; private final List<Mfd> mfds; @@ -59,27 +58,12 @@ class ZoneRuptureSet extends AbstractRuptureSet<PointSource> { ZoneRuptureSet(Builder builder) { super(builder); this.feature = builder.feature; - this.data = builder.data; this.locations = builder.locations; this.mfdsTree = builder.mfdsTree; this.mfdTree = builder.mfdTree; this.mfds = builder.mfds; // TODO handle SS weight - this.delegate = createRuptureSet(); - } - - private GridRuptureSet createRuptureSet() { - GridRuptureSet grid = GridLoader.createGrid( - feature.name, - feature.id, - data, - SourceType.ZONE, - feature, - locations, - mfds, - mfdsTree, - Optional.empty()); - return grid; + this.delegate = builder.gridRuptureSet; } @Override @@ -139,6 +123,8 @@ class ZoneRuptureSet extends AbstractRuptureSet<PointSource> { private LogicTree<double[]> ratesTree; + private GridRuptureSet gridRuptureSet; + private Builder() { super(SourceType.ZONE); } @@ -204,6 +190,7 @@ class ZoneRuptureSet extends AbstractRuptureSet<PointSource> { mfds = createTotalMfds(); mfdsTree = createMfdsTree(); mfdTree = Trees.transform(mfdsTree, Mfds::combine, Optional.empty()); + gridRuptureSet = createRuptureSet(); } private void initLocationAndRateLists() { @@ -299,5 +286,20 @@ class ZoneRuptureSet extends AbstractRuptureSet<PointSource> { } return mfdsTree.build(); } + + private GridRuptureSet createRuptureSet() { + GridRuptureSet grid = GridLoader.createGrid( + feature.name, + feature.id, + data, + SourceType.ZONE, + feature, + locations, + mfds, + mfdsTree, + Optional.empty()); + return grid; + } + } } -- GitLab