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

updated gid table to use fixed focal mech maps

parent f203e072
No related branches found
No related tags found
1 merge request!402Grid table focal mech update
...@@ -146,7 +146,8 @@ public class HazardCalcs { ...@@ -146,7 +146,8 @@ public class HazardCalcs {
immediateFuture(gss), immediateFuture(gss),
GridRuptureSet.optimizer( GridRuptureSet.optimizer(
site.location(), site.location(),
config.performance.smoothGrids)::apply, config.performance.smoothGrids,
config.hazard.gridFocalMechUpdate)::apply,
ex)); ex));
break; break;
} }
...@@ -214,7 +215,8 @@ public class HazardCalcs { ...@@ -214,7 +215,8 @@ public class HazardCalcs {
if (config.performance.optimizeGrids && gss.optimizable()) { if (config.performance.optimizeGrids && gss.optimizable()) {
ruptures = GridRuptureSet.optimizer( ruptures = GridRuptureSet.optimizer(
site.location(), site.location(),
config.performance.smoothGrids).apply(gss); config.performance.smoothGrids,
config.hazard.gridFocalMechUpdate).apply(gss);
log(log, MSSG_GRID_INIT, ruptures.name(), duration(swSource)); log(log, MSSG_GRID_INIT, ruptures.name(), duration(swSource));
} }
curveSets.add(sourcesToCurves(ruptures, site, config)); curveSets.add(sourcesToCurves(ruptures, site, config));
......
...@@ -246,7 +246,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -246,7 +246,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
static class Builder extends AbstractRuptureSet.Builder { static class Builder extends AbstractRuptureSet.Builder {
private SourceFeature feature; // Grid or Zone private SourceFeature feature; // Grid or Zone
private ModelData data; private ModelData data; // unused; clean
private List<Location> locations; private List<Location> locations;
private List<Mfd> mfds; private List<Mfd> mfds;
...@@ -629,8 +629,8 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -629,8 +629,8 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
* @param loc reference point for table * @param loc reference point for table
*/ */
public static Function<GridRuptureSet, RuptureSet<? extends Source>> optimizer( public static Function<GridRuptureSet, RuptureSet<? extends Source>> optimizer(
Location loc, boolean smooth) { Location loc, boolean smooth, boolean focalMechUpdate) {
return new Optimizer(loc, smooth); return new Optimizer(loc, smooth, focalMechUpdate);
} }
private static class Optimizer implements private static class Optimizer implements
...@@ -638,15 +638,17 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -638,15 +638,17 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
private final Location loc; private final Location loc;
private final boolean smooth; private final boolean smooth;
private final boolean focalMechUpdate;
Optimizer(Location loc, boolean smooth) { Optimizer(Location loc, boolean smooth, boolean focalMechUpdate) {
this.loc = loc; this.loc = loc;
this.smooth = smooth; this.smooth = smooth;
this.focalMechUpdate = focalMechUpdate;
} }
@Override @Override
public Table apply(GridRuptureSet sources) { public Table apply(GridRuptureSet sources) {
return new Table(sources, loc, smooth); return new Table(sources, loc, smooth, focalMechUpdate);
} }
} }
...@@ -680,6 +682,24 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -680,6 +682,24 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
*/ */
private static final class Table extends AbstractRuptureSet<PointSource> { private static final class Table extends AbstractRuptureSet<PointSource> {
private static final Map<FocalMech, Double> SS_MECH_MAP = new EnumMap<>(FocalMech.class);
private static final Map<FocalMech, Double> R_MECH_MAP = new EnumMap<>(FocalMech.class);
private static final Map<FocalMech, Double> N_MECH_MAP = new EnumMap<>(FocalMech.class);
static {
SS_MECH_MAP.put(FocalMech.STRIKE_SLIP, 1.0);
SS_MECH_MAP.put(FocalMech.REVERSE, 0.0);
SS_MECH_MAP.put(FocalMech.NORMAL, 0.0);
R_MECH_MAP.put(FocalMech.STRIKE_SLIP, 0.0);
R_MECH_MAP.put(FocalMech.REVERSE, 1.0);
R_MECH_MAP.put(FocalMech.NORMAL, 0.0);
N_MECH_MAP.put(FocalMech.STRIKE_SLIP, 0.0);
N_MECH_MAP.put(FocalMech.REVERSE, 0.0);
N_MECH_MAP.put(FocalMech.NORMAL, 1.0);
}
private final GridRuptureSet parent; private final GridRuptureSet parent;
private final Location origin; private final Location origin;
private final List<PointSource> sources; private final List<PointSource> sources;
...@@ -695,7 +715,11 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -695,7 +715,11 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
private int maximumSize; private int maximumSize;
private int parentCount; private int parentCount;
private Table(GridRuptureSet parent, Location origin, boolean smoothed) { private Table(
GridRuptureSet parent,
Location origin,
boolean smoothed,
boolean focalMechUpdate) {
// This is dirty - arose from conversion to ass constructor taking // This is dirty - arose from conversion to ass constructor taking
// builder // builder
...@@ -713,7 +737,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -713,7 +737,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
this.origin = origin; this.origin = origin;
this.sources = parent.singularMechs this.sources = parent.singularMechs
? initSources(smoothed) ? initSources(smoothed)
: initMultiMechSources(smoothed); : initMultiMechSources(smoothed, focalMechUpdate);
} }
/** /**
...@@ -840,7 +864,9 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -840,7 +864,9 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
} }
/* always creates finite point sources */ /* always creates finite point sources */
private List<PointSource> initMultiMechSources(boolean smoothed) { private List<PointSource> initMultiMechSources(
boolean smoothed,
boolean focalMechUpdate) {
/* For now, should only be getting here for GR MFDs */ /* For now, should only be getting here for GR MFDs */
Mfd modelMfd = parent.mfds.get(0); Mfd modelMfd = parent.mfds.get(0);
...@@ -910,6 +936,10 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -910,6 +936,10 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
// System.out.println("tableMfd:"); // System.out.println("tableMfd:");
// System.out.println(tableMfdSum); // System.out.println(tableMfdSum);
Map<FocalMech, Double> ssMechMap = focalMechUpdate ? SS_MECH_MAP : parent.mechMaps.get(0);
Map<FocalMech, Double> rMechMap = focalMechUpdate ? R_MECH_MAP : parent.mechMaps.get(0);
Map<FocalMech, Double> nMechMap = focalMechUpdate ? N_MECH_MAP : parent.mechMaps.get(0);
List<Double> distances = ssTable.rows(); List<Double> distances = ssTable.rows();
maximumSize = distances.size(); maximumSize = distances.size();
List<PointSource> b = new ArrayList<>(); List<PointSource> b = new ArrayList<>();
...@@ -919,12 +949,13 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -919,12 +949,13 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
Mfd ssMfd = Mfd.create(ssTable.row(r)); Mfd ssMfd = Mfd.create(ssTable.row(r));
if (ssMfd.data().y(0) > 0.0 || !ssMfd.data().isClear()) { if (ssMfd.data().y(0) > 0.0 || !ssMfd.data().isClear()) {
b.add(new PointSourceFinite( b.add(new PointSourceFinite(
parent, parent,
parent.type(), parent.type(),
loc, loc,
ssMfd, ssMfd,
parent.mechMaps.get(0), ssMechMap,
parent.rupScaling, parent.rupScaling,
parent.depthModel, parent.depthModel,
Optional.empty())); Optional.empty()));
...@@ -938,7 +969,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -938,7 +969,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
parent.type(), parent.type(),
loc, loc,
rMfd, rMfd,
parent.mechMaps.get(0), rMechMap,
parent.rupScaling, parent.rupScaling,
parent.depthModel, parent.depthModel,
Optional.empty())); Optional.empty()));
...@@ -952,7 +983,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> { ...@@ -952,7 +983,7 @@ public class GridRuptureSet extends AbstractRuptureSet<PointSource> {
parent.type(), parent.type(),
loc, loc,
nMfd, nMfd,
parent.mechMaps.get(0), nMechMap,
parent.rupScaling, parent.rupScaling,
parent.depthModel, parent.depthModel,
Optional.empty())); Optional.empty()));
......
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