| model_amplitude | R Documentation |
The function fits one of several models of signal amplitude attenuation and returns a set of model parameters, including the source amplitude (a_0).
model_amplitude(
data,
model = "SurfSpreadAtten",
distance,
source,
d_map,
coupling,
v,
q,
f,
k,
a_0
)
data |
|
model |
|
distance |
|
source |
|
d_map |
|
coupling |
|
v |
|
q |
|
f |
|
k |
|
a_0 |
|
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.
List with model results, including a_0 (source
amplitude), residuals (model residuals), coefficients
model coefficients.
Michael Dietze
## 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.