The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
# Minimal executable example
library(gmsp)
library(data.table)
t_vec <- seq(0, 10, by = 0.01)
tsl <- data.table(RSN = "R1", OCID = "H1", ID = "AT",
t = t_vec, s = 500 * sin(2 * pi * 2 * t_vec))
im <- TSL2IM(tsl, units.source = "mm", units.target = "mm")
head(im)
#> RSN OCID ID IM value units
#> <char> <char> <char> <char> <num> <char>
#> 1: R1 H1 AT AI 200.2208 mm /s
#> 2: R1 H1 AT AIu 100.1104 mm /s
#> 3: R1 H1 AT AId 100.1104 mm /s
#> 4: R1 H1 AT PGA 499.0134 mm /s2
#> 5: R1 H1 AT ARMS 353.3767 mm /s2
#> 6: R1 H1 AT AZC 39.0000 -TSL2IM() computes intensity measures from a long
TSL table containing acceleration (AT), velocity (VT) and
displacement (DT) series. getIntensity() remains as a
compatibility wrapper around TSL2IM().
References: Arias (1970), Trifunac & Brady (1975), Campbell & Bozorgnia (2012), Inoue et al. (1996), Rathje et al. (1998).
TSL must be a data.table with columns:
RSN — record id,OCID — channel id,ID ∈ {AT, VT,
DT},t — time (s),s — amplitude.The function takes:
units.source — source units for s
("mm", "cm", "m",
"gal", "g"),units.target — target base-length units
("mm", "cm", "m"; default
"mm").A single factor SFU = .getSF(units.source, units.target)
is applied to s for all rows, regardless
of ID. This works if your AT, VT and DT series are already
consistent in the same base-length unit (e.g. output of
AT2TS / VT2TS / DT2TS in units.target).
Warning: if you mix incompatible units
(e.g. units.source = "g" while also having VT / DT in the
same table), the scaling will be wrong.
After scaling:
AT: s is acceleration in
units.target/s^2.VT: s is velocity in
units.target/s.DT: s is displacement in
units.target.The acceleration of gravity in target units is \(g = .getG(\mathrm{units.target})\)
(e.g. 9806.65 mm/s² for units.target = "mm").
Measures are computed per group \((RSN, OCID, ID)\).
The default output is long IML, with columns for
metadata, OCID, ID, IM,
value, and units. Use
output = "IMW" when a pipeline needs one row per metadata
and OCID with intensity measures as columns:
imw <- TSL2IM(tsl, units.source = "mm", output = "IMW")
names(imw)[1:min(6, length(names(imw)))]
#> [1] "RSN" "OCID" "AI" "AIu" "AId" "PGA"The same projection is available for existing long results:
IML2IMW(im).
Peak and RMS:
\[\mathrm{PGA} = \max_t |a(t)|, \qquad \mathrm{ARMS} = \sqrt{\frac{1}{N}\sum_{i=1}^{N} a_i^2}.\]
Zero crossings and edges:
AZC — number of zero crossings (discrete count).ATo, ATn — first \(a(t_1)\) and last \(a(t_N)\) value.Arias intensity (discretised with \(\Delta t = \mathrm{mean}(t_i - t_{i-1})\)):
\[\mathrm{AI} = \frac{\pi}{2g}\sum_{i=1}^{N} a_i^2\,\Delta t.\]
AI — total Arias intensity.AIu — uses \(a_+(t) = \max(a,
0)\) only.AId — uses \(a_-(t) = \min(a,
0)\) only.Units: units.target/s.
Significant duration (Husid): the code builds a cumulative curve proportional to energy,
\[H(t_k) = \pi\,\Delta t \sum_{i=1}^{k} a_i^2,\]
and measures the time interval between two fractions of the total.
D0595 — 5 % → 95 %.D0575 — 5 % → 75 %.D2080 — 20 % → 80 %.Units: s.
Mean period \(T_m\) (Rathje et al. 1998), from the Fourier amplitude spectrum over a frequency band:
\[T_m = \frac{\sum_{f \in [f_{\min}, f_{\max}]} C(f)^2 / f} {\sum_{f \in [f_{\min}, f_{\max}]} C(f)^2}.\]
TmA is computed on AT with \(f_{\min} = 0.1\) Hz, \(f_{\max} = 25\) Hz.
Duration / sampling:
NP — number of samples.dt — mean \(\Delta
t\).Fs — \(1/\Delta
t\).Dmax — last time last(t).Cumulative absolute velocity (CAV):
\[\mathrm{CAV} = \sum_{i=1}^{N} |a_i|\,\Delta t.\]
CAV5 applies the same sum but only over indices where
\(|a_i| \ge 0.05\,g\). Units:
units.target/s.
Derived indices (as implemented; not standardised):
\[\mathrm{EPI} = \frac{0.9}{\pi}\,\mathrm{AI}\,(2g)\,D_{05\text{–}95}, \qquad \mathrm{PDI} = \mathrm{AI}\,\left(\frac{D_{\max}}{\mathrm{AZC}}\right)^{\!2}.\]
Units: units.target^2/s^2 for EPI;
units.target·s for PDI (with AZC
treated as dimensionless).
Note: if AZC = 0, PDI
becomes Inf/NaN.
PGV — \(\max_t
|v(t)|\).VRMS — RMS of \(v\).VZC — zero crossings.VTo, VTn — first / last value.TmV — mean period from the Fourier amplitude
spectrum.Units: units.target/s for PGV / VRMS / VTo / VTn; s for
TmV.
PGD — \(\max_t
|d(t)|\).DRMS — RMS of \(d\).DZC — zero crossings.DTo, DTn — first / last value.TmD — mean period from the Fourier amplitude
spectrum.Units: units.target for PGD / DRMS / DTo / DTn; s for
TmD.
OCID.TSL2PS().These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.