Source code for pypassive.mokwaduncan_hyperbolic

import numpy as np
from typing import Any


[docs] class MokwaDuncanHyperbolic: """Influence factors for computing the deflection of horizontally loaded vertical rectangle. ref: Mokwa, R. L. (1999). Investigation of the Resistance of Pile Caps to Lateral Loading. Use consistent units for calculations and adjust the units in postprocessing the results. """ def __init__( self, pult: float = 0, kmax: float = 1, delta_max: float = 1, rf: float = None ) -> None: """ :param float pult: Ultimate load :param float kmax: Initial tangent stiffness :param float delta_max: Maximum displacement at ultimate load :param float rf: Failure ratio, by default the value is None, if a value is supplied then the given value of rf is used, if rf = None then rf is computed. """ self._pult = pult self._kmax = kmax self._delta_max = delta_max self._rf = self.calc_rf() if rf == None else rf
[docs] def calc_rf(self) -> float: """Failure ratio as defined in Duncan and Change (1970). The ratio of the asymptotic stress of the hyperbolic curve to the soil strength. :returns float: Failure ratio """ return (self._delta_max / self._pult - 1 / self._kmax) * ( self._pult / self._delta_max )
[docs] def hyperbolic_force_displacement(self, ys: Any = []) -> Any: """Hyperbolic force-displacement curve. :param Any ys: horizontal displacements :param float pult: Failure load :param Any dmax_height_ratio: Ratio of the assumed displacement at failure to the height of the rectangular area (footing depth, retaining wall height). """ if len(ys) == 0: ys = np.logspace(-3.1, self._delta_max) return (ys, ys / ((1 / self._kmax + ys * self._rf / self._pult)))