Source code for safe.impact_functions.earthquake.pager_earthquake_fatality_model
import math
import numpy
from safe.impact_functions.earthquake.itb_earthquake_fatality_model import (
ITBFatalityFunction)
from safe.common.utilities import ugettext as tr
from safe.common.utilities import get_defaults
[docs]class PAGFatalityFunction(ITBFatalityFunction):
"""
Population Vulnerability Model Pager
Loss ratio(MMI) = standard normal distrib( 1 / BETA * ln(MMI/THETA)).
Reference:
Jaiswal, K. S., Wald, D. J., and Hearne, M. (2009a).
Estimating casualties for large worldwide earthquakes using an empirical
approach. U.S. Geological Survey Open-File Report 2009-1136.
:author Helen Crowley
:rating 3
:param requires category=='hazard' and \
subcategory=='earthquake' and \
layertype=='raster' and \
unit=='MMI'
:param requires category=='exposure' and \
subcategory=='population' and \
layertype=='raster'
"""
title = tr('Die or be displaced according Pager model')
defaults = get_defaults()
parameters = dict(Theta=11.067, Beta=0.106, # Model coefficients
# Rates of people displaced for each MMI level
displacement_rate={1: 0, 1.5: 0, 2: 0, 2.5: 0, 3: 0,
3.5: 0, 4: 0, 4.5: 0, 5: 0, 5.5: 0,
6: 1.0, 6.5: 1.0, 7: 1.0, 7.5: 1.0,
8: 1.0, 8.5: 1.0, 9: 1.0, 9.5: 1.0,
10: 1.0},
mmi_range=list(numpy.arange(2, 10, 0.5)),
step=0.25,
# Threshold below which layer should be transparent
tolerance=0.01,
calculate_displaced_people=True,
postprocessors={'Gender': {'on': True},
'Age': {'on': True,
'params':
{'youth_ratio': defaults['YOUTH_RATIO'],
'adult_ratio': defaults['ADULT_RATIO'],
'elder_ratio': defaults['ELDER_RATIO']}}})
[docs] def fatality_rate(self, mmi):
"""Pager method to compute fatality rate"""
N = math.sqrt(2 * math.pi)
THETA = self.parameters['Theta']
BETA = self.parameters['Beta']
x = math.log(mmi / THETA) / BETA
return math.exp(-x * x / 2.0) / N