Skip to contents

Compatibility route that reproduces, value for value, the ShearTable product of the getTs() function of newmark 1.7.1 with its slope-period height correction, so that the corrected library can serve as comparison oracle while the calculations migrate. It crosses every geometry with every selected material (or only the supplied pairs), simulates 100 synthetic columns of 1 m layers per pair with a dry column, 100 kPa of preconsolidation and a 760 m/s completion velocity, summarizes their properties marginally and then evaluates the first-mode truncated-beam period on each summary row with the apex-to-base height \(H_s/(1 - \lambda_o)\) of evaluateBeamPeriod(). Shear tables built before that correction took \(H_s\) itself, so their unrounded periods are \(1 - \lambda_o\) times these. The first-mode root is the "nlm" surrogate of buildRootModel() where mo and lo lie within its tabulated support and the exact root of the characteristic relation outside it, where newmark 1.7.1 extrapolated the surrogate.

Usage

buildShearTable(geometry, USCS, IDm, Vref, levels, pairs = NULL)

Arguments

geometry

A data.frame or data.table with IDg, Hs, b and s, such as buildGeometry() returns.

USCS

Named list of USCS code vectors, indexed by material IDm (the uscs argument of getTs()).

IDm

Character vector of selected material identifiers.

Vref

One positive reference velocity in m/s, recorded in the table.

levels

Quantile levels and/or the literal "mean".

pairs

Optional table of unique IDg/IDm pairs to evaluate, in the supplied order; NULL evaluates the full geometry by material product.

Value

A data.table with Hs, b, s, Vref, IDm, IDg, POP, Hw, USCS, Go, mo, Ts (fundamental period of the shear beam, s), VSo, VS30, Z500, Z1000, level, lo and an, one row per pair and level.

Semantics reproduced from newmark 1.7.1

The period of a summary row is the beam expression evaluated on the summarized mo and VSo of that row (summarize-then-evaluate), not a quantile of the period population; propagateBeamPeriod() gives the latter. The completion velocity of the upper 30 m is 760 m/s whatever Vref is, because getTs() did not forward it; Vref is only recorded. The layers take the plasticity exponent \(m_1\) of 1.7.1, interpolated through IP 0, 20, 40, 60, 80 and 100 with 0, 0.18, 0.30, 0.41, 0.48 and 0.48 and NA above 100, instead of the published table that evaluateSoilLayers() uses by default. Before the summary, every realization takes the observables of the 1.7.1 generator: Go rounded to 2 decimals, mo and the Rayleigh period (TrRayleigh of characterizeProfile(), which 1.7.1 stored as Ts) to 3, VS30 to 1, VSo derived from the rounded Go and rounded to 1, and the threshold depth ratios Z500 and Z1000, the fitted normalized depth \(z/H_s\) at which the inverse regression \(\log(z_m/H_s) = a + c \log V_S\) reaches 500 and 1000 m/s, rounded to 1 (a dimensionless ratio that 1.7.1 labelled as metres). The summaries then round Go to 1 decimal, mo to 3, Ts to 2, VSo, VS30 and Z500 to 1, and the quantile rows of Z1000 to 1 while its mean row is unrounded; lo is rounded to 3 decimals before the root and the period use it, the root to 4 decimals and the beam period to 3. The realizations are summarized newest first, as the original accumulation did, so the means reproduce exactly. The general route (characterizeProfile(), summarizeProfiles()) rounds nothing and does not compute the threshold ratios.

Examples

# \donttest{
Geometry <- buildGeometry(Hs = 10, lo = 0.35, s = 2.5)
set.seed(20260915L)
buildShearTable(Geometry, USCS = list(U1 = c("ML", "MH")), IDm = "U1",
                Vref = 760, levels = c(0.16, "mean", 0.84))
#>       Hs     b     s  Vref    IDm    IDg   POP    Hw   USCS    Go    mo    Ts
#>    <num> <num> <num> <num> <char> <char> <num> <num> <char> <num> <num> <num>
#> 1:    10    27   2.5   760     U1    S10   100     0  ML MH  63.6 0.325 0.191
#> 2:    10    27   2.5   760     U1    S10   100     0  ML MH  81.4 0.524 0.169
#> 3:    10    27   2.5   760     U1    S10   100     0  ML MH  72.8 0.427 0.179
#>      VSo  VS30  Z500   Z1000  level    lo     an
#>    <num> <num> <num>   <num> <char> <num>  <num>
#> 1: 179.5 314.7   6.8  40.300   0.16 0.351 3.3639
#> 2: 208.0 337.8  20.6 213.100   0.84 0.351 3.7426
#> 3: 193.7 326.6  15.7 187.768   mean 0.351 3.5446
# }