diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/EqRateExport.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/EqRateExport.java index 1c1c4159278fb11b49485ed4e27cfc416dd870ff..3629306b7991b226f375ac5c0c3f5903c1b7ae4f 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/calc/EqRateExport.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/EqRateExport.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import java.util.OptionalDouble; import java.util.function.Function; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -63,7 +64,7 @@ public final class EqRateExport { boolean rates = config.rate.valueFormat == ValueFormat.ANNUAL_RATE; this.log = log; - this.dir = HazardExport.createOutputDir(config.output.directory); + this.dir = HazardExport.createOutputDir(config.output.directory, OptionalDouble.empty()); this.file = rates ? RATE_FILE : PROB_FILE; this.valueFormat = rates ? RATE_FORMAT : PROB_FORMAT; this.model = model; diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java index 4e526fde2d0b6b8048f26544335c51ed1da25ddc..451012eceb1c6d5063d09f37085f12a2d1a66357 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java @@ -20,6 +20,7 @@ import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.OptionalDouble; import java.util.Set; import java.util.function.Function; import java.util.stream.IntStream; @@ -80,9 +81,10 @@ public final class HazardExport { private HazardExport( HazardModel model, CalcConfig config, - List<Site> sites) throws IOException { + List<Site> sites, + OptionalDouble vs30) throws IOException { - this.dir = createOutputDir(config.output.directory); + this.dir = createOutputDir(config.output.directory, vs30); this.model = model; this.config = config; this.exportGmm = config.output.dataTypes.contains(DataType.GMM); @@ -105,14 +107,16 @@ public final class HazardExport { * @param model being run * @param config that specifies output options and formats * @param sites reference to the sites to be processed (not retained) + * @param vs30 optional vs30 value used when running multiple site classes * @param log shared logging instance from calling class */ public static HazardExport create( HazardModel model, CalcConfig config, - List<Site> sites) throws IOException { + List<Site> sites, + OptionalDouble vs30) throws IOException { - return new HazardExport(model, config, sites); + return new HazardExport(model, config, sites, vs30); } /* Initialize output directories. */ @@ -163,15 +167,19 @@ public final class HazardExport { } /* Avoid clobbering exsting result directories via incrementing. */ - static Path createOutputDir(Path dir) throws IOException { + static Path createOutputDir(Path dir, OptionalDouble vs30) throws IOException { int i = 1; - Path incrementedDir = dir; - while (Files.exists(incrementedDir)) { - incrementedDir = incrementedDir.resolveSibling(dir.getFileName() + "-" + i); + Path outDir = dir; + while (Files.exists(outDir)) { + outDir = outDir.resolveSibling(dir.getFileName() + "-" + i); i++; } - Files.createDirectories(incrementedDir); - return incrementedDir; + if (vs30.isPresent()) { + String vs30dir = "vs30-" + ((int) vs30.getAsDouble()); + outDir = outDir.resolve(vs30dir); + } + Files.createDirectories(outDir); + return outDir; } /** diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/LoaderTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/LoaderTests.java index f065ddf6c99932c4393fbdca38520ef1f6f12691..d7518714db457d7a47df746e2f3829df35acafe5 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/model/LoaderTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/model/LoaderTests.java @@ -214,7 +214,7 @@ class LoaderTests { List<Site> sites) throws IOException { ExecutorService exec = initExecutor(config.performance.threadCount); - HazardExport handler = HazardExport.create(model, config, sites); + HazardExport handler = HazardExport.create(model, config, sites, OptionalDouble.empty()); for (Site site : sites) { Hazard hazard = HazardCalcs.hazard(model, config, site, exec); handler.write(hazard);