Pipe-Soil Interaction Tools#

class pysubsea.pipe_soil_interaction_tools.PSI(*, total_outer_diameter=0.0, surface_roughness=None, undrained_shear_strength_depth_array=None, undrained_shear_strength_value_array=None, submerged_unit_weight=0.0)[source]#

Bases: object

Class for calculating the capacity of soils using various models for a given pipe and soil configuration.

Parameters:
  • total_outer_diameter (float, optional) – Total outer diameter of the pipe, including coating.

  • surface_roughness (str, optional) – Surface roughness of the pipe (‘Smooth’ or ‘Rough’).

  • undrained_shear_strength_depth_array (array_like, optional) – Per-pipe depth values, in m, defining the undrained shear strength profile.

  • undrained_shear_strength_value_array (array_like, optional) – Per-pipe undrained shear strength values, in Pa, matching undrained_shear_strength_depth_array.

  • submerged_unit_weight (float, optional) – Submerged unit weight of the soil, gamma’, in N/m3.

downward_undrained_model1()[source]#

Calculate vertical penetration resistance using undrained Model 1.

The calculation follows the bearing-capacity formulation in the attached PDF. For each pipe, the method evaluates depths at 0.001 m spacing from 0.001 m to the maximum depth of undrained_shear_strength_depth_array and prepends the zero-depth point to the returned arrays. The reference shear strength is linearly interpolated at zsu,0 from the profile defined by undrained_shear_strength_depth_array and undrained_shear_strength_value_array, and the buoyancy contribution uses the supplied submerged unit weight.

Returns:

  • depth_arrays (np.ndarray) – Depth arrays with shape (n_pipes, n_depths).

  • vertical_bearing_capacity_arrays (np.ndarray) – Vertical penetration resistance arrays with shape (n_pipes, n_depths), in N/m.

Examples

>>> psi = PSI(
...     total_outer_diameter=[0.2731],
...     surface_roughness=['Smooth'],
...     undrained_shear_strength_depth_array=[[0.0, 0.3, 0.5, 1.0, 2.0]],
...     undrained_shear_strength_value_array=[[1200, 5300, 3000, 4200, 6300]],
...     submerged_unit_weight=[5500.0]
... )
>>> depths, capacities = psi.downward_undrained_model1()
>>> depths.shape, capacities.shape, float(depths[0, 0]), round(float(depths[0, -1]), 5), float(capacities[0, 0])
((1, 2001), (1, 2001), 0.0, 2.0, 0.0)
downward_undrained_model2()[source]#

Calculate vertical penetration resistance using undrained Model 2.

Model 2 follows the alternative formulation in the attached PDF. It combines the minimum of the two resistance-factor terms with the soil buoyancy contribution. For each pipe, the method evaluates depths at 0.001 m spacing from 0.001 m to the maximum depth of undrained_shear_strength_depth_array and prepends the zero-depth point to the returned arrays. The shear strength at the pipe invert is linearly interpolated from the profile defined by undrained_shear_strength_depth_array and undrained_shear_strength_value_array.

Returns:

  • depth_arrays (np.ndarray) – Depth arrays with shape (n_pipes, n_depths).

  • vertical_bearing_capacity_arrays (np.ndarray) – Vertical penetration resistance arrays with shape (n_pipes, n_depths), in N/m.

Examples

>>> psi = PSI(
...     total_outer_diameter=[0.2731],
...     surface_roughness=['Smooth'],
...     undrained_shear_strength_depth_array=[[0.0, 0.3, 0.5, 1.0, 2.0]],
...     undrained_shear_strength_value_array=[[1200, 5300, 3000, 4200, 6300]],
...     submerged_unit_weight=[5500.0]
... )
>>> depths, capacities = psi.downward_undrained_model2()
>>> depths.shape, capacities.shape, float(depths[0, 0]), round(float(depths[0, -1]), 5), float(capacities[0, 0])
((1, 2001), (1, 2001), 0.0, 2.0, 0.0)