model_amplitude {eseis} | R Documentation |
Model source amplitude by amplitude-distance model fitting
Description
The function fits one of several models of signal amplitude attenuation and returns a set of model parameters, including the source amplitude (a_0).
Usage
model_amplitude(
data,
model = "SurfSpreadAtten",
distance,
source,
d_map,
coupling,
v,
q,
f,
k,
a_0
)
Arguments
data |
|
model |
|
distance |
|
source |
|
d_map |
|
coupling |
|
v |
|
q |
|
f |
|
k |
|
a_0 |
|
Details
Depending on the choice of the model to fit, several parameters can
(or should) be provided, e.g. f
,q
, v
, k
,
and most importantly, a_0
.
If more signals than free parameters are available, the missing
parameters may be estimated during the fit, but without any checks
of quality and meaningfulness. The parameter a_0
will be
defined as 100 times the maximum input amplitude, by default. The
parameters f
will be set to 10 Hz, q
to 50, v
to 1000 m/s and k
to 0.5.
ISSUES: account for non-fixed parameters, especially k
The following amplitude-distance models are available:
-
"SurfSpreadAtten"
, Surface waves including geometric spreading and unelastic attenuation -
"BodySpreadAtten"
, Body waves including geometric spreading and unelastic attenuation -
"SurfBodySpreadAtten"
, Surface and body waves including geometric spreading and unelastic attenuation -
"SurfSpread"
, Surface waves including geometric spreading, only -
"BodySpread"
, Body waves including geometric spreading, only -
"SurfBodySpread"
, Surface and body waves including geometric spreading, only
**SurfSpreadAtten** The model is based on Eq. 17 from Burtin et al. (2016):
a_d = a_0 / sqrt(d) * exp(-(pi * f * d) / (q * v))
where a_0 is the source amplitude, a_d the amplitude as recorded by a sensor at distance d, f is the center frequency of the signal, q the ground quality factor and v the seismic wave velocity.
**BodySpreadAtten** The model is based on Eq. 16 from Burtin et al. (2016):
a_d = a_0 / d * exp(-(pi * f * d) / (q * v))
where a_0 is the source amplitude, a_d the amplitude as recorded by a sensor at distance d, f is the center frequency of the signal, q the ground quality factor and v the seismic wave velocity.
**SurfBodySpreadAtten** The model based on Eqs. 16 and 17 from Burtin et al. (2016):
a_d = k * a_0 / sqrt(d) * exp(-(pi * f * d) / (q * v)) + (1 - k) * a_0 / d * exp(-(pi * f * d) / (q * v))
where a_0 is the source amplitude, a_d the amplitude as recorded by a sensor at distance d, f is the center frequency of the signal, q the ground quality factor, v the seismic wave velocity, and n and m two factors determining the relative contributions of the two wave types, thus summing to 1.
**BodySpread** The model is simply accounting for geometric spreading
a_d = a_0 / d
where a_0 is the source amplitude, a_d the amplitude as recorded by a sensor at distance d.
**SurfSpread** The model is simply accounting for geometric spreading
a_d = a_0 / sqrt(d)
where a_0 is the source amplitude, a_d the amplitude as recorded by a sensor at distance d.
**SurfBodySpread** The model is simply accounting for geometric spreading
a_d = k * (a_0 / d) + (1 - k) * a_d / sqrt(d)
where a_0 is the source amplitude, a_d the amplitude as recorded by a sensor at distance d, and n and m two factors determining the relative contributions of the two wave types, thus summing to 1.
**References** - Burtin, A., Hovius, N., and Turowski, J. M.: Seismic monitoring of torrential and fluvial processes, Earth Surf. Dynam., 4, 285–307, https://doi.org/10.5194/esurf-4-285-2016, 2016.
Value
List
with model results, including a_0
(source
amplitude), residuals
(model residuals), coefficients
model coefficients.
Author(s)
Michael Dietze
Examples
## Not run:
## create synthetic DEM
dem <- terra::rast(nrows = 20, ncols = 20,
xmin = 0, xmax = 10000,
ymin= 0, ymax = 10000,
vals = rep(0, 400))
## define station coordinates
sta <- data.frame(x = c(1000, 9000, 5000, 9000),
y = c(1000, 1000, 9000, 9000),
ID = c("A", "B", "C", "D"))
## create synthetic signal (source in towards lower left corner of the DEM)
s <- rbind(dnorm(x = 1:1000, mean = 500, sd = 50) * 50,
dnorm(x = 1:1000, mean = 500, sd = 50) * 2,
dnorm(x = 1:1000, mean = 500, sd = 50) * 1,
dnorm(x = 1:1000, mean = 500, sd = 50) * 0.5)
## calculate spatial distance maps and inter-station distances
D <- eseis::spatial_distance(stations = sta[,1:2],
dem = dem)
model_amplitude(data = s,
source = c(500, 600),
d_map = D$maps,
v = 500,
q = 50,
f = 10)
model_amplitude(data = s,
distance = c(254, 8254, 9280, 11667),
model = "SurfBodySpreadAtten",
v = 500,
q = 50,
f = 10,
k = 0.5)
## End(Not run)