Lateral Buckling Tools#

class pysubsea.lateral_buckling_tools.LBForceDistributions(*, oos_section_type=None, oos_factor_mean=0.0, oos_factor_std=0.0, oos_reference_length=0.0, friction_factor_mean=0.0, friction_factor_std=0.0, outer_diameter=0.0, wall_thickness=0.0, youngs_modulus=0.0, submerged_weight=0.0, curve_radius=0.0, sleeper_height=0.0)[source]#

Bases: object

Class for lateral buckling force calculations.

Parameters:
  • oos_section_type (str or array-like, optional) – Out-of-straightness (OOS) section type: ‘straight’, ‘curve’, or ‘sleeper’.

  • oos_factor_mean (float or array-like, optional) – Mean OOS factor for the condition of interest.

  • oos_factor_std (float or array-like, optional) – Standard deviation of the OOS factor for the condition of interest.

  • oos_reference_length (float or array-like, optional) – Reference length for the OOS section.

  • friction_factor_mean (float or array-like, optional) – Mean friction factor for the condition of interest.

  • friction_factor_std (float or array-like, optional) – Standard deviation of the friction factor for the condition of interest.

  • outer_diameter (float or array-like, optional) – Pipe outer diameter, used to compute section properties from Pipe.

  • wall_thickness (float or array-like, optional) – Pipe wall thickness, used to compute section properties from Pipe.

  • youngs_modulus (float or array-like, optional) – Young’s modulus of the material.

  • submerged_weight (float or array-like, optional) – Submerged weight for the condition of interest.

  • curve_radius (float or array-like, optional) – Curve radius for the OOS section, if applicable.

  • sleeper_height (float or array-like, optional) – Sleeper height for the OOS section, if applicable.

characteristic_buckling_force()[source]#

Compute characteristic buckling force.

Returns:

characteristic_buckling_force – Characteristic lateral buckling force.

Return type:

np.ndarray

Examples

>>> lb = LBForceDistributions(
...     outer_diameter=[0.2731, 0.3239],
...     wall_thickness=[0.0127, 0.0159],
...     youngs_modulus=[207.0e+09, 207.0e+09],
...     submerged_weight=[695.39794758, 1029.76124826]
... )
>>> lb.characteristic_buckling_force()
array([ 839099.6561..., 1351458.0306...])
nominal_straight_section_buckling_force()[source]#

Compute the mean nominal straight-section buckling force.

This is calculated as the product of the mean OOS factor, the square root of the mean friction factor, and the characteristic buckling force.

route_curve_buckling_force()[source]#

Compute the mean route-curve buckling force.

This is calculated as the product of the mean OOS factor, the mean friction factor, the submerged weight, and the curve radius.

sleeper_buckling_force()[source]#

Compute the mean sleeper buckling force.

This is calculated as the product of the mean OOS factor and 4 * sqrt(bending_stiffness * submerged_weight / sleeper_height).

nominal_straight_buckling_force_distribution_parameters()[source]#

Compute nominal straight-section buckling force distribution parameters.

The nominal straight-section buckling force is treated as the product of the OOS factor, the square root of friction factor, and the characteristic buckling force.

Returns:

  • mean_nominal_straight_section_buckling (np.ndarray) – Array of mean nominal straight-section buckling force values.

  • std_nominal_straight_section_buckling (np.ndarray) – Array of standard deviation values.

  • location_param (np.ndarray) – Array of location parameters of the lognormal distribution.

  • scale_param (np.ndarray) – Array of scale parameters of the lognormal distribution.

  • le_fit (np.ndarray) – Array of fitted 5th-percentile values.

  • be_fit (np.ndarray) – Array of fitted 50th-percentile values.

  • he_fit (np.ndarray) – Array of fitted 95th-percentile values.

  • nominal_straight_section_buckling_range (np.ndarray) – 2D array with shape (n_cases, 10000), one range per case.

  • nominal_straight_section_buckling_cdf (np.ndarray) – 2D array with shape (n_cases, 10000), one CDF per case.

  • nominal_straight_section_buckling_pdf (np.ndarray) – 2D array with shape (n_cases, 10000), one PDF per case.

Notes

This method mirrors the output structure of LBOOSDistributions, but the mean and standard deviation are propagated through the product of OOS factor, friction factor, and characteristic buckling force instead of being fitted from discrete estimates.

route_curve_buckling_force_distribution_parameters()[source]#

Compute route-curve buckling forcedistribution parameters.

The route-curve buckling force is treated as the product of the OOS factor, the friction factor, the submerged weight, and the curve radius.

Returns:

  • mean_route_curve_buckling (np.ndarray) – Array of mean route-curve buckling force values.

  • std_route_curve_buckling (np.ndarray) – Array of standard deviation values.

  • location_param (np.ndarray) – Array of location parameters of the lognormal distribution.

  • scale_param (np.ndarray) – Array of scale parameters of the lognormal distribution.

  • le_fit (np.ndarray) – Array of fitted 5th-percentile values.

  • be_fit (np.ndarray) – Array of fitted 50th-percentile values.

  • he_fit (np.ndarray) – Array of fitted 95th-percentile values.

  • route_curve_buckling_range (np.ndarray) – 2D array with shape (n_cases, 10000), one range per case.

  • route_curve_buckling_cdf (np.ndarray) – 2D array with shape (n_cases, 10000), one CDF per case.

  • route_curve_buckling_pdf (np.ndarray) – 2D array with shape (n_cases, 10000), one PDF per case.

Notes

This method mirrors the output structure of LBOOSDistributions, but the mean and standard deviation are propagated through the product of OOS factor, friction factor, submerged weight, and curve radius instead of being fitted from discrete estimates.

sleeper_buckling_force_distribution_parameters()[source]#

Compute sleeper buckling force distribution parameters.

The sleeper buckling force is treated as: oos_factor * 4 * sqrt(bending_stiffness * submerged_weight / sleeper_height).

Returns:

  • mean_sleeper_buckling (np.ndarray) – Array of mean sleeper buckling force values.

  • std_sleeper_buckling (np.ndarray) – Array of standard deviation values.

  • location_param (np.ndarray) – Array of location parameters of the lognormal distribution.

  • scale_param (np.ndarray) – Array of scale parameters of the lognormal distribution.

  • le_fit (np.ndarray) – Array of fitted 5th-percentile values.

  • be_fit (np.ndarray) – Array of fitted 50th-percentile values.

  • he_fit (np.ndarray) – Array of fitted 95th-percentile values.

  • sleeper_buckling_range (np.ndarray) – 2D array with shape (n_cases, 10000), one range per case.

  • sleeper_buckling_cdf (np.ndarray) – 2D array with shape (n_cases, 10000), one CDF per case.

  • sleeper_buckling_pdf (np.ndarray) – 2D array with shape (n_cases, 10000), one PDF per case.

buckling_force_distribution_parameters()[source]#

Compute section buckling force distribution parameters based on oos_section_type.

Valid values are Straight, Curve, and Sleeper (case-insensitive).

Returns:

Output from: - nominal_straight_buckling_force_distribution_parameters for Straight - route_curve_buckling_force_distribution_parameters for Curve - sleeper_buckling_force_distribution_parameters for Sleeper

Return type:

tuple

Notes

Mixed section types are supported in one call. Each case is evaluated with the corresponding section formula.

class pysubsea.lateral_buckling_tools.LBOOSDistributions(*, oos_factor_mean, oos_factor_std)[source]#

Bases: object

Class for lateral buckling calculations, including out-of-straightness (OOS) distribution fitting.

Parameters:
  • oos_factor_mean (float, optional) – Mean OOS factor for the condition of interest.

  • oos_factor_std (float, optional) – Standard deviation of the OOS factor for the condition of interest.

oos_distribution_parameters()[source]#

Compute the parameters of the OOS lognormal distribution directly from the specified mean and standard deviation.

Returns:

  • mean_oos (np.ndarray) – Array of mean OOS-factor values.

  • std_oos (np.ndarray) – Array of standard deviation OOS-factor values.

  • location_param (np.ndarray) – Array of location parameters of the lognormal OOS distribution.

  • scale_param (np.ndarray) – Array of scale parameters of the lognormal OOS distribution.

  • le_fit (np.ndarray) – Array of fitted 5th-percentile OOS values.

  • be_fit (np.ndarray) – Array of fitted 50th-percentile OOS values.

  • he_fit (np.ndarray) – Array of fitted 95th-percentile OOS values.

  • oos_factor_range (np.ndarray) – 2D array with shape (n_cases, 10000), one range per case.

  • oos_factor_cdf (np.ndarray) – 2D array with shape (n_cases, 10000), one CDF per case.

Notes

This method mirrors the output structure of LBSoilDistributions, but it does not perform an optimization step because the OOS mean and standard deviation are already provided as inputs.

Examples

>>> lb = LBOOSDistributions(
...     oos_factor_mean=[1.26],
...     oos_factor_std=[0.33]
... )
>>> result = lb.oos_distribution_parameters()
>>> result[:7]
(array([1.26]), array([0.33]), array([0.19793979]), array([0.25757303]), array([0.79793341]), array([1.218889]), array([1.86192279]))
>>> result[7].shape, result[8].shape
((1, 10000), (1, 10000))
class pysubsea.lateral_buckling_tools.LBSoilDistributions(*, friction_factor_le, friction_factor_be, friction_factor_he, friction_factor_fit_type)[source]#

Bases: object

Class for lateral buckling calculations, including friction factor distribution fitting.

Parameters:
  • friction_factor_le (float, optional) – Low estimate (LE) friction factor, representing the 5th percentile.

  • friction_factor_be (float, optional) – Best estimate (BE) friction factor, representing the 50th percentile.

  • friction_factor_he (float, optional) – High estimate (HE) friction factor, representing the 95th percentile.

  • friction_factor_fit_type (str, optional) – Type of fit to perform: ‘LE_BE_HE’, ‘LE_BE’, or ‘BE_HE’.

friction_distribution_parameters()[source]#

Compute the parameters of the lognormal friction factor distribution (axial or lateral) by minimizing the root mean square error (RMSE) between geotechnical estimates and back-calculated friction factors from the lognormal distribution.

Returns:

  • mean_friction (np.ndarray) – Array of mean values of the lognormal friction factor distribution.

  • std_friction (np.ndarray) – Array of standard deviation values of the lognormal friction factor distribution.

  • location_param (np.ndarray) – Array of location parameters of the lognormal friction factor distribution.

  • scale_param (np.ndarray) – Array of scale parameters of the lognormal friction factor distribution.

  • le_fit (np.ndarray) – Array of fitted LE values.

  • be_fit (np.ndarray) – Array of fitted BE values.

  • he_fit (np.ndarray) – Array of fitted HE values.

  • rmse (np.ndarray) – Array of RMSE values for the best fit type.

  • r2 (np.ndarray) – Array of R² values for the best fit type.

  • friction_factor_range (np.ndarray) – 2D array with shape (n_cases, 10000), one range per case.

  • friction_factor_cdf (np.ndarray) – 2D array with shape (n_cases, 10000), one CDF per case.

Notes

The function calculates the parameters of the lognormal friction factor distribution based on LE at 5th percentile, BE at 50th percentile, and HE at 95th percentile

Examples

>>> lb = LBSoilDistributions(
...     friction_factor_le=[0.5],
...     friction_factor_be=[1.0],
...     friction_factor_he=[1.5],
...     friction_factor_fit_type=['LE_BE_HE']
... )
>>> result = lb.friction_distribution_parameters()
>>> result[:8]
(array([0.9684083]), array([0.30043236]), array([-0.07804666]), array([0.3031342]), array([0.56177265]), array([0.92492127]), array([1.52282131]), array([0.05765844]))
>>> result[9].shape, result[10].shape
((1, 10000), (1, 10000))