Source code for openquake.hmtk.faults.mfd.base
"""
Module :mod:`mfd.base` defines an abstract base classes
for :class:`BaseMFDfromSlip>`
"""
import abc
from openquake.hazardlib.mfd.evenly_discretized import EvenlyDiscretizedMFD
def _scale_moment(magnitude, in_nm=False):
'''Returns the moment for a given magnitude.
:param float magnitude:
Earthquake magnitude
:param bool in_nm:
To return the value in newton metres set to true - otherwise in
dyne-cm
'''
if in_nm:
return 10.0 ** ((1.5 * magnitude) + 9.05)
else:
return 10.0 ** ((1.5 * magnitude) + 16.05)
[docs]class BaseMFDfromSlip(object):
'''Base class for calculating magnitude frequency distribution
from a given slip value'''
__metaclass__ = abc.ABCMeta
[docs] @abc.abstractmethod
def setUp(self, mfd_conf):
'''Initialises the parameters from the mfd type'''
[docs] @abc.abstractmethod
def get_mmax(self, mfd_conf, msr, rake, area):
'''Gets the mmax for the fault - reading directly from the config file
or using the msr otherwise'''
[docs] @abc.abstractmethod
def get_mfd(self):
'''Calculates the magnitude frequency distribution'''
[docs] def to_evenly_discretized_mfd(self):
"""
Returns the activity rate as an instance of the :class:
openquake.hazardlib.mfd.evenly_discretized.EvenlyDiscretizedMFD
"""
return EvenlyDiscretizedMFD(self.mmin + self.bin_width / 2.,
self.bin_width,
self.occurrence_rate.tolist())