package org.opensha2.etc; import org.opensha2.gmm.Gmm; import org.opensha2.gmm.GmmInput; import org.opensha2.gmm.Imt; import org.opensha2.gmm.ScalarGroundMotion; import java.util.Set; @SuppressWarnings("javadoc") public class HazMatImpl { public double[] gmmMean( String gmmStr, String imtStr, double Mw, double rJB, double rRup, double rX, double dip, double width, double zTop, double zHyp, double rake, double vs30, boolean vsInf, double z1p0, double z2p5) { GmmInput input = toInput( Mw, rJB, rRup, rX, dip, width, zTop, zHyp, rake, vs30, vsInf, z1p0, z2p5); Gmm gmm = Gmm.valueOf(gmmStr); Imt imt = Imt.valueOf(imtStr); ScalarGroundMotion sgm = gmm.instance(imt).calc(input); return new double[] { sgm.mean(), sgm.sigma() }; } public double[][] gmmSpectrum( String gmmStr, double Mw, double rJB, double rRup, double rX, double dip, double width, double zTop, double zHyp, double rake, double vs30, boolean vsInf, double z1p0, double z2p5) { GmmInput input = toInput( Mw, rJB, rRup, rX, dip, width, zTop, zHyp, rake, vs30, vsInf, z1p0, z2p5); Gmm gmm = Gmm.valueOf(gmmStr); return gmmSpectrum(gmm, input); } private double[][] gmmSpectrum(Gmm gmm, GmmInput input) { Set<Imt> imts = gmm.responseSpectrumIMTs(); double[][] spectrum = new double[3][imts.size()]; int i = 0; for (Imt imt : imts) { ScalarGroundMotion sgm = gmm.instance(imt).calc(input); spectrum[0][i] = imt.period(); spectrum[1][i] = sgm.mean(); spectrum[2][i] = sgm.sigma(); i++; } return spectrum; } private static GmmInput toInput( double Mw, double rJB, double rRup, double rX, double dip, double width, double zTop, double zHyp, double rake, double vs30, boolean vsInf, double z1p0, double z2p5) { return GmmInput.builder() .mag(Mw) .rJB(rJB) .rRup(rRup) .rX(rX) .dip(dip) .width(width) .zTop(zTop) .zHyp(zHyp) .rake(rake) .vs30(vs30) .vsInf(vsInf) .z1p0(z1p0) .z2p5(z2p5) .build(); } }