Skip to content

smt_model

sjbrandenberg edited this page Dec 5, 2024 · 21 revisions

The SMT modeling team developed probabilistic susceptibility, triggering, and manifestation models that are implemented using the functions below. The SMT model is described by Ulmer et al. (2024)

function description
get_pfs(Ic) Computes probability factor for liquefaction susceptibility
get_pfts(csrm_hat, crr_hat) Computes probability factor for liquefaction triggering conditional on susceptibility
get_pfmt(ztop, Ic) Computes probability factor for manifestation of a layer conditional on triggering of the layer
get_pmp(pfmt, pfts, pfs, Ksat, t) Computes probability of manifestation at surface of profile

The functions developed by the SMT use the following helper functions.

function description
get_FC_from_Ic(Ic, epsilon=0.0) Computes fines content from soil behavior type index following the method by Hudson et al. (2024)
get_Ic_Qtn_Fr(qt, fs, sigmav, sigmavp, pa=101.325, maxiter=30) computes soil behavior type index, Ic, overburden-corrected dimensionless cone tip resistance, Qtn, and dimensionless friction ratio, Fr
get_qc1N_qc1Ncs(qt, fs, sigmav, sigmavp, FC, pa=101.325, maxiter=30) computes overburden-corrected dimensionless cone tip resistance qc1N that uses qc1Ncs to set exponent for overburden correction, and overburden- and fines-corrected cone tip resistance qc1Ncs
box_cox(x, lam) Computes Box-Cox transform
inv_box_cox(x_hat, lam) Computes inverse Box-Cox transform
get_crr_hat(qc1Ncs) Computes Box-Cox transformed cyclic resistance ratio
get_csrm(amax, m, sigmav, sigmavp, depth, qc1Ncs, pa=101.325) Computes cyclic stress ratio corrected for magnitude and overburden

get_pfs(Ic)

This function computes the probability of liquefaction susceptibility conditioned on soil behavior type index. Equations are from Ulmer et al. (2024).

Parameters

argument format description
Ic float or Numpy array [dtype = float] Soil behavior type index

Returns

variable format description
pfs float or Numpy array [dtype = float] Probability factor for susceptibility.

Note

$PF_S = \frac{1.0}{1.0 + exp\left[-14.8\left(\frac{I_c}{2.635} - 1.0 \right) \right]}$

get_pfts(csrm_hat, crr_hat)

This function returns the probability factor of liquefaction triggering conditional on susceptibility. Equations are from Ulmer et al. (2024).

Parameters

argument format description
csrm_hat float or Numpy array [dtype=float] Box-Cox transformed overburden- and magnitude-corrected cyclic stress ratio
crr_hat float or Numpy array [dtype=float] Box-Cox transformed cyclic resistance ratio

Returns

variable format description
pfts float or Numpy array [dtype=float] Probability factor for liquefaction triggering conditional on susceptibility

Note

$PF_{T|S} = \frac{1.0}{1.0 + exp\left[-2.020\left(\widehat{CSR_M} - \widehat{CRR} \right) \right]}$

get_pfmt(ztop, Ic)

This function returns the probability factor for manifestation conditional on liquefaction triggering. Equations are from Ulmer et al. (2024).

argument format description
ztop float or Numpy array [dtype=float] Depth to the top of the layer of interest in meters
Ic float or Numpy array [dtype=float] Median soil behavior type index of the layer of interest

Note

$PF_{M|T} = \frac{1.0}{1.0 + exp\left[-\left(7.613 - 0.338 z_{top} - 3.042 I_c \right) \right]}$

Returns

variable format description
pfmt float or Numpy array [dtype=float] Probability factor for manifestation of a layer conditional on liquefaction triggering of the layer

get_pmp(pfmt, pfts, pfs, Ksat, t)

This function returns the probability of manifestation of a profile. Equations are from Ulmer et al. (2024).

Parameters

argument format description
pfmt Numpy array [dtype=float] Probability factor of manifestation conditional on triggering
pfts Numpy array [dtype=float] Probability factor of triggering conditional on susceptibility
pfs Numpy array [dtype=float] Probability factor of susceptibility
Ksat Numpy array [dtype=float] Saturation factor. Ksat = 0.0 above groundwater table and 1.0 below groundwater table
t Numpy array [dtype=float] Layer thickness in meters

Returns

argument format description
pmp float Probability of manifestation of the profile in percent

Note

$P[M_P] = 1.0 - \prod_{i=1}^{N_{layer}} \left(1.0 - PF_{M|T} PF_{T|S} PF_S K_{sat} \right) ^ {t / t_c}$
$t_c = 2.0 m$

get_FC_from_Ic(Ic, epsilon=0.0)

This function computes fines content from soil behavior type index following the method by Hudson et al. (2024).

Parameters

argument format description
Ic float, or Numpy array [dtype = float] Soil behavior type index
<epsilon> float, or Numpy array [dtype = float] Number of standard deviations. Optional. Default = 0.0

Returns

variable format description
FC float, or Numpy array [dtype = float] Fines content in percent

Note

FC will be a scalar valued float if Ic and epsilon are scalar valued floats, and will be a Numpy array if either Ic and / or epsilon are Numpy arrays. If Ic and epsilon are both Numpy arrays, they must have the same length or an error will be returned.

get_Ic_Qtn_Fr(qt, fs, sigmav, sigmavp, pa=101.325, maxiter=30)

This function computes Ic, Qtn, Fr, qc1N, and qc1Ncs. Iterations are required to solve for these parameters because relationships among Ic, Qtn, Fr, qc1N, and qc1Ncs are implicit. Equations are from Robertson (2016).

Parameters

argument format description
qt Numpy array [dtype = float] Cone tip resistance
fs Numpy array [dtype = float] Cone sleeve friction
sigmav Numpy array [dtype = float] Vertical total stress
sigmavp Numpy array [dtype = float] Vertical effective stress
<pa> float Atmospheric pressure in same units as qt, fs, sigmav, and sigmavp. Optional. Default = 101.325 kPa
<maxiter> int Maximum number of iterations

Returns

variable format description
Ic Numpy array [dtype = float] Soil behavior type index.
Qtn Numpy array [dtype = float] Dimensionless cone tip resistance.
Fr Numpy array [dtype = float] Dimensionless cone sleeve friction.

Note

Values of qt, fs, sigmav, and sigmavp that are less than or equal to zero will cause errors due to the logarithms that must be computed. Such values are set to 0.001*pa before computing Ic, Qtn, and Fr. A warning is not issued when this occurs.

get_qc1N_qc1Ncs(qt, fs, sigmav, sigmavp, FC, pa=101.325, maxiter=30)

This function computes qc1N, and qc1Ncs. Iterations are required to solve for these parameters. The equations are implicit because the stress normalization exponent depends on the fines correction. Equations used herein are from Boulanger and Idriss (2016).

Parameters

argument format description
qt Numpy array [dtype = float] Cone tip resistance
fs Numpy array [dtype = float] Cone sleeve friction
sigmav Numpy array [dtype = float] Vertical total stress
sigmavp Numpy array [dtype = float] Vertical effective stress
FC Numpy array [dtype = float] Fines content in percent
<pa> float Atmospheric pressure in same units as qt, fs, sigmav, and sigmavp. Optional. Default = 101.325 kPa
<maxiter> int Maximum number of iterations

Returns

variable format description
qc1N Numpy array [dtype = float] Overburden corrected cone tip resistance, where exponent for overburden correction is a function of qc1Ncs.
qc1Ncs Numpy array [dtype = float] Overburden- and fines-corrected cone tip resistance

Note

Values of qt, fs, sigmav, and sigmavp that are less than or equal to zero will cause errors due to the logarithms that must be computed. Such values are set to 0.001*pa before computing qc1N, and qc1Ncs. A warning is not issued when this occurs.

box_cox(x, lam)

This function computes the Box-Cox transformation of a variable following Box and Cox (1964).

Parameters

argument format description
x float or Numpy array [dtype = float] Variable to be transformed
labmda float Exponent term used in transform

Returns

variable format description
x_hat float or Numpy array [dtype = float] Transformed variable

Note

x_hat will have the same type as x.

inv_box_cox(x_hat, lam)

This function computes the inverse Box-Cox transformation of a variable following Box and Cox (1964).

Parameters

argument format description
x_hat float or Numpy array [dtype = float] Variable to be inverse transformed
labmda float Exponent term used in transform

Returns

variable format description
x float or Numpy array [dtype = float] Inverse transformed variable

Note

x will have the same type as x_hat.

get_crr_hat(qc1Ncs)

This function computes the Box-Cox transformed value of cyclic resistance ratio based on overburden- and fines-corrected cone tip resistance. qc1Ncs is converted to relative density using equations from Idriss and Boulanger (2008), and cyclic resistance is computed using equations from Ulmer et al. (2024).

Parameters

argument format description
qc1Ncs float or Numpy array [dtype = float] Overburden- and fines-corrected cone tip resistance

Returns

variable format description
crr_hat float or Numpy array [dtype = float] Box-Cox transformed cyclic resistance ratio

Note

crr_hat will have the same type as qc1Ncs.

get_csrm(amax, m, sigmav, sigmavp, depth, qc1Ncs, pa=101.325)

This function returns magnitude- and overburden corrected cyclic stress ratio. Depth-reduction factor, $r_d$ is from Lasley et al. (2016), magnitude scaling factor, $MSF$, is from Lasley et al. (2017), and overburden correction factor, $K_\sigma$, is from Ulmer et al. (2024).

Parameters

argument format description
amax float Peak horizontal surface acceleration in g
m float Earthquake magnitude
sigmav Numpy array [dtype = float] Vertical total stress
sigmavp Numpy array [dtype = float] Vertical effective stress
depth Numpy array [dtype = float] Depth values
qc1Ncs Numpy array [dtype = float] Overburden- and fines-corrected cone tip resistance
<pa> float Atmospheric pressure in same units as sigmav and sigmavp. Optional. Default = 101.325 kPa

Note

*sigmav, sigmavp, depth and qc1Ncs must be Numpy arrays of the same length. An error will result if they are not Numpy arrays or if they are Numpy arrays of different length.

Returns

variable format description
csrm Numpy array [dtype = float] Peak horizontal surface acceleration in g

Clone this wiki locally