- Install
- Abbreviations
- Basic Principles of Ground Motion Assessment
- End-to-end examples
- How to get VS30 grid
- Earthquake location data
- GMPE Models
- Appendix 1. Seismic scale intensity (Russian GOST R 57546-2017).
- Citation
- LICENSE
The ground motion evaluation module (earthquake seismology).
Build Status
]
(v1.6) pkg> add GroundMotion.jl
PGA
peak ground acceleration.
PGV
peak ground velocity.
PSA
peak spectral acceleration.
VS30
the time-averaged shear-wave velocity to 30 m depth,
data.
SSI
seismic scale intensity (Russian GOST R 57546-2017, see Appendix 1).
Names of GMPE functions looks like: gmpe_{Name_of_gmpe_function}
. For
example: gmpe_as2008
, where as2008
is Abrahamson and Silva 2008 GMPE Model.
The configuration for a model (see examples/*.conf
) has ground_motion_type
that can be PGA
,PGV
,PSA
and define the type of output data points.
Each GMPE function has at least 2 methods: for calculation based on input VS30-grid or without any grid (where VS30 is considered to be constant).
Although the GMPE field is obtained by modeling using earthquake source
parameters, it can be corrected using observed intensity data such as
measurements at seismic sites or felt reports. To this end, the gmpe_corr
routine is used to calculate a new GMPE PGA/intensity grid using simple the
weighted average method. For technical details see
preprint (Russian).
The GMPE function for each grid's point calculates {pga/pgv/psa}
values using
latitude
, longitude
[degrees for WGS84 ellipsoid] and VS30
[m/s]. The
output data has return in custom type (depends by config) where latitude and
longitude are copy from input grid and pga/pgv/pgd/psa
is calculated by
function.
For example: the function gmpe_as2008
with parameters
pga_as2008(
eq::Earthquake,
config_as2008::Params_as2008,
grid::Array{Point_vs30};
min_val::Number
)
where ground_motion_type = "PGA"
at config
, returns 1-d is
Array{Point_pga_out}
with points based on input grid and pga > min_val
(pga
is Acceleration of gravity in percent (%g) rounded to ggg.gg
).
In case of without any grid GMPE functions return simple 1-d Array{Float64}
with {pga/pgv/pgd/psa}
data. It calculates from epicenter to distance
with
1
[km] step perpendicularly to the epicenter.
pga_as2008(
eq::Earthquake,
config::Params_as2008;
VS30::Number=350,
distance::Int64=1000
)
where ground_motion_type = "PGA"
at config
, return is Array{Float64}
with
1:distance
values of pga
(also rounded to ggg.gg
).
The gmpe_corr
function fan in a computed GMPE filed in Array{Point_pga_out
format and measurements in Array{Point_felt_report}
type. The measurements
can be of two types: exact PGA by an seismic station or aggregated felt report.
function gmpe_corr(
config::Params_gmpe_corr,
grid::Array{Point_pga_out},
intensity_measures::Array{Point_felt_report};
intensity_in_pga::Bool=true,
pga_out::Bool=true
)
Input:
config
configuration of weighted averaging proceduregrid
GMPE field modeling by any ofgmpe_*
methodintensity_measures
Intensity measures by felt reports or stationsintensity_in_pga
is the intensity measures in PGA %g.gg units? Otherwise intensity in SSI is assumes.pga_out
if set totrue
function will return corrected GMPE filed in %g.gg units
Output:
Corrected GMPE field in Array{Point_pga_out}
or Array{Point_ssi_out}
.
See examples/gmpe-corr.conf
for parameters setup.
Simple as2008
GMPE modeling:
using GroundMotion
# init model parameters
include("GroundMoution.jl/examples/as2008.conf")
# load vs30 grid
grid = read_vs30_file("Downloads/web/testvs30.txt") # see How to get VS30 grid
# set earthquake location
eq = Earthquake(143.04,51.92,13,6)
# run AS2008 PGA modeling on GRID
out_grid = gmpe_as2008(eq,config_as2008,grid)
# run AS2008 PGA FOR PLOTTING with VS30=30 [m/s^2], distance=1000 [km] by default.
simulation = pga_as2008(eq,config_as2008)
GMPE sm2013
modeling with felt report correction:
using GroundMotion, DelimitedFiles
# init model parameters
include("GroundMoution.jl/examples/morikawa-fujiwara-2013.conf")
include("GroundMoution.jl/examples/gmpe-corr.conf")
# load vs30 grid
grid = read_vs30_file("Downloads/web/testvs30.txt") # see How to get VS30 grid
# set earthquake location
eq = Earthquake(143.6,50.5,13,6)
# MF2013 on grid, M6, ASID false, Dl - constant
out_grid = gmpe_mf2013(eq, config_mf2013_crustal_pga, grid)
# load felt reports in SSI
intensity_mesuares_ssi = read_intensity_file(
"GroundMoution.jl/test/felt_reports.txt"
)
# convert to PGA
intensity_mesuares_pga = convert_from_ssi_to_pga(intensity_mesuares_ssi)
# obtain corrected grid
out_grid_corr = gmpe_corr(
config_gmpe_corr_base, out_grid, intensity_mesuares_pga,
intensity_in_pga=true, pga_out=true
)
# convert result and save to dlm
to_file = convert_to_float_array(out_grid_corr)
writedlm("Downloads/M6_lon_lat_g.txt", to_file)
Download GMT grd file from USGS Vs30 Models and Data page Unzip it. It takes around 2,7G disk space for one file:
unzip global_vs30_grd.zip
...
ls -lh global_vs30.grd
-rw-r--r-- 1 jamm staff 2,7G 8 сен 2016 global_vs30.grd
Use GMT2XYZ
man
page from
GMT to convert grd data to XYZ text file:
# example:
grd2xyz global_vs30.grd -R145.0/146.0/50.0/51.0 > test_sea.txt
# number of rows:
cat test_sea.txt |wc -l
14641
Use read_vs30_file
to read data from vs30 file:
grid = read_vs30_file("Downloads/web/somevs30.txt")
After some gmpe_*
function on grid done, you will get
Array{Point_{pga,pgv,pgd,psa}_out}
. Use convert_to_float_array
to convert
Array{Point_{pga,pgv,pgd,psa}_out}
to Nx3
Array{Float64}
:
typeof(A)
#--> Array{GroundMoution.Point_pga_out,1}
length(A)
#--> 17
B = convert_to_float_array(A)
typeof(B)
#--> Array{Float64,2}
Use Base.writedlm
to write XYZ (lon
,lat
,pga/pgv/pgd/psa
) data to text
file:
writedlm("Downloads/xyz.txt", B) # where B is N×3 Array{Float64}
Use convert_to_point_vs30
to convert Array{Float64,2} array to
Array{GroundMotion.Point_vs30,1}
Lets define lat
,lon
,depth
,Ml
,Mw
:
eq = Earthquake(143.04,51.92,13,6,5.8)
# OR
eq = Earthquake(143.04,51.92,13,6)
Latitude and longitude assumes degrees for WGS84 ellipsoid. Depth in km. Mw
usually not ready right after earthquake. Mw=0
in case of moment magnitude is
not specified. All gmpe models uses Mw
if it is or Ml
otherwise.
This is a very simple implementation of the AS2008 model. Please see simidorikawa1999 and mf2013 models for more accurate modeling.
Reference: Abrahamson, Norman, and Walter Silva. "Summary of the Abrahamson & Silva NGA ground-motion relations." Earthquake spectra 24.1 (2008): 67-97.
## ON GRID
gmpe_as2008(
eq::Earthquake,
config_as2008::Params_as2008,
grid::Array{Point_vs30};
min_val::Number
)
## Without grid
gmpe_as2008(
eq::Earthquake,
config::Params_as2008;
VS30::Number=350,
distance::Int64=1000
)
Keyword arguments: min_val
,VS30
,distance
.
For model Parameters see examples/as2008.conf
(PGA
only).
The variables that always zero for current version:
a12*Frv
, a13*Fnm
, a15*Fas
, Fhw*f4(Rjb,Rrup,Rx,W,S,Ztor,Mw)
, f6(Ztor)
,
f10(Z1.0, Vs30)
.
Actually they are not presented at code. R_rup is a distance to hypocenter.
References:
Si, Hongjun, and Saburoh Midorikawa. "New attenuation relations for peak ground acceleration and velocity considering effects of fault type and site condition." Proceedings of twelfth world conference on earthquake engineering. 2000.
Si H., Midorikawa S. New Attenuation Relationships for Peak Ground Acceleration and Velocity Considering Effects of Fault Type and Site Condition // Journal of Structural and Construction Engineering, A.I.J. 1999. V. 523. P. 63-70, (in Japanese with English abstract).
## ON GRID
gmpe_simidorikawa1999(
eq::Earthquake,
config::Params_simidorikawa1999,
grid::Array{Point_vs30};
min_val::Number
)
## Without grid
gmpe_simidorikawa1999(
eq::Earthquake,
config::Params_simidorikawa1999;
VS30::Number=350,
distance::Int64=1000
)
Keyword arguments: min_val
,VS30
,distance
.
For model parameters see examples/si-midorikawa-1999.conf
(PGA
only). X
is a distance to hypocenter.
Reference Morikawa N., Fujiwara H. A New Ground Motion Prediction Equation for Japan Applicable up to M9 Mega-Earthquake // Journal of Disaster Research. 2013. Vol. 5 (8). P. 878–888.
## On grid whithout Dl data
gmpe_mf2013(
eq::Earthquake,
config::Params_mf2013,
grid::Array{Point_vs30};
min_val::Number=0,
Dl::Number=250,
Xvf::Number=0
)
## On grid with Dl data
gmpe_mf2013(
eq::Earthquake,
config::Params_mf2013,g
grid::Array{Point_vs30_dl};
min_val::Number=0,
Xvf::Number=0
)
## without any grid
gmpe_as2008(
eq::Earthquake,
config::Params_mf2013;
VS30::Number=350,
distance::Int64=1000,
Dl::Number=250,
Xvf::Number=0
)
min_val=0
, Xvf=0
[km] by default. Dl=250
[km] by default in case of grid
pass without Dl data.
NOTE that gmpe_mf2013
has next keyword arguments: min_val
, min_val
, Dl
,
VS30
, distance
. The keyword arguments should be pass with name. Example:
gmpe_mf2013(eq,config,VS30=500,Xvf=40)
.
For model parameters see examples/morikawa-fujiwara-2013.conf
(PGA
, PGV
,
PSA
). X is a distance to hypocenter.
The Dl
is the top depth to the layer whose S-wave velocity is l
(in
[m/s]
) at the site. Actually it should be another one grid with Dl
depths
on each grid point (Point_vs30_dl
type). If you pass grid without Dl
, then
Dl
variable pass to GMPE functions as a constant.
SSI | PGA %g |
---|---|
1.0 | 0.044 |
1.5 | 0.07 |
2.0 | 0.11 |
2.5 | 0.175 |
3.0 | 0.28 |
3.5 | 0.44 |
4.0 | 0.7 |
4.5 | 1.11 |
5.0 | 1.75 |
5.5 | 2.8 |
6.0 | 4.4 |
6.5 | 7.0 |
7.0 | 11.0 |
7.5 | 18.0 |
8.0 | 28.0 |
8.5 | 44.0 |
9.0 | 70.0 |
9.5+ | 110.0+ |
@article{konovalov2022new,
title={New Tools for Rapid Assessment of Felt Reports and a Case Study on Sakhalin Island},
author={Konovalov, AV and Stepnov, AA and Bogdanov, ES and Dmitrienko, R Yu and Orlin, ID and Sychev, AS and Gavrilov, AV and Manaychev, KA and Tsoy, AT and Stepnova, Yu A},
journal={Seismic Instruments},
volume={58},
number={6},
pages={676--693},
year={2022},
publisher={Springer}
}
Copyright (c) 2018-2023 GEOPHYSTECH LLC and Andrey Stepnov
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.