Skip to contents

For every realization of one displacement model, finds the yield coefficient \(k_{max}\) at which the realized Newmark displacement equals each admissible displacement \(D_a\), or the censored value that the rules below assign when no such equality exists on the grid (null demand, grid floor, rigid-block cap). The realizations stay separate and paired with their row of Dn; summarizeKmax() reduces them, alone or pooled with other models, to a mean and quantiles.

Usage

solveKmax(ky, Dn, PGA, model, Da)

Arguments

ky

Strictly increasing positive yield coefficients in g, at least two; a continuation beyond the grid needs three positive displacements at the top of the curve.

Dn

Matrix of finite non-negative displacements in cm, one row per realization and one column per ky.

PGA

Sampled peak ground acceleration in g of each realization (one per row of Dn), or NULL when the realizations carry none; the continuation of AM88 and SR08 and the inverse of a constant AM88 curve require it.

model

The displacement model of the realizations: "AM88", "JB07", "SR08", "BT07", "BM17" or "BM19".

Da

Unique positive admissible displacements in cm.

Value

A data.table with one row per realization and Da: IDn, realization (the row of Dn), Da (cm), kmax (g), the yield coefficient at which that realization of the model reaches Da, and beyond (TRUE when the root comes from the model's continuation beyond the grid or from the constant-AM88 inverse; FALSE for null demand, interpolated roots and the grid floor).

Mathematics

A realization gives the displacements \(D_j\) (cm) at the yield coefficients \(k_{y,1} < \dots < k_{y,J}\) (g). Displacements below \(10^{-4}\) cm (one micron) are set to zero and the curve is replaced by its upper monotone envelope \(\bar D_j = \max_{i \ge j} D_i\), non-increasing in \(k_y\). The coefficient \(k_{max}\) solves \(\bar D(k_{max}) = D_a\):

  • when \(D_a > \bar D_1\), the ceiling of the realization, every coefficient meets the target and \(k_{max} = 0\) (null demand);

  • between two positive envelope values, \(\log k_{max}\) is linear in \(\log \bar D\);

  • below the smallest positive envelope value of a curve that reaches the zero floor, \(k_{max}\) is the first \(k_y\) of that floor (the resolution of the grid);

  • below a curve that stays positive on the whole grid, the root is continued beyond the grid with the closed form of the model, whose free constants are recovered from the top of the drawn curve. BT07, BM17 and BM19 are quadratic in \(L = \log k_y\): the parabola \(\log D = c_1 L^2 + c_2 L + c_3\) through the three largest positive points is solved for its larger root, and a curvature \(-10^{-8} < c_1 \le 10^{-8}\), the linear limit of the same closed form, takes the line through the top two points (a curvature above \(10^{-8}\) stops with an error). JB07 is a power law in \(k_y\), inverted along the line through the top two points. AM88 and SR08 are written in \(r = k_y / PGA\), with \(PGA\) the sampled peak ground acceleration of the realization: \(\log D = C + 2.53 \log(1 - r) - 1.09 \log r\) for AM88 and \(\log D = C - 5.24 r - 18.78 r^2 + 42.01 r^3 - 29.15 r^4 + 0.56 \varepsilon r\) for SR08, with \(\varepsilon\) recovered from the top two points and \(C\) from the top point. The root is sought for \(r \le 0.9999\), the rigid-block limit; a target below the curve at that limit gives \(k_{max} = 0.9999\, PGA\).

An AM88 realization whose displacements are one positive constant lies wholly at the rigid-block limit of the model; its exact inverse solves \(\mu(r) = \log D_a - \log D + \mu(0.9999)\), with \(\mu(r) = 0.90 \log 10 + 2.53 \log(1 - r) - 1.09 \log r\), and \(k_{max} = PGA\, r\). Roots found by continuation or by this inverse lie outside the stored grid and are flagged with beyond; null demand, interpolated roots and the grid floor are not.

No random number is drawn and nothing is rounded.

Sources of the closed forms

BT07: Bray and Travasarou (2007), Eq. 5 (p. 387). BM17: Bray, Macedo and Travasarou (2018), Eq. 4 (p. 04017124-5). BM19: Bray and Macedo (2019), Eqs. 3a, 5 and 7, with the corrections of 2023. JB07: Jibson (2007), Eq. 10 (p. 215). SR08: Saygili and Rathje (2008), Eq. 6 and Tables 1-2 (pp. 797-800). AM88: Ambraseys and Menu (1988) as newmark 1.7.1 implemented it; the original paper was not verified locally. The full entries are in evaluateRigidDisplacement() and evaluateFlexibleDisplacement(). The displacement floor of \(10^{-4}\) cm, the monotone envelope, the rigid-block cap \(r \le 0.9999\) and the first-zero-grid rule are policies of this implementation, not published model terms.

Examples

ky <- c(0.05, 0.10, 0.20, 0.40)
Dn <- matrix(0.02 / ky, nrow = 4, ncol = 4, byrow = TRUE)
solveKmax(ky = ky, Dn = Dn, PGA = NULL, model = "BT07", Da = c(0.1, 1))
#>       IDn realization    Da  kmax beyond
#>    <char>       <int> <num> <num> <lgcl>
#> 1:   BT07           1   0.1   0.2  FALSE
#> 2:   BT07           1   1.0   0.0  FALSE
#> 3:   BT07           2   0.1   0.2  FALSE
#> 4:   BT07           2   1.0   0.0  FALSE
#> 5:   BT07           3   0.1   0.2  FALSE
#> 6:   BT07           3   1.0   0.0  FALSE
#> 7:   BT07           4   0.1   0.2  FALSE
#> 8:   BT07           4   1.0   0.0  FALSE