Skip to content
Snippets Groups Projects
Commit be855bf1 authored by Powers, Peter M.'s avatar Powers, Peter M.
Browse files

Merge branch 'site-multi-vs30-498' into 'main'

Site multi vs30

See merge request !598
parents 3bf2d4e1 d297922a
No related branches found
No related tags found
2 merge requests!601Production Release | nshmp-haz,!598Site multi vs30
Pipeline #116164 passed with warnings
......@@ -10,7 +10,7 @@ micronautRxVersion = 2.1.1
micronautPluginVersion = 3.1.1
nodePluginVersion = 3.0.1
nodeVersion = 16.3.0
nshmpLibVersion = 0.9.7
nshmpLibVersion = 0.9.9
nshmpWsUtilsVersion = 0.1.7
shadowVersion = 7.1.2
spotbugsVersion = 4.7.0
......
......@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
......@@ -155,8 +156,16 @@ public class DisaggCalc {
int colsToSkip = siteColumns.size(); // needed?
log.info("Site data columns: " + colsToSkip);
/* Possible batch vs30 from config.vs30s. */
checkArgument(
config.hazard.vs30s.size() <= 1,
"config.hazard.vs30s may only have one value for disagg");
OptionalDouble vs30 = (config.hazard.vs30s.size() == 1)
? OptionalDouble.of(config.hazard.vs30s.iterator().next())
: OptionalDouble.empty();
/* Sites */
List<Site> sites = Sites.fromCsv(siteFile, config, model.siteData());
List<Site> sites = Sites.fromCsv(siteFile, model.siteData(), vs30);
log.info("Sites: " + sites.size());
Set<Imt> modelImts = model.config().hazard.imts;
......@@ -280,7 +289,7 @@ public class DisaggCalc {
log.info(PROGRAM + " (return period): calculating ...");
HazardExport handler = HazardExport.create(model, config, sites);
HazardExport handler = HazardExport.create(model, config, sites, OptionalDouble.empty());
Path disaggDir = handler.outputDir().resolve("disagg");
Files.createDirectory(disaggDir);
......@@ -369,6 +378,7 @@ public class DisaggCalc {
}
log.info(PROGRAM + " (IML): calculating ...");
Path outDir = createOutputDir(config.output.directory);
Path disaggDir = outDir.resolve("disagg");
Files.createDirectory(disaggDir);
......
......@@ -11,6 +11,7 @@ import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
......@@ -112,10 +113,25 @@ public class HazardCalc {
log.info(config.toString());
log.info("");
List<Site> sites = readSites(args[1], config, model.siteData(), log);
log.info("Sites: " + Sites.toString(sites));
Path out = calc(model, config, sites, log);
Path out = null;
if (config.hazard.vs30s.isEmpty()) {
List<Site> sites = readSites(args[1], model.siteData(), OptionalDouble.empty(), log);
log.info("Sites: " + Sites.toString(sites));
out = calc(model, config, sites, OptionalDouble.empty(), log);
} else {
for (double vs30 : config.hazard.vs30s) {
log.info("Vs30 batch: " + vs30);
List<Site> sites = readSites(args[1], model.siteData(), OptionalDouble.of(vs30), log);
log.info("Sites: " + Sites.toString(sites));
out = calc(model, config, sites, OptionalDouble.of(vs30), log);
}
out = checkNotNull(out.getParent());
}
if (config.output.dataTypes.contains(DataType.MAP)) {
HazardMaps.createDataSets(out, config.output.returnPeriods, log);
......@@ -137,8 +153,8 @@ public class HazardCalc {
static List<Site> readSites(
String arg,
CalcConfig defaults,
SiteData siteData,
OptionalDouble vs30,
Logger log) {
Path path = Paths.get(arg);
......@@ -149,8 +165,8 @@ public class HazardCalc {
try {
return fname.endsWith(".csv")
? Sites.fromCsv(path, defaults, siteData)
: Sites.fromGeoJson(path, defaults, siteData);
? Sites.fromCsv(path, siteData, vs30)
: Sites.fromGeoJson(path, siteData, vs30);
} catch (IOException ioe) {
throw new IllegalArgumentException(
"Error parsing sites file [%s]; see sites file documentation");
......@@ -165,6 +181,7 @@ public class HazardCalc {
HazardModel model,
CalcConfig config,
List<Site> sites,
OptionalDouble vs30,
Logger log) throws IOException, InterruptedException, ExecutionException {
int threadCount = config.performance.threadCount.value();
......@@ -172,7 +189,7 @@ public class HazardCalc {
log.info("Threads: " + ((ThreadPoolExecutor) exec).getCorePoolSize());
log.info(PROGRAM + ": calculating ...");
HazardExport handler = HazardExport.create(model, config, sites);
HazardExport handler = HazardExport.create(model, config, sites, vs30);
CalcTask.Builder calcTask = new CalcTask.Builder(model, config, exec);
WriteTask.Builder writeTask = new WriteTask.Builder(handler);
......
......@@ -10,6 +10,7 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
......@@ -107,7 +108,8 @@ public class RateCalc {
log.info(config.toString());
log.info("");
List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
List<Site> sites = HazardCalc.readSites(
args[1], model.siteData(), OptionalDouble.empty(), log);
log.info("Sites: " + Sites.toString(sites));
Path out = calc(model, config, sites, log);
......
......@@ -16,6 +16,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.OptionalDouble;
import java.util.concurrent.ExecutorService;
import java.util.logging.LogManager;
import java.util.stream.Collectors;
......@@ -138,10 +139,10 @@ class PeerTest {
Map<String, double[]> expectedsMap = loadExpecteds(modelId);
HazardModel model = HazardModel.load(MODEL_DIR.resolve(modelId));
CalcConfig config = model.config();
Iterable<Site> sites = Sites.fromCsv(MODEL_DIR.resolve(
modelId).resolve("sites.csv"),
config,
model.siteData());
Iterable<Site> sites = Sites.fromCsv(
MODEL_DIR.resolve(modelId).resolve("sites.csv"),
model.siteData(),
OptionalDouble.empty());
// ensure that only PGA is being used
checkState(config.hazard.imts.size() == 1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment