spt.py
Formulae
_get_coefficient_of_consolidation__navfac1982soil_scalar
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{\_get\_coefficient\_of\_consolidation\_\_navfac1982soil\_scalar}(LL, \mathrm{is\_disturbed\_soil}, \mathrm{consolidation\_state}) \\ \hspace{1em} \mathrm{key} \gets \mathrm{None} \\ \hspace{1em} \mathbf{if} \ \mathrm{is\_disturbed\_soil} \\ \hspace{2em} \mathrm{key} \gets \textrm{"Remolded"} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ \mathrm{consolidation\_state} = \textrm{"NC"} \\ \hspace{3em} \mathrm{key} \gets \textrm{"Virgin"} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} \mathbf{if} \ \mathrm{consolidation\_state} \in \mathopen{}\left[ \textrm{"LOC"}, \textrm{"MOC"}, \textrm{"HOC"} \mathclose{}\right] \\ \hspace{4em} \mathrm{key} \gets \textrm{"Reloading"} \\ \hspace{3em} \mathbf{end \ if} \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{if} \ \mathrm{key} \equiv \mathrm{None} \\ \hspace{2em} C_v \gets \mathrm{None} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} C_v \gets \mathrm{CoefficientOfConsolidationNAVFAC1982Figure}.\mathrm{interpolate\_at\_x} \mathopen{}\left( LL \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ C_v \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_v &= \text{Coefficient of consolidation (m2/year)}\\
LL &= \text{Liquid limit (\%)}\\
\text{is\_disturbed\_soil} &= \text{Is disturbed soil}\\
\text{consolidation\_state} &= \text{Consolidation state}
\end{align*}
\]
_get_unit_weight__cetin2018use_scalar
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{\_get\_unit\_weight\_\_cetin2018use\_scalar}(N_{60}, \mathrm{is\_fine\_soil}, \mathrm{below\_water\_table}, γ_{default}) \\ \hspace{1em} \mathbf{if} \ \lnot \mathrm{is\_fine\_soil} \\ \hspace{2em} \mathbf{if} \ \lnot \mathrm{below\_water\_table} \\ \hspace{3em} \mathrm{key} \gets \textrm{"unit\_weight.Coarse.Moist"} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} \mathrm{key} \gets \textrm{"unit\_weight.Coarse.Saturated"} \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ \lnot \mathrm{below\_water\_table} \\ \hspace{3em} \mathrm{key} \gets \textrm{"unit\_weight.Fine.Moist"} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} \mathrm{key} \gets \textrm{"unit\_weight.Fine.Saturated"} \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} γ \gets \mathrm{PARAMETERS}_{\textrm{"corrected\_blow\_count"}}.\mathrm{data\_bins}_{\mathrm{key}}.\mathrm{bin\_data} \mathopen{}\left( N_{60} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ γ \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
γ &= \text{Unit weight (kN/m3)}\\
N_{60} &= \text{Corrected blow count}\\
\text{is\_fine\_soil} &= \text{Is fine soil}\\
\text{below\_water\_table} &= \text{Below water table}\\
γ_{default} &= \text{Default unit weight (kN/m3)}
\end{align*}
\]
get_borehole_diameter_correction__skempton1986standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_borehole\_diameter\_correction\_\_skempton1986standard}(D_{bh}, \mathrm{use\_simplified\_blows\_correction}, z) \\ \hspace{1em} \mathbf{if} \ \mathrm{use\_simplified\_blows\_correction} \\ \hspace{2em} C_B \gets 1 \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} C_B \gets \mathrm{PARAMETERS}_{\textrm{"borehole\_diameter"}}.\mathrm{data\_bins}_{\textrm{"borehole\_diameter\_correction"}}.\mathrm{bin\_data} \mathopen{}\left( D_{bh} \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} C_B \gets \mathrm{np}.\mathrm{full\_like} \mathopen{}\left( z, C_B \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ C_B \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_B &= \text{Borehole diameter correction}\\
D_{bh} &= \text{Borehole diameter (mm)}\\
\text{use\_simplified\_blows\_correction} &= \text{Use simplified blows correction}\\
z &= \text{Depth (m)}
\end{align*}
\]
get_clean_sand_normalized_blow_count__cetin2004standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_clean\_sand\_normalized\_blow\_count\_\_cetin2004standard}(N_{160}, C_{FINES}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} N_{160cs} \gets N_{160} \cdot C_{FINES} \\ \hspace{1em} \mathbf{return} \ N_{160cs} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
N_{160cs} &= \text{Clean sand normalized blow count}\\
N_{160} &= \text{Normalized blow count}\\
C_{FINES} &= \text{Fines content factor}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_clean_sand_normalized_blow_count__seed1987design
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_clean\_sand\_normalized\_blow\_count\_\_seed1987design}(N_{160}, ΔN_{160}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} N_{160cs} \gets N_{160} + ΔN_{160} \\ \hspace{1em} \mathbf{return} \ N_{160cs} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
N_{160cs} &= \text{Clean sand normalized blow count}\\
N_{160} &= \text{Normalized blow count}\\
ΔN_{160} &= \text{Normalized blow count fines inc.}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_clean_sand_normalized_blow_count_sr__idriss2003estimating
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_clean\_sand\_normalized\_blow\_count\_sr\_\_idriss2003estimating}(N_{160}, ΔN_{160-Sr}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathbf{return} \ \mathrm{get\_clean\_sand\_normalized\_blow\_count\_\_seed1987design} \mathopen{}\left( N_{160}, ΔN_{160-Sr} \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
N_{160cs-Sr} &= \text{Clean sand normalized blow count (Sr)}\\
N_{160} &= \text{Normalized blow count}\\
ΔN_{160-Sr} &= \text{Normalized blow count fines inc. (Sr)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_coefficient_of_consolidation__navfac1982soil
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_coefficient\_of\_consolidation\_\_navfac1982soil}(LL, \mathrm{is\_disturbed\_soil}, \mathrm{consolidation\_state}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathbf{return} \ \mathrm{\_get\_coefficient\_of\_consolidation\_\_navfac1982soil\_vec} \mathopen{}\left( LL, \mathrm{is\_disturbed\_soil}, \mathrm{consolidation\_state} \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_v &= \text{Coefficient of consolidation (m2/year)}\\
LL &= \text{Liquid limit (\%)}\\
\text{is\_disturbed\_soil} &= \text{Is disturbed soil}\\
\text{consolidation\_state} &= \text{Consolidation state}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_compression_index__rendon1983closure
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_compression\_index\_\_rendon1983closure}(w_c, \mathrm{is\_fine\_soil}) \\ \hspace{1em} C_c \gets 0.01 \mathopen{}\left( w_c - 7.549 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ C_c \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_c &= \text{Compression index}\\
w_c &= \text{Water content (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_compression_ratio__lambe1969soil
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_compression\_ratio\_\_lambe1969soil}(w_c, \mathrm{is\_fine\_soil}) \\ \hspace{1em} CR \gets \mathrm{CompressionRatioLambe1969Figure}.\mathrm{interpolate\_at\_x} \mathopen{}\left( w_c \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ CR \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
CR &= \text{Compression ratio}\\
w_c &= \text{Water content (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_constrained_modulus__janbu1985soil
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_constrained\_modulus\_\_janbu1985soil}(w_c, σ_v', \mathrm{is\_fine\_soil}) \\ \hspace{1em} \textrm{" Equation obtained from kulhawy1990manual"} \\ \hspace{1em} m \gets 107.3 \exp \mathopen{}\left( -0.05042 w_c \mathclose{}\right) + 2.834 \\ \hspace{1em} M \gets 0.001 \cdot m \cdot σ_v' \\ \hspace{1em} \mathbf{return} \ M \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
M &= \text{Constrained modulus (MPa)}\\
w_c &= \text{Water content (\%)}\\
σ_v' &= \text{Effective stress (kPa)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_corrected_blow_count__skempton1986standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_corrected\_blow\_count\_\_skempton1986standard}(N, C_E, C_B, C_R, C_S) \\ \hspace{1em} N_{60} \gets N \cdot C_E \cdot C_B \cdot C_R \cdot C_S \\ \hspace{1em} \mathbf{return} \ N_{60} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
N_{60} &= \text{Corrected blow count}\\
N &= \text{Blow count}\\
C_E &= \text{Energy ratio correction}\\
C_B &= \text{Borehole diameter correction}\\
C_R &= \text{Rod length correction}\\
C_S &= \text{Sampler correction}
\end{align*}
\]
get_energy_ratio_correction__skempton1986standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_energy\_ratio\_correction\_\_skempton1986standard}(ER, z) \\ \hspace{1em} C_E \gets \frac{ER}{60} \\ \hspace{1em} C_E \gets \mathrm{np}.\mathrm{full\_like} \mathopen{}\left( z, C_E \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ C_E \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_E &= \text{Energy ratio correction}\\
ER &= \text{Energy ratio (\%)}\\
z &= \text{Depth (m)}
\end{align*}
\]
get_fines_content_factor__cetin2004standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_fines\_content\_factor\_\_cetin2004standard}(N_{160}, FC, \mathrm{is\_fine\_soil}) \\ \hspace{1em} FC \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( FC, 5, 35 \mathclose{}\right) \\ \hspace{1em} C_{FINES} \gets 1 + 0.004 FC + 0.05 \frac{FC}{N_{160}} \\ \hspace{1em} \mathbf{return} \ C_{FINES} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_{FINES} &= \text{Fines content factor}\\
N_{160} &= \text{Normalized blow count}\\
FC &= \text{Fines content (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_friction_angle__schnaid2009prediction
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_friction\_angle\_\_schnaid2009prediction}(N_{160}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} ϕ \gets 18 N_{160}^{0.234} \\ \hspace{1em} \mathbf{return} \ ϕ \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
ϕ &= \text{Friction angle (°)}\\
N_{160} &= \text{Normalized blow count}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_is_fine_soil_spt
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_is\_fine\_soil\_spt}(\mathrm{soil\_type2}) \\ \hspace{1em} \mathrm{is\_fine\_soil} \gets \mathrm{soil\_type2} \ne \textrm{"Coarse"} \\ \hspace{1em} \mathbf{return} \ \mathrm{is\_fine\_soil} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
\text{is\_fine\_soil} &= \text{Is fine soil}\\
\text{soil\_type2} &= \text{Soil type 2}
\end{align*}
\]
get_iterative_parameters_spt__idriss2008soil
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_iterative\_parameters\_spt\_\_idriss2008soil}(N_{60}, ΔN_{160}, σ_v', \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathrm{max\_iter} \gets 10 \\ \hspace{1em} \mathrm{tol} \gets 0.0001 \\ \hspace{1em} n \gets \mathrm{None} \\ \hspace{1em} C_n \gets \mathrm{None} \\ \hspace{1em} N_{160cs} \gets \mathrm{np}.\mathrm{ones\_like} \mathopen{}\left( N_{60} \mathclose{}\right) \\ \hspace{1em} \mathbf{for} \ \mathrm{\_} \in \mathrm{range} \mathopen{}\left( \mathrm{max\_iter} \mathclose{}\right) \ \mathbf{do} \\ \hspace{2em} \mathrm{clean\_sand\_normalized\_blow\_count\_old} \gets N_{160cs}.\mathrm{copy} \mathopen{}\left( \mathclose{}\right) \\ \hspace{2em} n \gets 0.784 - 0.0768 \sqrt{ \mathrm{np}.\mathrm{clip} \mathopen{}\left( N_{160cs}, 1, 46 \mathclose{}\right) } \\ \hspace{2em} C_n \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( \mathopen{}\left( \frac{101.325}{σ_v'} \mathclose{}\right)^{n}, 0, 1.7 \mathclose{}\right) \\ \hspace{2em} N_{160cs} \gets N_{60} \cdot C_n + ΔN_{160} \\ \hspace{2em} \mathbf{if} \ \mathrm{np}.\mathrm{nanmax} \mathopen{}\left( \mathopen{}\left| N_{160cs} - \mathrm{clean\_sand\_normalized\_blow\_count\_old} \mathclose{}\right| \mathclose{}\right) < \mathrm{tol} \\ \hspace{3em} \mathbf{break} \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ for} \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( n, C_n, N_{160cs} \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
n &= \text{Overburden stress exponent}\\
C_n &= \text{Overburden correction}\\
N_{160cs} &= \text{Clean sand normalized blow count}\\
N_{60} &= \text{Corrected blow count}\\
ΔN_{160} &= \text{Normalized blow count fines inc.}\\
σ_v' &= \text{Effective stress (kPa)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_blow_count__liao1986overburden
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_blow\_count\_\_liao1986overburden}(N_{60}, C_n, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \textrm{" coduto: Although Liao and Whitman did not place any limits on this correction, it is probably best to keep
(N1)60 < 2 corrected\_blow\_count. This limit avoids excessively high values at shallow depths "} \\ \hspace{1em} \textrm{" SPTCorr uses 0.4 <= overburden\_correction <= 1.7 limits "} \\ \hspace{1em} \textrm{" boulanger2014cpt shows 0.0 <= overburden\_correction <= 1.7 limits "} \\ \hspace{1em} \textrm{" Also used by cetin2004standard who limits it to 1.6 "} \\ \hspace{1em} \textrm{" Also used by cetin2018use who limits it to 2.0 "} \\ \hspace{1em} N_{160} \gets N_{60} \cdot C_n \\ \hspace{1em} \mathbf{return} \ N_{160} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
N_{160} &= \text{Normalized blow count}\\
N_{60} &= \text{Corrected blow count}\\
C_n &= \text{Overburden correction}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_blow_count_fines_inc__cetin2018use
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_blow\_count\_fines\_inc\_\_cetin2018use}(N_{160}, FC, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathrm{cetineayy\_coeffs} \gets \mathrm{DataMaps}.\mathrm{ModelCoefficientsCetin2018}.\mathrm{data} \\ \hspace{1em} \mathopen{}\left( \mathrm{theta1}, \mathrm{theta4} \mathclose{}\right) \gets \mathopen{}\left( \mathrm{cetineayy\_coeffs}_{\textrm{"1"}}, \mathrm{cetineayy\_coeffs}_{\textrm{"4"}} \mathclose{}\right) \\ \hspace{1em} FC \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( FC, 5, 35 \mathclose{}\right) \\ \hspace{1em} ΔN_{160} \gets FC \cdot \mathopen{}\left( \mathrm{theta1} \cdot N_{160} + \mathrm{theta4} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ ΔN_{160} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
ΔN_{160} &= \text{Normalized blow count fines inc.}\\
N_{160} &= \text{Normalized blow count}\\
FC &= \text{Fines content (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_blow_count_fines_inc__idriss2006semi
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_blow\_count\_fines\_inc\_\_idriss2006semi}(FC, \mathrm{is\_fine\_soil}) \\ \hspace{1em} ΔN_{160} \gets \exp \mathopen{}\left( 1.63 + \frac{9.7}{FC + 0.01} - \mathopen{}\left( \frac{15.7}{FC + 0.01} \mathclose{}\right)^{2} \mathclose{}\right) \\ \hspace{1em} ΔN_{160} \gets \mathrm{np}.\mathrm{asarray} \mathopen{}\left( ΔN_{160} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ΔN_{160}, \mathrm{np}.\mathrm{isclose} \mathopen{}\left( ΔN_{160}, 0 \mathclose{}\right), 0 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ ΔN_{160} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
ΔN_{160} &= \text{Normalized blow count fines inc.}\\
FC &= \text{Fines content (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_blow_count_fines_inc_sr__seed1987design
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_blow\_count\_fines\_inc\_sr\_\_seed1987design}(FC, \mathrm{is\_fine\_soil}) \\ \hspace{1em} ΔN_{160} \gets \mathrm{PARAMETERS}_{\textrm{"fines\_content"}}.\mathrm{data\_bins}_{\textrm{"normalized\_blow\_count\_fines\_inc"}}.\mathrm{bin\_data} \mathopen{}\left( FC \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ ΔN_{160} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
ΔN_{160-Sr} &= \text{Normalized blow count fines inc. (Sr)}\\
FC &= \text{Fines content (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_residual_shear_strength__kramer2015empirical
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_residual\_shear\_strength\_\_kramer2015empirical}(N_{160}, σ_v', \mathrm{is\_fine\_soil}) \\ \hspace{1em} S_r \gets 101.325 \cdot \exp \mathopen{}\left( -8.444 + 0.109 N_{160} + 5.379 \mathopen{}\left( \frac{σ_v'}{101.325} \mathclose{}\right)^{0.1} \mathclose{}\right) \\ \hspace{1em} S_r \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( N_{160} \le 15, S_r, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} S_{r\ ratio} \gets \frac{S_r}{σ_v'} \\ \hspace{1em} \mathbf{return} \ S_{r\ ratio} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
S_{r\ ratio} &= \text{Normalized residual shear strength}\\
N_{160} &= \text{Normalized blow count}\\
σ_v' &= \text{Effective stress (kPa)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_residual_shear_strength__weber2015engineering
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_residual\_shear\_strength\_\_weber2015engineering}(N_{160cs}, σ_v', \mathrm{is\_fine\_soil}) \\ \hspace{1em} S_r \gets 0.048 \cdot \mathopen{}\left( \exp \mathopen{}\left( 0.1407 N_{160cs} + 4.2399 \mathopen{}\left( \frac{σ_v'}{101.325} \mathclose{}\right)^{0.12} \mathclose{}\right) - 0.43991 \mathopen{}\left( N_{160cs}^{1.45} + 0.2 N_{160cs} \cdot \mathopen{}\left( \frac{σ_v'}{101.325} \mathclose{}\right)^{2.48} + 41.13 \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} S_r \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( S_r, \mathrm{None}, 0.29 σ_v' \mathclose{}\right) \\ \hspace{1em} S_{r\ ratio} \gets \frac{S_r}{σ_v'} \\ \hspace{1em} \mathbf{return} \ S_{r\ ratio} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
S_{r\ ratio} &= \text{Normalized residual shear strength}\\
N_{160cs} &= \text{Clean sand normalized blow count}\\
σ_v' &= \text{Effective stress (kPa)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_normalized_residual_shear_strength_spt__idriss2007spt
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_residual\_shear\_strength\_spt\_\_idriss2007spt}(N_{160cs}, \mathrm{void\_redistribution\_is\_significant}) \\ \hspace{1em} \textrm{" Equation obtained from idriss2008soil "} \\ \hspace{1em} S_{r\ ratio} \gets \exp \mathopen{}\left( \frac{N_{160cs}}{16} + \mathopen{}\left( \frac{N_{160cs} - 16}{21.2} \mathclose{}\right)^{3} - 3 \mathclose{}\right) \\ \hspace{1em} \mathbf{if} \ \lnot \mathrm{void\_redistribution\_is\_significant} \\ \hspace{2em} S_{r\ ratio} \gets S_{r\ ratio} \cdot \mathopen{}\left( 1 + \exp \mathopen{}\left( \frac{N_{160cs}}{2.4} - 6.6 \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} S_{r\ ratio} \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( S_{r\ ratio}, 0, \mathrm{tandg} \mathopen{}\left( 25 \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ S_{r\ ratio} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
S_{r\ ratio} &= \text{Normalized residual shear strength}\\
N_{160cs} &= \text{Clean sand normalized blow count}\\
\text{void\_redistribution\_is\_significant} &= \text{Void redistribution is significant}
\end{align*}
\]
get_normalized_residual_shear_strength_spt__idriss2008soil
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_normalized\_residual\_shear\_strength\_spt\_\_idriss2008soil}(N_{160cs-Sr}, \mathrm{void\_redistribution\_is\_significant}) \\ \hspace{1em} \mathbf{return} \ \mathrm{get\_normalized\_residual\_shear\_strength\_spt\_\_idriss2007spt} \mathopen{}\left( \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
S_{r\ ratio} &= \text{Normalized residual shear strength}\\
N_{160cs-Sr} &= \text{Clean sand normalized blow count (Sr)}\\
\text{void\_redistribution\_is\_significant} &= \text{Void redistribution is significant}
\end{align*}
\]
get_overburden_correction__cetin2004standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_overburden\_correction\_\_cetin2004standard}(σ_v', n) \\ \hspace{1em} \mathbf{return} \ \mathrm{get\_overburden\_correction\_\_liao1986overburden} \mathopen{}\left( \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_n &= \text{Overburden correction}\\
σ_v' &= \text{Effective stress (kPa)}\\
n &= \text{Overburden stress exponent}\\
C_{n\ lim} &= \text{Overburden correction limit}
\end{align*}
\]
get_overburden_correction__cetin2018use
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_overburden\_correction\_\_cetin2018use}(σ_v', n) \\ \hspace{1em} \mathbf{return} \ \mathrm{get\_overburden\_correction\_\_liao1986overburden} \mathopen{}\left( \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_n &= \text{Overburden correction}\\
σ_v' &= \text{Effective stress (kPa)}\\
n &= \text{Overburden stress exponent}\\
C_{n\ lim} &= \text{Overburden correction limit}
\end{align*}
\]
get_overburden_correction__liao1986overburden
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_overburden\_correction\_\_liao1986overburden}(n, σ_v') \\ \hspace{1em} C_n \gets \mathopen{}\left( \frac{101.325}{σ_v'} \mathclose{}\right)^{n} \\ \hspace{1em} C_n \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( C_n, 0, C_{n\ lim} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ C_n \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_n &= \text{Overburden correction}\\
n &= \text{Overburden stress exponent}\\
σ_v' &= \text{Effective stress (kPa)}\\
C_{n\ lim} &= \text{Overburden correction limit}
\end{align*}
\]
get_overburden_stress_exponent__liao1986overburden
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_overburden\_stress\_exponent\_\_liao1986overburden}(z) \\ \hspace{1em} n \gets \mathrm{np}.\mathrm{full\_like} \mathopen{}\left( z, 0.5 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ n \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
n &= \text{Overburden stress exponent}\\
z &= \text{Depth (m)}
\end{align*}
\]
get_peak_friction_angle__sorensen2013correlation
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_peak\_friction\_angle\_\_sorensen2013correlation}(PI, \mathrm{is\_fine\_soil}) \\ \hspace{1em} ϕ' \gets 43 - 10 \log_{10} PI \\ \hspace{1em} \mathbf{return} \ ϕ' \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
ϕ' &= \text{Peak friction angle (°)}\\
PI &= \text{Plasticity index (\%)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_permeability__chapuis2004predicting
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_permeability\_\_chapuis2004predicting}(e, D_{10}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} k \gets 0.01 \cdot 2.4622 \mathopen{}\left( D_{10}^{2} \cdot \frac{e^{3}}{1 + e} \mathclose{}\right)^{0.7825} \\ \hspace{1em} \mathbf{return} \ k \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
k &= \text{Permeability (m/s)}\\
e &= \text{Void ratio}\\
D_{10} &= \text{Diameter at 10\% finer (mm)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_permeability__chapuis2012predicting
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_permeability\_\_chapuis2012predicting}(e, D_{10}, LL, γ, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathrm{k\_is\_fine\_soil} \gets \mathrm{get\_permeability\_\_mbonimpa2002practical} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} \mathrm{k\_is\_granular} \gets \mathrm{get\_permeability\_\_chapuis2004predicting} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} k \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( \mathrm{is\_fine\_soil}, \mathrm{k\_is\_fine\_soil}, \mathrm{k\_is\_granular} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ k \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
k &= \text{Permeability (m/s)}\\
e &= \text{Void ratio}\\
D_{10} &= \text{Diameter at 10\% finer (mm)}\\
LL &= \text{Liquid limit (\%)}\\
γ &= \text{Unit weight (kN/m3)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}\\
γ_w &= \text{Water unit weight (kN/m3)}
\end{align*}
\]
get_permeability__mbonimpa2002practical
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_permeability\_\_mbonimpa2002practical}(e, LL, γ, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathrm{C\_p} \gets 5.6 \\ \hspace{1em} \mathrm{mu\_w} \gets 0.001 \\ \hspace{1em} x \gets 7.7 LL^{-0.15} - 3 \\ \hspace{1em} \chi \gets 1.5 \\ \hspace{1em} \mathrm{rho\_s} \gets \frac{1000 γ}{g} \\ \hspace{1em} k \gets 0.01 \mathrm{C\_p} \frac{γ_w}{\mathrm{mu\_w}} \frac{e^{3 + x}}{1 + e} \frac{1}{\mathrm{rho\_s}^{2} \cdot LL^{2 \chi}} \\ \hspace{1em} \mathbf{return} \ k \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
k &= \text{Permeability (m/s)}\\
e &= \text{Void ratio}\\
LL &= \text{Liquid limit (\%)}\\
γ &= \text{Unit weight (kN/m3)}\\
\text{is\_fine\_soil} &= \text{Is fine soil}\\
γ_w &= \text{Water unit weight (kN/m3)}
\end{align*}
\]
get_poisson_ratio__bowles1996foundation
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_poisson\_ratio\_\_bowles1996foundation}(z, \mathrm{soil\_type}, \mathrm{below\_water\_table}) \\ \hspace{1em} \textrm{" Table 7.2 Values or value ranges for Poisson's ratio ν by bowles1996foundation "} \\ \hspace{1em} \mathrm{mapping} \gets \mathrm{DataMaps}.\mathrm{PoissonRatioBowles1996}.\mathrm{to\_dict} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} ν \gets \mathrm{np}.\mathrm{full\_like} \mathopen{}\left( z, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ν, \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Clay"} \mathclose{}\right) \mathbin{\&} \mathord{\sim} \mathrm{below\_water\_table}, \mathrm{mapping}_{\textrm{"Clay.Unsaturated"}} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ν, \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Clay"} \mathclose{}\right) \mathbin{\&} \mathrm{below\_water\_table}, \mathrm{mapping}_{\textrm{"Clay.Saturated"}} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ν, \mathrm{soil\_type} = \textrm{"Silt"}, \mathrm{mapping}_{\textrm{"Silt"}} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ν, \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Sand"} \mathclose{}\right) \mathbin{|} \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Gravel"} \mathclose{}\right), \mathrm{mapping}_{\textrm{"Sand, gravelly sand"}} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ν, \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Peat"} \mathclose{}\right) \mathbin{|} \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Organic"} \mathclose{}\right), \mathrm{mapping}_{\textrm{"Peat, organic (from Long et al. (2022))"}} \mathclose{}\right) \\ \hspace{1em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( ν, \mathrm{soil\_type} = \textrm{"Other"}, \mathrm{mapping}_{\textrm{"All soils"}} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ ν \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
ν &= \text{Poisson’s ratio}\\
z &= \text{Depth (m)}\\
\text{soil\_type} &= \text{Soil type}\\
\text{below\_water\_table} &= \text{Below water table}
\end{align*}
\]
get_recompression_index__lo1982prediction
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_recompression\_index\_\_lo1982prediction}(C_c, \mathrm{is\_fine\_soil}) \\ \hspace{1em} C_r \gets -0.00327 + 0.139 C_c \\ \hspace{1em} \mathbf{return} \ C_r \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_r &= \text{Recompression index}\\
C_c &= \text{Compression index}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_recompression_ratio__lo1982prediction
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_recompression\_ratio\_\_lo1982prediction}(CR, \mathrm{is\_fine\_soil}) \\ \hspace{1em} RR \gets \mathrm{get\_recompression\_index\_\_lo1982prediction} \mathopen{}\left( CR \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ RR \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
RR &= \text{Recompression ratio}\\
CR &= \text{Compression ratio}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_relative_density__idriss2003estimating
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_relative\_density\_\_idriss2003estimating}(N_{160}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} D_r \gets 100 \sqrt{ \frac{N_{160}}{46} } \\ \hspace{1em} \mathbf{return} \ D_r \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
D_r &= \text{Relative density (\%)}\\
N_{160} &= \text{Normalized blow count}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_remolded_undrained_shear_strength__degroot2019engineering
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_remolded\_undrained\_shear\_strength\_\_degroot2019engineering}(LI, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \textrm{" Based on ngi database for liquidity\_index > 0 "} \\ \hspace{1em} S_{ur} \gets 4.5 LI^{-1.5} \\ \hspace{1em} S_{ur} \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( LI > 0, S_{ur}, \mathrm{np}.\mathrm{nan} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ S_{ur} \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
S_{ur} &= \text{Remolded undrained shear strength (kPa)}\\
LI &= \text{Liquidity index}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_rod_length_correction__cetin2004standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_rod\_length\_correction\_\_cetin2004standard}(z, \mathrm{rod\_length}, \mathrm{use\_simplified\_blows\_correction}) \\ \hspace{1em} \mathbf{if} \ \mathrm{use\_simplified\_blows\_correction} \\ \hspace{2em} C_R \gets 1 \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} C_R \gets \frac{1}{0.9898 + \frac{4.3166}{\mathopen{}\left( \mathrm{rod\_length} + z \mathclose{}\right)^{2}}} \\ \hspace{2em} C_R \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( C_R, 0.75, 1 \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ C_R \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_R &= \text{Rod length correction}\\
z &= \text{Depth (m)}\\
\text{rod\_length} &= \text{Rod length (m)}\\
\text{use\_simplified\_blows\_correction} &= \text{Use simplified blows correction}
\end{align*}
\]
get_rod_length_correction__cetin2018use
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_rod\_length\_correction\_\_cetin2018use}(z, \mathrm{rod\_length}, \mathrm{use\_simplified\_blows\_correction}) \\ \hspace{1em} \mathbf{if} \ \mathrm{use\_simplified\_blows\_correction} \\ \hspace{2em} C_R \gets 1 \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} C_R \gets 0.48 + 0.225 \log \mathopen{}\left( \mathrm{rod\_length} + z \mathclose{}\right) \\ \hspace{2em} C_R \gets \mathrm{np}.\mathrm{asarray} \mathopen{}\left( C_R \mathclose{}\right) \\ \hspace{2em} \mathrm{np}.\mathrm{putmask} \mathopen{}\left( C_R, \mathrm{rod\_length} + z > 10, 1 \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ C_R \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_R &= \text{Rod length correction}\\
z &= \text{Depth (m)}\\
\text{rod\_length} &= \text{Rod length (m)}\\
\text{use\_simplified\_blows\_correction} &= \text{Use simplified blows correction}
\end{align*}
\]
get_rod_length_correction__skempton1986standard
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_rod\_length\_correction\_\_skempton1986standard}(z, \mathrm{rod\_length}, \mathrm{use\_simplified\_blows\_correction}) \\ \hspace{1em} \mathbf{if} \ \mathrm{use\_simplified\_blows\_correction} \\ \hspace{2em} C_R \gets \mathrm{np}.\mathrm{full\_like} \mathopen{}\left( z, 1 \mathclose{}\right) \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} C_R \gets \mathrm{PARAMETERS}_{\textrm{"depth\_plus\_rod\_length"}}.\mathrm{data\_bins}_{\textrm{"rod\_length\_correction"}}.\mathrm{bin\_data} \mathopen{}\left( z + \mathrm{rod\_length} \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ C_R \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
C_R &= \text{Rod length correction}\\
z &= \text{Depth (m)}\\
\text{rod\_length} &= \text{Rod length (m)}\\
\text{use\_simplified\_blows\_correction} &= \text{Use simplified blows correction}
\end{align*}
\]
get_shear_velocity__wair2012guidelines
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_shear\_velocity\_\_wair2012guidelines}(N_{60}, σ_v', \mathrm{soil\_type}, \mathrm{geological\_epoch}) \\ \hspace{1em} \textrm{" Age scaling factors are provided too: [All, Clay \& Silt, Sand]: 0.87, 0.88, 0.90 for Holocene and
1.13, 1.12, 1.17 for Pleistocene "} \\ \hspace{1em} \mathrm{conditions} \gets \mathopen{}\left[ \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Clay"} \mathclose{}\right) \mathbin{|} \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Silt"} \mathclose{}\right), \mathrm{soil\_type} = \textrm{"Sand"}, \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Gravel"} \mathclose{}\right) \mathbin{\&} \mathopen{}\left( \mathrm{geological\_epoch} = \textrm{"Holocene"} \mathclose{}\right), \mathopen{}\left( \mathrm{soil\_type} = \textrm{"Gravel"} \mathclose{}\right) \mathbin{\&} \mathopen{}\left( \mathrm{geological\_epoch} = \textrm{"Pleistocene"} \mathclose{}\right) \mathclose{}\right] \\ \hspace{1em} \mathrm{choices} \gets \mathopen{}\left[ 26 N_{60}^{0.17} \cdot σ_v'^{0.32}, 30 N_{60}^{0.23} \cdot σ_v'^{0.23}, 53 N_{60}^{0.19} \cdot σ_v'^{0.18}, 115 N_{60}^{0.17} \cdot σ_v'^{0.12} \mathclose{}\right] \\ \hspace{1em} V_s \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathrm{conditions}, \mathrm{choices} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ V_s \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
V_s &= \text{Shear velocity (m/s)}\\
N_{60} &= \text{Corrected blow count}\\
σ_v' &= \text{Effective stress (kPa)}\\
\text{soil\_type} &= \text{Soil type}\\
\text{geological\_epoch} &= \text{Geological epoch}
\end{align*}
\]
get_undrained_shear_strength__sivrikaya2006determination
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_undrained\_shear\_strength\_\_sivrikaya2006determination}(N_{60}, \mathrm{uscs\_symbol}, \mathrm{soil\_type}, \mathrm{is\_fine\_soil}) \\ \hspace{1em} \mathrm{conditions} \gets \mathopen{}\left[ \mathrm{uscs\_symbol} = \textrm{"CH"}, \mathrm{uscs\_symbol} = \textrm{"CL"}, \mathrm{soil\_type} = \textrm{"Clay"}, \mathrm{is\_fine\_soil} \mathclose{}\right] \\ \hspace{1em} \mathrm{choices} \gets \mathopen{}\left[ 7.8 N_{60}, 5.35 N_{60}, 6.9 N_{60}, 6.35 N_{60} \mathclose{}\right] \\ \hspace{1em} S_u \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathrm{conditions}, \mathrm{choices} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ S_u \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
S_u &= \text{Undrained shear strength (kPa)}\\
N_{60} &= \text{Corrected blow count}\\
\text{uscs\_symbol} &= \text{USCS symbol}\\
\text{soil\_type} &= \text{Soil type}\\
\text{is\_fine\_soil} &= \text{Is fine soil}
\end{align*}
\]
get_unit_weight__cetin2018use
latex
\[
\begin{array}{l} \mathbf{function} \ \mathrm{get\_unit\_weight\_\_cetin2018use}(N_{60}, \mathrm{is\_fine\_soil}, \mathrm{below\_water\_table}, γ_{default}) \\ \hspace{1em} \mathbf{return} \ \mathrm{\_get\_unit\_weight\_\_cetin2018use\_vec} \mathopen{}\left( \mathclose{}\right) \\ \mathbf{end \ function} \end{array}
\]
\[
\begin{align*}
γ &= \text{Unit weight (kN/m3)}\\
N_{60} &= \text{Corrected blow count}\\
\text{is\_fine\_soil} &= \text{Is fine soil}\\
\text{below\_water\_table} &= \text{Below water table}\\
γ_{default} &= \text{Default unit weight (kN/m3)}
\end{align*}
\]