Skip to content

ssi.py

subsurfaceio.functions.ssi

SSI functions.

nist2012soil important notes:

2.3: Rotational (or cross rotational-translational) impedance of single piles is omitted because rotational stiffness is typically derived from groups of piles supporting a footing or mat, which is based on vertical response parameters.

An important consideration when piles are combined with shallow spread footings or a mat foundation is whether or not lateral resistance is provided by the shallow foundation elements in combination with the piles. Soil might be expected to settle away from shallow foundation elements in cases involving clayey foundation soils and end-bearing piles, particularly when there are surface fills at the site. In such cases, lateral load resistance would derive solely from the piles and basement walls.

8.2.1: An important consideration when deep foundation elements (e.g., piles) are combined with shallow foundation elements (e.g., spread footings or mats) is whether or not resistance from both shallow and deep foundation elements can be combined. If the soil is expected to settle away from the shallow foundation elements (e.g., the case of consolidating soils and end-bearing piles), then lateral load resistance should be derived on the basis of the piles, pile caps, and basement walls only, and the resistance provided by shallow foundation elements should be ignored.

Classes:

Name Description
ReferenceFigureRegistry

Pre-instantiated reference figures

Functions:

Name Description
get_active_pile_length

Calculation function.

get_average_bottom_depth

Calculation function.

get_average_effective_shear_velocity

Calculation function.

get_average_effective_shear_velocity_xx

Calculation function.

get_average_top_depth

Calculation function.

get_dashpot_coefficient

Calculation function.

get_dashpot_coefficient_intensity

Calculation function.

get_dashpot_coefficient_intensity_vertical

Calculation function.

get_dashpot_edge_factor

Calculation function.

get_dimensionless_frequency

Calculation function.

get_dimensionless_frequency_pile

Calculation function.

get_dimensionless_pile_length_parameter

Calculation function.

get_dimensionless_pile_length_parameter_ksd

Calculation function.

get_dimensionless_pile_tip_stiffness

Calculation function.

get_dimensionless_subgrade_reaction_modulus

Calculation function.

get_displacement_rotation

Calculation function.

get_dynamic_stiffness_modifier

Calculation function.

get_dynamic_stiffness_modifier_pile

Calculation function.

get_effective_profile_depth

Calculation function.

get_effective_profile_depth_pile

Calculation function.

get_effective_profile_depth_rotation

Calculation function.

get_elasticity_modulus_z

Calculation function.

get_embedment_factor

Calculation function.

get_footing_half_length

Calculation function.

get_footing_half_width

Calculation function.

get_footing_router

Calculation function.

get_footing_zone

Calculation function.

get_natural_frequency

Calculation function.

get_period_lengthening_ratio

Calculation function.

get_pile_cross_swaying_rocking_stiffness

Calculation function.

get_pile_elasticity_modulus_solid_from_tubular_section

Calculation function.

get_pile_group_damping_ratio

Calculation function.

get_pile_group_damping_ratio_scalar

Calculation function.

get_pile_group_efficiency_factor

Calculation function.

get_pile_group_efficiency_factor_scalar

Calculation function.

get_pile_moment_of_inertia

Calculation function.

get_pile_rocking_stiffness

Calculation function.

get_pile_router

Calculation function.

get_pile_stiffness_in_group

Calculation function.

get_pile_swaying_stiffness

Calculation function.

get_poisson_adjustment_factor

Calculation function.

get_radiation_damping_ratio

Calculation function.

get_radiation_damping_ratio_rx

Calculation function.

get_response_embedment_modification__lizundia2020practical

Calculation function.

get_shape_parameter

Calculation function.

get_square_equivalent_circle_diameter

Calculation function.

get_ssi_effects_expected

Calculation function.

get_static_pile_stiffness

Calculation function.

get_static_stiffness

Calculation function.

get_stiffness

Calculation function.

get_stiffness_edge_factor

Calculation function.

get_stiffness_intensity

Calculation function.

get_stiffness_weight_factor_pile_tip_x

Calculation function.

get_stiffness_weight_factor_pile_tip_z

Calculation function.

get_stiffness_weight_factor_pile_x

Calculation function.

get_stiffness_weight_factor_pile_z

Calculation function.

get_stiffness_weight_factor_soil

Calculation function.

get_structure_effective_modal_height

Calculation function.

get_structure_to_soil_stiffness_ratio

Calculation function.

get_subgrade_reaction_modulus_at_diameter

Calculation function.

get_vertical_stiffness_intensity

Calculation function.

get_vibration_constant

Calculation function.

pile_group_router

Calculation function.

ReferenceFigureRegistry

Pre-instantiated reference figures

get_active_pile_length

get_active_pile_length(
    elasticity_modulus,
    pile_elasticity_modulus,
    pile_diameter,
    is_homogeneous_soil=True,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_active\_pile\_length}(E_s, E_p, D, \mathrm{is\_homogeneous\_soil}) \\ \hspace{1em} \mathbf{if} \ \mathrm{is\_homogeneous\_soil} \\ \hspace{2em} \mathopen{}\left( χ, n \mathclose{}\right) \gets \mathopen{}\left( 2.4, 0.25 \mathclose{}\right) \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathopen{}\left( χ, n \mathclose{}\right) \gets \mathopen{}\left( 2.5, 0.2 \mathclose{}\right) \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} L_a \gets χ \cdot \mathopen{}\left( \frac{E_p}{E_s} \mathclose{}\right)^{n} D \\ \hspace{1em} \mathbf{return} \ L_a \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
elasticity_modulus float

Modulus of elasticity of soil

required
pile_elasticity_modulus float

Young’s modulus of pile material

required
pile_diameter float

Outside diameter of pile

required
is_homogeneous_soil bool

Indicates if soil is homogeneous

True

Returns:

Name Type Description
active_pile_length float

Active pile length in lateral mode (typically < L_p)

get_average_bottom_depth

get_average_bottom_depth(
    footing_embedment, effective_profile_depth
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_average\_bottom\_depth}(D_f, z_p) \\ \hspace{1em} z_{bottom} \gets D_f + z_p \\ \hspace{1em} \mathbf{return} \ z_{bottom} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
footing_embedment float

Depth of footing embedment

required
effective_profile_depth float

Effective profile depth for analysis

required

Returns:

Name Type Description
average_bottom_depth float

Special average bottom depth

get_average_effective_shear_velocity

get_average_effective_shear_velocity(
    shear_velocity,
    depth,
    average_top_depth,
    average_bottom_depth,
    shear_modulus_reduction_factor,
    unit_weight,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_average\_effective\_shear\_velocity}(V_s, z, z_{top}, z_{bottom}, G/G_0, γ) \\ \hspace{1em} V_{s,avg} \gets \mathrm{\_get\_average\_effective\_shear\_velocity} \mathopen{}\left( V_s, z, z_{top}, z_{bottom} \mathclose{}\right) \\ \hspace{1em} V_{s,avg\ red} \gets V_{s,avg} \cdot \sqrt{ G/G_0 } \\ \hspace{1em} G \gets \mathrm{get\_small\_strain\_shear\_modulus\_\_landau1959theory} \mathopen{}\left( γ, V_{s,avg\ red} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( V_{s,avg}, V_{s,avg\ red}, G \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
shear_velocity float

Shear wave velocity of soil

required
depth float

Depth below ground surface to bottom of layer

required
average_top_depth float

Special average top depth

required
average_bottom_depth float

Special average bottom depth

required
shear_modulus_reduction_factor float

Shear modulus reduction factor for soil

required
unit_weight float

Unit weight of soil

required

Returns:

Name Type Description
average_effective_shear_velocity float

Average effective profile velocity

average_effective_shear_velocity_reduced float

Average effective profile velocity reduced for strain compatibility

shear_modulus float

Shear modulus of soil

get_average_effective_shear_velocity_xx

get_average_effective_shear_velocity_xx(
    shear_velocity, depth, effective_profile_depth_rotation
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_average\_effective\_shear\_velocity\_xx}(V_s, z, z_p) \\ \hspace{1em} \mathrm{average\_effective\_shear\_velocity\_xx} \gets \mathrm{get\_site\_class\_average} \mathopen{}\left( V_s, z \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \mathrm{average\_effective\_shear\_velocity\_xx} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
shear_velocity float

Shear wave velocity of soil

required
depth float

Depth below ground surface to bottom of layer

required
effective_profile_depth_rotation float

Effective profile depth for foundation rotation

required

Returns:

Name Type Description
average_effective_shear_velocity float

Average effective profile velocity

get_average_top_depth

get_average_top_depth(
    foundation_is_embedded, footing_embedment
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_average\_top\_depth}(\mathrm{foundation\_is\_embedded}, D_f) \\ \hspace{1em} z_{top} \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( \mathrm{foundation\_is\_embedded}, D_f, 0 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ z_{top} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
foundation_is_embedded bool

Indicates if foundation is embedded

required
footing_embedment float

Depth of footing embedment

required

Returns:

Name Type Description
average_top_depth float

Special average top depth

get_dashpot_coefficient

get_dashpot_coefficient(
    stiffness,
    radiation_damping_ratio,
    soil_damping_ratio,
    natural_frequency,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dashpot\_coefficient}(k, β, β_s, ω) \\ \hspace{1em} c \gets 2 k \frac{β + β_s}{ω} \\ \hspace{1em} \mathbf{return} \ c \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
stiffness float

Dynamic stiffness for mode j (translation or rotation)

required
radiation_damping_ratio float

Radiation damping ratio for soil

required
soil_damping_ratio float

Hysteretic damping ratio of soil

required
natural_frequency float

Undamped natural vibration frequency

required

Returns:

Name Type Description
dashpot_coefficient float

Dashpot coefficient for translation (MN-s/m) or rotation (MN-m/rad)

get_dashpot_coefficient_intensity

get_dashpot_coefficient_intensity(
    dashpot_coefficient_intensity_vertical,
    stiffness_edge_factor,
    dashpot_edge_factor,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dashpot\_coefficient\_intensity}(c_z^i, R_k, R_c) \\ \hspace{1em} ci \gets c_z^i \cdot R_k \cdot R_c \\ \hspace{1em} \mathbf{return} \ ci \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dashpot_coefficient_intensity_vertical float

Vertical dashpot coefficient intensity

required
stiffness_edge_factor float

Stiffness edge increase factor

required
dashpot_edge_factor float

Dashpot edge decrease factor

required

Returns:

Name Type Description
dashpot_coefficient_intensity float

Dashpot coefficient intensity

get_dashpot_coefficient_intensity_vertical

get_dashpot_coefficient_intensity_vertical(
    vibration_mode,
    dashpot_coefficient,
    footing_half_width,
    footing_half_length,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dashpot\_coefficient\_intensity\_vertical}(j, c, B_h, L_h) \\ \hspace{1em} \mathrm{dashpot\_coefficient\_map} \gets \mathrm{dict} \mathopen{}\left( \mathrm{zip} \mathopen{}\left( \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( j \mathclose{}\right), \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( c \mathclose{}\right) \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} c_z \gets \mathrm{dashpot\_coefficient\_map}_{\textrm{"z"}} \\ \hspace{1em} c_z^i \gets \frac{c_z}{4 B_h \cdot L_h} \\ \hspace{1em} \mathbf{return} \ c_z^i \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vibration_mode str

Vibration mode for dynamic analysis

required
dashpot_coefficient float

Dashpot coefficient for translation (MN-s/m) or rotation (MN-m/rad)

required
footing_half_width float

Footing half-width (small plan dimension)

required
footing_half_length float

Footing half-length (large plan dimension)

required

Returns:

Name Type Description
dashpot_coefficient_intensity_vertical float

Vertical dashpot coefficient intensity

get_dashpot_edge_factor

get_dashpot_edge_factor(
    end_length_ratio,
    dashpot_coefficient,
    stiffness_edge_factor,
    dashpot_coefficient_intensity_vertical,
    footing_half_width,
    footing_half_length,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dashpot\_edge\_factor}(R_e, c, R_k, c_z^i, B_h, L_h, j) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_1} \gets \frac{\frac{3 c}{4 c_z^i \cdot B_h^{3} \cdot L_h}}{R_k \cdot \mathopen{}\left( 1 - \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3} \mathclose{}\right) + \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3}} \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_2} \gets \frac{\frac{3 c}{4 c_z^i \cdot B_h \cdot L_h^{3}}}{R_k \cdot \mathopen{}\left( 1 - \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3} \mathclose{}\right) + \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3}} \\ \hspace{1em} \mathrm{condition\_3} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_3} \gets 1 \\ \hspace{1em} R_c \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ R_c \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
end_length_ratio float

End length ratio

required
dashpot_coefficient float

Dashpot coefficient for translation (MN-s/m) or rotation (MN-m/rad)

required
stiffness_edge_factor float

Stiffness edge increase factor

required
dashpot_coefficient_intensity_vertical float

Vertical dashpot coefficient intensity

required
footing_half_width float

Footing half-width (small plan dimension)

required
footing_half_length float

Footing half-length (large plan dimension)

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
dashpot_edge_factor float

Dashpot edge decrease factor

get_dimensionless_frequency

get_dimensionless_frequency(
    natural_frequency,
    footing_half_width,
    average_effective_shear_velocity_reduced,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dimensionless\_frequency}(ω, B_h, V_{s,avg\ red}) \\ \hspace{1em} a_0 \gets \frac{ω \cdot B_h}{V_{s,avg\ red}} \\ \hspace{1em} \mathbf{return} \ a_0 \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
natural_frequency float

Undamped natural vibration frequency

required
footing_half_width float

Footing half-width (small plan dimension)

required
average_effective_shear_velocity_reduced float

Average effective profile velocity reduced for strain compatibility

required

Returns:

Name Type Description
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

get_dimensionless_frequency_pile

get_dimensionless_frequency_pile(
    natural_frequency,
    pile_diameter,
    average_effective_shear_velocity_reduced,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dimensionless\_frequency\_pile}(ω, D, V_{s,avg\ red}) \\ \hspace{1em} a_0 \gets \frac{ω \cdot D}{V_{s,avg\ red}} \\ \hspace{1em} \mathbf{return} \ a_0 \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
natural_frequency float

Undamped natural vibration frequency

required
pile_diameter float

Outside diameter of pile

required
average_effective_shear_velocity_reduced float

Average effective profile velocity reduced for strain compatibility

required

Returns:

Name Type Description
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

get_dimensionless_pile_length_parameter

get_dimensionless_pile_length_parameter(
    pile_elasticity_modulus,
    elasticity_modulus,
    dimensionless_subgrade_reaction_modulus,
    pile_diameter,
    pile_embedment_length,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dimensionless\_pile\_length\_parameter}(E_p, E_s, δ, D, L, j) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathopen{}\left( j = \textrm{"z"} \mathclose{}\right) \mathbin{\&} \mathopen{}\left( D \ne 0 \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets \mathopen{}\left( \frac{4 δ}{\mathrm{np}.\pi} \mathclose{}\right)^{\frac{1}{2}} \mathopen{}\left( \frac{E_p}{E_s} \mathclose{}\right)^{\frac{-1}{2}} \frac{L}{D} \\ \hspace{1em} λL \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ λL \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
elasticity_modulus float

Modulus of elasticity of soil

required
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

required
pile_diameter float

Outside diameter of pile

required
pile_embedment_length float

Embedment length of pile

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
dimensionless_pile_length_parameter float

Dimensionless pile length parameter

get_dimensionless_pile_length_parameter_ksd

get_dimensionless_pile_length_parameter_ksd(
    pile_elasticity_modulus,
    pile_moment_of_inertia,
    vibration_mode,
    subgrade_reaction_modulus_at_diameter,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dimensionless\_pile\_length\_parameter\_ksd}(E_p, I_p, j, k_{sd}) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_1} \gets \mathopen{}\left( \frac{k_{sd}}{4 E_p \cdot I_p} \mathclose{}\right)^{\frac{1}{4}} \\ \hspace{1em} λL \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ λL \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
pile_moment_of_inertia float

Moment of inertia of equivalent solid pile

required
vibration_mode str

Vibration mode for dynamic analysis

required
subgrade_reaction_modulus_at_diameter float

Subgrade reaction modulus at one pile diameter

required

Returns:

Name Type Description
dimensionless_pile_length_parameter float

Dimensionless pile length parameter

get_dimensionless_pile_tip_stiffness

get_dimensionless_pile_tip_stiffness(
    pile_elasticity_modulus,
    elasticity_modulus,
    dimensionless_subgrade_reaction_modulus,
    poisson_ratio,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dimensionless\_pile\_tip\_stiffness}(E_p, E_s, δ, ν, j) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_1} \gets \frac{2}{\sqrt{ \mathrm{np}.\pi \cdot δ } \cdot \mathopen{}\left( 1 - ν^{2} \mathclose{}\right)} \mathopen{}\left( \frac{E_p}{E_s} \mathclose{}\right)^{\frac{-1}{2}} \\ \hspace{1em} Ω \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ Ω \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
elasticity_modulus float

Modulus of elasticity of soil

required
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

required
poisson_ratio float

Poisson’s ratio of soil

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
dimensionless_pile_tip_stiffness float

Dimensionless pile tip stiffness

get_dimensionless_subgrade_reaction_modulus

get_dimensionless_subgrade_reaction_modulus(
    pile_elasticity_modulus,
    elasticity_modulus,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dimensionless\_subgrade\_reaction\_modulus}(E_p, E_s, j) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathrm{np}.\mathrm{isin} \mathopen{}\left( j, \mathopen{}\left( \textrm{"x"}, \textrm{"y"} \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets 2 \mathopen{}\left( \frac{E_p}{E_s} \mathclose{}\right)^{\frac{-3}{40}} \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_2} \gets 0.6 \\ \hspace{1em} \mathrm{condition\_3} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_3} \gets 1.2 \\ \hspace{1em} δ \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ δ \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
elasticity_modulus float

Modulus of elasticity of soil

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

get_displacement_rotation

get_displacement_rotation(
    pile_swaying_stiffness,
    pile_rocking_stiffness,
    pile_cross_swaying_rocking_stiffness,
    pile_head_lateral_load,
    pile_head_moment,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_displacement\_rotation}(K_{hh}, K_{rr}, K_{hr}, \mathrm{pile\_head\_lateral\_load}, \mathrm{pile\_head\_moment}) \\ \hspace{1em} \mathrm{stiffness\_matrix\_inverted} \gets \frac{1}{K_{hh} \cdot K_{rr} - K_{hr}^{2}} \cdot \mathrm{np}.\mathrm{asarray} \mathopen{}\left( \mathopen{}\left[ \mathopen{}\left[ K_{rr}, -K_{hr} \mathclose{}\right], \mathopen{}\left[ -K_{hr}, K_{hh} \mathclose{}\right] \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathopen{}\left( u, θ \mathclose{}\right) \gets \mathrm{np}.\mathrm{matmul} \mathopen{}\left( \mathrm{stiffness\_matrix\_inverted}, \mathrm{np}.\mathrm{asarray} \mathopen{}\left( \mathopen{}\left[ \mathrm{pile\_head\_lateral\_load}, \mathrm{pile\_head\_moment} \mathclose{}\right] \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( u, θ \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_swaying_stiffness float

Swaying stiffness of pile

required
pile_rocking_stiffness float

Rocking stiffness of pile

required
pile_cross_swaying_rocking_stiffness float

Cross-swaying-rocking stiffness of pile

required
pile_head_lateral_load float

Lateral load at pile head

required
pile_head_moment float

Moment at pile head

required

Returns:

Name Type Description
pile_head_displacement float

Displacement at pile head

pile_head_rotation float

Rotation at pile head

get_dynamic_stiffness_modifier

get_dynamic_stiffness_modifier(
    dimensionless_frequency,
    footing_half_length,
    footing_half_width,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dynamic\_stiffness\_modifier}(a_0, L_h, B_h, j) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathrm{np}.\mathrm{isin} \mathopen{}\left( j, \mathopen{}\left( \textrm{"x"}, \textrm{"y"} \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets 1 \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_2} \gets 1 - \frac{\mathopen{}\left( 0.4 + \frac{0.2}{\frac{L_h}{B_h}} \mathclose{}\right) a_0^{2}}{\frac{10}{1 + 3 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)} + a_0^{2}} \\ \hspace{1em} \mathrm{condition\_3} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_3} \gets 1 - \frac{\mathopen{}\left( 0.55 + 0.01 \sqrt{ \frac{L_h}{B_h} - 1 } \mathclose{}\right) a_0^{2}}{2.4 - \frac{0.4}{\mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3}} + a_0^{2}} \\ \hspace{1em} \mathrm{condition\_4} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_4} \gets 1 - \frac{0.55 a_0^{2}}{0.6 + \frac{1.4}{\mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3}} + a_0^{2}} \\ \hspace{1em} \mathrm{condition\_5} \gets j = \textrm{"zz"} \\ \hspace{1em} \mathrm{choice\_5} \gets 1 - \frac{0.33 - 0.03 \sqrt{ \frac{L_h}{B_h} - 1 } \cdot a_0^{2}}{\frac{0.8}{1 + 0.33 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)} + a_0^{2}} \\ \hspace{1em} α \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3}, \mathrm{condition\_4}, \mathrm{condition\_5} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3}, \mathrm{choice\_4}, \mathrm{choice\_5} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ α \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
footing_half_length float

Footing half-length (large plan dimension)

required
footing_half_width float

Footing half-width (small plan dimension)

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
dynamic_stiffness_modifier float

Frequency-dependent stiffness modifier for mode j

get_dynamic_stiffness_modifier_pile

get_dynamic_stiffness_modifier_pile(
    dimensionless_subgrade_reaction_modulus,
    pile_unit_weight,
    unit_weight,
    poisson_ratio,
    dimensionless_frequency,
    vibration_mode,
    stiffness_weight_factor_soil=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_dynamic\_stiffness\_modifier\_pile}(δ, γ_p, γ, ν, a_0, j, w_s) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"x"} \\ \hspace{1em} \mathrm{choice\_1} \gets 1 - \frac{3 \mathrm{np}.\pi}{32 δ} \frac{\frac{γ_p}{γ}}{1 + ν} \cdot a_0^{2} \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_2} \gets 1 - w_s \cdot \mathopen{}\left( \frac{\mathrm{np}.\pi}{8 δ} \frac{\frac{γ_p}{γ}}{1 + ν} \cdot a_0^{2} - \frac{1}{2} \cdot a_0^{\frac{1}{2}} \mathclose{}\right) \\ \hspace{1em} α \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ α \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

required
pile_unit_weight float

Unit weight of pile material

required
unit_weight float

Unit weight of soil

required
poisson_ratio float

Poisson’s ratio of soil

required
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
vibration_mode str

Vibration mode for dynamic analysis

required
stiffness_weight_factor_soil float

Weight factor for soil stiffness contribution

float('nan')

Returns:

Name Type Description
dynamic_stiffness_modifier float

Frequency-dependent stiffness modifier for mode j

get_effective_profile_depth

get_effective_profile_depth(
    vibration_mode, footing_half_width, footing_half_length
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_effective\_profile\_depth}(j, B_h, L_h) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathrm{np}.\mathrm{isin} \mathopen{}\left( j, \mathopen{}\left( \textrm{"x"}, \textrm{"y"}, \textrm{"z"} \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets \mathopen{}\left( B_h \cdot L_h \mathclose{}\right)^{0.5} \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_2} \gets \mathopen{}\left( B_h^{3} \cdot L_h \mathclose{}\right)^{0.25} \\ \hspace{1em} \mathrm{condition\_3} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_3} \gets \mathopen{}\left( B_h \cdot L_h^{3} \mathclose{}\right)^{0.25} \\ \hspace{1em} \mathrm{condition\_4} \gets j = \textrm{"zz"} \\ \hspace{1em} \mathrm{choice\_4} \gets \mathopen{}\left( B_h^{3} \cdot L_h + B_h \cdot L_h^{3} \mathclose{}\right)^{0.25} \\ \hspace{1em} z_p \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3}, \mathrm{condition\_4} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3}, \mathrm{choice\_4} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ z_p \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vibration_mode str

Vibration mode for dynamic analysis

required
footing_half_width float

Footing half-width (small plan dimension)

required
footing_half_length float

Footing half-length (large plan dimension)

required

Returns:

Name Type Description
effective_profile_depth float

Effective profile depth for analysis

get_effective_profile_depth_pile

get_effective_profile_depth_pile(
    vibration_mode,
    pile_embedment_length,
    active_pile_length,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_effective\_profile\_depth\_pile}(j, L, L_a) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_1} \gets L \\ \hspace{1em} \mathrm{condition\_2} \gets \mathrm{np}.\mathrm{isin} \mathopen{}\left( j, \mathopen{}\left( \textrm{"x"}, \textrm{"y"} \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_2} \gets L_a \\ \hspace{1em} z_p \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ z_p \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vibration_mode str

Vibration mode for dynamic analysis

required
pile_embedment_length float

Embedment length of pile

required
active_pile_length float

Active pile length in lateral mode (typically < L_p)

required

Returns:

Name Type Description
effective_profile_depth float

Effective profile depth for analysis

get_effective_profile_depth_rotation

get_effective_profile_depth_rotation(
    footing_embedment,
    footing_half_width,
    footing_half_length,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_effective\_profile\_depth\_rotation}(D_f, B_h, L_h) \\ \hspace{1em} z_p \gets D_f + \mathrm{get\_effective\_profile\_depth} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ z_p \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
footing_embedment float

Depth of footing embedment

required
footing_half_width float

Footing half-width (small plan dimension)

required
footing_half_length float

Footing half-length (large plan dimension)

required

Returns:

Name Type Description
effective_profile_depth_rotation float

Effective profile depth for foundation rotation

get_elasticity_modulus_z

get_elasticity_modulus_z(
    elasticity_modulus,
    depth,
    pile_diameter,
    soil_profile_shape,
    inhomogeneity_alpha=float("nan"),
    inhomogeneity_exponent=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_elasticity\_modulus\_z}(E_s, z, D, \mathrm{soil\_profile\_shape}, a, n) \\ \hspace{1em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"linear"} \\ \hspace{2em} n \gets 1.0 \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathrm{elasticity\_modulus\_z} \gets E_s \cdot \mathopen{}\left( a + \frac{\mathopen{}\left( 1 - a \mathclose{}\right) z}{D} \mathclose{}\right)^{n} \\ \hspace{1em} \mathbf{return} \ \mathrm{elasticity\_modulus\_z} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
elasticity_modulus float

Modulus of elasticity of soil

required
depth float

Depth below ground surface to bottom of layer

required
pile_diameter float

Outside diameter of pile

required
soil_profile_shape str

Shape of soil profile

required
inhomogeneity_alpha float

Inhomogeneity alpha parameter

float('nan')
inhomogeneity_exponent float

Inhomogeneity exponent for soil

float('nan')

Returns:

Name Type Description
elasticity_modulus float

Modulus of elasticity of soil

get_embedment_factor

get_embedment_factor(
    footing_embedment,
    footing_half_length,
    footing_half_width,
    vibration_mode,
    foundation_is_embedded,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_embedment\_factor}(D_f, L_h, B_h, j, \mathrm{foundation\_is\_embedded}) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathrm{foundation\_is\_embedded} \\ \hspace{1em} \mathrm{choice\_1} \gets \mathrm{float} \mathopen{}\left( \textrm{"nan"} \mathclose{}\right) \\ \hspace{1em} \mathrm{condition\_2} \gets \mathrm{np}.\mathrm{isin} \mathopen{}\left( j, \mathopen{}\left( \textrm{"x"}, \textrm{"y"} \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_2} \gets 1 + \mathopen{}\left( 0.33 + \frac{1.34}{1 + \frac{L_h}{B_h}} \mathclose{}\right) \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{0.8} \\ \hspace{1em} \mathrm{condition\_3} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_3} \gets 1 + \mathopen{}\left( 0.25 + \frac{0.25}{\frac{L_h}{B_h}} \mathclose{}\right) \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{0.8} \\ \hspace{1em} \mathrm{condition\_4} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_4} \gets 1 + \frac{D_f}{B_h} + \frac{1.6}{0.35 + \frac{L_h}{B_h}} \cdot \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{2} \\ \hspace{1em} \mathrm{condition\_5} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_5} \gets 1 + \frac{D_f}{B_h} + \frac{1.6}{0.35 + \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{4}} \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{2} \\ \hspace{1em} \mathrm{condition\_6} \gets j = \textrm{"zz"} \\ \hspace{1em} \mathrm{choice\_6} \gets 1 + \mathopen{}\left( 1.3 + \frac{1.32}{\frac{L_h}{B_h}} \mathclose{}\right) \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{0.9} \\ \hspace{1em} η \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3}, \mathrm{condition\_4}, \mathrm{condition\_5}, \mathrm{condition\_6} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3}, \mathrm{choice\_4}, \mathrm{choice\_5}, \mathrm{choice\_6} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ η \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
footing_embedment float

Depth of footing embedment

required
footing_half_length float

Footing half-length (large plan dimension)

required
footing_half_width float

Footing half-width (small plan dimension)

required
vibration_mode str

Vibration mode for dynamic analysis

required
foundation_is_embedded bool

Indicates if foundation is embedded

required

Returns:

Name Type Description
embedment_factor float

Embedment correction factor for rigid footing spring constants

get_footing_half_length

get_footing_half_length(footing_length)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_footing\_half\_length}(L) \\ \hspace{1em} L_h \gets \frac{L}{2} \\ \hspace{1em} \mathbf{return} \ L_h \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
footing_length float

Footing length (large plan dimension)

required

Returns:

Name Type Description
footing_half_length float

Footing half-length (large plan dimension)

get_footing_half_width

get_footing_half_width(footing_width)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_footing\_half\_width}(B) \\ \hspace{1em} B_h \gets \frac{B}{2} \\ \hspace{1em} \mathbf{return} \ B_h \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
footing_width float

Footing width (small plan dimension)

required

Returns:

Name Type Description
footing_half_width float

Footing half-width (small plan dimension)

get_footing_router

get_footing_router()

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_footing\_router}() \\ \hspace{1em} j_{group} \gets \mathopen{}\left[ \textrm{"x overall"}, \textrm{"y overall"}, \textrm{"x base spring"}, \textrm{"y base spring"}, \textrm{"z"}, \textrm{"xx"}, \textrm{"yy"}, \textrm{"zz"} \mathclose{}\right] \\ \hspace{1em} j \gets \mathopen{}\left[ \textrm{"x"}, \textrm{"y"}, \textrm{"x"}, \textrm{"y"}, \textrm{"z"}, \textrm{"xx"}, \textrm{"yy"}, \textrm{"zz"} \mathclose{}\right] \\ \hspace{1em} \mathrm{foundation\_is\_embedded} \gets \mathopen{}\left[ \mathrm{False}, \mathrm{False}, \mathrm{True}, \mathrm{True}, \mathrm{False}, \mathrm{False}, \mathrm{False}, \mathrm{False} \mathclose{}\right] \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( j_{group}, j, \mathrm{foundation\_is\_embedded} \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Args:

Returns:

Name Type Description
vibration_mode_group str

Vibration mode group

vibration_mode str

Vibration mode for dynamic analysis

foundation_is_embedded bool

Indicates if foundation is embedded

get_footing_zone

get_footing_zone(
    vibration_mode, stiffness, dashpot_coefficient
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_footing\_zone}(j, k, c) \\ \hspace{1em} \mathrm{stiffness\_map} \gets \mathrm{dict} \mathopen{}\left( \mathrm{zip} \mathopen{}\left( \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( j \mathclose{}\right), \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( k \mathclose{}\right) \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{dashpot\_coefficient\_map} \gets \mathrm{dict} \mathopen{}\left( \mathrm{zip} \mathopen{}\left( \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( j \mathclose{}\right), \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( c \mathclose{}\right) \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} j \gets \mathopen{}\left[ \textrm{"z"}, \textrm{"xx"}, \textrm{"yy"}, \textrm{"xx and yy"} \mathclose{}\right] \\ \hspace{1em} k \gets \mathopen{}\left[ \mathrm{stiffness\_map}.\mathrm{get} \mathopen{}\left( k \mathclose{}\right) \mid k \in j \mathclose{}\right] \\ \hspace{1em} c \gets \mathopen{}\left[ \mathrm{dashpot\_coefficient\_map}.\mathrm{get} \mathopen{}\left( k \mathclose{}\right) \mid k \in j \mathclose{}\right] \\ \hspace{1em} \mathrm{footing\_zone} \gets \mathopen{}\left[ \textrm{"center"}, \textrm{"y edge"}, \textrm{"x edge"}, \textrm{"corner"} \mathclose{}\right] \\ \hspace{1em} \mathrm{color} \gets \mathopen{}\left[ \textrm{"grey"}, \textrm{"dodgerblue"}, \textrm{"yellow"}, \textrm{"red"} \mathclose{}\right] \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( \mathrm{footing\_zone}, \mathrm{color}, j, k, c \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vibration_mode str

Vibration mode for dynamic analysis

required
stiffness float

Dynamic stiffness for mode j (translation or rotation)

required
dashpot_coefficient float

Dashpot coefficient for translation (MN-s/m) or rotation (MN-m/rad)

required

Returns:

Name Type Description
footing_zone str

Footing intensity zone description

color Any

color

vibration_mode str

Vibration mode for dynamic analysis

stiffness float

Dynamic stiffness for mode j (translation or rotation)

dashpot_coefficient float

Dashpot coefficient for translation (MN-s/m) or rotation (MN-m/rad)

get_natural_frequency

get_natural_frequency(structure_flexible_period)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_natural\_frequency}(T_{flexible}) \\ \hspace{1em} ω \gets \frac{2 \mathrm{np}.\pi}{T_{flexible}} \\ \hspace{1em} \mathbf{return} \ ω \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
structure_flexible_period float

Flexible-base period of structure

required

Returns:

Name Type Description
natural_frequency float

Undamped natural vibration frequency

get_period_lengthening_ratio

get_period_lengthening_ratio(
    structure_to_soil_stiffness_ratio,
    structure_effective_modal_height,
    footing_half_width,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_period\_lengthening\_ratio}(h/{V_s\ T}, h, B_h) \\ \hspace{1em} \mathrm{height\_width\_ratio} \gets \frac{h}{B_h} \\ \hspace{1em} T_{flexible}/T \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PeriodLengtheningRatio}.\mathrm{interpolate\_at\_x} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ T_{flexible}/T \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
structure_to_soil_stiffness_ratio float

Ratio of structure to soil stiffness

required
structure_effective_modal_height float

Height of center of mass for first-mode shape

required
footing_half_width float

Footing half-width (small plan dimension)

required

Returns:

Name Type Description
period_lengthening_ratio float

Ratio of flexible-base to rigid-base period

get_pile_cross_swaying_rocking_stiffness

get_pile_cross_swaying_rocking_stiffness(
    pile_elasticity_modulus,
    pile_moment_of_inertia,
    shape_parameter,
    subgrade_reaction_modulus_at_diameter,
    pile_diameter,
    soil_profile_shape="linear",
    inhomogeneity_alpha=float("nan"),
    inhomogeneity_exponent=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_cross\_swaying\_rocking\_stiffness}(E_p, I_p, μ, k_{sd}, D, \mathrm{soil\_profile\_shape}, a, n) \\ \hspace{1em} K_{hr} \gets \mathrm{float} \mathopen{}\left( \textrm{"nan"} \mathclose{}\right) \\ \hspace{1em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"linear"} \\ \hspace{2em} \mathbf{if} \ a = 1 \\ \hspace{3em} K_{hr} \gets 2 E_p \cdot I_p \cdot μ^{2} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} K_{hr} \gets E_p \cdot I_p \cdot μ^{2} + \frac{k_{sd}}{16 D \cdot μ^{3}} \cdot \mathopen{}\left( 3 + a \cdot \mathopen{}\left( 4 D \cdot μ - 3 \mathclose{}\right) \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"parabolic"} \\ \hspace{3em} K_{hr} \gets E_p \cdot I_p \cdot μ^{2} + k_{sd} \cdot 2^{\frac{-9 - 3 n}{2}} \cdot \mathopen{}\left( \frac{1}{μ \cdot D} \mathclose{}\right)^{n} \frac{\Gamma \mathopen{}\left( 1 + n \mathclose{}\right)}{μ^{2}} \mathopen{}\left( 2^{\frac{5 + n}{2}} - 4 \cos \mathopen{}\left( \frac{\mathopen{}\left( 1 + n \mathclose{}\right) \mathrm{np}.\pi}{4} \mathclose{}\right) + 4 \sin \mathopen{}\left( \frac{\mathopen{}\left( 1 + n \mathclose{}\right) \mathrm{np}.\pi}{4} \mathclose{}\right) \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ K_{hr} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
pile_moment_of_inertia float

Moment of inertia of equivalent solid pile

required
shape_parameter float

Shape parameter analogous to a wavenumber

required
subgrade_reaction_modulus_at_diameter float

Subgrade reaction modulus at one pile diameter

required
pile_diameter float

Outside diameter of pile

required
soil_profile_shape str

Shape of soil profile

'linear'
inhomogeneity_alpha float

Inhomogeneity alpha parameter

float('nan')
inhomogeneity_exponent float

Inhomogeneity exponent for soil

float('nan')

Returns:

Name Type Description
pile_cross_swaying_rocking_stiffness float

Cross-swaying-rocking stiffness of pile

get_pile_elasticity_modulus_solid_from_tubular_section

get_pile_elasticity_modulus_solid_from_tubular_section(
    pile_elasticity_modulus,
    pile_wall_thickness,
    pile_diameter,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_elasticity\_modulus\_solid\_from\_tubular\_section}(E_p, t, D) \\ \hspace{1em} E_p \gets E_p \cdot \mathopen{}\left( 1 - \mathopen{}\left( 1 - \frac{2 t}{D} \mathclose{}\right)^{1} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ E_p \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
pile_wall_thickness float

Wall thickness of pile

required
pile_diameter float

Outside diameter of pile

required

Returns:

Name Type Description
pile_elasticity_modulus float

Young’s modulus of pile material

get_pile_group_damping_ratio

get_pile_group_damping_ratio(
    dimensionless_frequency,
    vibration_mode,
    pile_group_configuration,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_group\_damping\_ratio}(a_0, j, \mathrm{pile\_group\_configuration}) \\ \hspace{1em} \mathbf{return} \ \mathrm{\_pile\_group\_damping\_ratio\_vec} \mathopen{}\left( \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
vibration_mode str

Vibration mode for dynamic analysis

required
pile_group_configuration str

Configuration of pile group

required

Returns:

Name Type Description
pile_group_damping_ratio float

Damping ratio for pile group

get_pile_group_damping_ratio_scalar

get_pile_group_damping_ratio_scalar(
    dimensionless_frequency,
    vibration_mode,
    pile_group_configuration,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_group\_damping\_ratio\_scalar}(a_0, j, \mathrm{pile\_group\_configuration}) \\ \hspace{1em} \mathbf{if} \ j = \textrm{"y"} \\ \hspace{2em} j \gets \textrm{"x"} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathrm{figure} \gets \mathrm{None} \\ \hspace{1em} \mathbf{if} \ j = \textrm{"x"} \\ \hspace{2em} \mathrm{figure} \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PileGroupDampingRatioX} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ j = \textrm{"yy"} \\ \hspace{3em} \mathrm{figure} \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PileGroupDampingRatioYY} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} \mathbf{if} \ j = \textrm{"z"} \\ \hspace{4em} \mathrm{figure} \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PileGroupDampingRatioZ} \\ \hspace{3em} \mathbf{end \ if} \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} β_G \gets \mathrm{figure}.\mathrm{interpolate\_at\_x} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ β_G \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
vibration_mode str

Vibration mode for dynamic analysis

required
pile_group_configuration str

Configuration of pile group

required

Returns:

Name Type Description
pile_group_damping_ratio float

Damping ratio for pile group

get_pile_group_efficiency_factor

get_pile_group_efficiency_factor(
    dimensionless_frequency,
    vibration_mode,
    pile_group_configuration,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_group\_efficiency\_factor}(a_0, j, \mathrm{pile\_group\_configuration}) \\ \hspace{1em} \mathbf{return} \ \mathrm{\_pile\_group\_efficiency\_factor} \mathopen{}\left( \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
vibration_mode str

Vibration mode for dynamic analysis

required
pile_group_configuration str

Configuration of pile group

required

Returns:

Name Type Description
pile_group_efficiency_factor float

Efficiency factor for pile group

get_pile_group_efficiency_factor_scalar

get_pile_group_efficiency_factor_scalar(
    dimensionless_frequency,
    vibration_mode,
    pile_group_configuration,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_group\_efficiency\_factor\_scalar}(a_0, j, \mathrm{pile\_group\_configuration}) \\ \hspace{1em} \mathbf{if} \ j \in \mathopen{}\left( \textrm{"x and y"}, \textrm{"y"} \mathclose{}\right) \\ \hspace{2em} j \gets \textrm{"x"} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathrm{figure} \gets \mathrm{None} \\ \hspace{1em} \mathbf{if} \ j = \textrm{"x"} \\ \hspace{2em} \mathrm{figure} \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PileGroupEfficiencyFactorX} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ j = \textrm{"yy"} \\ \hspace{3em} \mathrm{figure} \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PileGroupEfficiencyFactorYY} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} \mathbf{if} \ j = \textrm{"z"} \\ \hspace{4em} \mathrm{figure} \gets \mathrm{ReferenceFigureRegistry}.\mathrm{PileGroupEfficiencyFactorZ} \\ \hspace{3em} \mathbf{end \ if} \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} EF \gets \mathrm{figure}.\mathrm{interpolate\_at\_x} \mathopen{}\left( \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ EF \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
vibration_mode str

Vibration mode for dynamic analysis

required
pile_group_configuration str

Configuration of pile group

required

Returns:

Name Type Description
pile_group_efficiency_factor float

Efficiency factor for pile group

get_pile_moment_of_inertia

get_pile_moment_of_inertia(pile_diameter, pile_shape)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_moment\_of\_inertia}(D, \mathrm{pile\_shape}) \\ \hspace{1em} I_p \gets \mathrm{float} \mathopen{}\left( \textrm{"nan"} \mathclose{}\right) \\ \hspace{1em} \mathbf{if} \ \mathrm{pile\_shape} \in \mathopen{}\left( \textrm{"tubular"}, \textrm{"circle"} \mathclose{}\right) \\ \hspace{2em} I_p \gets \frac{\mathrm{np}.\pi \cdot D^{4}}{64} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ I_p \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_diameter float

Outside diameter of pile

required
pile_shape str

Shape of pile

required

Returns:

Name Type Description
pile_moment_of_inertia float

Moment of inertia of equivalent solid pile

get_pile_rocking_stiffness

get_pile_rocking_stiffness(
    pile_elasticity_modulus,
    pile_moment_of_inertia,
    shape_parameter,
    subgrade_reaction_modulus_at_diameter,
    pile_diameter,
    soil_profile_shape="linear",
    inhomogeneity_alpha=float("nan"),
    inhomogeneity_exponent=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_rocking\_stiffness}(E_p, I_p, μ, k_{sd}, D, \mathrm{soil\_profile\_shape}, a, n) \\ \hspace{1em} K_{rr} \gets \mathrm{float} \mathopen{}\left( \textrm{"nan"} \mathclose{}\right) \\ \hspace{1em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"linear"} \\ \hspace{2em} \mathbf{if} \ a = 1 \\ \hspace{3em} K_{rr} \gets 2 E_p \cdot I_p \cdot μ \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} K_{rr} \gets \frac{3}{2} \cdot E_p \cdot I_p \cdot μ + \frac{k_{sd}}{8 D \cdot μ^{4}} \cdot \mathopen{}\left( 1 + a \cdot \mathopen{}\left( D \cdot μ - 1 \mathclose{}\right) \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"parabolic"} \\ \hspace{3em} K_{rr} \gets \frac{3}{2} \cdot E_p \cdot I_p \cdot μ + k_{sd} \cdot 2^{\frac{-9 - 3 n}{2}} \cdot \mathopen{}\left( \frac{1}{μ \cdot D} \mathclose{}\right)^{n} \frac{\Gamma \mathopen{}\left( 1 + n \mathclose{}\right)}{μ^{3}} \mathopen{}\left( 2^{\frac{5 + n}{2}} - 4 \cos \mathopen{}\left( \frac{\mathopen{}\left( 1 + n \mathclose{}\right) \mathrm{np}.\pi}{4} \mathclose{}\right) \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ K_{rr} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
pile_moment_of_inertia float

Moment of inertia of equivalent solid pile

required
shape_parameter float

Shape parameter analogous to a wavenumber

required
subgrade_reaction_modulus_at_diameter float

Subgrade reaction modulus at one pile diameter

required
pile_diameter float

Outside diameter of pile

required
soil_profile_shape str

Shape of soil profile

'linear'
inhomogeneity_alpha float

Inhomogeneity alpha parameter

float('nan')
inhomogeneity_exponent float

Inhomogeneity exponent for soil

float('nan')

Returns:

Name Type Description
pile_rocking_stiffness float

Rocking stiffness of pile

get_pile_router

get_pile_router()

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_router}() \\ \hspace{1em} j_{group} \gets \mathopen{}\left[ \textrm{"x and y"}, \textrm{"z"} \mathclose{}\right] \\ \hspace{1em} j \gets \mathopen{}\left[ \textrm{"x"}, \textrm{"z"} \mathclose{}\right] \\ \hspace{1em} \mathrm{foundation\_is\_embedded} \gets \mathopen{}\left[ \mathrm{True}, \mathrm{True} \mathclose{}\right] \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( j_{group}, j, \mathrm{foundation\_is\_embedded} \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Args:

Returns:

Name Type Description
vibration_mode_group str

Vibration mode group

vibration_mode str

Vibration mode for dynamic analysis

foundation_is_embedded bool

Indicates if foundation is embedded

get_pile_stiffness_in_group

get_pile_stiffness_in_group(
    pile_group_efficiency_factor, pile_stiffness
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_stiffness\_in\_group}(EF, k_p) \\ \hspace{1em} k_{pG} \gets EF \cdot k_p \\ \hspace{1em} \mathbf{return} \ k_{pG} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_group_efficiency_factor float

Efficiency factor for pile group

required
pile_stiffness float

Dynamic stiffness of single pile for mode j (translation or rotation)

required

Returns:

Name Type Description
pile_stiffness_in_group float

Dynamic stiffness of pile in group for mode j

get_pile_swaying_stiffness

get_pile_swaying_stiffness(
    pile_elasticity_modulus,
    pile_moment_of_inertia,
    shape_parameter,
    subgrade_reaction_modulus_at_diameter,
    pile_diameter,
    soil_profile_shape="linear",
    inhomogeneity_alpha=float("nan"),
    inhomogeneity_exponent=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_pile\_swaying\_stiffness}(E_p, I_p, μ, k_{sd}, D, \mathrm{soil\_profile\_shape}, a, n) \\ \hspace{1em} K_{hh} \gets \mathrm{float} \mathopen{}\left( \textrm{"nan"} \mathclose{}\right) \\ \hspace{1em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"linear"} \\ \hspace{2em} \mathbf{if} \ a = 1 \\ \hspace{3em} K_{hh} \gets 4 E_p \cdot I_p \cdot μ^{3} \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} K_{hh} \gets E_p \cdot I_p \cdot μ^{3} + \frac{3 k_{sd}}{8 D \cdot μ^{2}} \cdot \mathopen{}\left( 1 + a \cdot \mathopen{}\left( 2 D \cdot μ - 1 \mathclose{}\right) \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"parabolic"} \\ \hspace{3em} K_{hh} \gets E_p \cdot I_p \cdot μ^{3} + k_{sd} \cdot 2^{\frac{-5 - 3 n}{2}} \cdot \mathopen{}\left( \frac{1}{μ \cdot D} \mathclose{}\right)^{n} \frac{\Gamma \mathopen{}\left( 1 + n \mathclose{}\right)}{μ} \mathopen{}\left( 2^{\frac{3 + n}{2}} + 2 \sin \mathopen{}\left( \frac{\mathopen{}\left( 1 + n \mathclose{}\right) \mathrm{np}.\pi}{4} \mathclose{}\right) \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ K_{hh} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
pile_moment_of_inertia float

Moment of inertia of equivalent solid pile

required
shape_parameter float

Shape parameter analogous to a wavenumber

required
subgrade_reaction_modulus_at_diameter float

Subgrade reaction modulus at one pile diameter

required
pile_diameter float

Outside diameter of pile

required
soil_profile_shape str

Shape of soil profile

'linear'
inhomogeneity_alpha float

Inhomogeneity alpha parameter

float('nan')
inhomogeneity_exponent float

Inhomogeneity exponent for soil

float('nan')

Returns:

Name Type Description
pile_swaying_stiffness float

Swaying stiffness of pile

get_poisson_adjustment_factor

get_poisson_adjustment_factor(poisson_ratio)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_poisson\_adjustment\_factor}(ν) \\ \hspace{1em} ψ \gets \sqrt{ \frac{2 \mathopen{}\left( 1 - ν \mathclose{}\right)}{1 - 2 ν} } \\ \hspace{1em} ψ \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( ψ, \mathrm{None}, 2.5 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ ψ \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
poisson_ratio float

Poisson’s ratio of soil

required

Returns:

Name Type Description
poisson_adjustment_factor float

Adjustment factor for Poisson’s ratio

get_radiation_damping_ratio

get_radiation_damping_ratio(
    shear_modulus,
    footing_half_length,
    footing_half_width,
    dimensionless_frequency,
    dynamic_stiffness_modifier,
    static_stiffness,
    vibration_mode,
    foundation_is_embedded=True,
    poisson_adjustment_factor=float("nan"),
    footing_embedment=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_radiation\_damping\_ratio}(G, L_h, B_h, a_0, α, K, j, \mathrm{foundation\_is\_embedded}, ψ, D_f) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathrm{foundation\_is\_embedded} \mathbin{\&} \mathrm{np}.\mathrm{isin} \mathopen{}\left( j, \mathopen{}\left( \textrm{"x"}, \textrm{"y"} \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets \frac{4 \frac{L_h}{B_h}}{\frac{K}{G \cdot B_h}} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_2} \gets \mathrm{foundation\_is\_embedded} \mathbin{\&} \mathopen{}\left( j = \textrm{"z"} \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_2} \gets \frac{4 ψ \frac{L_h}{B_h}}{\frac{K}{G \cdot B_h}} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_3} \gets \mathrm{foundation\_is\_embedded} \mathbin{\&} \mathopen{}\left( j = \textrm{"xx"} \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_3} \gets \frac{\frac{4 ψ}{3} \frac{L_h}{B_h} \cdot a_0^{2}}{\frac{K}{G \cdot B_h^{3}} \cdot \mathopen{}\left( 2.2 - \frac{0.4}{\mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3}} + a_0^{2} \mathclose{}\right)} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_4} \gets \mathrm{foundation\_is\_embedded} \mathbin{\&} \mathopen{}\left( j = \textrm{"yy"} \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_4} \gets \frac{\frac{4 ψ}{3} \cdot \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3} a_0^{2}}{\frac{K}{G \cdot B_h^{3}} \cdot \mathopen{}\left( \frac{1.8}{1 + 1.75 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)} + a_0^{2} \mathclose{}\right)} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_5} \gets \mathrm{foundation\_is\_embedded} \mathbin{\&} \mathopen{}\left( j = \textrm{"zz"} \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_5} \gets \frac{\frac{4}{3} \cdot \mathopen{}\left( \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3} + \frac{L_h}{B_h} \mathclose{}\right) a_0^{2}}{\frac{K}{G \cdot B_h^{3}} \cdot \mathopen{}\left( \frac{1.4}{1 + 3 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)^{0.7}} + a_0^{2} \mathclose{}\right)} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_6} \gets j = \textrm{"x"} \\ \hspace{1em} \mathrm{choice\_6} \gets \frac{4 \mathopen{}\left( \frac{L_h}{B_h} + \frac{D_f}{B_h} \cdot \mathopen{}\left( ψ + \frac{L_h}{B_h} \mathclose{}\right) \mathclose{}\right)}{\frac{K}{G \cdot B_h}} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_7} \gets j = \textrm{"y"} \\ \hspace{1em} \mathrm{choice\_7} \gets \frac{4 \mathopen{}\left( \frac{L_h}{B_h} + \frac{D_f}{B_h} \cdot \mathopen{}\left( 1 + ψ \cdot \frac{L_h}{B_h} \mathclose{}\right) \mathclose{}\right)}{\frac{K}{G \cdot B_h}} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_8} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_8} \gets \frac{4 \mathopen{}\left( ψ \cdot \frac{L_h}{B_h} + \frac{D_f}{B_h} \cdot \mathopen{}\left( 1 + \frac{L_h}{B_h} \mathclose{}\right) \mathclose{}\right)}{\frac{K}{G \cdot B_h}} \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_9} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_9} \gets \mathopen{}\left( \frac{\frac{4}{3} \cdot \mathopen{}\left( \frac{D_f}{B_h} + \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{3} + ψ \cdot \frac{L_h}{B_h} \cdot \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{3} + 3 \frac{D_f}{B_h} \frac{L_h}{B_h} + ψ \cdot \frac{L_h}{B_h} \mathclose{}\right) a_0^{2}}{\frac{K}{G \cdot B_h^{3}} \cdot \mathopen{}\left( \frac{1.8}{1 + 1.75 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)} + a_0^{2} \mathclose{}\right)} + \frac{\frac{4}{3} \cdot \mathopen{}\left( ψ \cdot \frac{L_h}{B_h} + 1 \mathclose{}\right) \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{3}}{\frac{K}{G \cdot B_h^{3}}} \mathclose{}\right) \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_10} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_10} \gets \mathopen{}\left( \frac{\frac{4}{3} \cdot \mathopen{}\left( \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3} \frac{D_f}{B_h} + ψ \cdot \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{3} \frac{L_h}{B_h} + \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{3} + 3 \frac{D_f}{B_h} \cdot \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{2} + ψ \cdot \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3} \mathclose{}\right) a_0^{2}}{\frac{K}{G \cdot B_h^{3}} \cdot \mathopen{}\left( \frac{1.8}{1 + 1.75 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)} + a_0^{2} \mathclose{}\right)} + \frac{\frac{4}{3} \cdot \mathopen{}\left( \frac{L_h}{B_h} + ψ \mathclose{}\right) \mathopen{}\left( \frac{D_f}{B_h} \mathclose{}\right)^{3}}{\frac{K}{G \cdot B_h^{3}}} \mathclose{}\right) \frac{a_0}{2 α} \\ \hspace{1em} \mathrm{condition\_11} \gets j = \textrm{"zz"} \\ \hspace{1em} \mathrm{choice\_11} \gets \frac{\frac{4}{3} \cdot \mathopen{}\left( 3 \frac{L_h}{B_h} \frac{D_f}{B_h} + ψ \cdot \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3} \frac{D_f}{B_h} + 3 \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{2} \frac{D_f}{B_h} + ψ \cdot \frac{D_f}{B_h} + \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{3} + \frac{L_h}{B_h} \mathclose{}\right) a_0^{2}}{\frac{K}{G \cdot B_h^{3}}} \cdot \mathopen{}\left( \frac{1.4}{1 + 3 \mathopen{}\left( \frac{L_h}{B_h} - 1 \mathclose{}\right)^{0.7}} + a_0^{2} \mathclose{}\right) \frac{a_0}{2 α} \\ \hspace{1em} β \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3}, \mathrm{condition\_4}, \mathrm{condition\_5}, \mathrm{condition\_6}, \mathrm{condition\_7}, \mathrm{condition\_8}, \mathrm{condition\_9}, \mathrm{condition\_10}, \mathrm{condition\_11} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3}, \mathrm{choice\_4}, \mathrm{choice\_5}, \mathrm{choice\_6}, \mathrm{choice\_7}, \mathrm{choice\_8}, \mathrm{choice\_9}, \mathrm{choice\_10}, \mathrm{choice\_11} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ β \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
shear_modulus float

Shear modulus of soil

required
footing_half_length float

Footing half-length (large plan dimension)

required
footing_half_width float

Footing half-width (small plan dimension)

required
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
dynamic_stiffness_modifier float

Frequency-dependent stiffness modifier for mode j

required
static_stiffness float

Static stiffness for mode j (translation or rotation)

required
vibration_mode str

Vibration mode for dynamic analysis

required
foundation_is_embedded bool

Indicates if foundation is embedded

True
poisson_adjustment_factor float

Adjustment factor for Poisson’s ratio

float('nan')
footing_embedment float

Depth of footing embedment

float('nan')

Returns:

Name Type Description
radiation_damping_ratio float

Radiation damping ratio for soil

get_radiation_damping_ratio_rx

get_radiation_damping_ratio_rx(
    dynamic_stiffness_modifier,
    dimensionless_subgrade_reaction_modulus,
    poisson_ratio,
    dimensionless_frequency,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_radiation\_damping\_ratio\_rx}(α, δ, ν, a_0) \\ \hspace{1em} β \gets \frac{3}{2 α \cdot \mathopen{}\left( 1 + ν \mathclose{}\right) δ} \cdot a_0^{\frac{3}{4}} \\ \hspace{1em} \mathbf{return} \ β \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dynamic_stiffness_modifier float

Frequency-dependent stiffness modifier for mode j

required
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

required
poisson_ratio float

Poisson’s ratio of soil

required
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required

Returns:

Name Type Description
radiation_damping_ratio float

Radiation damping ratio for soil

get_response_embedment_modification__lizundia2020practical

get_response_embedment_modification__lizundia2020practical(
    footing_embedment,
    average_effective_shear_velocity,
    period=DEEPSOIL_PERIODS,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_response\_embedment\_modification\_\_lizundia2020practical}(D_f, V_{s,avg}, T) \\ \hspace{1em} T \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( T, 0.2, \mathrm{None} \mathclose{}\right) \\ \hspace{1em} RRS_e \gets 0.25 + 0.75 \cos \mathopen{}\left( \frac{2 \mathrm{np}.\pi \cdot D_f}{T \cdot V_{s,avg}} \mathclose{}\right) \\ \hspace{1em} RRS_e \gets \mathrm{np}.\mathrm{clip} \mathopen{}\left( RRS_e, 0.7, \mathrm{None} \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ RRS_e \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
footing_embedment float

Depth of footing embedment

required
average_effective_shear_velocity float

Average effective profile velocity

required
period float

Vibration period of structure or soil

DEEPSOIL_PERIODS

Returns:

Name Type Description
response_embedment_modification float

Response spectrum modification for embedment

get_shape_parameter

get_shape_parameter(
    active_pile_length,
    pile_diameter,
    dimensionless_pile_length_parameter,
    soil_profile_shape="linear",
    inhomogeneity_alpha=None,
    inhomogeneity_exponent=None,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_shape\_parameter}(L_a, D, λL, \mathrm{soil\_profile\_shape}, a, n) \\ \hspace{1em} μ \gets \mathrm{float} \mathopen{}\left( \textrm{"nan"} \mathclose{}\right) \\ \hspace{1em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"linear"} \\ \hspace{2em} \mathbf{if} \ a = 1 \\ \hspace{3em} μ \gets λL \\ \hspace{2em} \mathbf{else} \\ \hspace{3em} μ \gets \frac{4 λL}{5 D^{\frac{1}{4}} \cdot L_a \cdot \mathopen{}\left( a - 1 \mathclose{}\right)} \mathopen{}\left( \mathopen{}\left( a \cdot D \mathclose{}\right)^{\frac{5}{4}} - \mathopen{}\left( a \cdot D - a \cdot L_a + L_a \mathclose{}\right)^{\frac{5}{4}} \mathclose{}\right) \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{else} \\ \hspace{2em} \mathbf{if} \ \mathrm{soil\_profile\_shape} = \textrm{"parabolic"} \\ \hspace{3em} μ \gets \frac{4}{4 + n} \cdot \mathopen{}\left( \frac{L_a}{D} \mathclose{}\right)^{\frac{n}{4}} λL \\ \hspace{2em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{end \ if} \\ \hspace{1em} \mathbf{return} \ μ \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
active_pile_length float

Active pile length in lateral mode (typically < L_p)

required
pile_diameter float

Outside diameter of pile

required
dimensionless_pile_length_parameter float

Dimensionless pile length parameter

required
soil_profile_shape str

Shape of soil profile

'linear'
inhomogeneity_alpha float

Inhomogeneity alpha parameter

None
inhomogeneity_exponent float

Inhomogeneity exponent for soil

None

Returns:

Name Type Description
shape_parameter float

Shape parameter analogous to a wavenumber

get_square_equivalent_circle_diameter

get_square_equivalent_circle_diameter(pile_diameter)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_square\_equivalent\_circle\_diameter}(D) \\ \hspace{1em} D \gets 2 \mathopen{}\left( \frac{D^{2}}{\mathrm{np}.\pi} \mathclose{}\right)^{0.5} \\ \hspace{1em} \mathbf{return} \ D \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_diameter float

Outside diameter of pile

required

Returns:

Name Type Description
pile_diameter float

Outside diameter of pile

get_ssi_effects_expected

get_ssi_effects_expected(structure_to_soil_stiffness_ratio)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_ssi\_effects\_expected}(h/{V_s\ T}) \\ \hspace{1em} \mathrm{ssi\_effects\_expected} \gets h/{V_s\ T} > 0.1 \\ \hspace{1em} \mathbf{return} \ \mathrm{ssi\_effects\_expected} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
structure_to_soil_stiffness_ratio float

Ratio of structure to soil stiffness

required

Returns:

Name Type Description
ssi_effects_expected bool

Indicates expected soil-structure interaction effects

get_static_pile_stiffness

get_static_pile_stiffness(
    elasticity_modulus, pile_diameter, vibration_constant
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_static\_pile\_stiffness}(E_s, D, χ) \\ \hspace{1em} K \gets χ \cdot E_s \cdot D \\ \hspace{1em} \mathbf{return} \ K \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
elasticity_modulus float

Modulus of elasticity of soil

required
pile_diameter float

Outside diameter of pile

required
vibration_constant float

Dimensionless constant for vibration for mode j

required

Returns:

Name Type Description
static_stiffness float

Static stiffness for mode j (translation or rotation)

get_static_stiffness

get_static_stiffness(
    shear_modulus,
    footing_half_length,
    footing_half_width,
    vibration_mode,
    foundation_is_embedded,
    poisson_ratio=float("nan"),
    embedment_factor=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_static\_stiffness}(G, L_h, B_h, j, \mathrm{foundation\_is\_embedded}, ν, η) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"x"} \\ \hspace{1em} \mathrm{choice\_1} \gets \frac{G \cdot B_h}{2 - ν} \cdot \mathopen{}\left( 6.8 \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{0.65} + 2.4 \mathclose{}\right) \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"y"} \\ \hspace{1em} \mathrm{choice\_2} \gets \frac{G \cdot B_h}{2 - ν} \cdot \mathopen{}\left( 6.8 \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{0.65} + 0.8 \frac{L_h}{B_h} + 1.6 \mathclose{}\right) \\ \hspace{1em} \mathrm{condition\_3} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_3} \gets \frac{G \cdot B_h}{1 - ν} \cdot \mathopen{}\left( 3.1 \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{0.75} + 1.6 \mathclose{}\right) \\ \hspace{1em} \mathrm{condition\_4} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_4} \gets \frac{G \cdot B_h^{3}}{1 - ν} \cdot \mathopen{}\left( 3.2 \frac{L_h}{B_h} + 0.8 \mathclose{}\right) \\ \hspace{1em} \mathrm{condition\_5} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_5} \gets \frac{G \cdot B_h^{3}}{1 - ν} \cdot \mathopen{}\left( 3.73 \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{2.4} + 0.27 \mathclose{}\right) \\ \hspace{1em} \mathrm{condition\_6} \gets j = \textrm{"zz"} \\ \hspace{1em} \mathrm{choice\_6} \gets G \cdot B_h^{3} \cdot \mathopen{}\left( 4.25 \mathopen{}\left( \frac{L_h}{B_h} \mathclose{}\right)^{2.45} + 4.06 \mathclose{}\right) \\ \hspace{1em} K \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3}, \mathrm{condition\_4}, \mathrm{condition\_5}, \mathrm{condition\_6} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3}, \mathrm{choice\_4}, \mathrm{choice\_5}, \mathrm{choice\_6} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} K \gets \mathrm{np}.\mathrm{where} \mathopen{}\left( \mathord{\sim} \mathrm{foundation\_is\_embedded}, K \cdot η, K \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ K \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
shear_modulus float

Shear modulus of soil

required
footing_half_length float

Footing half-length (large plan dimension)

required
footing_half_width float

Footing half-width (small plan dimension)

required
vibration_mode str

Vibration mode for dynamic analysis

required
foundation_is_embedded bool

Indicates if foundation is embedded

required
poisson_ratio float

Poisson’s ratio of soil

float('nan')
embedment_factor float

Embedment correction factor for rigid footing spring constants

float('nan')

Returns:

Name Type Description
static_stiffness float

Static stiffness for mode j (translation or rotation)

get_stiffness

get_stiffness(dynamic_stiffness_modifier, static_stiffness)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness}(α, K) \\ \hspace{1em} k \gets α \cdot K \\ \hspace{1em} \mathbf{return} \ k \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dynamic_stiffness_modifier float

Frequency-dependent stiffness modifier for mode j

required
static_stiffness float

Static stiffness for mode j (translation or rotation)

required

Returns:

Name Type Description
stiffness float

Dynamic stiffness for mode j (translation or rotation)

get_stiffness_edge_factor

get_stiffness_edge_factor(
    end_length_ratio,
    stiffness,
    vertical_stiffness_intensity,
    footing_half_width,
    footing_half_length,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_edge\_factor}(R_e, k, k_z^i, B_h, L_h, j) \\ \hspace{1em} \mathrm{condition\_1} \gets \mathopen{}\left( R_e = 0 \mathclose{}\right) \mathbin{\&} \mathopen{}\left( j = \textrm{"xx"} \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_1} \gets 0 \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"xx"} \\ \hspace{1em} \mathrm{choice\_2} \gets \frac{\frac{3 k}{4 k_z^i \cdot B_h^{3} \cdot L_h} - \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3}}{1 - \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3}} \\ \hspace{1em} \mathrm{condition\_3} \gets \mathopen{}\left( R_e = 0 \mathclose{}\right) \mathbin{\&} \mathopen{}\left( j = \textrm{"yy"} \mathclose{}\right) \\ \hspace{1em} \mathrm{choice\_3} \gets 0 \\ \hspace{1em} \mathrm{condition\_4} \gets j = \textrm{"yy"} \\ \hspace{1em} \mathrm{choice\_4} \gets \frac{\frac{3 k}{4 k_z^i \cdot B_h \cdot L_h^{3}} - \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3}}{1 - \mathopen{}\left( 1 - R_e \mathclose{}\right)^{3}} \\ \hspace{1em} \mathrm{condition\_5} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_5} \gets 1 \\ \hspace{1em} R_k \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2}, \mathrm{condition\_3}, \mathrm{condition\_4}, \mathrm{condition\_5} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2}, \mathrm{choice\_3}, \mathrm{choice\_4}, \mathrm{choice\_5} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ R_k \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
end_length_ratio float

End length ratio

required
stiffness float

Dynamic stiffness for mode j (translation or rotation)

required
vertical_stiffness_intensity float

Vertical stiffness intensity for foundation

required
footing_half_width float

Footing half-width (small plan dimension)

required
footing_half_length float

Footing half-length (large plan dimension)

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
stiffness_edge_factor float

Stiffness edge increase factor

get_stiffness_intensity

get_stiffness_intensity(
    vertical_stiffness_intensity, stiffness_edge_factor
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_intensity}(k_z^i, R_k) \\ \hspace{1em} k_i \gets k_z^i \cdot R_k \\ \hspace{1em} \mathbf{return} \ k_i \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vertical_stiffness_intensity float

Vertical stiffness intensity for foundation

required
stiffness_edge_factor float

Stiffness edge increase factor

required

Returns:

Name Type Description
stiffness_intensity float

Stiffness intensity for foundation

get_stiffness_weight_factor_pile_tip_x

get_stiffness_weight_factor_pile_tip_x()

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_weight\_factor\_pile\_tip\_x}() \\ \hspace{1em} w_b \gets 0.0 \\ \hspace{1em} \mathbf{return} \ w_b \\ \mathbf{end \ function} \end{array} \]

Args:

Returns:

Name Type Description
stiffness_weight_factor_pile_tip float

Weight factor for pile tip stiffness contribution

get_stiffness_weight_factor_pile_tip_z

get_stiffness_weight_factor_pile_tip_z(
    dimensionless_pile_length_parameter,
    dimensionless_pile_tip_stiffness,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_weight\_factor\_pile\_tip\_z}(λL, Ω) \\ \hspace{1em} w_b \gets \frac{2 Ω}{2 Ω \cdot \cosh λL \cdot \mathopen{}\left( 1 + Ω^{2} \mathclose{}\right) \sinh λL} \\ \hspace{1em} \mathbf{return} \ w_b \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_pile_length_parameter float

Dimensionless pile length parameter

required
dimensionless_pile_tip_stiffness float

Dimensionless pile tip stiffness

required

Returns:

Name Type Description
stiffness_weight_factor_pile_tip float

Weight factor for pile tip stiffness contribution

get_stiffness_weight_factor_pile_x

get_stiffness_weight_factor_pile_x()

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_weight\_factor\_pile\_x}() \\ \hspace{1em} w_p \gets \frac{1}{4} \\ \hspace{1em} \mathbf{return} \ w_p \\ \mathbf{end \ function} \end{array} \]

Args:

Returns:

Name Type Description
stiffness_weight_factor_pile float

Weight factor for pile stiffness contribution

get_stiffness_weight_factor_pile_z

get_stiffness_weight_factor_pile_z(
    stiffness_weight_factor_soil,
    stiffness_weight_factor_pile_tip,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_weight\_factor\_pile\_z}(w_s, w_b) \\ \hspace{1em} w_p \gets 1 - \mathopen{}\left( w_s + w_b \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ w_p \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
stiffness_weight_factor_soil float

Weight factor for soil stiffness contribution

required
stiffness_weight_factor_pile_tip float

Weight factor for pile tip stiffness contribution

required

Returns:

Name Type Description
stiffness_weight_factor_pile float

Weight factor for pile stiffness contribution

get_stiffness_weight_factor_soil

get_stiffness_weight_factor_soil(
    dimensionless_pile_length_parameter,
    dimensionless_pile_tip_stiffness,
    vibration_mode,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_stiffness\_weight\_factor\_soil}(λL, Ω, j) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"x"} \\ \hspace{1em} \mathrm{choice\_1} \gets \frac{3}{4} \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_2} \gets \frac{-2 \mathopen{}\left( λL \cdot \mathopen{}\left( Ω^{2} - 1 \mathclose{}\right) + Ω \mathclose{}\right) + 2 Ω \cdot \cosh \mathopen{}\left( 2 λL \mathclose{}\right) + \mathopen{}\left( 1 + Ω^{2} \mathclose{}\right) \sinh \mathopen{}\left( 2 λL \mathclose{}\right)}{4 \mathopen{}\left( \cosh λL \mathclose{}\right)^{2} \mathopen{}\left( Ω + \tanh λL \mathclose{}\right) \mathopen{}\left( 1 + Ω \cdot \tanh λL \mathclose{}\right)} \\ \hspace{1em} w_s \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ w_s \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_pile_length_parameter float

Dimensionless pile length parameter

required
dimensionless_pile_tip_stiffness float

Dimensionless pile tip stiffness

required
vibration_mode str

Vibration mode for dynamic analysis

required

Returns:

Name Type Description
stiffness_weight_factor_soil float

Weight factor for soil stiffness contribution

get_structure_effective_modal_height

get_structure_effective_modal_height(
    structure_total_height,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_structure\_effective\_modal\_height}(h_{total}) \\ \hspace{1em} h \gets \frac{2}{3} \cdot h_{total} \\ \hspace{1em} \mathbf{return} \ h \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
structure_total_height float

Building height from foundation to roof

required

Returns:

Name Type Description
structure_effective_modal_height float

Height of center of mass for first-mode shape

get_structure_to_soil_stiffness_ratio

get_structure_to_soil_stiffness_ratio(
    structure_effective_modal_height,
    average_effective_shear_velocity,
    structure_rigid_period,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_structure\_to\_soil\_stiffness\_ratio}(h, V_{s,avg}, T) \\ \hspace{1em} h/{V_s\ T} \gets \frac{h}{V_{s,avg} \cdot T} \\ \hspace{1em} \mathbf{return} \ h/{V_s\ T} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
structure_effective_modal_height float

Height of center of mass for first-mode shape

required
average_effective_shear_velocity float

Average effective profile velocity

required
structure_rigid_period float

Undamped natural vibration period of structure

required

Returns:

Name Type Description
structure_to_soil_stiffness_ratio float

Ratio of structure to soil stiffness

get_subgrade_reaction_modulus_at_diameter

get_subgrade_reaction_modulus_at_diameter(
    dimensionless_subgrade_reaction_modulus,
    elasticity_modulus,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_subgrade\_reaction\_modulus\_at\_diameter}(δ, E_s) \\ \hspace{1em} k_{sd} \gets δ \cdot E_s \\ \hspace{1em} \mathbf{return} \ k_{sd} \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

required
elasticity_modulus float

Modulus of elasticity of soil

required

Returns:

Name Type Description
subgrade_reaction_modulus_at_diameter float

Subgrade reaction modulus at one pile diameter

get_vertical_stiffness_intensity

get_vertical_stiffness_intensity(
    vibration_mode,
    stiffness,
    footing_half_width,
    footing_half_length,
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_vertical\_stiffness\_intensity}(j, k, B_h, L_h) \\ \hspace{1em} \mathrm{stiffness\_map} \gets \mathrm{dict} \mathopen{}\left( \mathrm{zip} \mathopen{}\left( \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( j \mathclose{}\right), \mathrm{np}.\mathrm{atleast\_1d} \mathopen{}\left( k \mathclose{}\right) \mathclose{}\right) \mathclose{}\right) \\ \hspace{1em} k_z \gets \mathrm{stiffness\_map}_{\textrm{"z"}} \\ \hspace{1em} k_z^i \gets \frac{k_z}{4 B_h \cdot L_h} \\ \hspace{1em} \mathbf{return} \ k_z^i \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vibration_mode str

Vibration mode for dynamic analysis

required
stiffness float

Dynamic stiffness for mode j (translation or rotation)

required
footing_half_width float

Footing half-width (small plan dimension)

required
footing_half_length float

Footing half-length (large plan dimension)

required

Returns:

Name Type Description
vertical_stiffness_intensity float

Vertical stiffness intensity for foundation

get_vibration_constant

get_vibration_constant(
    pile_elasticity_modulus,
    elasticity_modulus,
    dimensionless_subgrade_reaction_modulus,
    vibration_mode,
    dimensionless_pile_length_parameter=float("nan"),
    dimensionless_pile_tip_stiffness=float("nan"),
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{get\_vibration\_constant}(E_p, E_s, δ, j, λL, Ω) \\ \hspace{1em} \mathrm{condition\_1} \gets j = \textrm{"x"} \\ \hspace{1em} \mathrm{choice\_1} \gets \frac{1}{2} \cdot \mathrm{np}.\pi^{\frac{1}{4}} \cdot δ^{\frac{3}{4}} \cdot \mathopen{}\left( \frac{E_p}{E_s} \mathclose{}\right)^{\frac{1}{4}} \\ \hspace{1em} \mathrm{condition\_2} \gets j = \textrm{"z"} \\ \hspace{1em} \mathrm{choice\_2} \gets \mathopen{}\left( \frac{\mathrm{np}.\pi \cdot δ}{2} \mathclose{}\right)^{\frac{1}{2}} \mathopen{}\left( \frac{E_p}{E_s} \mathclose{}\right)^{\frac{1}{2}} \frac{Ω + \tanh λL}{1 + Ω \cdot \tanh λL} \\ \hspace{1em} χ \gets \mathrm{np}.\mathrm{select} \mathopen{}\left( \mathopen{}\left[ \mathrm{condition\_1}, \mathrm{condition\_2} \mathclose{}\right], \mathopen{}\left[ \mathrm{choice\_1}, \mathrm{choice\_2} \mathclose{}\right] \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ χ \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
pile_elasticity_modulus float

Young’s modulus of pile material

required
elasticity_modulus float

Modulus of elasticity of soil

required
dimensionless_subgrade_reaction_modulus float

Dimensionless modulus of subgrade reaction

required
vibration_mode str

Vibration mode for dynamic analysis

required
dimensionless_pile_length_parameter float

Dimensionless pile length parameter

float('nan')
dimensionless_pile_tip_stiffness float

Dimensionless pile tip stiffness

float('nan')

Returns:

Name Type Description
vibration_constant float

Dimensionless constant for vibration for mode j

pile_group_router

pile_group_router(
    vibration_mode, dimensionless_frequency, stiffness
)

Calculation function.

\[ \begin{array}{l} \mathbf{function} \ \mathrm{pile\_group\_router}(j, a_0, k) \\ \hspace{1em} \mathrm{pile\_group\_configuration} \gets \mathopen{}\left[ \textrm{"2X2"}, \textrm{"2X2"}, \textrm{"3X3"}, \textrm{"3X3"}, \textrm{"4X4"}, \textrm{"4X4"} \mathclose{}\right] \\ \hspace{1em} j \gets \mathrm{np}.\mathrm{tile} \mathopen{}\left( j, 3 \mathclose{}\right) \\ \hspace{1em} a_0 \gets \mathrm{np}.\mathrm{tile} \mathopen{}\left( a_0, 3 \mathclose{}\right) \\ \hspace{1em} k \gets \mathrm{np}.\mathrm{tile} \mathopen{}\left( k, 3 \mathclose{}\right) \\ \hspace{1em} \mathbf{return} \ \mathopen{}\left( \mathrm{pile\_group\_configuration}, j, a_0, k \mathclose{}\right) \\ \mathbf{end \ function} \end{array} \]

Parameters:

Name Type Description Default
vibration_mode str

Vibration mode for dynamic analysis

required
dimensionless_frequency float

Dimensionless frequency for dynamic analysis

required
stiffness float

Dynamic stiffness for mode j (translation or rotation)

required

Returns:

Name Type Description
pile_group_configuration str

Configuration of pile group

vibration_mode str

Vibration mode for dynamic analysis

dimensionless_frequency float

Dimensionless frequency for dynamic analysis

pile_stiffness float

Dynamic stiffness of single pile for mode j (translation or rotation)