API

Index of functions

Function details

PileResponse.find_cpt_column_namesFunction
find_cpt_column_names(names::Vector{SubString{String}})

Return a vector [depth_col, qc_col, fs_col, u2_col] providing the relevant names for each item from names.

The function looks for the (non case sensitive) strings "depth", "qc", "fs" and "u2" within the items in names.

Example

data = read_delimited_text_file("./data/example_cpt_data.csv", delim=',')
column_names = collect(keys(data))
depth_col, qc_col, fs_col, u2_col = find_cpt_column_names(column_names)
source
PileResponse.get_least_squares_interpolatorFunction
get_least_squares_interpolator(xvals::AbstractVector, yvals::AbstractVector; p0::AbstractVector = [0.0,0.0])

Return a function fun() such that fun(x) = mx + b is the least squares linear approximation to [xvals, yvals].

  • p0 [Float64, Float64] is the initial guess, and [0.0, 0.0] seems to work.
source
PileResponse.get_load_vs_depthFunction
get_load_vs_depth(depth_m::AbstractVector{Float64}, qc_MPa::AbstractVector{Float64}, Ic::AbstractVector{Float64}, applied_load::Float64, pile_ult_load::Float64, pile_length::Float64, pile_diameter::Float64, pile_type::AbstractString)

Returns [depth, load], which is the load carried by the pile at each depth for a given applied_load at the pile head.

Example

mydepth, myload = get_load_vs_depth(depth_m, qc_MPa, Ic, applied_load, pile_ult_load, pile_length, pile_diameter, pile_type)
source
PileResponse.get_pile_head_displacementFunction
get_pile_head_displacement(k0::Float64, pile_head_loads::AbstractVector{Float64}, pile_ult_load::Float64)

Return the pile head displacement for the given load vector.

Arguments

  • k0::Float64 is the initial pile head stiffness.
  • pile_head_loads::AbstractVector{Float64} is a vector of the load applied at the pile head. It will be sorted into increasing order.
  • pile_ult_load::Float64 is the assessed ultimate load of the pile.

See also get_initial_pile_head_stiffness.

The assumption is that the pile head stiffness k for a given load P can be approximated as:

  • $k = k_{0}(1 - (P/P_{ult})^{0.3})$.

Reference

  • Mayne, P. W. (2001) Stress-strain-strength flow parameters from enhanced in-situ tests.
  • Fahey, M. and Carter, J. P. (1993) A finite element study of the pressuremeter in sand using a nonlinear elastic plastic model.
source
PileResponse.get_initial_pile_head_stiffnessFunction
get_initial_pile_head_stiffness(pile_length::Float64, pile_diameter::Float64, Epile::Int64, Esoil_L::Float64, Esoil_Lon2::Float64; ν::Float64 = 0.3)

Return the initial pile head stiffness for small strain (MN/m).

Arguments

  • Epile (MPa) is the elastic modulus of the pile.
  • Esoil_L (MPa) is the small strain (E₀) elastic modulus of the soil at the base of the pile shaft.
  • Esoil_Lon2 (MPa) is the small strain (E₀) elastic modulus of the soil at the midpoint of the pile shaft.
  • ν (input as \nu[tab]) is the Poisson's ratio of the soil.

The theory is based on the closed form elastic solution provided by Randolph and Wroth (1978). The theory assumes that the soil has a linearly increasing elastic modulus with depth.

Reference

  • Randolph, M. F. and Wroth, C. P. (1978). Analysis of deformation of vertically loaded piles. Jnl. Geot. Eng. Divn., ASCE, 108 (GT12): 1465 - 1488.
source
PileResponse.get_soil_type_CPT2012Function
get_soil_type_CPT2012(Ic::AbstractVector{Float64})

Return a vector of soil types (deonted by 1, 2 or 3) for use in CPT2012 capacity assessment:

  • 1 = Silts and clays (Ic > 2.70).
  • 2 = Intermediate soil (2.50 < Ic <= 2.70).
  • 3 = Sands (Ic <= 2.50).
source
PileResponse.get_kc_base_CPT2012Function
get_kc_base_CPT2012()

Return a dictionary with pile base resistance factors $k_{c}$ such that:

$Q_{ult(base)} = k_{c} \cdot q_{ca}$, where $q_{ca}$ is the equivalent average cone resistance at the pile base.

  • Keys: pile types.
  • Values: $k_{c}$ factors for [silt/clay, intermediate soils, sands].

See also get_average_qc_at_pile_base.

Reference

  • Frank, R. (2017). Some aspects of research and practice for pile design in France. Innov. Infrastruct. Solutions. 2 (32) 1 - 15.
source
PileResponse.get_ultimate_shaft_loadFunction
get_ultimate_shaft_load(depth_m::AbstractVector{Float64}, fshaft_MPa::AbstractVector{Float64}, pile_diameter::Float64, pile_length::Float64)

Return the ultimate shaft load for the pile (MN).

fshaft_MPa is the ultimate shaft resistance (MPa) for each node corresponding to the depth_m vector.

source
PileResponse.get_ultimate_shaft_resistanceFunction
get_ultimate_shaft_resistance(qc_MPa::AbstractVector{Float64}, Ic::AbstractVector{Float64}, pile_type::String; factor::Float64 = 1.0)

Return the ultimate shaft resistance (MPa) for each element. The method follows the approach described by Frank (2017) where:

  • $f_{s} = \alpha\cdot f_{sol}$, with $f_{sol} \leq f_{smax}$

Set factor = 1.0 for ultimate resistance and factor < 1.0 for loads less than the ultimate load.

See also:

Reference

  • Frank, R. (2017). Some aspects of research and practice for pile design in France. Innov. Infrastruct. Solutions. 2 (32) 1 - 15.
source
PileResponse.get_fsmax_shaft_CPT2012Function
get_fsmax_shaft_CPT2012()

Return a dictionary with maximum pile shaft resistance values $f_{smax}$, such that:

$Q_{ult(shaft)} \leq f_{smax}$.

  • Keys: Pile types.
  • Values: Maximum shaft resistance $f_{smax}$ (kPa) for [silt/clay, intermediate soils, sands].

Reference

  • Frank, R. (2017). Some aspects of research and practice for pile design in France. Innov. Infrastruct. Solutions. 2 (32) 1 - 15.
source
PileResponse.get_alpha_shaft_CPT2012Function
get_alpha_shaft_CPT2012()

Return a dictionary with pile shaft resistance $\alpha$ factors, such that:

$Q_{ult(shaft)} = \alpha \cdot f_{sol}$

  • Keys: Pile types.
  • Values: $\alpha$ factors for [silt/clay, intermediate soils, sands].

See also: get_fsol_shaft_CPT2012.

Reference

  • Frank, R. (2017). Some aspects of research and practice for pile design in France. Innov. Infrastruct. Solutions. 2 (32) 1 - 15.
source
PileResponse.get_fsol_shaft_CPT2012Function
get_fsol_shaft_CPT2012(qc_MPa::AbstractVector{Float64}, Ic::AbstractVector{Float64})

Return $f_{sol}$ (kPa), the unfactored ultimate pile shaft resistance.

Ic is the CPT soil behaviour type index. If Ic is not available, provide a vector of the same length as qc_MPa with values 1, 2 or 3 depending on whether the soil is silt/clay, intermediate or sand respectively for each point.

See also get_Ic

Reference

  • Frank, R. (2017). Some aspects of research and practice for pile design in France. Innov. Infrastruct. Solutions. 2 (32) 1 - 15.
source
PileResponse.get_average_qc_at_pile_baseFunction
get_average_qc_at_pile_base(depth_m::AbstractVector{Float64},qc_MPa::AbstractVector{Float64}, pile_length::Float64, pile_diameter::Float64; clip_to_30pct::Bool = false)

Return the average qc within +/- 1.5 pile diameters from the base, with values limited to within +/- 30% of the value at the base.

If clip_to_30pct = false, values will not be limited to +/- 30% of the value at the pile base prior to averaging.

source
PileResponse.get_E0Function
get_E0(Vs::AbstractVector{Float64}; gamma::Float64 = 18.0, ν::Float64 = 0.3)

Return E₀(MPa) = 2 * (1 + ν) * gamma / 9.81 * Vs² * 0.001.

Arguments

  • Vs is the shear wave velocity.
  • gamma is soil unit weight in kN/m², which is assumed constant.
  • ν is the soil Poisson's ratio, which is assumed constant.

See also get_Vs.

source
PileResponse.get_VsFunction
get_Vs(depth_m::AbstractVector{Float64}, qc_MPa::AbstractVector{Float64}, fs_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}, gw_depth::Float64; gamma::Float64 = 18.0, a::Float64 = 0.73)

Return (αᵥₛ * qn / pa)^0.5 where αᵥₛ = 10^(0.55 * Ic + 1.68).

Arguments

  • gw_depth is depth to groundwater in metres.
  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.

Reference

  • Robertson, P. K. and Cabal, K. (2022). Guide to cone penetration testing. 7th Ed. Gregg Drilling LLC.
source
PileResponse.get_IcFunction
get_Ic(depth_m::AbstractVector{Float64}, qc_MPa::AbstractVector{Float64},
fs_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}, gw_depth::Float64; gamma::Float64 = 18.0, a::Float64 = 0.73)

Return the soil behaviour type index based on Qtn:

  • Ic = [(3.47 - log10(Qtn))² + (log10(Fr) + 1.22)²] ^ 0.5.

Arguments

  • gw_depth is depth to groundwater in metres.
  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.

Reference

  • Robertson, P. K. and Cabal, K. (2022). Guide to cone penetration testing. 7th Ed. Gregg Drilling LLC.
source
PileResponse.get_Ic_usingQt_onlyFunction
get_Ic_usingQt_only(depth_m::AbstractVector{Float64}, qc_MPa::AbstractVector{Float64},
fs_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}, gw_depth::Float64; gamma::Float64 = 18.0, a::Float64 = 0.73)

Return the soil behaviour type index based on Qt (not Qtn):

  • Ic = [(3.47 - log10(Qt))² + (log10(Fr) + 1.22)²] ^ 0.5.

Arguments

  • gw_depth is depth to groundwater in metres.
  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.

Reference

  • Robertson, P. K. and Cabal, K. (2022). Guide to cone penetration testing. 7th Ed. Gregg Drilling LLC.
source
PileResponse.get_bigQtnFunction
get_bigQtn(depth_m::AbstractVector{Float64}, qc_MPa::AbstractVector{Float64}, fs_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}; gw_depth::Float64, gamma::Float64 = 18.0, a::Float64 = 0.73)

Return:

  • Qₜₙ = (qₜ - σᵥ₀) / 0.101 * (0.101 / σ'ᵥ₀)ⁿ.
  • where: n = 0.381 * Ic + 0.05 * σ'ᵥ₀ / 0.101 - 0.15.

Uses an iterative process.

Arguments

  • gw_depth is depth to groundwater in metres.
  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.
source
PileResponse.get_bigQtFunction
get_bigQt(depth_m::AbstractVector{Float64}, qc_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}; gw_depth::Float64, gamma::Float64 = 18.0, a::Float64 = 0.73)

Return Qₜ = (qₜ - σᵥ₀) / σ'ᵥ₀.

Arguments

  • gw_depth is depth to groundwater in metres.
  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.
source
PileResponse.get_FrFunction
get_Fr(depth_m::AbstractVector{Float64},  qc_MPa::AbstractVector{Float64}, fs_MPa::AbstractVector{Float64},u2_MPa::AbstractVector{Float64}; gamma::Float64 = 18.0, a::Float64 = 0.73)

Return (fₛ / qₙ) * 100.

Arguments

  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.
source
PileResponse.get_RfFunction
get_Rf(qc_MPa::AbstractVector{Float64}, fs_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}; a::Float64 = 0.73)

Return (fₛ / qₜ) * 100.

  • a is the net area ratio of the cone, typically between 0.70 and 0.85.
source
PileResponse.get_qnFunction
get_qn(depth_m::AbstractVector{Float64},  qc_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}; gamma::Float64 = 18.0, a::Float64 = 0.73)

Return qₙ = qt - σᵥ₀.

Arguments

  • gamma is soil unit weight in kN/m², which is assumed constant.
  • a is the net area ratio of the cone, typically between 0.70 and 0.85.
source
PileResponse.get_qtFunction
get_qt(qc_MPa::AbstractVector{Float64}, u2_MPa::AbstractVector{Float64}; a::Float64 = 0.73)

Return qt = qc + u2(1 - a).

  • a is the net area ratio of the cone, typically between 0.70 and 0.85.
source
PileResponse.get_sigmav0_effectiveFunction
get_sigmav0_effective(depth_m::AbstractVector{Float64}, gw_depth::Float64, gamma::Float64 = 18.0)

Return the effective vertical stress σ'ᵥ₀ (MPa).

Arguments

  • gw_depth is depth to groundwater in metres.
  • gamma is soil unit weight in kN/m², which is assumed constant.
source
PileResponse.get_sigmav0_totalFunction
get_sigmav0_total(depth_m::AbstractVector{Float64}; gamma::Float64 = 18.0)

Return the total vertical stress σᵥ₀ (MPa).

  • gamma is soil unit weight in kN/m², which is assumed constant.
source
PileResponse.read_delimited_text_fileFunction
read_delimited_text_file(filepath::String; delim::AbstractChar=',', T::Type=Float64)

Return a dictionary (data) such that:

  • data[col1_header] = col1_values.

Assumes the first row is the header and that all columns below the header have the same type.

  • delim is the separator, ',' for comma separated, or '\t' for tab separated values.
source