Sample one synthetic soil column from a USCS material pool
sampleSoilLayers.RdDiscretizes a column of height Hs into layers of thickness h and draws
the index properties of each layer from the ranges tabulated by USCS
class. This is the stochastic step of the synthetic route; the physics of
the sampled layers is evaluated afterwards by evaluateSoilLayers().
Value
A data.table with one row per layer, from the surface down:
layer, USCS, hs (thickness, m), zo, zi, zm (top, bottom and
midpoint depth, m), emin, eo, emax (void ratios), gsat
(saturated unit weight, kN/m3), LL and IP (percent; NA for coarse
classes, LL also NA for peat, IP 0 where the A line is null).
Every value is one realization, not a statistic.
Mathematics
The column has \(N_L = \lceil H_s / h \rceil\) layers of thickness h,
so its depth \(N_L h\) can exceed Hs when Hs is not a multiple of
h; layer k spans \([(k-1)h, kh]\) with midpoint \(z_m\). The class
of every layer is drawn uniformly, with replacement, from USCS. For a
layer of class c, with the intervals of VoidRatiosUSCS and
UnitWeightRanges,
$$e_{min} \sim U(e_{min}^{lo}, e_{min}^{hi}),\quad
e_{max} \sim U(e_{max}^{lo}, e_{max}^{hi}),\quad
e_o \sim U(e_{min}, e_{max}),\quad
\gamma_{sat} \sim U(\gamma_{sat}^{lo}, \gamma_{sat}^{hi}).$$
Fine soils also draw their Atterberg limits: the liquid limit
\(LL \sim U(50, 100)\) for CH, MH and OH and \(LL \sim U(8, 50)\) for
CL, ML and OL; peat (PT) draws no liquid limit. With the Casagrande lines
\(U = 0.9 (LL - 8)\) and \(A = 0.73 (LL - 20)\) for \(LL \ge 20\)
(else \(A = 0\)), the plasticity index is \(IP \sim U(A, U)\) for
clays and \(IP \sim U(0, A)\) for silts and organic soils; when the A
line is null (peat, or a liquid limit below 20) that draw is the
degenerate \(U(0, 0)\), so IP is 0 and the random stream is not
consumed, as in newmark 1.7.1.
Random stream
The draws consume the caller's random stream in the order class vector,
then for each layer in depth order \(e_{min}\), \(e_{max}\), \(e_o\),
\(\gamma_{sat}\), and for fine soils LL then IP. This is the order
of the newmark 1.7.1 generator, so a seeded stream reproduces its columns.
Examples
set.seed(1)
sampleSoilLayers(Hs = 5, USCS = c("ML", "MH"), h = 1)
#> layer USCS hs zo zi zm emin eo emax gsat
#> <int> <char> <num> <num> <num> <num> <num> <num> <num> <num>
#> 1: 1 ML 1 0 1 0.5 0.6347585 1.0670369 1.288935 19.51646
#> 2: 2 MH 1 1 2 1.5 0.5808962 1.0426242 1.252967 18.53641
#> 3: 3 ML 1 2 3 2.5 0.6076428 0.8701477 1.298381 20.10978
#> 4: 4 ML 1 3 4 3.5 0.5977511 0.7386725 1.125111 18.54446
#> 5: 5 MH 1 4 5 4.5 0.6073582 0.8978628 1.460907 18.92832
#> LL IP
#> <num> <num>
#> 1: 10.595023 0.000000
#> 2: 88.492071 24.884570
#> 3: 47.257620 4.221225
#> 4: 8.562394 0.000000
#> 5: 79.978291 21.609288