Source code for shakelib.gmpe.nullgmpe

"""
A GMPE that returns a constant everywhere. Useful for testing, but
nothing else.
"""
import numpy as np

from openquake.hazardlib.gsim.base import GMPE, CoeffsTable
from openquake.hazardlib import const
from openquake.hazardlib.imt import PGA, PGV, SA


[docs]class NullGMPE(GMPE): """ This is a GMPE for testing. It returns the mean and stddevs specified in the constructor. """ DEFINED_FOR_TECTONIC_REGION_TYPE = const.TRT.ACTIVE_SHALLOW_CRUST DEFINED_FOR_INTENSITY_MEASURE_TYPES = set([PGA, PGV, SA]) DEFINED_FOR_INTENSITY_MEASURE_COMPONENT = const.IMC.GREATER_OF_TWO_HORIZONTAL DEFINED_FOR_STANDARD_DEVIATION_TYPES = set( [const.StdDev.TOTAL, const.StdDev.INTER_EVENT, const.StdDev.INTRA_EVENT] ) REQUIRES_SITES_PARAMETERS = set(("vs30",)) REQUIRES_RUPTURE_PARAMETERS = set(()) REQUIRES_DISTANCES = set(("rjb",)) def __init__(self, mean=0, phi=0.8, tau=0.6): """ The default constructor takes three named arguments: Args: mean (float): the mean value returned by the GMPE (default=0). This value is returned for all locations, regardles of the IMT or the contents of sites, rupture and distance contexts. phi (float): the within-event standard deviation returned by the GMPE (default=0.8) tau (float): the between-event standard deviation returned by the GMPE (default=0.6) The total standard deviation returned will be ``sqrt(phi^2 + tau^2)``. """ self.mean = mean self.phi = phi self.tau = tau self.sigma = np.sqrt(phi ** 2 + tau ** 2)
[docs] def get_mean_and_stddevs(self, sites, rup, dists, imt, stddev_types): """ Implements the OpenQuake GroundShakingIntensityModel get_mean_and_stddevs interface. See superclass `method <http://docs.openquake.org/oq-hazardlib/master/gsim/index.html#openquake.hazardlib.gsim.base.GroundShakingIntensityModel.get_mean_and_stddevs>`__. Returns a constant values for all locations specified in the dists.rbj array, regardless of the contents of that array or any of the other contexts. The imt is also ignored. """ # noqa mean = np.full_like(dists.rjb, self.mean) stddevs = [] for stddev_type in stddev_types: if stddev_type == const.StdDev.TOTAL: stddevs.append( np.full_like(dists.rjb, np.sqrt(self.phi ** 2 + self.tau ** 2)) ) elif stddev_type == const.StdDev.INTRA_EVENT: stddevs.append(np.full_like(dists.rjb, self.phi)) elif stddev_type == const.StdDev.INTER_EVENT: stddevs.append(np.full_like(dists.rjb, self.tau)) return mean, stddevs
# # Dummy COEFFS table so MultiGMPE won't complain # COEFFS = CoeffsTable( sa_damping=5, table="""\ IMT c1 pga 0. pgv 0. 0.01 0. 10 0. """, )